Chương 072: Bản Vá Lỗi Cấp Tốc
Bốn giờ năm mươi hai phút chiều.
Phòng máy chủ ở Thủ Đức vẫn sáng đèn.
Nhưng thứ ánh sáng trắng lạnh bên trong không còn mang cảm giác bình thường của một trung tâm vận hành.
Nó giống một căn phòng cấp cứu.
Màn hình này nối sang màn hình khác.
Đèn cảnh báo nhấp nháy.
Những kỹ sư mặc áo bảo hộ đi lại liên tục.
Không ai nói lớn.
Nhưng ai cũng nói nhanh.
“Phân khu ba đã lên lại.”
“Phân khu năm?”
“Chưa.”
“Nguồn dự phòng?”
“Đang giữ.”
“Bộ điều khiển?”
“Chưa dám đưa vào chế độ tự động.”
Một kỹ sư nhìn đồng hồ.
Gần năm tiếng kể từ lúc sự cố bắt đầu.
Thiệt hại đã tăng lên từng phút.
Những dây chuyền từng chạy liên tục giờ chỉ còn tiếng quạt làm mát và tiếng bước chân.
Một số nhà máy đã khôi phục được một phần.
Nhưng hệ thống điều khiển trung tâm vẫn chưa thể đưa toàn bộ hoạt động về trạng thái bình thường.
Vấn đề không nằm ở việc có điện hay không.
Điện đã được khôi phục từng khu vực.
Vấn đề là hệ thống điều khiển không còn được tin cậy hoàn toàn.
Một lệnh đúng có thể được thực hiện.
Một lệnh khác có thể bị trì hoãn.
Một cảnh báo có thể là thật.
Một cảnh báo khác có thể là dấu vết giả do kẻ tấn công để lại.
Chỉ cần một kỹ sư chọn sai—
cả dây chuyền có thể phải dừng thêm nhiều giờ.
Trưởng nhóm kỹ thuật nói:
“Không được vội.”
Một người trẻ hơn đáp:
“Nhưng nếu cứ giữ thế này…”
“Tôi biết.”
Ông nhìn màn hình.
“Chúng ta không được để thiệt hại biến thành tai nạn.”
Không ai trả lời.
Năm giờ đúng.
Tại Quận 4.
Lão Cửu ngồi trước chiếc máy tính cũ.
Trên bàn có một ly trà đã nguội.
Bên cạnh là một tập giấy.
Không có thiết bị đặc biệt.
Không có màn hình lớn.
Không có hệ thống đèn chớp liên tục như trong những phòng điều hành hiện đại.
Chỉ có một chiếc máy.
Một chiếc điện thoại đặt úp.
Và một người đàn ông đang đọc đi đọc lại một đoạn dữ liệu.
Tiến Chập đứng phía sau.
“Anh tìm được gì?”
Vũ không trả lời.
Anh kéo xuống.
Dừng.
Quay lên.
Dừng.
Rồi lại kéo xuống.
Tiến hỏi:
“Vẫn là cái lỗi đó?”
“Không.”
“Vậy?”
“Bản thân lỗi không phải vấn đề lớn nhất.”
“Em không hiểu.”
Vũ chỉ vào màn hình.
“Nhìn cách nó được tạo ra.”
Tiến cúi xuống.
Một cấu trúc dữ liệu.
Một số vùng bị khóa.
Một số vùng vẫn hoạt động.
Một phần hệ thống bị đẩy vào chế độ an toàn.
Một phần khác bị giữ trong trạng thái chờ.
Tiến nhìn một lúc.
“Em vẫn không thấy.”
“Bình thường.”
“Vậy anh thấy gì?”
Vũ nói:
“Kẻ này không muốn hệ thống chết.”
Tiến nhớ lại câu nói ở chương trước.
“Muốn người ta không dám bật?”
“Ừ.”
“Nhưng giờ nếu mình sửa được…”
“Thì họ sẽ bật.”
“Đúng.”
Vũ ngồi xuống.
“Cho nên phải sửa.”
Tiến nhìn anh.
“Bằng cách nào?”
Vũ không trả lời ngay.
Anh mở một thư mục.
Trong đó là những mẫu cấu trúc đã được làm sạch.
Một bản.
Hai bản.
Ba bản.
Không có dữ liệu sản xuất thật.
Chỉ là những bản mô phỏng và các dấu hiệu lỗi đã được tách riêng.
Vũ nói:
“Có một bản vá.”
Tiến hỏi:
“Anh viết?”
“Ừ.”
“Đã thử chưa?”
“Trên mô phỏng.”
“Chạy được?”
“Được.”
“Vậy đưa cho họ.”
Vũ lắc đầu.
“Không đơn giản.”
“Vì?”
“Không có đường chính thức.”
Tiến hiểu.
Nếu gửi trực tiếp, bản vá sẽ bị kiểm tra.
Nếu xuất hiện từ một nguồn lạ, nó có thể bị coi là một phần của cuộc tấn công.
Và trong tình trạng hiện tại, không ai dám nhận một gói sửa chữa không rõ nguồn.
Vũ nhìn màn hình.
“Phải để nó tự đi tới nơi cần tới.”
Tiến nhìn anh.
“Anh định làm gì?”
Vũ chỉ nói:
“Đi đường vòng.”
Năm giờ mười.
Tại một căn phòng trọ nhỏ gần trường đại học.
Một sinh viên năm cuối đang ngồi trước laptop.
Tên cậu là Minh.
Hai mươi hai tuổi.
Học kỹ thuật điện – điện tử.
Ngoài giờ học, Minh làm một dự án cá nhân mô phỏng hệ thống điều khiển công nghiệp.
Mã nguồn được lưu trên một tài khoản Git công khai.
Dự án không nổi tiếng.
Chỉ có vài người theo dõi.
Một thư viện nhỏ.
Một số mô hình thử nghiệm.
Một bài tập tốt nghiệp được nâng cấp thành dự án cá nhân.
Minh vừa uống cà phê vừa nhìn màn hình.
Một thông báo mới xuất hiện.
Cậu cau mày.
Một thay đổi trong kho mã.
Không phải do cậu thực hiện.
Minh kiểm tra lại.
Tài khoản của cậu vẫn hoạt động.
Không có cảnh báo đăng nhập lạ.
Không có dấu hiệu rõ ràng.
Chỉ có một bản cập nhật nằm trong nhánh thử nghiệm.
Minh mở ra.
Đọc.
Cậu không hiểu hết.
Nhưng có một đoạn sửa lỗi rất kỳ lạ.
Nó không làm thay đổi toàn bộ mô hình.
Chỉ xử lý một tình huống mà trước đó cậu từng ghi chú là:
“chưa tìm được cách mô phỏng ổn định.”
Minh ngồi thẳng lên.
“Ủa?”
Cậu đọc lại.
Rồi chạy mô phỏng.
Hệ thống thử nghiệm hoạt động.
Không còn lỗi cũ.
Minh nhìn màn hình.
“Cái gì vậy trời?”
Cậu nghĩ có ai đó gửi nhầm.
Nhưng bản vá lại nằm đúng trong dự án của mình.
Cậu không biết rằng vài phút trước, Lão Cửu đã chọn tài khoản công khai của cậu làm một đường chuyển tiếp hư cấu.
Không phải để lấy dữ liệu.
Không phải để chiếm quyền hệ thống.
Mà để đưa bản vá tới một nơi mà những người đang cần giải pháp có khả năng nhìn thấy.
Vũ không cần Minh biết mình là ai.
Anh chỉ cần bản vá tồn tại trong một dự án công khai đủ hợp lý để không bị xem ngay như một gói tấn công.
Năm giờ mười tám.
Phòng máy chủ Thủ Đức.
Một kỹ sư phát hiện bản cập nhật.
“Anh.”
Trưởng nhóm quay lại.
“Gì?”
“Có một bản sửa lỗi mới.”
“Ở đâu?”
“Trong một dự án mô phỏng công khai.”
“Liên quan gì tới chúng ta?”
“Em chưa biết.”
“Vậy bỏ qua.”
“Nhưng…”
“Không lấy phần mềm không rõ nguồn.”
Kỹ sư im lặng.
Ông nói đúng.
Sau một cuộc tấn công, mọi thứ từ bên ngoài đều đáng ngờ.
Kỹ sư vẫn không rời màn hình.
“Nhưng đoạn sửa này…”
“Gì?”
“Nó giải đúng lỗi chúng ta đang gặp.”
Trưởng nhóm bước tới.
“Cho tôi xem.”
Năm giờ hai mươi ba.
Nam đang ở Quận 1.
Một thông báo hiện trên màn hình.
Anh đọc.
Rồi ngồi thẳng lên.
THỦ ĐỨC — RECOVERY PATH CANDIDATE DETECTED.
Yến hỏi:
“Có bản vá?”
“Có.”
“Ở đâu?”
“Không rõ.”
“Của ai?”
Nam nhìn thông tin.
“Một tài khoản sinh viên.”
Yến nhíu mày.
“Ngẫu nhiên?”
Nam không trả lời.
Anh nhìn tiếp.
Cấu trúc bản vá.
Dấu hiệu lỗi.
Cách xử lý.
Nam nhận ra một phong cách.
Không phải phong cách của kẻ tấn công.
Mà là cách người viết bản vá đặt vấn đề.
Nam cười.
“Không phải ngẫu nhiên.”
Yến hỏi:
“Ai?”
Nam không trả lời.
Anh mở kênh liên lạc.
Không cần gọi.
Chỉ gửi một câu.
N-01: Anh làm à?
Ở Quận 4, điện thoại Vũ rung.
Anh nhìn.
Không trả lời ngay.
Rồi gõ:
V-09: Cậu nghĩ sao?
Nam trả lời:
N-01: Người khác không biết lỗi nằm ở đâu.
Vũ:
V-09: Vậy?
Nam:
N-01: Người viết bản vá biết.
Một khoảng lặng.
Vũ gõ:
V-09: Tập trung Thủ Đức.
Nam hiểu.
Anh không hỏi thêm.
Năm giờ ba mươi.
Trong phòng máy chủ, nhóm kỹ thuật đã đưa bản vá vào môi trường kiểm tra cách ly.
Không chạy trực tiếp.
Không đưa ngay vào hệ thống vận hành.
Họ mô phỏng tình trạng lỗi.
Một lần.
Hai lần.
Ba lần.
Kết quả giống nhau.
Hệ thống không còn bị đẩy vào trạng thái bất ổn như trước.
Một kỹ sư nói:
“Có thể dùng.”
Trưởng nhóm hỏi:
“Nguồn?”
“Chưa xác định.”
“Có rủi ro?”
“Có.”
“Bao nhiêu?”
“Chưa đánh giá hết.”
Ông nhìn màn hình.
“Vậy kiểm tra tiếp.”
Năm giờ bốn mươi.
Nam nhìn dữ liệu từ xa.
Tình trạng phục hồi tăng.
67%.
Rồi:
71%.
Yến nói:
“Có tác dụng.”
Nam gật.
Nhưng anh không vui.
Một bản vá xuất hiện đúng lúc.
Một tài khoản sinh viên.
Một dự án công khai.
Một lỗi đúng chỗ.
Quá sạch.
Nam hỏi:
“Vũ.”
“Ừ.”
“Anh có nghĩ đây là cái bẫy không?”
Vũ trả lời:
“Có.”
“Vậy sao anh vẫn đưa?”
“Vì bản vá đúng.”
“Anh không sợ?”
“Có.”
Nam nhìn màn hình.
“Anh vừa nói có?”
“Ừ.”
“Vậy tại sao vẫn làm?”
Vũ nói:
“Vì sợ không có nghĩa là đứng yên.”
Nam im lặng.
Năm giờ năm mươi.
Phòng máy chủ bắt đầu có tiếng máy móc trở lại.
Một dây chuyền.
Rồi một dây chuyền khác.
Đèn báo chuyển trạng thái.
Một số hệ thống điều khiển trở lại chế độ hoạt động.
Các kỹ sư vẫn chưa cho chạy toàn bộ.
Nhưng tình trạng tê liệt đã bắt đầu được tháo.
Một người hét lên:
“Phân khu bảy có tín hiệu!”
“Đừng bật toàn bộ!”
“Rõ!”
“Kiểm tra tải!”
“Đang kiểm tra!”
Không khí trong phòng thay đổi.
Từ căng thẳng tuyệt vọng sang căng thẳng có kiểm soát.
Thiệt hại vẫn đang tăng.
Nhưng không còn tăng với tốc độ trước đó.
Sáu giờ.
Nam nhận được một cảnh báo.
PATCH ORIGIN — UNKNOWN.
Anh nhìn.
“Lại rồi.”
Yến hỏi:
“Gì?”
“Dấu vết.”
“Của ai?”
“Không biết.”
Một địa chỉ.
Rồi một địa chỉ khác.
Cuối cùng quay về tài khoản sinh viên.
Nam nhìn kỹ.
“Không phải máy chủ thật.”
Yến hỏi:
“Vậy?”
“Chỉ là điểm trung gian.”
“Của Vũ?”
Nam không trả lời.
Anh đã hiểu.
Vũ không đưa bản vá trực tiếp.
Anh dùng một tài khoản mà người ngoài nhìn vào chỉ thấy một sinh viên đang làm dự án cá nhân.
Một đường đi rất đời thường.
Nam bật cười.
“Đúng là anh ấy.”
Yến hỏi:
“Anh nói gì?”
“Không.”
Sáu giờ mười.
Vũ nhận được tin nhắn.
N-01: 82%.
Vũ trả lời:
V-09: Chưa đủ.
N-01: Em biết.
V-09: Có dấu hiệu gì từ kẻ tấn công?
Nam trả lời:
N-01: Chưa.
Vũ:
V-09: Vậy hắn đang chờ.
Nam:
N-01: Chờ bản vá?
Vũ:
V-09: Chờ chúng ta sửa.
Nam ngồi im.
Anh hiểu ngay.
Nếu kẻ tấn công có cùng trình độ như mẫu trước, nó không thể không nhận ra hệ thống đang hồi phục.
Nhưng nó chưa đánh tiếp.
Điều đó có nghĩa là—
nó đang quan sát.
Hoặc nó đã đạt được mục đích.
Nam gửi:
N-01: Có thể hắn muốn xem chúng ta phản ứng thế nào.
Vũ:
V-09: Đúng.
N-01: Giống Thủ Đức.
V-09: Giống.
N-01: Một bài kiểm tra nữa.
Vũ không trả lời.
Sáu giờ hai mươi.
Một kỹ sư phát hiện điều bất thường.
“Anh.”
Trưởng nhóm quay lại.
“Gì?”
“Bản vá đã khôi phục phần điều khiển.”
“Ừ.”
“Nhưng có một đoạn.”
“Đoạn nào?”
“Có một điểm mà nó không sửa.”
“Không sửa?”
“Đúng.”
“Vì sao?”
Kỹ sư chỉ vào màn hình.
“Có vẻ người viết cố tình để nguyên.”
Trưởng nhóm nhìn.
Một phần lỗi không biến mất.
Nó chỉ bị cô lập.
“Có nguy hiểm không?”
“Chưa.”
“Vậy giữ nguyên.”
“Rõ.”
Ông quay đi.
Nhưng kỹ sư vẫn nhìn.
Trong đoạn mã sửa lỗi có một ghi chú rất ngắn.
Không phải tên.
Không phải chữ ký.
Chỉ có một câu:
“ĐỪNG SỬA THỨ CHƯA HIỂU.”
Kỹ sư đọc hai lần.
Một câu đơn giản.
Nhưng khiến ông nhớ tới cách một kỹ sư già từng dạy ông:
Đừng bao giờ sửa một hệ thống chỉ vì nó đang báo lỗi.
Phải biết nó đang bảo vệ cái gì.
Sáu giờ ba mươi.
Thủ Đức phục hồi tám mươi chín phần trăm.
Một số nhà máy bắt đầu chạy lại dây chuyền.
Một số khác vẫn phải kiểm tra thủ công.
Thiệt hại đã rất lớn.
Nhưng thảm họa đã được chặn.
Nam nhìn con số.
“89%.”
Vũ nói:
“Còn mười một.”
“Đang xử lý.”
“Không được ép.”
“Biết.”
Nam hỏi:
“Anh có biết ai đứng sau không?”
“Chưa.”
“Khải?”
Vũ im lặng.
“Đừng hỏi.”
Nam không hỏi nữa.
Sáu giờ bốn mươi.
Tài khoản Git công khai của Minh nhận được hàng loạt thông báo.
Một số người bắt đầu tải dự án.
Một người bình luận:
“Bản sửa này hay. Bạn tự viết?”
Minh nhìn.
Cậu không biết trả lời thế nào.
Cậu thật sự không nhớ mình đã viết phần đó.
Cậu gõ:
“Đang kiểm tra.”
Rồi xóa.
Gõ lại:
“Có người đóng góp.”
Gửi.
Minh nhìn màn hình.
Cậu không biết người đó là ai.
Không biết vì sao bản vá xuất hiện.
Không biết tại sao một đoạn mã nhỏ trong dự án sinh viên của mình lại vừa được một nhóm kỹ thuật ở đâu đó chú ý.
Nhưng cậu biết một điều.
Dự án của mình vừa bước vào một câu chuyện lớn hơn rất nhiều.
Bảy giờ.
Nam đóng laptop.
Vũ cũng đóng máy.
Cả hai không nói chuyện trong vài phút.
Rồi Nam gửi:
N-01: Anh dùng tài khoản sinh viên làm đường chuyển tiếp?
Vũ:
V-09: Ừ.
N-01: Nếu cậu ta phát hiện?
V-09: Tôi sẽ không để cậu ta chịu trách nhiệm cho việc mình không làm.
Nam nhìn câu đó.
Anh hiểu.
Vũ không coi người khác là công cụ.
Dù vừa dùng một tài khoản công khai để đưa bản vá đi vòng.
Điểm khác biệt nằm ở chỗ—
anh không lấy gì của người đó.
Không đụng dữ liệu riêng.
Không bắt cậu sinh viên trở thành người tham gia cuộc chiến.
Chỉ mượn một cánh cửa công khai.
Nam hỏi:
N-01: Vậy bước tiếp theo?
Vũ:
V-09: Đợi.
N-01: Đợi hắn đánh tiếp?
V-09: Đợi hắn nghĩ chúng ta sẽ làm gì.
Nam mỉm cười.
Đó chính là điều anh đã học được ở Vũ.
Không phải cách viết mã.
Không phải cách phá hệ thống.
Mà là cách không để đối phương quyết định nhịp độ của mình.
Bảy giờ mười lăm.
Một nhà máy cuối cùng bắt đầu khởi động lại.
Tiếng máy móc vang lên.
Băng chuyền chuyển động.
Đèn báo xanh lần lượt sáng.
Một kỹ sư nhìn đồng hồ.
Gần chín tiếng kể từ khi cuộc tấn công bắt đầu.
Ông đứng trước cửa kính.
Bên ngoài, trời đã tối.
Thủ Đức vẫn còn những vệt sáng của các khu nhà máy.
Nhưng ông biết ngày hôm nay sẽ không được quên.
Một lỗ hổng chưa từng được công bố.
Một cuộc tấn công vào hệ thống điều khiển.
Một khu công nghiệp gần như tê liệt.
Và một bản vá xuất hiện từ một dự án sinh viên không ai ngờ tới.
Ở Quận 4, Vũ đứng trước cửa tiệm.
Anh nhìn dòng người đi qua.
Không ai biết anh vừa tham gia cứu một phần hệ thống.
Không ai biết tên anh.
Không ai cần biết.
Điện thoại rung.
Một tin nhắn cuối cùng từ Nam.
N-01: Thủ Đức 96%.
Vũ trả lời:
V-09: Tốt.
Nam:
N-01: Anh Cửu.
Vũ nhìn.
V-09: Gì?
Một lúc sau:
N-01: Người đó đã biết chúng ta vá được.
Vũ không trả lời.
Màn hình lại hiện một tin nhắn khác.
Không phải từ Nam.
Không có tên người gửi.
Không có số điện thoại.
Chỉ một câu:
“Bản vá đẹp.”
Vũ đứng yên.
Tin nhắn thứ hai xuất hiện.
“Nhưng anh vẫn đang vá sai chỗ.”
Vũ nhìn màn hình.
Không khí quanh tiệm vẫn bình thường.
Tiếng xe.
Tiếng người gọi nhau.
Tiếng một chiếc xe bán hàng chạy qua đầu hẻm.
Anh đọc lại hai câu.
Không có lời đe dọa.
Không có tên.
Nhưng đủ để xác nhận một chuyện.
Kẻ ẩn danh đã nhìn thấy bản vá.
Không những nhìn thấy—
hắn còn hiểu nó.
Vũ cất điện thoại.
Tiến từ phía trong bước ra.
“Có chuyện gì?”
Vũ lắc đầu.
“Không.”
“Thủ Đức sao rồi?”
“Gần xong.”
Tiến thở ra.
“Vậy tốt.”
Vũ nhìn ra ngoài đường.
“Chưa tốt.”
Tiến cau mày.
“Chưa?”
Vũ nói:
“Chúng ta vừa chữa được một vết thương.”
“Còn?”
“Người gây ra nó vẫn chưa lộ mặt.”
Tiến im lặng.
Vũ quay vào.
Trên màn hình máy tính, một dòng trạng thái cuối cùng hiện lên:
THỦ ĐỨC — 98% RECOVERED.
Bên dưới là một dòng khác.
UNKNOWN ACTOR — ACTIVE.
Vũ nhìn hai dòng chữ.
Một bên là hệ thống đang sống lại.
Một bên là kẻ vẫn còn trong bóng tối.
Anh khẽ nói:
“Cứu được điện không có nghĩa là thắng.”
Ngoài kia, những nhà máy tiếp tục sáng đèn.
Nhưng trong một nơi nào đó mà không ai biết, một người đang nhìn bản vá của Lão Cửu.
Và lần này—
hắn không phá nó.
Hắn chỉ viết thêm một dòng vào bên dưới:
“HẸN LẦN TỚI.”
--=---
PLS FOLLOW KÊNH ĐỂ TẠO ĐỘNG LỰC CHO TÁC GIẢ VÀ THEO DÕI CÁC CHƯƠNG TIẾPT HEO …
---==--