Lỗi Y2K quay trở lại! Lập trình viên Đan Mạch đào bới ra lỗi trong bản dựng BSD cũ
Hơn 26 năm sau sự cố Y2K nổi tiếng, một lập trình viên đã vô tình phát hiện một lỗi chưa được vá trong trình nền NTP của hệ điều hành BSD 2.11 khi phát triển trình giả lập cho máy tính PDP-11/70. Tuy nhiên, rủi ro từ lỗi này gần như bằng không vì nó chỉ ảnh hưởng đến các hệ thống phần cứng cổ lỗ sĩ và các thiết bị thu sóng vô tuyến đặc thù hiện đã không còn sản xuất.

Đã hơn một phần tư thế kỷ trôi qua kể từ khi lỗi Y2K đe dọa gây rối loạn cho thế giới công nghệ thời bấy giờ. Mặc dù những nỗ lực vá lỗi của các chuyên gia IT toàn cầu đã ngăn chặn được một thảm họa thiên niên kỷ, nhưng vấn đề này vẫn chưa hoàn toàn biến mất khi một lập trình viên vừa phát hiện một "cơn ác mộng" về số liệu mới.
Trong quá trình phát triển trình giả lập (emulator) cho dòng máy tính "minicomputer" PDP (Programmed Data Processor) được sản xuất từ thập niên 1950 đến 1990, Folkert van Heusden đã phát hiện ra một lỗi Y2K chưa được vá trong trình nền Network Time Protocol (NTP) của BSD 2.11.
Tuy nhiên, có thể yên tâm rằng van Heusden không tình cờ phát hiện ra một vấn đề tiềm tàng nguy hiểm đang chờ đợi để gây hỗn loạn. Lỗi này rất cụ thể: nó chỉ xuất hiện trên hệ thống PDP-11/70, một hệ thống ra mắt năm 1975, và additionally yêu cầu phải sử dụng bộ thu PSTI (Precision Standard Time, Inc.) do công ty Traconex đã ngừng hoạt động sản xuất. Thiết bị này được dùng để bắt các tín hiệu thời gian phát sóng qua sóng vô tuyến ngắn (short wave radio) do Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ quản lý.
Ngay cả khi bạn sở hữu đầy đủ các thiết bị "cổ đại" này, lỗi cũng không tự động phá vỡ đồng bộ thời gian mạng. Một kẻ tấn công tiềm năng phải thực hiện một loạt các bước cấu hình phức tạp trên những cỗ máy cũ kỹ này theo cách cụ thể thì mới kích hoạt được lỗi.
Van Heusden chia sẻ với The Register qua email: "Tôi đang viết một trình giả lập PDP. Tôi cũng rất quan tâm đến việc đồng bộ hóa thời gian trên máy tính. Kết hợp hai yếu tố đó, tôi đã đi sâu vào việc triển khai NTP trên PDP. Khi thêm tính năng giả lập cho thiết bị PSTI, tôi đột nhiên thấy năm hiển thị là 19126."
Không ngạc nhiên khi bộ thu PSTI thực sự tạo ra đầu ra chính xác, hệ thống lại báo lỗi rằng độ lệch thời gian giữa trình giả lập PDP và thiết bị PSTI là quá mức. Cụ thể, sự chênh lệch này lên tới khoảng 17.000 năm, cộng thêm vài trăm năm lẻ tẻ.
May mắn thay, van Heusden đã viết một bản vá (patch) để đưa thời gian trở lại đồng bộ, xóa bỏ một trong số ít các lỗi Y2K còn sót lại. Đây thực sự là một trường hợp hiếm hoi khi một lỗi Y2K bị lãng quên (hoặc bị bỏ qua do lỗi thời về công nghệ) được phát hiện và khắc phục.
Nếu bạn muốn thử nghiệm với một hệ thống giả lập 50 năm tuổi chạy hệ điều hành 35 năm tuổi, tin tốt là cấu hình của PDP-11/70 khá khiêm tốn. Nó sử dụng CPU 16-bit chạy ở tốc độ 5MHz và chỉ cần 4MB bộ nhớ chính. Trình giả lập PDP-11/70 của van Heusden có thể chạy mượt mà trên phần cứng khiêm tốn như Raspberry Pi Pico và hiện đã có sẵn trên GitHub.
Chỉ cần nhớ rằng hãy vá lỗi Y2K này nếu bạn định mày mò với tính năng đồng bộ hóa thời gian trên hệ thống này.



