พบบั๊ก Y2K ใหม่ในระบบ BSD 2.11 ของอีมูเลเตอร์ PDP‑11/70

ที่มาภาพ: The Register

Security-อ่าน 5 นาทีThe Register

พบบั๊ก Y2K ใหม่ในระบบ BSD 2.11 ของอีมูเลเตอร์ PDP‑11/70

⚡ สรุป 30 วิ

นักพัฒนาชาวดัตช์พบข้อบกพร่อง Y2K ใน NTP daemon ของ BSD 2.11 ที่ทำงานบนอีมูเลเตอร์ PDP‑11/70 ทำให้แสดงปีผิดเป็น 19126 ระบบแก้ไขโดยอัปเดตโค้ดบน GitHub…

การค้นพบข้อบกพร่อง Y2K bug ใหม่ในระบบปฏิบัติการ BSD รุ่นเก่า 2.11 ทำให้เห็นว่าซอฟต์แวร์โบราณที่ยังคงใช้งานอยู่บางส่วนอาจยังมีช่องโหว่ที่ไม่ได้รับการแก้ไข แม้ว่าเหตุการณ์ Y2K เมื่อปี 1999 จะผ่านพ้นไปแล้ว การค้นพบนี้มาจากนักพัฒนาชาวดัตช์ที่กำลังทำงานกับอีมูเลเตอร์ของเครื่องคอมพิวเตอร์ขนาดเล็ก PDP‑11/70 ซึ่งอาจทำให้ผู้ที่สนใจการจำลองระบบเก่าและการบันทึกเวลาในคอมพิวเตอร์ต้องให้ความระมัดระวังเป็นพิเศษ

Overview

ข้อบกพร่องดังกล่าวถูกพบโดย Folkert van Heusden ขณะพัฒนาอีมูเลเตอร์สำหรับซีรีส์ Programmed Data Processor (PDP) ซึ่งผลิตตั้งแต่ทศวรรษ 1950‑1990 ระบบที่เกี่ยวข้องคือ PDP‑11/70 ที่เปิดให้บริการตั้งแต่ปี 1975 การตรวจสอบโค้ดของ Network Time Protocol daemon ใน BSD 2.11 ทำให้เขาเห็นตัวเลขปีที่ผิดปกติเป็น 19126** แทนปีปัจจุบัน

แม้ว่าเครื่อง PDP‑11/70 จะเป็นอุปกรณ์ที่ถูกยกเลิกการผลิตมานานแล้ว แต่โค้ดของ NTP daemon ยังคงทำงานอยู่ในอีมูเลเตอร์ และเมื่ออุปกรณ์ Precision Standard Time, Inc. (PSTI) รับสัญญาณเวลาจากสถานีวิทยุคลื่นสั้นของ US National Institute of Standards and Technology (NIST) ระบบก็จะตรวจจับความแตกต่างของเวลาอย่างผิดพลาด

Technical Details

ข้อบกพร่องเกิดจากการคำนวณปีในฟังก์ชันของ NTP daemon ที่ใช้ตัวแปรสองหลักในการเก็บค่า ปี 1999 จึงกลายเป็น 1900‑1999 แล้วต่อด้วยการเพิ่มศูนย์สองหลัก ทำให้เมื่อปี 2000 ถูกประมวลผล ระบบอาจตีความเป็น 19126 ซึ่งเทียบเท่ากับการเพิ่มประมาณ 17,000 ปี ทำให้ระบบแจ้งว่า “offset is excessive”

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

Exploit Conditions

การทำให้ข้อบกพร่องนี้แสดงผลได้ต้องอาศัยหลายขั้นตอนที่ซับซ้อน:

  • ต้องมีอีมูเลเตอร์ของ PDP‑11/70 ที่รัน BSD 2.11 อย่างสมบูรณ์
  • จำเป็นต้องจำลองอุปกรณ์ PSTI ของ Traconex (ผู้ผลิตอุปกรณ์ที่หยุดทำการแล้ว) เพื่อรับสัญญาณเวลาจาก NIST
  • ผู้โจมตีต้องทำให้สัญญาณเวลาที่ได้รับส่งค่า “19126” แทนปีปัจจุบัน ซึ่งต้องแก้ไขหรือดัดแปลงซอฟต์แวร์ของอุปกรณ์ PSTI

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

Fix & Availability

Van Heusden ได้อัปเดตโค้ดของ NTP daemon เพื่อแก้ไขการคำนวณปีและปรับให้รองรับปีที่มากกว่า 1999 อย่างถูกต้อง เขาได้ปล่อยโค้ดแก้ไขพร้อมอีมูเลเตอร์บน GitHub ให้ผู้สนใจสามารถดาวน์โหลดและคอมไพล์ได้โดยตรง

อีมูเลเตอร์ที่แก้ไขแล้วสามารถทำงานบนฮาร์ดแวร์สมัยใหม่เช่น Raspberry Pi Pico ได้ เนื่องจากสเปคของ PDP‑11/70 เพียง 5 MHz และต้องการหน่วยความจำหลัก 4 MB ทำให้การจำลองไม่ต้องใช้ทรัพยากรสูงและเหมาะกับผู้ที่ต้องการทดลองระบบโบราณ

Implications

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

สำหรับนักพัฒนาและผู้วิจัยด้านความปลอดภัย การมีตัวอย่างของข้อบกพร่องที่อายุหลายทศวรรษและยังคงสามารถทำงานได้แม้ในสภาพแวดล้อมจำลอง ช่วยให้เข้าใจกลไกของข้อบกพร่องในระดับลึกและอาจนำไปสู่การพัฒนาวิธีการสแกนหรืออัตโนมัติในการตรวจหา Y2K‑style bugs ที่อาจซ่อนอยู่ในโค้ดเก่า

Summary

การค้นพบ Y2K bug ใหม่นี้ใน BSD 2.11 ของอีมูเลเตอร์ PDP‑11/70 แสดงให้เห็นว่าซอฟต์แวร์โบราณยังคงมีช่องโหว่ที่อาจส่งผลต่อระบบแม้ในยุคปัจจุบัน การแก้ไขและการเผยแพร่โค้ดบน GitHub ช่วยลดความเสี่ยงและเปิดโอกาสให้ชุมชนตรวจสอบต่อไป.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
The Y2K bug is back! Danish dev digs up untimely flaw in old BSD build
ผู้เขียน
Unknown
แหล่ง
The Register
วันที่เผยแพร่
15 มิถุนายน 2569 เวลา 23:30

Related

บทความที่เกี่ยวข้อง

ช่องโหว่วิกฤต Splunk Enterprise ให้รันโค้ดโดยไม่มีการยืนย…Security
15 มิถุนายน 2569 เวลา 20:00

ช่องโหว่วิกฤต Splunk Enterprise ให้รันโค้ดโดยไม่มีการยืนย…

Splunk ปล่อยแพตช์แก้ช่องโหว่ CVE‑2026‑20253 ที่ให้ผู้ไม่ประสงค์ดีรันโค้ดโดยไม่ต้องยืนยันตัวตนและได้คะแนนความรุนแรง 9.8 ผู้ดูแลระบบควรอัปเดตเป็นเวอร์ชัน 10.2.4…

The Hacker News5 นาที
ผู้ป่วย NHS ไม่สามารถเลือกไม่ให้ข้อมูลเข้าสู่แพลตฟอร์ม Pa…Security
15 มิถุนายน 2569 เวลา 15:30

ผู้ป่วย NHS ไม่สามารถเลือกไม่ให้ข้อมูลเข้าสู่แพลตฟอร์ม Pa…

ผู้ป่วยอังกฤษไม่สามารถ opt‑out ข้อมูลจาก Palantir‑built NHS Federated Data Platform ได้ แม้ว่าการใช้เพื่อการวิจัยจะอยู่ภายใต้ National Data Opt‑Out แต่ NHS…

The Register5 นาที
Microsoft Teams กลับมานำ Wi‑Fi Tracking พร้อมการปรับปรุงค…Security
15 มิถุนายน 2569 เวลา 12:30

Microsoft Teams กลับมานำ Wi‑Fi Tracking พร้อมการปรับปรุงค…

Microsoft Teams นำฟีเจอร์ Wi‑Fi tracking กลับสู่ตลาดด้วยการให้ผู้ใช้ควบคุมข้อมูลตำแหน่งเอง หลังจากถูกระงับหลายครั้งเนื่องจากข้อกังวลเรื่องความเป็นส่วนตัว.…

XDA Developers6 นาที
Microsoft ปล่อยแพตช์ความปลอดภัย Windows 10 และ 11 ประจำเด…Security
15 มิถุนายน 2569 เวลา 09:30

Microsoft ปล่อยแพตช์ความปลอดภัย Windows 10 และ 11 ประจำเด…

Microsoft ได้ปล่อยแพตช์ความปลอดภัยสำหรับ Windows 10 และ 11 รอบมิถุนายน 2026 เพื่ออุดช่องโหว่ 200 รายการ รวมถึง Zero-Day 3 ตัว…

DroidSans8 นาที
คัดลอกลิงก์แล้ว!