‹

4 · เมื่อโครงสร้างเป็นซอฟต์แวร์

4 · ​เมื่อ​โครงสร้าง​เป็น​ซอฟต์แวร์

​ภาค​นี้​เปลี่ยน​วัสดุ ​และ​สิ่ง​ที่​เปลี่ยนไป​พร้อมกับ​วัสดุ​คือ​การทำสำเนา ​สะพาน​ที่​ออกแบบ​ผิด​หนึ่ง​แห่ง​ถล่ม​หนึ่ง​แห่ง ​ส่วน​โค้ด​ที่​เขียน​ผิด​หนึ่ง​บรรทัด​เดินทาง​ไป​ถึง​ทุก​เครื่อง​ที่​ติดตั้ง​มัน ​เพราะ​ข้อบกพร่อง​ใน​ซอฟต์แวร์​คัดลอก​ได้​โดย​ไม่​มี​ต้นทุน ​จุดอ่อน​จุด​เดียว​จึง​ถูก​ส่งออก​ไป​พร้อมกัน​เป็น​พัน​ล้าน​สำเนา ​และ​คน​ที่​หา​เจอ​คน​แรก​ได้​ทั้ง​พัน​ล้าน​นั้น​ไป​ใน​คราว​เดียว

​ตัวเลข​ที่​ภาค​นี้​ตามมี​ตัว​เดียว — ​ข้อบกพร่อง​มี​อยู่​นาน​เท่าไร​ก่อน​มี​คนใช้​มัน ​ใน​สิบ​สี่​กรณี​ข้างล่าง ​คำตอบ​วัด​เป็น​ปี​เกือบ​ทุกครั้ง ​ไม่​ใช่​วัน​หรือ​สัปดาห์ ​และ​ช่องว่าง​นั้น​เอง​คือ​เรื่อง​ของ​ภาค​นี้

​ก่อน​เริ่ม ​มี​ข้อตกลง​เรื่อง​ตัวเลข​หนึ่ง​ข้อ ​ตัวเลข​เงิน​ใน​วงการ​นี้​เป็นตัว​เลขที่​เชื่อถือได้​น้อยที่สุด​บน​หน้า​กระดาษ ​จำนวน​บันทึก​ที่​รั่ว​ใกล้เคียง​การตรวจสอบ ​ระยะเวลา​ที่​ผู้​โจมตี​อยู่​ใน​ระบบ​มาจาก​ไทม์​ไลน์​นิติวิทยาศาสตร์​และ​ใช้ได้ ​แต่​ตัวเลข​ดอลลาร์​เกือบ​ทั้งหมด​คือ​แถลงข่าว ​คำฟ้อง ​หรือ​การเดา​ของ​นักวิเคราะห์​ที่​ถูก​เล่า​ซ้ำ​จน​แข็ง ​เล่ม​นี้​พิมพ์​ทั้งตัว​เลขที่​บริษัท​เปิดเผย​เอง​และ​ตัวเลข​พาดหัว ​และ​บอก​ว่า​อัน​ไหน​เป็นอัน​ไหน ​ตัวเลข​ดัง​หลาย​ตัว​ที่​เล่า​กัน​ติดปาก​จะ​ไม่​อยู่​ใน​หน้า​ถัดไป ​และ​ทุกครั้ง​จะ​มี​หนึ่ง​บรรทัด​บอก​ว่า​ทำไม​มัน​หาย​ไป

Multics · 1974

​ใน​ปี 1974 ​ถ้า​ถาม​ว่า​ระบบปฏิบัติการ​ที่มั่น​คงที่​สุด​ใน​ตลาด​คือ​ตัว​ไหน ​คำตอบ​ที่​วงการ​ให้​ตรงกัน​มีชื่อ​เดียว​คือ Multics ​และ​คำถาม​ที่​ศูนย์​ข้อมูล​ของกอง​ทัพ​อากาศ​ใน​ชั้นใต้ดิน​เพนตากอน​อยากได้​คำตอบ​ก็​ตรงไปตรงมา — Multics ​บน​เครื่อง Honeywell HIS 645 ​และ HIS 6180 ​รับงาน Secret ​กับ Top Secret ​บน​เครื่อง​เดียวกัน​ได้​หรือไม่

​เดือน​มิถุนายน 1974 ​กองทัพอากาศ​สหรัฐ​ตีพิมพ์​คำตอบ​ใน​รายงาน ESD-TR-74-193 ​เล่ม​ที่สอง ​ผู้เขียน​คือ Paul Karger ​และ Roger Schell ​และ​คำตัดสิน​คือ​รับรอง​ให้​ใช้กับ​งาน​สอง​ระดับชั้น​ความลับ​ไม่​ได้

​ทีม​พบ​ข้อบกพร่อง​สามชั้น ​ฮาร์ดแวร์ ​ซอฟต์แวร์ ​และ​ขั้นตอน​ปฏิบัติ ​ใน​ชั้น​ซอฟต์แวร์​มี​โมดูล​ที่​ออกแบบ​ให้​ทำงาน​ใน​ระดับ​ผู้ใช้ ​แต่กลับ​ทำงาน​ด้วย​สิทธิ์​ระดับ​ระบบ ​นี่​คือ​รายงาน​เจาะ​ระบบปฏิบัติการ​เชิงพาณิชย์​ฉบับ​แรก​ที่​ตีพิมพ์​โดยละเอียด ​ไม่​ใช่​การเจาะ​ระบบ​ครั้งแรก ​ทีม​แบบนี้​มี​มา​ตั้งแต่​ปลาย​ทศวรรษ 1960 ​สิ่ง​ที่​ใหม่​คือ​มี​คน​พิมพ์​วิธีการ​ออกมา​ให้​คนนอก​อ่าน

​แต่​รายการ​ข้อบกพร่อง​ไม่​ใช่​ส่วน​ที่​สำคัญ​ที่สุด ​และ​ผู้เขียน​ทั้งสอง​เขียน​ไว้​เอง​ใน​บท​ย้อนหลัง​ปี 2002 ​ว่า​มัน​เป็น​ครึ่ง​เล็ก​ของ​ผลลัพธ์ ​ครึ่ง​ใหญ่​คือ​การสาธิต​ว่า​กลไก​ป้องกัน​ถูก​ล้ม​ได้​ด้วย​ซอฟต์แวร์​ที่ตั้ง​ใจ​หลอก​มัน — trap door ​และ Trojan horse ​ความต่าง​นี้​สำคัญ​เพราะ​มัน​เปลี่ยน​ว่า​อะไร​คือ​ทางแก้ ​แพตช์​ปิด​ข้อบกพร่อง​ที่​หา​เจอ​แล้ว ​มัน​ไม่​ได้​ปิดช่องทาง​ที่​ยัง​ไม่​มี​ใคร​ไปหา ​ข้อสรุป​ของ​รายงาน​จึง​ไม่​ใช่​รายการ​แพตช์ ​แต่​คือ​คำ​ว่า​ต้อง​รื้อ​โครงสร้าง​ใหม่​รอบ​แกน​ความมั่นคง​ที่​พิสูจน์​ได้ ​ก่อน​ใช้​ระบบ​ใด​ใน​สภาพแวดล้อม​เปิด​ที่​มี​มืออาชีพ​เป็น​ศัตรู

​วิธี​ที่​ทีม​ใช้​พิสูจน์​ข้อ​นั้น​คือ​สิ่ง​ที่​ทำให้​กรณี​นี้​ยังมี​ค่า​อยู่​จน​วันนี้ ​พวกเขา​ไม่​ได้​แค่​หา​ข้อบกพร่อง ​พวกเขา​ปลูก​มัน​ด้วย trap door ​ตัว​หนึ่ง​ถูก​ฝังใน​เครื่อง 645 ​และ​ไม่​เคย​ถูก​แจกจ่าย ​เพราะ​เครื่อง​รุ่น​นั้น​กำลัง​ถูก​ปลด ​ตัว​ที่สอง​ถูก​ฝังใน​ระบบ​พัฒนา​ของ​เครื่อง 6180 ​ที่ MIT ​จาก​จุด​นั้น​มัน​ไม่ต้อง​ทำ​อะไร​เลย ​มัน​แค่​เดินทาง​ไป​ตาม​เส้นทาง​ปกติ​ที่​ซอฟต์แวร์​ทุก​ตัว​เดิน ​ฝ่าย​ควบคุม​คุณภาพ​ของ Honeywell ​ตรวจ​ไม่​พบ ​และ Honeywell ​ส่ง​มัน​ไป​กับ​ซอฟต์แวร์​ถึง​เครื่อง​ของกอง​ทัพ​อากาศ​เอง

​ตัวเลข​ของ​กรณี​นี้​อยู่​ตรงนี้ trap door ​ตัว​ที่สอง​อยู่รอด​ราว​หนึ่ง​ปี​หลัง​รายงาน​ตีพิมพ์ ​ทั้งที่​รายงาน​พิมพ์​คำ​ใบ้​ตำแหน่ง​ของ​มัน​ไว้​ใน​มาตรา 3.4.6 ​มัน​ถูก​พบ​ระหว่าง​การตรวจสอบ​เข้ม​ที่​ศูนย์ Multics ​ของ General Motors ​เมื่อ​รุ่น​ที่​ถูก​ถอด​เขี้ยว​แล้ว​คืน​ค่า​ข้อผิดพลาด​แปลก​ออกมา ​ห่าง​จาก​การทำงาน​จริง​หนึ่ง​คำสั่ง ​อ่าน​ลำดับ​นั้น​อีก​รอบ​แล้ว​จะ​เห็น​ว่า​อะไร​ล้มเหลว ​คำเตือน​ถูก​พิมพ์​ไว้​แล้ว ​พร้อม​ที่อยู่​ของ​สิ่ง​ที่​ต้อง​ไปดู ​และ​ยัง​ไม่​พอให้​ใคร​ไปหา

​มาตรา 3.2.4 ​ของ​รายงาน​ฉบับ​เดียวกัน​ทำนาย trap door ​ไว้​สาม​แบบ ​ใน​สาย​แจกจ่าย​ซอฟต์แวร์ ​ใน​ขั้น​ติดตั้ง ​และ​ใน compiler ​ที่​ฝัง trap door ​ลง​ใน​ทุกอย่าง​ที่​มัน​แปล ​ปี 1974 ​ทั้ง​สาม​ข้อ​ยัง​เป็น​คำทำนาย ​ไม่​ใช่​รายงาน​เหตุการณ์

​สิ่ง​ที่​กรณี​นี้​สอน: ​ทดสอบ​กลไก​ป้องกัน​ด้วย​การปลูก​ของปลอม​ลง​ไป​เอง​แล้ว​นับวัน ​จนกว่า​ฝ่าย​ควบคุม​คุณภาพ​จะ​เจอ — ​ตัวเลข​ที่​ได้​คือ​ส่วน​เผื่อ​จริง ​ไม่​ใช่​ใบรับรอง

Trusting Trust · 1984

​ข้อ​ที่ Ken Thompson ​ขึ้นไป​พัง​บน​เวที​รับรางวัล Turing ​คือ​ข้อ​ที่​ฟัง​ดู​ไม่​มี​อะไร​ให้​เถียง ​ถ้า​อยากรู้​ว่า​โปรแกรม​ตัว​หนึ่ง​ทำ​อะไร ​ก็​เปิด source ​ออกมา​อ่าน ​เดือน​สิงหาคม 1984 Communications of the ACM ​ฉบับ​ที่ 27(8) ​พิมพ์​ปาฐกถา​นั้น​ยาว​สาม​หน้า ​หน้า 761 ​ถึง 763 ​และ​จำนวน​เครื่อง​ที่​เสียหาย​จาก​มัน​คือ​ศูนย์

​กรณี​นี้​อยู่​ใน​ภาค​เพราะ​มัน​ไม่​มี​ผู้เสียหาย ​ข้ออ้าง​ของ Thompson ​ไม่​ใช่​ว่า compiler ​มี​บั๊ก​ได้ ​ทุกคน​รู้อยู่​แล้ว​ว่า​มี​ได้ ​มัน​คือ​โครงสร้าง​สาม​ขั้น​ที่​ทำให้​การอ่าน​ไร้​ความหมาย ​ขั้นแรก ​สอน binary ​ของ compiler ​ให้​จำ​โปรแกรม login ​ได้ ​และ​ใส่​ทางลับ​ลง​ไป​เมื่อ​แปล​มัน ​ขั้น​สอง ​สอน​มัน​ให้​จำ​ตัวเอง​ได้ ​และ​ใส่​พฤติกรรม​ทั้งสอง​กลับ​เข้าไป​ใน compiler ​ทุก​ตัว​ที่​มัน​แปล ​ขั้น​สาม ​ลบ source ​ส่วน​ที่​เป็นพิษ​ทิ้ง

​จาก​จุด​นั้น​ทุกอย่าง​ที่​ตรวจ​ได้​ก็​สะอาด​หมด source ​ของ compiler ​สะอาด source ​ของ login ​สะอาด compiler ​ทุก​ตัว​ที่​สร้าง​จาก source ​สะอาด​ถือ​ข้อบกพร่อง​ต่อไป ​และ​การอ่าน source ​กี่​รอบ​ก็​ไม่​เจอ ​เพราะ​สิ่ง​ที่​ต้อง​อ่าน​ไม่​ได้​อยู่​ใน​สิ่ง​ที่​อ่าน​ได้ ​ประโยค​สรุป​ของ​เขา: ​คุณ​ไว้ใจ​โค้ด​ที่​คุณ​ไม่​ได้​สร้าง​เอง​ทั้งหมด​ไม่​ได้ ​อ่าน source ​ไม่​เท่ากับ​ไว้ใจ​โปรแกรม ​เพราะ​โปรแกรม​มาจาก​เครื่องมือ ​และ​เครื่องมือ​สร้างตัวเอง​ซ้ำ

​ที่มา​ของ​ความคิด​มัก​ถูก​เล่า​ผิด ​และ​คน​ที่​เล่า​ถูกที่​สุด​คือ Thompson ​เอง ​เขา​เขียน​ว่า​ได้​แนวคิด​จาก​เอกสาร​กองทัพอากาศ​ที่​ไม่​ทราบ​ชื่อ ​และ​ขอให้​ใครก็ได้​ช่วย​หา​ที่​อ้างอิง​ที่​ดีกว่า Karger ​และ Schell ​บันทึก​ว่า​เอกสาร​นั้น​คือ​รายงาน Multics ​ของ​พวกเขา​เอง​ปี 1974 ​พวกเขา​ส่ง​สำเนา​ให้​เขา​หลัง​ปาฐกถา​ตีพิมพ์ ​และ Thompson ​แก้​ที่​อ้างอิง​ใน​ฉบับ​พิมพ์​ซ้ำ​ใน Unix Review ​เดือน​พฤศจิกายน 1989 ​ความคิด​เป็น​ของ​ปี 1974 ​การสาธิต​และ​ชื่อเสียง​เป็น​ของ​ปี 1984 ​ส่วน​ที่ว่า compiler ​ตัว​นั้น​เคย​ถูก​ใช้​นอก Bell Labs ​หรือไม่ ​มี​คน​ยืนยัน​ทั้งสอง​ทาง ​และ​เล่ม​นี้​ยืนยัน​ไม่​ได้

​คำถาม​ประจำ​ภาค — ​ข้อบกพร่อง​มี​อยู่​นาน​เท่าไร​ก่อน​ถูก​ใช้ — ​ตอบ​แบบ​เดิม​ไม่​ได้​ในกรณีนี้ ​เพราะ​สิ่ง​ที่ Thompson ​ชี้​ไม่​ใช่​ข้อบกพร่อง​ที่​ถูก​เพิ่ม​เข้าไป​วันหนึ่ง ​เงื่อนไข​ที่​เขา​อธิบาย​คือ​การไว้ใจ binary ​ของ​เครื่องมือ ​และ​มัน​มี​มา​ตั้งแต่ compiler ​เริ่ม​แปล​ตัวเอง ​การอ่าน​ตรวจแก้​มัน​ไม่​ได้ ​วิธี​รับมือ​มาถึง​ยี่สิบ​เอ็ด​ปี​ให้หลัง David A. Wheeler ​เสนอ Diverse Double-Compiling ​ตรวจ binary ​ของ compiler ​เทียบ​กับ binary ​ที่​สร้าง​จาก source ​เดียวกัน​ด้วย compiler ​อิสระ​อีก​ตัว ​ปี 2023 Russ Cox ​สร้าง​การโจมตี​ต้นฉบับ​ของ Thompson ​ขึ้น​ใหม่​และ​รัน​มัน​ได้ ​สี่​สิบ​ปี​จาก​คำเตือน​ถึง​การยืนยัน​ว่า​มัน​ทำงาน​จริง

​ในแง่​สัน​ของ​เล่ม ​นี่​คือ​กรณี​ที่​ศัตรู​ไม่​ได้​อ่าน​แบบ​ก่อสร้าง ​เขา​อ่าน​เครื่องมือ​ที่​ใช้​อ่าน​แบบ

​สิ่ง​ที่​กรณี​นี้​สอน: ​เมื่อ​ตรวจ source ​ให้​ถาม​ต่อว่า​ใคร​ตรวจ compiler ​ที่​แปล​มัน ​และ​ตรวจ​ด้วย compiler ​ตัว​ไหน

​หนอน Morris · 2 ​พฤศจิกายน 1988

​อินเทอร์เน็ต​ปี 1988 ​มี​เครื่อง​ต่อ​อยู่​ราว 60,000 ​เครื่อง ​และ​ทุก​เครื่องใช้​ข้อสมมติ​เดียวกัน​ข้อ​หนึ่ง​โดย​ไม่​มี​ใคร​เขียน​มัน​ลง​ไป​ที่ไหน ​ว่า​เครื่อง​อีก​ฝั่ง​ของ​สาย​ไม่​ใช่​ศัตรู ​ข้อสมมติ​นั้น​ไม่​ได้​อยู่​ใน​เอกสาร ​มัน​อยู่​ใน​บริการ​เครือข่าย​ที่​ทุก​ผู้ขาย​ส่ง​มา​พร้อม​ระบบ

​ค่ำ​วันที่ 2 ​พฤศจิกายน 1988 ​โปรแกรม​ตัว​เดียว​ทำให้​เครื่อง​ราว 6,000 ​จาก​ราว 60,000 ​เครื่อง​นั้น — ​ราว​สิบ​เปอร์เซ็นต์ — ​หยุด​ทำงาน​ภายใน​ยี่สิบ​สี่​ชั่วโมง ​ผู้​ปล่อย​คือ Robert Tappan Morris ​นักศึกษา​ปริญญาโท​ของ Cornell ​จาก​เครื่อง​ที่ MIT

​มัน​ไม่​ใช่​การขโมย​ข้อมูล ​มัน​คือ denial of service ​โดยไม่ตั้งใจ ​เครื่อง​ที่​ถูก​ติดเชื้อ​ซ้ำ​หลาย​รอบ​รับภาระ​จน​หยุด​เดิน ​ทางเข้า​มี​สอง​ทาง​และ​ทั้งสอง​ทาง​เคย​ถูก​เรียก​ว่า​คุณสมบัติ ​ฟังก์ชัน debug ​ที่​ถูก​เปิด​ทิ้ง​ไว้​ใน​ระบบ​จริง ​กับ​รูทีน​รับ​ข้อมูล​ที่​ไม่​จำกัดความ​ยาว ​แยกกัน​มัน​คือ​ความสะดวก​สอง​อย่าง ​รวมกัน​มัน​คือ​การสั่ง​รัน​โค้ด​จาก​ระยะไกล​บน​อินเทอร์เน็ต​เกือบ​ทั้งหมด

​ตัวเลข​ความเสียหาย​มี​สอง​แบบ ​และ​แบบ​ที่​ตรง​กว่า​คือ​แบบ​ที่​ดูเหมือน​ตอบ​ไม่​ได้ GAO ​ประเมินค่า​ฟื้นฟู​ไว้​ระหว่าง 100,000 ​ถึง 10,000,000 ​ดอลลาร์ ​ช่วง​กว้าง​ร้อย​เท่า ​และ​ช่วง​นั้น​เอง​คือ​ผล​การวัด​ที่​ตรง​ที่สุด ​เพราะ​ไม่​มี​ใคร​วัด​ได้ ​ส่วนตัว​เลข 100 ​ล้าน​ดอลลาร์​ที่​เล่า​ต่อกัน​มา​จน​ติดปาก ​ไม่​มี​แหล่ง​ต้นทาง ​มัน​ดูเหมือน​เพดาน​ของ GAO ​ที่​ถูก​เติม​ศูนย์​อีก​สอง​ตัว ​เล่ม​นี้​จึง​ไม่​พิมพ์​มัน​เป็น​ข้อเท็จจริง

​สิ่ง​ที่​ตามมา​หลัง​คืน​นั้น​มี​สอง​อย่าง​ที่อยู่​คนละ​ระนาบ​กัน ​อย่าง​แรก​คือ​กฎหมาย Morris ​เป็น​คน​แรก​ที่​ถูก​ตัดสิน​ว่า​ผิด​ตาม Computer Fraud and Abuse Act ​ปี 1986 ​วันที่ 4 ​พฤษภาคม 1990 ​ผู้พิพากษา Howard G. Munson ​ให้​รอ​ลงอาญา​สาม​ปี ​บริการ​ชุมชน 400 ​ชั่วโมง ​ปรับ 10,050 ​ดอลลาร์ ​ไม่​มีโทษ​จำคุก ​ศาลอุทธรณ์​ยืน​คำตัดสิน​ใน​ปี 1991

​อย่าง​ที่สอง​คือ​สถาบัน ​และ​มัน​เกิดขึ้น​ภายใน​ไม่​กี่​สัปดาห์ CERT/CC ​ที่ Software Engineering Institute ​ของ Carnegie Mellon ​ด้วย​ทุน​จาก DARPA ​มัน​เป็น​จุด​ประสานงาน​กลาง​แห่ง​แรก​สำหรับ​เหตุฉุกเฉิน​บน​เครือข่าย ​เหตุผล​ที่​ต้อง​มี​เรียบง่าย​กว่า​ที่​ควรจะเป็น ​คืน​นั้น​ไม่​มี​ใคร​มี​เบอร์​โทร​ให้​โทร​หา

​ข้อบกพร่อง​สอง​ข้อ​อยู่​ใน​โค้ด​ที่​ส่งมอบ​แล้ว​มา​หลาย​ปี ​ผู้ปฏิบัติงาน​รู้จัก​มัน​ใน​ฐานะ​ความสะดวก ​ไม่​ใช่​ช่องโหว่ ​ตัวเลข​ปี​ที่​แน่นอน​ของ​แต่ละ​ข้อ ​การค้นคว้า​ครั้งนี้​ยืนยัน​ไม่​ได้ ​ในแง่​สัน​ของ​เล่ม ​ข้อสมมติ​ว่า​ปลาย​สาย​เป็นมิตร​คือ​ส่วน​เผื่อ​ที่​ไม่​เคย​ถูก​วัด​กับ​ใคร​เลย ​จนกระทั่ง​มี​คน​วัด

​สิ่ง​ที่​กรณี​นี้​สอน: ​ไล่​รายการ​ความสะดวก​ที่​ยัง​เปิด​อยู่​ใน​ระบบ​จริง — ​โหมด debug ​บัญชี​ทดสอบ ​ช่อง​รับ​ข้อมูล​ที่​ไม่​จำกัด​ขนาด — ​แล้ว​ถาม​ทีละ​ข้อ​ว่า​ถ้า​ปลาย​สาย​เป็น​ศัตรู ​มัน​คือ​อะไร

Phrack 49 · 1996

​ก่อน​เดือน​พฤศจิกายน 1996 ​โปรแกรม​ที่​พัง​เพราะ​รับ​ข้อมูล​ยาว​เกิน​เป็นเรื่อง​น่ารำคาญ ​ไม่​ใช่​เรื่อง​ความมั่นคง ​การเขียน​เลย stack ​เป็นเรื่อง​เล่า​ใน​วง​เล็กๆ ​และ​เป็น​บั๊ก​ความไม่​เสถียร​สำหรับ​คน​ที่​เหลือ ​คนเขียน​โปรแกรม​ส่วนใหญ่​รู้​ว่า​มัน​ทำให้​โปรแกรม​พัง ​และ​หยุด​คิด​ตรงนั้น

​วันที่ 8 ​พฤศจิกายน 1996 Phrack ​ฉบับ​ที่ 49 ​ไฟล์​ที่ 14 ​จาก 16 ​พิมพ์​บทความ​ของ Aleph One (Elias Levy) ​และ​จำนวน​ผู้เสียหาย​จาก​บทความ​นั้น​คือ​ศูนย์ ​มัน​เป็น​เอกสาร

​สิ่ง​ที่​บทความ​ตั้งชื่อ​คือ​ประเภท​ของ​ข้อบกพร่อง ​และ​การตั้งชื่อ​คือ​ทั้งหมด​ของ​เรื่อง ​โปรแกรม​ที่​เขียน​เลย​ขอบ​ของ buffer ​ทำลาย​บันทึก​ที่​บอก​ว่า​จะ​กลับ​ไป​ทำงานต่อ​ที่ไหนได้ ​ถ้า​บันทึก​นั้น​ถูก​ทำลาย​ได้ ​มัน​ก็​ถูก​เลือก​ค่า​ให้ได้ ​ประเภท​ของ​ข้อบกพร่อง​จึง​ไม่​ใช่​โปรแกรม​พัง ​แต่​คือ​ผู้​โจมตี​เลือก​ได้​ว่า​อะไร​จะ​รัน​ต่อ ​เล่ม​นี้​บันทึก​แค่นั้น ​ไม่​มี​เทคนิค ​ไม่​มี​โค้ด ​โดยตั้งใจ

​หลัง​บทความ ​มัน​เป็น​ประเภท​ที่​มีชื่อ ​สอน​ได้ ​ทำซ้ำ​ได้ ​มี​คำศัพท์​มาตรฐาน ​สอน​ผู้​โจมตี​ได้ ​และ​ที่​ส่งผล​มากกว่า ​สอน​ผู้​ป้องกัน​ได้ ​แนว​ป้องกัน​ที่​ตามมา​เป็น​เส้นตรง StackGuard canary ​ปี 1998 ASLR ​ของ PaX ​ปี 2001 Windows /GS ​ปี 2003 ​บิต NX / DEP ​ใน​ฮาร์ดแวร์​ปี 2004 ​สังเกตว่า​ทุก​ชิ้น​ตอบ​บทความ ​ไม่​ได้​ตอบ​เหตุการณ์ ​ไม่​มี​ภัยพิบัติ​ไหน​อยู่​ระหว่าง​ปี 1996 ​กับ StackGuard ​มี​แต่​คนอ่าน​หนังสือ

​ระยะเวลา​ที่​ข้อบกพร่อง​มี​อยู่​ก่อน​ถูก​ใช้ ​กลับด้าน​ในกรณีนี้ ​ประเภท​นี้​ถูก​ใช้​จริง​แปด​ปีก่อน​บทความ — ​ทางเข้า​ทาง​หนึ่ง​ของ​หนอน Morris ​ปี 1988 ​คือ​มัน ​ความเชื่อ​ว่า​บทความ​นี้​สร้าง buffer overflow ​ขึ้น​มา ​จึง​ตาย​ใน​การค้นคว้า ​ปี 1996 ​ไม่​ได้​ทำให้​มัน​มี​อยู่ ​มัน​ทำให้​ทุกคน​ได้​อ่าน ​และ​ข้ออ้าง​นั้น​ใหญ่​กว่า​คำ​ว่า​ประดิษฐ์

​มี​ข้อ​เทียบ​ที่​ไม่​สบายใจ​อยู่​ข้อ​หนึ่ง Karger ​และ Schell ​บันทึก​ใน​บท​ย้อนหลัง​ปี 2002 ​ว่า Multics ​ต้าน​ข้อบกพร่อง​ประเภท​นี้​ทั้ง​ประเภท​ได้​ตั้งแต่​ปี 1974 ​เพราะ​บิต​สิทธิ์ execute ​ใน​ฮาร์ดแวร์​ทำให้​หน้า​ข้อมูล​ถูก​รัน​เป็น​คำสั่ง​ไม่​ได้ ​การป้องกัน​มา​ก่อน​การแพร่กระจาย​ยี่สิบ​สอง​ปี ​แล้ว​หาย​ไป​จาก​ระบบ​ที่​ต้องการ​มัน ​เหตุผล​ไม่​ใช่​ว่า​ใคร​ลืม ​แต่​เพราะ​ระบบ​เหล่านั้น​เลือก​สถาปัตยกรรม​ฮาร์ดแวร์​ที่​พูด​เรื่อง​นี้​ไม่​ได้ ​ของ​ที่จะ​กลับมา​ได้​ต้อง​รอ​ฮาร์ดแวร์​รุ่น​ที่​พูด​ได้ ​และ​มัน​มาถึง​ปี 2004

​ในแง่​สัน​ของ​เล่ม ​บทความ​คือ​วันที่​ผู้​โจมตี​ทุกคน​ได้​อ่าน​แบบ​ก่อสร้าง​ชุด​เดียวกัน ​ส่วน​เผื่อ​ที่​เคย​เป็นความ​ไม่​รู้ ​หมดอายุ​ใน​วันนั้น

​สิ่ง​ที่​กรณี​นี้​สอน: ​เมื่อ​บั๊ก​ประเภท​หนึ่ง​ได้ชื่อ​และ​มี​บทความ​สอน ​ให้​นับวัน​นั้น​เป็น​วัน​แรก​ที่​ระบบ​ของ​คุณ​ถูก​อ่าน ​แล้ว​ไล่​ดู​ว่าการ​ป้องกัน​ที่​ตามมา​แต่ละ​ชิ้น​เปิด​อยู่​บน​เครื่อง​ของ​คุณ​หรือไม่

SQL injection ​และ Heartland · 1998 ​และ 2008

​หน้า​เว็บ​ที่​รับ​ข้อความ​จาก​ผู้ใช้​แล้ว​ส่งต่อ​ให้​ฐานข้อมูล ​เป็น​ของธรรมดา​มา​ตั้งแต่​เว็บ​เริ่ม​ทำ​อะไร​ได้มา​กก​ว่า​แสดง​เอกสาร ​และ​คน​ที่​เขียน​มัน​คิด​ว่า​ข้อความ​ที่​ผู้ใช้​พิมพ์​คือ​ค่า​หนึ่ง​ค่า​ใน​คำสั่ง ​วันที่ 25 ​ธันวาคม 1998 Phrack ​ฉบับ​ที่ 54 ​ไฟล์​ที่ 8 ​พิมพ์​บทความ​ของ rain.forest.puppy (Jeff Forristal) ​ที่​อธิบาย​ว่า​มัน​ไม่​ใช่ ​ข้อความ​จาก​ผู้ใช้​ที่​ไป​ถึง​ฐานข้อมูล​โดย​ไม่​ถูก​กรอง ​เปลี่ยน​โครงสร้าง​ของ​คำสั่ง​ได้ ​ไม่​ใช่​แค่​ค่า​ใน​คำสั่ง ​เก้า​ปี​ต่อมา ​ข้อบกพร่อง​ประเภท​เดียวกัน​เปิดทาง​ให้​บันทึก​บัตร 130 ​ล้าน​รายการ​ถูก​เข้าถึง

Forristal ​ไม่​ได้​ใช้​คำ​ว่า SQL injection ​ชื่อ​นั้น​มา​ทีหลัง ​สิ่ง​ที่​เขา​บรรยาย​คือ​หน้า​เว็บ​บน ASP ​ที่​ต่อ​กับ SQL Server 6.5 ​และ​รับ​ข้อความ​จาก​ผู้ใช้​ไป​ต่อ​เข้า​คำสั่ง​ฐานข้อมูล​ตรงๆ ​ตั้งแต่​วัน​คริสต์มาส​นั้น ​ประเภท​ของ​ข้อบกพร่อง​นี้​เป็น​สาธารณะ ​ใคร​ก็​อ่าน​ได้ ​ทั้งคน​ที่​ต้อง​ปิด​มัน​และ​คน​ที่​ต้องการ​ใช้​มัน

Heartland Payment Systems ​เป็น​ผู้​ประมวลผล​การชำระเงิน​ใหญ่​อันดับ​ห้า​ของ​สหรัฐ ​ตาม​คำฟ้อง​ของ​กระทรวงยุติธรรม ​การบุก​รุก​เครือข่าย​เริ่ม​อย่าง​ช้า​ที่สุด​วันที่ 26 ​ธันวาคม 2007 Visa ​แจ้ง​เตือน Heartland ​เรื่อง​ความเคลื่อนไหว​ผิดปกติ​ของ​บัตร​ปลายเดือน​ตุลาคม 2008 ​บริษัท​ประกาศ​ต่อ​สาธารณะ​วันที่ 20 ​มกราคม 2009 ​ราว​สิบ​สาม​เดือน​โดย​ไม่​มี​ใคร​เห็น ​และ​คน​ที่​เห็น​ก่อน​บริษัท​คือ Visa

​ทางเข้า​คือ SQL injection ​สู่​เครือข่าย​สำนักงาน ​การเก็บเกี่ยว​ทำ​ด้วย​ตัว​ดักฟัง​ที่​วาง​ไว้​บน​เครือข่าย​ประมวลผล ​และ​มัน​ทำงาน​อยู่​หลาย​เดือน ​ระหว่าง​สอง​ขั้น​นั้น​มี​ข้อสมมติ​หนึ่ง​ข้อ​ที่​ไม่​มี​ใคร​ตรวจ ​ต้นเหตุ​ใน​หนึ่ง​ประโยค ​แอปพลิเคชัน​หน้า​เว็บ​ต่อ​ข้อความ​ที่​ไม่​น่าไว้ใจ​เข้า​คำสั่ง​ฐานข้อมูล ​และ​เครือข่าย​สำนักงาน​ที่​มัน​อยู่​ไม่​ได้​แยกจาก​เครือข่าย​ที่​ถือ​ข้อมูล​บัตร​จริง ​วันที่ SQL injection ​สำเร็จ​ครั้งแรก ​แยกจาก​วัน​เข้า​เครือข่าย​ใน​คำฟ้อง ​การค้นคว้า​ครั้งนี้​หาไม่​พบ

​ตัวเลข 130 ​ล้าน​คือ​จำนวน​บันทึก​บัตร​ที่​ถูก​เข้าถึง​ตาม​คำฟ้อง ​ไม่​ใช่​จำนวน​บัตร​ที่​ถูก​ใช้​ทุจริต ​รายงาน​ร่วมสมัย​บาง​ฉบับ​ใช้ "​ถึง 100 ​ล้าน" ​ตัวเลข​แข็ง​อยู่​ใน​รายงาน​ต่อ ก.ล.ต. ​ของ​บริษัท​เอง ​เพราะ​บริษัท​โกหก​ตัวเลข​ใน​รายงาน​นั้น​ไม่​ได้ Heartland ​บันทึก​ค่าใช้จ่าย 146.4 ​ล้าน​ดอลลาร์​ระหว่าง​มกราคม 2009 ​ถึง​มีนาคม 2011 ​ได้คืน​จาก​ประกัน 31.2 ​ล้าน ​ราว 114.7 ​ล้าน​เป็น​เงิน​ยอมความ Visa 58.6 ​ล้าน ​จ่าย​วันที่ 18 ​กุมภาพันธ์ 2010 MasterCard 34.4 ​ล้าน ​เดือน​กันยายน 2010 American Express ​ราว 3.5 ​ล้าน Albert Gonzalez ​ถูก​ฟ้อง​เดือน​สิงหาคม 2009 ​และ​รับโทษ​จำคุก​ยี่สิบ​ปี

​เก้า​ปี ​ธันวาคม 1998 ​ถึง​ธันวาคม 2007 ​ระหว่าง​การตีพิมพ์​ประเภท​ของ​ข้อบกพร่อง​กับ​การรั่ว​ของ​บัตร​ครั้ง​ใหญ่​ที่สุด​ที่​เคย​บันทึก​ในเวลานั้น ​ผู้​โจมตี​อ่าน​บทความ​ฉบับ​เดียว​กับ​ผู้​ป้องกัน ​ต่างกัน​ที่​ฝ่าย​หนึ่ง​ลงมือ

​สิ่ง​ที่​กรณี​นี้​สอน: ​เขียน​ปี​ที่​ข้อบกพร่อง​ประเภท​นั้น​ถูก​ตีพิมพ์​ครั้งแรก​ไว้​ข้าง​ช่องโหว่​ทุก​ช่อง​ที่​กำลัง​ปิด — ​ตัวเลข​นั้น​คือ​จำนวน​ปี​ที่​ผู้​โจมตี​มี​มากกว่า​คุณ

Stuxnet · 2010

​ใน​ช่วง​พฤศจิกายน 2009 ​ถึง​ปลาย​มกราคม 2010 ​เครื่อง​หมุน​เหวี่ยง IR-1 ​ถึง​ราว​หนึ่ง​พัน​เครื่อง​ที่​โรงงาน​เสริม​สมรรถนะ Natanz ​ถูก​เปลี่ยน​ออก ​ตลอด​ช่วงเวลา​นั้น ​จอ​ของ​ผู้ควบคุม​อ่าน​ค่า​ปกติ ​และ​มัน​อ่าน​ค่า​ปกติ​เพราะ​มี​คน​ตั้งใจ​ให้​มัน​อ่าน​อย่างนั้น

​สิ่ง​ที่​ในที่สุด​ทำให้​เรื่อง​นี้​ถูก​พบ​ไม่​ใช่​หน่วย​ข่าวกรอง​ไหน ​วันที่ 17 ​มิถุนายน 2010 ​บริษัท​แอนติ​ไวรัส​เล็กๆ ​ใน​มิ​นสค์​ชื่อ VirusBlokAda ​พบ​มัลแวร์​ตัว​หนึ่ง​จาก​คำร้องเรียน​ของ​ลูกค้า​เรื่อง​เครื่อง​รี​บูต​เอง​โดย​ไม่​มี​สาเหตุ ​นักวิเคราะห์​ที่​พบ​คือ Sergey Ulasen ​ปฏิบัติการ​เดิน​มา​อย่าง​น้อย​ตั้งแต่​ปี 2009

​ตัวเลข​หนึ่ง​พัน​มาจาก​สถาบัน ISIS ​เดือน​ธันวาคม 2010 ​คำ​ที่​สถาบัน​ใช้​คือ​เสียหาย​และ​ถูก​เปลี่ยน ​ราว​สิบ​เปอร์เซ็นต์​ของ​เครื่อง​ที่​เดิน​อยู่ ​คำ​ว่า​ถูก​ทำลาย​เป็น​คำ​ที่​นิยม​เล่า ​และ​อาจ​เกิน​แหล่ง​ต้นทาง ​รายงาน​ของ Symantec ​สืบ​ต้นทาง​การติดเชื้อ​ไป​ถึง​ห้า​องค์กร ​ทุกแห่ง​เกี่ยวข้อง​กับ​โครงการ​นิวเคลียร์​ของ​อิหร่าน

​มัน​ใช้ zero-day ​ของ Windows ​สี่​ตัว ​ช่องโหว่​ใน​ไฟล์ shortcut ​ใน​ระบบ​พิมพ์ ​และ​ช่อง​ยกระดับ​สิทธิ์​อีก​สอง ​ตัวเลข​ห้า​ที่​เล่า​ต่อกัน​มา​ผิด ​และ​ความผิด​ของ​มัน​ไม่​ใช่​เรื่อง​เลข​คลาดเคลื่อน​หนึ่ง​หน่วย ​ช่อง​ที่​ห้า​คือ MS08-067 ​ที่​มี​แพตช์​มา​ตั้งแต่​ปี 2008 ​และ​ถูก​เลือก​เพราะ​มัน​เก่า ​ด้วย​เหตุผล​ว่า​เครือข่าย​ควบคุม​อุตสาหกรรม​แพตช์​ช้า ​บันทึก​น้อย ​และ​ป้องกัน​เบา ​พูด​อีก​อย่าง​คือ​ผู้เขียน​มัลแวร์​งบประมาณ​ช่องโหว่​ที่​รู้กัน​แล้ว​ไว้​ใส่​จุดอ่อน​ของ​สถาบัน​ที่​รู้กัน​แล้ว ​นั่น​คือ​ข้อเท็จจริง​ที่​น่าสนใจ​ที่สุด​ของ​ปฏิบัติการ ​และ​คำ​ว่า​ห้า zero-day ​ทำให้​มัน​หาย

​เครือข่าย​เป้าหมาย​ไม่​มี​เส้นทาง​จาก​อินเทอร์เน็ต ​หนอน​จึง​เดินทาง​บน​สื่อ​พกพา ​ผ่าน​เครื่อง​ของ​วิศวกร ​และ​ผ่าน​ไฟล์​โครงการ​ที่​เครื่อง​เหล่านั้น​ถือ​เข้าไป​ข้างใน ​มัน​ขี่​การจราจร​ซ่อมบำรุง​ธรรมดา​ที่ air gap ​ต้อง​มี ​เพื่อให้ air gap ​ดูแลรักษา​ได้ ​ช่องว่าง​ไม่​ได้​ถูก​เอาชนะ ​มัน​ถูก​ใช้ ​ขั้นตอน​ปฏิบัติ​ของ air gap ​เอง​คือ​พาหนะ ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​การแยก​ระบบ​ที่​อนุญาต​ให้​ข้าม​ได้​ทางเดียว​คือ​คน​ถือ​สื่อ​เข้าไป ​คือ​การแยก​ระบบ​ที่​มี​ช่องทาง​ผ่าน​ซึ่ง​เขียน​เป็น​เอกสาร ​มี​ตารางเวลา ​และ​ไม่​ตรวจ​ตัวตน

​สิ่ง​ที่​ไม่​เคย​มี​มา​ก่อน​คือ​สอง​อย่าง​พร้อมกัน ​มัน​เป็น​มัลแวร์​ตัว​แรก​ที่​เขียน​เพื่อ​ทำลาย​อุปกรณ์​อุตสาหกรรม​ทางกายภาพ ​ไม่​ใช่​เพื่อ​ขโมย ​ปิดกั้น ​หรือ​ขีดเขียน ​และ​มัน​เล็ง PLC ​ตระกูล Siemens S7 ​เปลี่ยน​กระบวนการ ​แล้ว​เล่น​ค่า​ปกติ​ที่​บันทึก​ไว้​ก่อนหน้า​กลับ​ไป​ที่​จอ​ของ​ผู้ควบคุม ​สอง​อย่างนี้​ต้อง​มา​ด้วยกัน ​เพราะ​การทำลาย​เครื่องจักร​ช้าๆ ​ต้องการ​เวลา ​และ​เวลา​จะ​มี​ได้​ก็ต่อเมื่อ​คน​ที่​เฝ้า​อยู่​ไม่​รู้ตัว ​เครื่องวัด​อ่าน​ว่า​ปกติ ​ขณะที่​เครื่องจักร​พัง​ตัวเอง ​ใน​เล่ม​ที่​ถาม​ว่า​เผื่อ​พอ​หรือไม่ ​นี่​คือ​กรณี​ที่​เครื่องวัด​ส่วน​เผื่อ​ถูก​ยึด​ก่อน

​สิ่ง​ที่​กรณี​นี้​สอน: ​เขียน​รายการ​ทางข้าม​ทุก​ทาง​ของ air gap — ​แผ่น​สื่อ ​เครื่อง​ของ​ช่าง ​ไฟล์​โครงการ — ​แล้ว​ถาม​ว่า​ทาง​ไหน​ตรวจ​สิ่ง​ที่​ข้าม​มา ​และ​เครื่องวัด​ที่​คุณ​เชื่อ ​อ่าน​ค่า​จาก​คอมพิวเตอร์​ตัว​เดียว​กับ​ที่​ถูก​โจมตี​หรือไม่

Heartbleed · ​เมษายน 2014

​การเข้ารหัส​ของ​อินเทอร์เน็ต​ส่วนใหญ่​วิ่ง​ผ่าน​ไลบรารี​ตัว​เดียว​ชื่อ OpenSSL ​และ​ไลบรารี​ตัว​นั้น​ดูแล​ด้วย​เงินบริจาค​ราว 2,000 ​ดอลลาร์​ต่อ​ปี ​ตัวเลข​สอง​ตัว​นี้​อยู่​ใน​โลก​เดียวกัน​มา​หลาย​ปี​โดย​ไม่​มี​ใคร​ต้อง​อธิบาย​มัน ​จนกระทั่ง​วันที่ 7 ​เมษายน 2014

​วันนั้น OpenSSL ​ออก​ประกาศ​ช่องโหว่ CVE-2014-0160 ​และ​ใน​เดือน​เดียวกัน Netcraft ​นับ​ได้​ว่า​เว็บไซต์ SSL 17.5% ​เปิด​ส่วนขยาย​ที่​มี​ช่องโหว่​นี้​อยู่ — ​ใบรับรอง​ราว​ครึ่ง​ล้าน​ใบ​จาก​ผู้​ออก​ที่​เบราว์เซอร์​เชื่อถือ ​ผู้​พบ​คือ Neel Mehta ​จาก Google Security ​และ​บริษัท Codenomicon ​แยกกัน​พบ ​แก้​ใน OpenSSL 1.0.1g

​กลไก​ใน​ระดับ​แนวคิด​เรียบง่าย​จน​น่า​หงุดหงิด ​ส่วนขยาย heartbeat ​ของ TLS ​ตาม RFC 6520 ​ให้​ฝ่าย​หนึ่ง​ส่ง​ข้อมูล​ก้อน​เล็ก​พร้อม​ระบุ​ความยาว ​แล้ว​ขอให้​อีก​ฝ่าย​ส่งกลับ OpenSSL ​ใช้​ความยาว​ที่​ถูก​บอก ​แทนที่จะ​วัด​ก้อน​ที่​ได้รับ​จริง ​เมื่อ​ความยาว​ที่​บอก​เกิน​ของจริง ​คำตอบ​ถูก​เติม​ให้​ครบ​ขนาด​ด้วย​สิ่ง​ที่อยู่​ถัดไป​ใน​หน่วยความจำ​ของ​โปรเซส ​ได้​ครั้ง​ละ​ถึง 64 KB ​ทำซ้ำ​ได้ ​ไม่ต้อง​มี​รหัสผ่าน ​ไม่ต้อง​เปิด​เซส​ชัน​ให้​เสร็จ ​และ​ไม่​ทิ้ง​อะไร​ไว้​ใน​บันทึก ​ส่วน​สิ่ง​ที่อยู่​ถัดไป​บน​เซิร์ฟเวอร์ TLS ​รวมถึง​ข้อมูล​เซส​ชัน​และ​กุญแจ​ส่วนตัว

​ระยะเวลา​ของ​กรณี​นี้​ชัด​ที่สุด​ใน​ภาค ​และ​มัน​น่าสนใจ​ตรง​ที่​ใคร​เป็น​คนเขียน ​โค้ด​ที่​ผิด​ถูก​เพิ่ม​วันที่ 31 ​ธันวาคม 2011 ​โดย Robin Seggelmann ​ผู้เขียน​ร่วม​คน​แรก​ของ RFC ​ฉบับ​นั้น​เอง ​ส่ง​ถึง​โลก​ใน OpenSSL 1.0.1 ​วันที่ 14 ​มีนาคม 2012 ​เปิดเผย​วันที่ 7 ​เมษายน 2014 ​สอง​ปี​กับ​สาม​สัปดาห์​ใน​โค้ด​ที่​ปล่อย​ใช้แล้ว ​ระหว่าง​สอง​ปี​นั้น Apache ​กับ nginx ​สอง​เซิร์ฟเวอร์​ที่พึ่ง OpenSSL ​มาก​ที่สุด ​มีส่วน​แบ่ง​เว็บไซต์​ที่​ใช้งาน​อยู่​รวมกัน​เกิน 66% ​ใน​สำรวจ​ของ Netcraft ​เดือน​เดียวกัน ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​ค่า​ความยาว​ที่​ฝ่าย​ไกล​ส่ง​มา​ถูก​เชื่อ​แทนที่จะ​ถูก​ตรวจ ​ใน​ไลบรารี​ความมั่นคง​ที่​ถูก​ติดตั้ง​กว้าง​ที่สุด​ที่​มี​อยู่

​ส่วน​เผื่อ​ถูก​เติม​หลังจาก​มัน​หมด​ไป​แล้ว ​วันที่ 24 ​เมษายน 2014 ​สิบ​เจ็ด​วันหลัง​เปิดเผย Linux Foundation ​ประกาศ Core Infrastructure Initiative ​โดย​มี​บริษัท​เทคโนโลยี​ใหญ่​หลาย​แห่ง​หนุน OpenSSL ​เป็น​โครงการ​ชุด​แรก​ที่​ได้​ทุน ​และ​เงิน​นั้น​จ่าย​เป็น​เงินเดือน​นัก​พัฒนา​แกน​หลัก​เต็มเวลา​สอง​คน ​สอง​คน ​หลังจาก​สอง​ปี​สาม​สัปดาห์

​ในแง่​สัน​ของ​เล่ม ​ธรรมชาติ​ไม่​ส่ง​ค่า​ความยาว​ปลอม ​ผู้​โจมตี​ส่ง ​และ​ส่ง​ซ้ำ​ได้​ไม่​จำกัด ​ค่าที่​ไม่​ถูก​ตรวจ​ใน​โค้ด​หนึ่ง​บรรทัด​จึง​ไม่​ใช่​บั๊ก​หนึ่ง​ตัว ​มัน​คือ​ประตู​ที่​เปิด​อยู่​บน​เซิร์ฟเวอร์​ครึ่ง​ล้าน​เครื่อง​พร้อมกัน

​สิ่ง​ที่​กรณี​นี้​สอน: ​หา​ไลบรารี​ที่​ทุกอย่าง​ของ​คุณ​พึ่ง​อยู่ ​แล้ว​ถาม​ว่า​มี​คน​กี่​คน​ได้เงิน​เดือน​ดูแล​มัน — ​ถ้า​คำตอบ​คือ​ศูนย์ ​นั่น​คือ​ส่วน​เผื่อ​ที่​ไม่​มี

Mirai · ​ตุลาคม 2016

​เจ้าของ​เราเตอร์​ตาม​บ้าน ​กล้อง IP ​และ​เครื่องบันทึก​วิดีโอ ​ไม่​รู้​ว่า​ของ​พวก​นั้น​เป็น​คอมพิวเตอร์ ​พวกเขา​ซื้อ​มัน​มา​เพื่อ​ทำงาน​อย่าง​เดียว ​เสียบ​ไฟ ​แล้ว​ลืม ​ผู้ผลิต​เผา​รหัสผ่าน​ตายตัว​ลง​ใน​เฟิร์มแวร์​ก่อน​ส่งออก​จาก​โรงงาน ​และ​หลาย​กรณี​เจ้าของ​เปลี่ยน​มัน​ไม่​ได้​ต่อให้​อยาก​เปลี่ยน

​วันที่ 21 ​ตุลาคม 2016 ​ผู้ให้บริการ DNS ​ชื่อ Dyn ​ถูก​โจมตี​จาก​ปลายทาง​ถึง​ราว​หนึ่ง​แสน​จุด​ตาม​การวิเคราะห์​ของ Dyn ​เอง ​และ Twitter, Netflix, Reddit, GitHub ​กับ Spotify ​หาย​ไป​จาก​ผู้ใช้​ใน​พื้นที่​ส่วนใหญ่​ของ​สหรัฐ

​ลำดับ​เหตุการณ์​ก่อนหน้า​นั้น​สั้น ​วันที่ 20 ​กันยายน ​เว็บไซต์ Krebs on Security ​ถูก​โจมตี ​วันที่ 30 ​กันยายน ​ผู้ใช้​ชื่อ Anna-senpai ​ปล่อย source code ​ของ​มัลแวร์​สู่​สาธารณะ ​วันที่ 21 ​ตุลาคม Dyn ​ล้ม ​สาม​สัปดาห์​ระหว่าง​การแจก​เครื่องมือ​กับ​การใช้​มัน​ใน​ระดับ​นั้น ​ตัว​สแกน​ของ Mirai ​ถือ​พจนานุกรม​ชื่อ​ผู้ใช้​กับ​รหัสผ่าน 62 ​คู่ ​ไม่​ซ้ำ​กัน 61 ​คู่ ​มี​หนึ่ง​คู่​ซ้ำ ​นั่น​คือ​เหตุผล​ที่​วรรณกรรม​พิมพ์​ทั้งสอง​ตัวเลข ​และ​หกสิบ​สอง​คู่​คือ​ทั้งหมด​ที่​มัน​ต้อง​ใช้ ​มัน​ไม่​ใช่​เครื่องมือ​ถอดรหัส ​มัน​เป็น​แค่​รายชื่อ​ของ​ที่​ผู้ผลิต​พิมพ์​ไว้​ใน​คู่มือ

​งาน​ศึกษา​ใน USENIX Security 2017 ​โดย Antonakakis ​และ​คณะ ​ติดตาม​เจ็ด​เดือน ​วัด​จุดสูงสุด​ของ​การติดเชื้อ​พร้อมกัน​ได้ 600,000 ​เครื่อง ​ส่วนใหญ่​เป็น​เราเตอร์​ตาม​บ้าน ​กล้อง IP ​และ​เครื่องบันทึก​วิดีโอ ​ส่วนตัว​เลข​สะสม​สอง​ถึง​สาม​ล้าน​เครื่อง​ที่​แพร่​อยู่ ​การค้นคว้า​ครั้งนี้​ไม่​ได้​ตรวจ

​ตัวเลข 1.2 Tbps ​ที่​ถูก​พิมพ์​เป็น​ข้อเท็จจริง​มา​สิบ​ปี ​ตาย​ใน​การค้นคว้า ​และ​คน​ที่​ฆ่า​มัน​คือ Dyn ​เอง ​บริษัท​เขียน​ว่า​มี​รายงาน​ขนาด​ใน​ช่วง​นั้น ​และ​ในเวลานั้น​บริษัท​ยืนยัน​ข้ออ้าง​นี้​ไม่​ได้ Dyn ​ยัง​บอก​ด้วยว่า​ตัวเลข​ของ​ตน​ไม่​รวม​การจราจร​ที่​ถูก​กรอง​ต้นทาง ​ตัวเลข​จริง​จึง​ไม่​รู้​ว่า​มาก​หรือ​น้อยกว่า ​มัน​แค่​ไม่​รู้ ​และ​การที่​ตัวเลข​นี้​หาย​ไป​ไม่​ได้​ทำให้​เรื่องเล็ก​ลง ​เพราะ​สิ่ง​ที่​รู้​คือ​คาน​งัด​ไม่​ใช่​แบนด์วิดท์ ​การแปลง​ชื่อ​เป็นที่​อยู่​คือ​จุด​ล้ม​จุด​เดียว​ของ​ทุกอย่าง​ที่อยู่​เหนือ​มัน ​ล้ม Dyn ​ได้​ก็​ล้ม​ทุก​ชื่อ​ที่ Dyn ​ถือ​อยู่

​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​อุปกรณ์​ถูก​ส่งออก​จาก​โรงงาน​พร้อม​รหัสผ่าน​ตายตัว​ที่​ตีพิมพ์​แล้ว ​บน​บริการ​ที่​เข้าถึง​ได้​จาก​อินเทอร์เน็ต​เปิด ​ไม่​มี​กลไก​อัปเดต ​และ​เจ้าของ​ไม่​รู้​ว่า​สิ่ง​นั้น​เป็น​คอมพิวเตอร์

​คำถาม​ประจำ​ภาค — ​ข้อบกพร่อง​มี​อยู่​นาน​เท่าไร​ก่อน​ถูก​ใช้ — ​ไม่​มี​คำตอบ​ในกรณีนี้ ​และ​เหตุผล​ที่​ไม่​มี​คือ​เหตุผล​ที่​แย่​ที่สุด ​มัน​ไม่​ใช่​ข้อบกพร่อง​ที่เกิด​ใน​วันหนึ่ง​และ​แก้​ด้วย​แพตช์ ​มัน​คือ​การตัดสินใจ​ใน​การผลิต ​อยู่​ใน​ฮาร์ดแวร์​ที่​มีอายุ​ใช้งาน​หลาย​ปี​และ​ไม่​มีทาง​ส่ง​การแก้ไข​ไป​ถึง ​ข้อบกพร่อง​คือ​ตัว​สินค้า

​สิ่ง​ที่​กรณี​นี้​สอน: ​ก่อน​ต่อ​อุปกรณ์​ใด​เข้า​เครือข่าย ​ถาม​สอง​ข้อ — ​เปลี่ยน​รหัสผ่าน​จาก​โรงงาน​ได้​ไหม ​และ​ผู้ผลิต​ส่ง​แพตช์​มา​ทาง​ไหน — ​ถ้า​ตอบ​ไม่​ได้​ทั้งคู่ ​ให้​ถือว่า​มัน​ติดเชื้อ​แล้ว​ตั้งแต่​วัน​ซื้อ

Equifax · 2017

​วันที่ 7 ​มีนาคม 2017 Apache ​ประกาศ​ช่องโหว่ CVE-2017-5638 ​ใน Struts ​พร้อม​แพตช์​ใน​วันเดียวกัน ​แบบ​ก่อสร้าง​ของ​การโจมตี​จึง​วาง​อยู่​ใน​ที่สาธารณะ​พร้อม​คำเตือน​และ​ทางแก้​ตั้งแต่​นาที​แรก ​และ 67 ​วัน​ต่อมา ​ผู้​โจมตี​เดิน​เข้า​พอร์ทัล​รับ​เรื่อง​ร้องเรียน​ของ Equifax ​ผ่าน​ช่องโหว่​นั้น​ที่​ยัง​ไม่​ได้​แพตช์

​เรื่องจริง​ของ​กรณี​นี้​ไม่​ได้​อยู่​ที่​แพตช์​ที่​พลาด ​มัน​อยู่​ที่​ทำไม​ไม่​มี​ใคร​เห็น​อะไร​เลย​ตลอด​สอง​เดือน​ครึ่งหลัง​จากนั้น ​อุปกรณ์​ที่​ตรวจการ​จราจร​เข้ารหัส​ในเครือ​ข่าย​ของ Equifax ​หยุด​ทำงาน​มา 19 ​เดือน ​เพราะ​ใบรับรอง​ของ​มัน​หมดอายุ ​วันที่ 29 ​กรกฎาคม ​พนักงาน​คน​หนึ่ง​ต่ออายุ​ใบรับรอง ​เครื่องมือ​เริ่ม​แจ้ง​เตือน​การจราจร​ผิดปกติ​ทันที ​ความสามารถ​นี้​ถูก​ซื้อ ​ถูก​ติดตั้ง ​และ​ตาบอด ​และ​ไม่​มี​อะไร​ใน​องค์กร​สังเกตว่า​กลไก​ควบคุม​ชิ้น​หนึ่ง​หยุด​ส่งผล​ลัพธ์​มา​ปี​ครึ่ง

​วันที่​เรียง​ตามลำดับ​ที่​สำคัญ ​เข้า​ระบบ 13 ​พฤษภาคม ​ระหว่าง​พฤษภาคม​ถึง​ปลาย​กรกฎาคม ​ผู้​โจมตี​ค้น​ฐานข้อมูล​ของ Equifax ​แยกกัน 51 ​ฐาน ​ตรวจ​พบ 29 ​กรกฎาคม ​ซึ่ง​เป็น​วัน​เดียว​กับ​ที่​ใบรับรอง​ถูก​ต่ออายุ ​เปิดเผย​ต่อ​สาธารณะ 7 ​กันยายน ​ระยะเวลา​ที่​ผู้​โจมตี​อยู่​ใน​ระบบ ​ตัวเลข​ที่​ใช้​กัน​ทั่วไป​คือ 76 ​วัน ​นับ​ตาม​ปฏิทิน​จาก 13 ​พฤษภาคม​ถึง 29 ​กรกฎาคม​ได้ 77 ​วัน ​เล่ม​นี้​พิมพ์​ทั้งสอง

​ขนาด 147 ​ล้าน​คน ​ตามตัว​เลข​ของ Equifax ​และ FTC ​ราว​ครึ่งหนึ่ง​ของ​ประชากร​สหรัฐ ​รวม​ผู้อยู่อาศัย​ใน​สหราชอาณาจักร​และ​แคนาดา ​ตัวเลข​ของ GAO ​คือ​อย่าง​น้อย 145.5 ​ล้าน​คน ​นับ​เฉพาะ​ผู้บริโภค​ใน​สหรัฐ ​ทั้งสอง​ตัวเลข​ถูกต้อง ​มัน​นับ​คนละ​ประชากร ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​ช่องโหว่​ที่​มี​แพตช์​สาธารณะ​ถูก​ปล่อย​ให้​เดิน​อยู่ 67 ​วัน​บน​แอปพลิเคชัน​ที่​หันหน้า​หา​อินเทอร์เน็ต ​ในเครือ​ข่าย​ที่​ไม่​แบ่ง​ส่วน ​ภายใต้​ระบบ​เฝ้า​ระวัง​ที่​ถูก​ปิด​ด้วย​ใบรับรอง​หมดอายุ​และ​ไม่​มี​ใคร​คิดถึง

​ค่าย​อม​ความราว 700 ​ล้าน​ดอลลาร์ ​กับ FTC, CFPB ​และ 50 ​รัฐ ​เดือน​กรกฎาคม 2019 ​แบ่ง​เป็น 575 ​ล้าน​ทันที ​และ​เพิ่ม​ได้​อีก​ถึง 125 ​ล้าน ​รายงาน​ชันสูตร​ของ GAO ​หมายเลข GAO-18-559 ​เดือน​สิงหาคม 2018 ​ระบุ​ความบกพร่อง​เชิง​ระบบ​สี่​ด้าน ​การระบุ ​การตรวจจับ ​การแบ่งส่วน ​และ​การกำกับ​ข้อมูล ​สี่​ความล้มเหลว ​ไม่​ใช่​แพตช์​ที่​พลาด​หนึ่ง​ตัว

​ในแง่​สัน​ของ​เล่ม 67 ​วัน​คือ​ระยะ​ที่​แบบ​ก่อสร้าง​พร้อม​คำเตือน​วาง​อยู่​ใน​ที่สาธารณะ ​และ​ผู้​โจมตี​อ่าน​มัน​ก่อน​เจ้าของ

​สิ่ง​ที่​กรณี​นี้​สอน: ​ให้​เครื่องมือ​ตรวจจับ​ทุก​ตัว​รายงาน​จำนวน​สิ่ง​ที่​มัน​เห็น​ต่อ​วัน ​แล้ว​ตั้ง​สัญญาณ​เตือน​เมื่อ​ตัวเลข​นั้น​เป็น​ศูนย์ — ​ความเงียบ​ของ​เครื่องมือ​ไม่​ใช่​ความสงบ​ของ​ระบบ

NotPetya · ​มิถุนายน 2017

​ใคร​ทำ​ธุรกิจ​ใน​ยูเครน​ปี 2017 ​แทบ​ต้อง​ใช้​ซอฟต์แวร์​บัญชี​ภาษี​ชื่อ M.E.Doc ​ยื่น​ภาษี ​ฐาน​ผู้​ติดตั้ง​จึง​คือ​บริษัท​ที่​ทำ​ธุรกิจ​ใน​ยูเครน ​รวมถึง​สำนักงาน​ท้องถิ่น​ของ​บริษัทข้ามชาติ ​และ​ทุก​เครื่อง​ที่​ติดตั้ง​มัน​ถูก​ตั้งค่า​ให้​รับ​อัปเดต​จาก​เซิร์ฟเวอร์​ของ M.E.Doc ​เอง​โดยอัตโนมัติ ​เพราะ​นั่น​คือ​สิ่ง​ที่​ซอฟต์แวร์​ที่​ดูแล​ดี​ควร​ทำ

​วันที่ 27 ​มิถุนายน 2017 ​หนึ่ง​วันก่อน​วันรัฐธรรมนูญ​ของ​ยูเครน Maersk ​บริษัท​เดินเรือ​คอนเทนเนอร์​ใหญ่​ที่สุด​ใน​โลก​สูญเสีย domain controller ​ทุก​ตัว​ในเครือ​ข่าย​ทั่วโลก ​และ​ต้อง​ติดตั้ง PC ​ราว 45,000 ​เครื่อง​กับ​เซิร์ฟเวอร์ 4,000 ​เครื่อง​ใหม่​ทั้งหมด

​ทาง​ที่​มัน​เข้าไป​ถึงที่​นั่น​คือ​เซิร์ฟเวอร์​อัปเดต ​ผู้​โจมตี​ยึด​เซิร์ฟเวอร์​อัปเดต​ของ M.E.Doc ​เปลี่ยนเส้นทาง​คำขอ​อัปเดต​จาก​เครื่อง​ลูกค้า​ไป​ยัง​เซิร์ฟเวอร์​ของ​ตน ​และ​สั่ง​ให้​ดาวน์โหลด​และ​รัน ​ทุก​เหยื่อ​รับ​มัน​ผ่าน​ช่องทาง​ที่​ตน​ตั้งใจ​ตั้งค่า​ให้​ไว้ใจ​และ​รัน​อัตโนมัติ ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​ช่องทาง​อัปเดต​ตรวจ​ตัวตน​ของ​เซิร์ฟเวอร์ ​ไม่​ได้​ตรวจ​ตัว​สิ่ง​ที่​ส่ง​มา ​ยึด​เซิร์ฟเวอร์​ได้​จึง​เท่ากับ​ยึด​ทุก​เครื่อง​ปลายทาง

​มัน​ไม่​ใช่ ransomware ​มัน​แสดง​ข้อความ​เรียก​ค่าไถ่ ​แต่​กุญแจ​ติดตั้ง​ที่​แสดง​เป็น​ค่า​สุ่ม ​จ่าย​แล้ว​ถอดรหัส​ไม่​ได้ ​มัน​คือ​ตัว​ลบ​ข้อมูล​ที่​สวม​เสื้อ ransomware ​ข้อ​นี้​เปลี่ยน​ความหมาย​ของ​ทุก​เรื่องเล่า​ที่​ตามมา ​เรื่องเล่า​การฟื้นตัว​ทุก​เรื่อง​จึง​เป็นการ​สร้าง​ใหม่ ​ไม่​ใช่​การถอดรหัส

domain controller ​ทุก​ตัว​ของ Maersk ​ถูก​ทำลาย ​และ​เครือข่าย Windows ​ที่​ไม่​มี Active Directory ​สร้าง​ใหม่​ไม่​ได้ ​เพราะ​ไม่​เหลือ​อะไร​บอก​ว่า​ใคร​เป็น​ใคร ​เหลืออยู่​ตัว​เดียว ​เครื่องใน​สำนักงาน​ห่างไกล​ที่​กานา ​ไฟ​ดับ​ใน​พื้นที่​ทำให้​มัน​หลุด​จาก​เครือข่าย​ก่อน NotPetya ​ไป​ถึง ​การฟื้นตัว​ทั้งหมด​ของ​บริษัท​เดินเรือ​ใหญ่​ที่สุด​ใน​โลก​ขึ้นอยู่กับ​อุบัติเหตุ​ใน​สำนักงาน​ที่​มี​ทรัพยากร​น้อยที่สุด

​ตัวเลข​ความเสียหาย​มี​สองชั้น ​และ​เล่ม​นี้​พิมพ์​ทั้งสอง​ชั้น​เพราะ​ทั้งสอง​ชั้น​บอก​คนละเรื่อง ​ทำเนียบขาว​วันที่ 15 ​กุมภาพันธ์ 2018 ​ระบุ​ว่า​เป็นฝี​มือ​กองทัพ​รัสเซีย ​เรียก​มัน​ว่าการ​โจมตี​ไซเบอร์​ที่​ทำลายล้าง​และ​แพง​ที่สุด​ใน​ประวัติศาสตร์ ​และ​ให้​ตัวเลข​เกิน​หนึ่ง​หมื่น​ล้าน​ดอลลาร์ ​ตัวเลข​นั้น​ไม่​มี​ฐาน​การตรวจสอบ​และ​ไม่​มี​วิธี​คำนวณ​ตีพิมพ์ ​มัน​จึง​อยู่​ใน​เล่ม​นี้​ใน​ฐานะ​คำแถลง​ของ​ทำเนียบขาว ​ไม่​ใช่​ใน​ฐานะ​จำนวน​เงิน ​ส่วนตัว​เลขที่​บริษัท​เปิดเผย​เอง​ตรวจ​ได้ Merck ​ราว 870 ​ล้าน FedEx/TNT Express 300 ​ล้าน​ใน​ไตรมาส​เดียว​และ​เกิน 400 ​ล้าน​รวม Maersk 250 ​ถึง 300 ​ล้าน ​รวม​แล้ว​ต่ำกว่า​สอง​พัน​ล้าน​ที่​ระบุ​ที่มา​ได้ ​ส่วน​หางยาว​ที่​เหลือ​ไม่​รู้​จริง

​คำถาม​ประจำ​ภาค​ตอบ​ได้​สองชั้น​เช่นกัน ​ส่วน​ที่​ใช้​แพร่​ในเครือ​ข่าย​อาศัย​ช่องโหว่ SMB ​ที่ MS17-010 ​แพตช์​ไว้​วันที่ 14 ​มีนาคม 2017 ​สาม​เดือน​ครึ่ง​ก่อนหน้า ​แต่​ทางเข้า​หลัก​คือ​ช่องทาง​อัปเดต​เอง ​และ​นั่น​ไม่​ใช่​ข้อบกพร่อง​ที่​มีอายุ ​มัน​คือ​แบบ​ที่​ออก​ไว้

​สิ่ง​ที่​กรณี​นี้​สอน: ​หา​ช่องทาง​ทุก​ช่อง​ที่​เครื่อง​ของ​คุณ​รับ​โค้ด​มา​รัน​โดยอัตโนมัติ ​แล้ว​ถาม​ว่า​มัน​ตรวจ​ลายเซ็น​ของ​สิ่ง​ที่​ส่ง​มา ​หรือ​แค่​ตรวจ​ว่า​เซิร์ฟเวอร์​ถูก​ตัว

SolarWinds · ​ธันวาคม 2020

​องค์กร​ราว 300,000 ​แห่ง​เป็น​ลูกค้า​ของ SolarWinds ​และ​งานประจำ​ที่​ไม่​มี​ใคร​ต้อง​คิดมาก​คือ​ติดตั้ง​อัปเดต​ของ​ซอฟต์แวร์ Orion ​ที่​บริษัท​ลง​ลายเซ็น​ส่ง​มา ​ลายเซ็น​คือ​สิ่ง​ที่​ทำให้​ไม่ต้อง​คิด ​มัน​ตอบคำถาม​ว่า​ของ​นี้​มาจาก​ใคร

​วันที่ 13 ​ธันวาคม 2020 FireEye ​เปิดเผย​ว่า​อัปเดต​ที่ SolarWinds ​ลง​ลายเซ็น​และ​แจกจ่าย​ระหว่าง​เดือน​มีนาคม​ถึง​มิถุนายน​ปี​นั้น ​มี backdoor ​อยู่​ข้างใน ​และ​ลูกค้า​ถึง 18,000 ​ราย​ติดตั้ง​มัน​ไป​แล้ว FireEye ​พบ​มัน​ขณะ​สอบสวน​การถูก​เจาะ​ของ​ตัวเอง

​สิ่ง​ที่อยู่​ใน​ระบบ build ​ของ SolarWinds ​คือ​มัลแวร์​อีก​ตัว​ชื่อ SUNSPOT ​และ​จังหวะ​ที่​มัน​เลือก​คือ​ทั้งหมด​ของ​เรื่อง ​มัน​เฝ้าดู​โปรเซส​ที่​แปล​โค้ด​ของ Orion ​และ​สลับ​ไฟล์ source ​หนึ่ง​ไฟล์​ใน​จังหวะ build ​เพื่อ​ฝัง backdoor ​ชื่อ SUNBURST ​หลัง​นัก​พัฒนา​ตรวจ​โค้ด​เสร็จ ​ก่อน​ลง​ลายเซ็น ​ผล​คือ​คลัง source ​สะอาด ​และ binary ​ที่​ลง​ลายเซ็น​แล้ว​ไม่​สะอาด ​การตรวจ​ทุก​ชั้น​ปลายทาง ​ลายเซ็น​ถูกต้อง ​ผู้​เผยแพร่​ตัวจริง ​ค่า hash ​ตรง​กับ​ที่ SolarWinds ​ประกาศ ​ตอบ​ว่า​ผ่าน​ทั้งหมด ​ไม่​มี​ชั้น​ไหน​ตอบ​ผิด ​ทุก​ชั้น​ตอบคำถาม​ที่​ตัวเอง​ถูก​สร้าง​มา​ให้​ถาม ​นี่​คือ​ข้อโต้แย้ง​ของ Thompson ​ปี 1984 ​และ​คำทำนาย​ใน​มาตรา 3.2.4 ​ของ​รายงาน Multics ​ปี 1974 ​ทำงาน​จริง​ใน​ระดับ​อุตสาหกรรม ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​ระบบ build ​ถูก​ไว้ใจ​และ​ไม่​ถูก​เฝ้า ​กุญแจ​ลง​ลายเซ็น​จึง​รับรอง binary ​ที่​ไม่​มีม​นุษย์​คน​ไหน​เคย​อ่าน

​ตัวเลข​ที่​ถูก​รายงาน​ผิด​บ่อย​ที่สุด​คือ 18,000 ​นั่น​คือ​จำนวน​ลูกค้า​ที่​ติดตั้ง​อัปเดต​ปนเปื้อน ​จาก​ลูกค้า​ราว 300,000 ​ราย SolarWinds ​ระบุ​จำนวน​ที่​ถูก​ใช้ประโยชน์​จริง​ไว้​ต่ำกว่า 100 ​ทำเนียบขาว​โดย Anne Neuberger ​วันที่ 17 ​กุมภาพันธ์ 2021 ​ระบุ​หน่วยงานรัฐ​บาล​กลาง​เก้า​แห่ง​และ​บริษัทเอกชน​ราว 100 ​แห่ง ​ติดตั้ง​ไม่​เท่ากับ​ถูก​เจาะ

​ช่องว่าง​ระหว่าง 18,000 ​กับ​ราว​หนึ่งร้อย​คือ​ตัวเลข​ที่​น่าสนใจ​กว่า​ทั้งสอง​ตัว ​ผู้​โจมตี​สร้าง​กลไก​ส่ง​ของ​ที่​ไป​ถึง​หนึ่ง​หมื่น​แปด​พัน​องค์กร ​แล้ว​ใช้​มัน​กับ​เศษ​เสี้ยว​ของ​หนึ่ง​เปอร์เซ็นต์ ​เพราะ​เปิด​ใช้​ทั้งหมด​จะ​เผา​มัน​ทิ้ง ​ความยับยั้งชั่งใจ​ตรงนั้น​ไม่​ใช่​ความเมตตา ​มัน​คือ​การถนอม​ทรัพย์สิน

​ระยะเวลา: ​เข้าถึง​ระบบ​ของ SolarWinds ​เอง​ราว​เดือน​กันยายน 2019 ​ทดลอง​ฝัง​เดือน​ตุลาคม 2019 backdoor ​ตัวจริง​ออก​ไป​กับ build ​ระหว่าง​มีนาคม​ถึง​มิถุนายน 2020 ​ถูก​พบ​เดือน​ธันวาคม 2020 ​ราว​สิบ​สี่​ถึง​สิบห้า​เดือน​จาก​เข้า​ครั้งแรก​ถึง​เปิดเผย ​และ​มี​ความพยายาม​ลบ​ร่องรอย​จำนวนมาก​ที่​ใช้​ไป​เพื่อ​ยืดตัว​เลข​นี้​โดยเฉพาะ

​ในแง่​สัน​ของ​เล่ม ​ผู้​โจมตี​ไม่​ได้​เจาะ​แบบ​ก่อสร้าง ​เขา​เจาะ​โรงงาน​ที่​หล่อ​ชิ้นส่วน ​แล้ว​ปล่อย​ให้​ระบบ​ตรวจรับ​ของ​ทุก​ลูกค้า​ประทับตรา​ให้

​สิ่ง​ที่​กรณี​นี้​สอน: ​สร้าง binary ​จาก source ​เดียวกัน​บน​เครื่อง​ที่สอง ​แล้ว​เทียบ​ไบต์​ต่อ​ไบต์​กับ​สิ่ง​ที่​ออกจาก​ระบบ build — ​ลายเซ็น​บอก​ว่า​ใคร​ส่ง ​ไม่​ได้​บอก​ว่า​ข้างใน​คือ​อะไร

Log4Shell · ​ธันวาคม 2021

​งาน​ที่​น่าเบื่อ​ที่สุด​ที่​ซอฟต์แวร์​ทำ ​คือ​การจด​ว่า​เกิด​อะไร​ขึ้น ​และ​ไลบรารี​ที่​รับงาน​นั้น​ใน​โลก Java ​ชื่อ Log4j ​มัน​อยู่​แทบ​ทุกที่​ที่ Java ​ทำงาน ​เพราะ​แทบ​ทุก​โปรแกรม​ต้อง​จด​อะไร​สัก​อย่าง ​ปัญหา​อยู่​ตรง​ที่​มัน​ไม่​ได้​แค่​จด ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​ไลบรารี​บันทึก log ​ปฏิบัติ​ต่อ​ข้อความ​ที่​ถูก​ขอให้​จด ​ใน​ฐานะ​สิ่ง​ที่​ต้อง​ประเมิน ​แทนที่จะ​เป็น​สิ่ง​ที่​ต้อง​เก็บ

​วันที่ 24 ​พฤศจิกายน 2021 Chen Zhaojun ​จาก Alibaba Cloud Security Team ​รายงาน​ช่องโหว่ CVE-2021-44228 ​ใน Log4j ​ต่อ Apache ​และ​เมื่อ​มัน​เป็น​สาธารณะ​วันที่ 9–10 ​ธันวาคม ​คะแนน CVSS ​ของ​มัน​คือ 10.0 ​จาก 10

​สิบ​เต็ม​แปล​ว่า​สั่ง​รัน​โค้ด​จาก​ระยะไกล​ได้​โดย​ไม่ต้อง​ยืนยัน​ตัวตน ​จุดชนวน​ง่าย ​และ​ไลบรารี​อยู่​แทบ​ทุกที่​ที่ Java ​ทำงาน ​การแก้​ไล่​มา​สาม​รุ่น 2.15.0 ​แล้ว 2.16.0 ​ที่​ปิด JNDI ​เป็น​ค่า​ตั้งต้น​และ​ถอด​การค้นหา​ใน​ข้อความ​ออก​ทั้งหมด ​แล้ว 2.17.0 ​สาม​รุ่น​ใน​ไม่​กี่​สัปดาห์​คือ​ภาพ​ของ​คน​ที่​กำลัง​ไล่​แก้​ของ​ที่​ไม่​รู้​ว่า​ตัวเอง​มี​กี่​ทาง

​ระยะเวลา: ​ปลั๊ก​อิน​ค้นหา JNDI ​ออกมา​กับ Log4j 2.0-beta9 ​วันที่ 18 ​กรกฎาคม 2013 ​รุ่น​ที่​ได้รับ​ผลกระทบ​ไล่​จาก 2.0-beta9 ​ถึง 2.14.1 ​ราว​แปด​ปี​ใน​โค้ด​ที่​ปล่อย​ใช้แล้ว ​ก่อน​มี​ใคร​รายงาน

​ความกว้าง​วัด​ได้ ​และ​เหตุผล​ที่​มัน​กว้าง​ขนาด​นั้น​คือ​ส่วน​ที่​ทำให้​แก้​ยาก Google ​วิเคราะห์​วันที่ 17 ​ธันวาคม 2021 ​พบ​แพ็กเกจ Java ​ที่​ได้รับ​ผลกระทบ​เกิน 35,000 ​แพ็กเกจ ​เกิน 8% ​ของ Maven Central ​ดัชนี​แพ็กเกจ Java ​หลัก ​ส่วนใหญ่​ได้รับ​ผลกระทบ​โดยอ้อม ​ไลบรารี​มาถึง​ลึก​กว่า​หนึ่ง​ชั้น​ของ dependency ​ทีม​ที่​อ่าน​รายการ dependency ​ของ​ตัวเอง​จึง​ไม่​เห็น Log4j ​อยู่​ใน​นั้น​เลย ​ทั้งที่​มัน​อยู่ Cyber Safety Review Board ​ใน​รายงาน​ฉบับ​แรก​วันที่ 11 ​กรกฎาคม 2022 ​เรียก​มัน​ว่า​ช่องโหว่​ระดับ endemic ​คาด​ว่า​จะ​ถูก​ใช้​ต่อไป​ถึง​ทศวรรษ 2030 ​ด้วย​เหตุผล​ตรงตัว​ว่า​ไม่​มี​วิธี​กลาง​ที่จะ​หา​สำเนา​ทุก​ชุด ​และ​จึง​ไม่​มี​วิธี​กลาง​ที่จะ​แก้

​แล้ว​ใคร​เป็น​คน​แก้ ​ผู้ดูแล Apache Logging Services ​โครงการ​เบื้องหลัง​ไลบรารี​ที่​ฝัง​อยู่​ใน​สัดส่วน​ที่วัด​ได้​ของ​ซอฟต์แวร์ Java ​ทั้งโลก ​เป็น​อาสาสมัคร​ไม่​ได้รับ​เงิน ​รายงาน​ร่วมสมัย​ให้​จำนวน 16 ​คน ​ตัวเลข​นี้​ไม่​ได้​ตรวจ​กับ​แหล่ง​ต้นทาง​ของ Apache ​ส่วนตัว​เลข​สาม​คน​ที่​เล่า​ต่อกัน​มา ​หา​แหล่ง​ไม่​พบ ​และ​มัน​ไม่​สำคัญ​เท่าที่​คน​เล่า​คิด ​ครึ่ง​ที่​รับ​น้ำหนัก​คือ​คำ​ว่าไม่ได้​รับเงิน ​ไม่​ใช่​จำนวน​หัว ​การแก้ไข​ต้อง​ถูก​ผลิต​โดย​อาสาสมัคร​เหล่านั้น ​ด้วย​ความเร็ว ​ใน​สุดสัปดาห์​เดียว ​ไม่​มีค่า​ตอบแทน ​ขณะที่​ผู้ขาย​ความมั่นคง​ทุกราย​บน​โลก​เขียน​ถึง​พวกเขา

​ในแง่​สัน​ของ​เล่ม ​ช่องโหว่​หนึ่ง​ช่อง​คัดลอก​ไป​พร้อม​ไลบรารี​สาม​หมื่น​ห้า​พัน​ครั้ง ​โดยที่​คน​ถือ​สำเนา​ไม่​รู้​ว่า​ถือ​อยู่ ​ผู้​โจมตี​ไม่ต้อง​หาว่า​ใคร​ใช้ Log4j ​เขา​ยิง​ทุกอย่าง​ที่​รับ​ข้อความ

​สิ่ง​ที่​กรณี​นี้​สอน: ​สร้าง​รายการ dependency ​ที่​ลึก​กว่า​หนึ่ง​ชั้น ​แล้ว​ค้น​ชื่อ​ไลบรารี​ที่​คุณ​ไม่​เคย​ตัดสินใจ​ใช้ — ​ที่นั่น​คือ​ที่​ช่องโหว่​ระดับ endemic ​อาศัย​อยู่

Colonial Pipeline · ​พฤษภาคม 2021

​วันที่ 7 ​พฤษภาคม 2021 Colonial Pipeline ​ปิด​ท่อ​ส่ง​น้ำมัน​ยาว​กว่า 5,500 ​ไมล์​ที่​ส่ง​น้ำมัน​ราว 2.5 ​ล้าน​บาร์เรล​ต่อ​วัน — ​ราว 45% ​ของ​เชื้อเพลิง​ฝั่ง​ตะวันออก​ของ​สหรัฐ — ​ด้วยมือ​ของ​บริษัท​เอง ​ระบบ​ที่​ผู้​โจมตี​ทำให้​ล่ม​ไม่​ใช่​ท่อ ​มัน​คือ​ระบบ​ออก​บิล

​ส่วน​ที่​เล่ม​นี้​ต้องการ​อยู่​ตรงนั้น ​ระบบปฏิบัติการ​ของ​ท่อ​ไม่​ได้รับ​การยืนยัน​ว่า​ถูก​เจาะ Colonial ​ปิด​ท่อ​เอง​เพื่อ​ความปลอดภัย ​เพราะ​ระบบ​ออก​บิล​ล่ม ​และ​บริษัท​บันทึก​ไม่​ได้​ว่า​กำลัง​ส่ง​อะไร​ให้​ใคร ​ความล้มเหลว​ทางกายภาพ​จึง​เป็นผล​ของ​ระบบ​ธุรกิจ​ล้ม ​บวก​กับ​ไม่​มี​วิธี​เดินเครื่อง​แบบ​ลด​ระดับ ​ส่วน​เผื่อ​ที่​ขาด​ไม่​ใช่​มาตรการ​ความมั่นคง ​มัน​คือ​แผน​สำรอง​ด้วยมือ

​ลำดับ​เหตุการณ์​กินเวลา​ไม่​ถึง​สัปดาห์ ​การขโมย​ข้อมูล​เดิน​อยู่แล้ว​ตั้งแต่​วันที่ 6 ​พฤษภาคม ransomware ​ถูก​ปล่อย​และ​ท่อ​ถูก​ปิด​วันที่ 7 ​จ่าย​ค่าไถ่​วันที่ 8 ​กลับมา​ส่ง​เต็ม​ระบบ​วันที่ 12 ​ราว​ห้า​วัน ​ห้า​วันนั้น​พอให้​คิว​เติมน้ำมัน​ยาว​จาก​เวอร์จิเนีย​ถึง​จอร์เจีย ​และ​สายการบิน​เปลี่ยนเส้นทาง​ไป​เติม​เชื้อเพลิง​ที่อื่น

​ทางเข้า​คือ​รหัสผ่าน​ของ​บัญชี VPN ​เก่า​ที่​เลิกใช้​แล้ว​และ​ไม่​มี multi-factor authentication ​ปัจจัย​เดียว ​บัญชี​เดียว ​ไม่​มี​ใคร​มีหน้า​ที่​ปลด​มัน ​บัญชี​นั้น​มี​อยู่​นาน​เท่าไร​ก่อน​ถูก​ใช้ ​ไม่​ทราบ ​และ​นั่น​คือ​คำตอบ​ของ​คำถาม​ประจำ​ภาค​ในกรณีนี้ ​องค์กร​ตอบ​ไม่​ได้​เพราะ​ไม่​มี​ใคร​นับ ​ต้นเหตุ​ใน​หนึ่ง​ประโยค: ​บัญชี​เข้าถึง​ระยะไกล​ที่​หลับ​อยู่ ​มี​ปัจจัย​ยืนยัน​เดียว​ที่​ใช้​ซ้ำ​ได้ ​ไม่​เคย​ถูก​ปลด ​และ​ไม่​มี​อะไร​ใน​องค์กร​รับผิดชอบ​ว่า​ต้อง​รู้​ว่า​มัน​ยังอยู่

​ค่าไถ่​ราว 75 BTC ​ราว 4.4 ​ล้าน​ดอลลาร์ ​จ่าย​ให้​กลุ่ม DarkSide ​วันที่ 8 ​พฤษภาคม ​วันที่ 7 ​มิถุนายน ​กระทรวงยุติธรรม​ประกาศ​ยึด​ได้ 63.7 BTC ​มูลค่า​ราว 2.3 ​ล้าน​ดอลลาร์ 85% ​ของ​เหรียญ ​แต่​ราว​ครึ่ง​เดียว​ของ​เงิน ​เพราะ​ราคา bitcoin ​ตก​ระหว่าง​เดือน​ที่​จ่าย​กับ​เดือน​ที่​ยึด ​ประโยค​ว่า​ค่าไถ่​ถูก​กู้​คืน​จึง​จริง​สำหรับ​เหรียญ​และ​เท็จ​สำหรับ​เงิน ​และ​หน่วย​ที่​คุณ​เลือก​นับ​คือ​สิ่ง​ที่​ตัดสิน​ว่า​เรื่อง​นี้​จบ​ดี​หรือไม่

​ในแง่​สัน​ของ​เล่ม ​ผู้​โจมตี​ไม่​ได้​แตะ​ท่อ ​เขา​แตะ​บัญชี​ที่​ไม่​มี​ใคร​จำได้​ว่า​มี ​และ​ท่อ​หยุด​เพราะ​ไม่​มี​ใคร​เคย​ซ้อม​เดิน​มัน​โดย​ไม่​มี​คอมพิวเตอร์

​สิ่ง​ที่​กรณี​นี้​สอน: ​ถาม​ว่า​ถ้า​ระบบ​ออก​บิล​ล่ม​พรุ่งนี้ ​เครื่องจักร​จริง​เดิน​ต่อ​ด้วย​กระดาษ​ได้​กี่​วัน — ​คำตอบ​นั้น​คือ​ส่วน​เผื่อ​จริง​ของ​ท่อ ​ไม่​ใช่ firewall

XZ Utils · ​มีนาคม 2024

xz ​เป็น dependency ​ของ Linux ​แทบ​ทุก​ดิสท​ริ​บิว​ชัน ​และ​คน​ที่​ดูแล​มัน​มี​อยู่​คนเดียว​ชื่อ Lasse Collin ​ไม่​ได้รับ​เงิน ​ตรวจ​แพตช์​ไม่​ทัน ​และ​เหนื่อย ​ปลายปี 2021 ​มี​คน​เริ่ม​สนใจ​ข้อเท็จจริง​ข้อ​นั้น ​ตัวตน​ชื่อ Jia Tan ​เริ่ม​ส่ง​แพตช์​เล็กๆ ​ให้ xz-devel

​ปฏิบัติการ​ทั้งหมด​ใช้เวลา​สอง​ปี​ครึ่ง ​และ​เกือบ​ทั้งหมด​ของ​มัน​เป็นเรื่อง​ของ​คน ​ไม่​ใช่​โค้ด ​เมษายน 2022 ​ตัวตน​ที่สอง​ชื่อ Jigar Kumar ​ปรากฏ​ขึ้น​มากด​ดัน​ให้​รับ​แพตช์​ของ Jia Tan ​มิถุนายน 2022 Jigar Kumar ​โพสต์​สาธารณะ​กดดัน Collin ​ผู้ดูแล​เพียง​คนเดียว ​เรื่อง​ตรวจ​ช้า​และ​เรียกร้อง​ให้​เพิ่ม​ผู้ดูแล Collin ​ตอบ​ว่า​ทรัพยากร​ของ​เขา​มีจำกัด​เกินไป ​และ Jia Tan ​อาจ​รับบท​บาท​ใหญ่​ขึ้น ​วันที่ 10 ​มิถุนายน 2022 ​สาม​วันหลัง​อีเมล​กดดัน Collin ​รวม commit ​แรก​ที่ Jia Tan ​เป็น​ผู้เขียน Jigar Kumar ​ไม่​ปรากฏตัว​อีก​เลย ​งาน​ของ​เขา​เสร็จ​แล้ว ​กุมภาพันธ์ 2024 backdoor ​ออก​ไป​กับ​รุ่น 5.6.0 ​วันที่​แน่นอน​ของ​รุ่น​นี้ ​การค้นคว้า​ครั้งนี้​ยืนยัน​ไม่​ได้

​พื้นผิว​ที่​ถูก​โจมตี​ไม่​ใช่​โค้ด ​มัน​คือ​ผู้ดูแล​ที่​หมดแรง​หนึ่ง​คน ​ผลิต​คำร้องเรียน ​ผลิต​อาสาสมัคร ​แล้ว​ปล่อย​ให้​ความเหนื่อย​ทำ​ที่​เหลือ ​ส่วนตัว backdoor ​เอง​ก็​ไม่​ได้​อยู่​ใน​ที่​ที่​คน​ตรวจ​มอง ​มัน​ไม่​ได้​อยู่​ใน​คลัง git ​มัน​อยู่​ใน tarball ​ของ​รุ่น​ที่​ปล่อย ​ซ่อน​ใน​ไฟล์​ทดสอบ ​และ​ถูก​ประกอบ​ขึ้น​โดย​สคริปต์ build ​ใคร​อ่าน source ​สาธารณะ​เห็น​แต่​ความว่างเปล่า ​รูปร่าง​เดียว​กับ SUNSPOT ​ของ SolarWinds ​กับ compiler ​ของ Thompson ​และ​กับ​มาตรา 3.2.4 ​ของ​รายงาน​ปี 1974 ​ห้าสิบ​ปี ​บทเรียน​เดียว ​ยัง​ไม่​ได้​เรียน

​วันที่ 28 ​มีนาคม 2024 Andres Freund ​นัก​พัฒนา PostgreSQL ​ที่ Microsoft ​รายงาน​ต่อ​รายชื่อ​อีเมล oss-security ​ว่า xz/liblzma ​รุ่น 5.6.0 ​และ 5.6.1 ​มี backdoor ​และ​สิ่ง​ที่​พา​เขา​ไป​เจอ​คือ SSH login ​ที่​ใช้เวลา​ราว 500 ​มิล​ลิ​วินาที​แทนที่จะ​เป็น​ราว 100 ​เขา​กำลัง​วัด​ประสิทธิภาพ​บน Debian sid ​เขา​ไม่​ได้​ทำงาน​ความมั่นคง ​เขา​รำคาญ​ตัวเลข​ที่​ถอยหลัง ​ไล่​ดู ​เห็น Valgrind ​ชี้​ข้อผิดพลาด​เข้าไป​ใน liblzma ​และ​ตาม​ไป​ถึง tarball ​ของ xz ​ปฏิบัติการ​ระดับ​รัฐ​ที่​ผ่าน​การตรวจ​โค้ด ​ผ่าน​การตรวจรับ​ของ​ดิสท​ริ​บิว​ชัน ​และ​ผ่าน​สแกนเนอร์​อัตโนมัติ​ทุก​ตัว ​ถูกจับ​ด้วย​ความหน่วง 400 ​มิล​ลิ​วินาที​ที่​คน​หนึ่ง​คน​สังเกต​ขณะ​วัด​อย่าง​อื่น

CVSS 10.0 ​ขนาด​ความเสียหาย​แทบ​เป็น​ศูนย์ ​และ​เป็น​ศูนย์​เพราะ​วิธี​ที่​มัน​ถูกจับ​ได้​เท่านั้น ​มัน​ไป​ถึง Fedora Rawhide ​และ Fedora 41, Debian ​สาย testing/unstable, openSUSE Tumbleweed ​และ Kali ​สำหรับ​เครื่อง​ที่​อัปเดต​ระหว่าง 26–29 ​มีนาคม 2024 ​มัน​ไม่​ถึง Debian stable, RHEL, Ubuntu ​รุ่น​ออก​จริง ​หรือ SUSE Linux Enterprise ​ถ้า​มัน​ไป​ถึง​รุ่น stable ​รัศมี​คือ​เซิร์ฟเวอร์ Linux ​ส่วนใหญ่​บน​โลก ​พร้อม​ช่อง​รัน​โค้ด​จาก​ระยะไกล​ก่อน​ยืนยัน​ตัวตน ​สำหรับ​ใครก็ตาม​ที่​ถือ​กุญแจ​ส่วนตัว​ที่​ตรงกัน ​ราว​ห้า​สัปดาห์​ใน​โลก​จริง ​เทียบ​กับ​สอง​ปี​ครึ่ง​ของ​การเตรียม ​ส่วน​ที่​แพง​ของ​การโจมตี supply chain ​คือ​ความไว้ใจ ​ไม่​ใช่​โค้ด

​สิ่ง​ที่​กรณี​นี้​สอน: ​เมื่อ​ตัวเลข​ประสิทธิภาพ​เปลี่ยน​โดย​ไม่​มี​คำอธิบาย ​ให้​ไล่​จน​เจอ​สาเหตุ ​ไม่​ใช่​จน​มัน​หาย​ไป — ​ส่วน​เผื่อ​ชิ้น​สุดท้าย​ของ​ระบบนิเวศ​คือ​คน​ที่​ทน​ตัวเลข​แปลก​ไม่​ได้

​ท่า​ที่​เอา​ไป​ใช้ได้: ​สำหรับ​ทุก​ระบบ​ที่​คุณ​ดูแล ​เขียน​วันที่​สอง​วัน​ไว้​ข้าง​กัน — ​วันที่​ช่องโหว่​ประเภท​นั้น​ถูก​ตีพิมพ์​ครั้งแรก ​กับ​วันที่​ระบบ​ของ​คุณ​ปิด​มัน ​ช่องว่าง​ระหว่าง​สอง​วัน​คือ​เวลา​ที่​ผู้​โจมตี​มี​มากกว่า​คุณ ​และ​ใน​ภาค​นี้​มัน​วัด​เป็น​ปี

​จะ​พลิก​คำตัดสิน​ของ​ภาค​นี้​ได้​เมื่อ: ​มี​ชุด​ข้อมูล​ที่​ตรวจสอบ​ได้​ว่า​ช่องโหว่​ใน​ซอฟต์แวร์​ที่​ใช้​กัน​กว้าง ​ส่วนใหญ่​ถูก​ใช้​ภายใน​ไม่​กี่​วันหลัง​เกิด ​ไม่​ใช่​หลาย​ปี ​หรือ​มี​วิธี​คำนวณ​และ​ตัวเลข​ที่ audit ​ได้​ปรากฏ​สำหรับ​หนึ่ง​หมื่น​ล้าน​ดอลลาร์​ของ NotPetya, 1.2 Tbps ​ของ Dyn ​หรือ 100 ​ล้าน​ดอลลาร์​ของ​หนอน Morris

​แหล่ง​ของ​ภาค​นี้:

บทถัดไป · 6 / 85 · การป้องกันที่มีหลักฐาน
Size
Page
Font

How Much Margin Is Enough — A compendium of safety and security

❦
1ก่อนอ่าน21 · ส่วนเผื่อคืออะไร32 · เผื่อแล้วยังพัง43 · ศัตรูที่อ่านแบบแปลนของคุณ54 · เมื่อโครงสร้างเป็นซอฟต์แวร์65 · การป้องกันที่มีหลักฐาน76 · ยุคที่เครื่องมือของคุณเองอ่านคำสั่งจากคนอื่น8บทสรุปในหกบรรทัด