Lỗi Y2K "tái xuất": Lập trình viên Hà Lan tìm ra lỗi thời gian trong hệ thống BSD cũ
Một lập trình viên người Hà Lan đã vô tình phát hiện một lỗi Y2K chưa được vá trong hệ điều hành BSD cũ dành cho máy tính PDP-11/70. Tuy nhiên, lỗi này không gây ra mối đe dọa thực tế nào đối với người dùng hiện đại, trừ khi bạn vẫn đang vận hành hệ thống "cổ thụ" này và sử dụng sóng ngắn để đồng bộ thời gian.

Lỗi Y2K "tái xuất": Lập trình viên Hà Lan tìm ra lỗi thời gian trong hệ thống BSD cũ
Đã hơn một phần tư thế kỷ trôi qua kể từ khi lỗi Y2K đe dọa gây ra sự hỗn loạn trên toàn cầu. Mặc dù các 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 vào thiên niên kỷ mới, nhưng vấn đề này dường như vẫn chưa hoàn toàn biến mất khi một nhà phát triển người Hà Lan vừa tìm ra một trường hợp mới của "cơn ác mộng" số học này.
Trong quá trình xây dựng trình giả lập (emulator) cho dòng máy tính "minicomputer" PDP huyền thoại — được sản xuất từ thập niên 1950 đến 1990 — ông Folkert van Heusden đã phát hiện một lỗi Y2K chưa được vá trong trình nền Network Time Protocol (NTP) của BSD 2.11.
Một lỗi "cổ kính" và vô hại
Tuy nhiên, công chúng có thể yên tâm vì van Heusden không tình cờ phát hiện ra một vấn đề nguy hiểm đang chờ thời để gây hỗn loạn. Lỗi này rất cụ thể và chỉ xuất hiện trên hệ thống PDP-11/70, một dòng máy tính ra mắt năm 1975.
Hơn nữa, để kích hoạt lỗi này, hệ thống phải được trang bị bộ thu Precision Standard Time, Inc. (PSTI) do công ty phần cứng Traconex (đã ngừng hoạt động) sản xuất. Thiết bị này được sử dụng để bắt tín hiệu thời gian từ các đài phát thanh sóng ngắn do Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ (NIST) quản lý. Ngay cả khi đáp ứng đủ các điều kiện phần cứng "hiếm có khó tìm" này, lỗi cũng không làm hỏng ngay lập tức thời gian mạng, mà kẻ tấn công tiềm năng phải thực hiện một số bước cấu hình phức tạp trên những cỗ máy cổ kính mới gây ra lỗi.
Sai lệch 17.000 năm
Trong bài viết giải thích của mình, van Heusden mô tả cách ông phát hiện ra sự cố bất thường này.
"Tôi đang viết một trình giả lập PDP và cũng rất quan tâm đến việc đồng bộ 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," van Heusden chia sẻ trong email gửi cho The Register.
Về mặt kỹ thuật, khi bộ thu PSTI 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 đang bị "quá mức". 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 tùy theo trường hợp.
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 lỗi Y2K còn sót lại đang "lơ lửng" ngoài kia. Dù sao, đã bao lâu rồi bạn chưa nghe thấy một lỗi Y2K bị lãng quên (hoặc trong trường hợp này là bị bỏ qua do lỗi thời về công nghệ) được vá lỗi?
Chơi mày mò với công nghệ 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 vui là PDP với CPU 16-bit chạy ở tốc độ 5MHz và chỉ cần 4MB RAM bộ nhớ chính. Trình giả lập PDP-11/70 của van Heusden có thể chạy dễ dàng trên phần cứng khiêm tốn như Raspberry Pi Pico và hiện đã có sẵn trên GitHub.
Tuy nhiên, hãy đảm bảo rằng bạn vá lỗi Y2K này nếu bạn có ý định mày mò với tính năng đồng bộ thời gian trên hệ thống cũ kỹ này.
