Những Con Số Không Biết Nói Dối
Chương 23 - Chương 23: Cuộc Họp Kiểm Toán
Chị Mai tắt cửa sổ preview, nhưng cái tên M.Chau không tắt theo màn hình. Nó vẫn nằm đó, trong đầu tôi, sắc như một con dấu đóng nhầm lên trán người sống. Tôi nghe tiếng recorder chạy đều đều trên bàn, nghe cả nhịp tim mình lạc một phách rồi tự ép quay lại. Nếu lúc đầu tôi còn muốn nói “em không làm”, thì đến khoảnh khắc nhìn thấy dòng audit stamp kia, tôi hiểu câu đó không đủ nữa. Một hệ thống đã ghi tên tôi. Muốn gỡ nó ra, tôi không thể chỉ dựa vào sự trong sạch của mình. Tôi phải tìm được điểm mà hệ thống đã bị bắt nói dối.
“Khóa evidence hiện tại.” Chị Mai nói. Giọng chị không cao, nhưng căn phòng lập tức di chuyển theo câu đó. Anh Sơn xuất toàn bộ metadata của PhuLuc_MLinh_ServiceClose.pdf sang evidence bundle riêng, tạo hash, ghi mã chain mới. Chị Lan yêu cầu security giữ nguyên trạng HR-PRINT-03, không cho reboot, không cho người vận hành phòng in chạm vào máy cho đến khi IT Security xác nhận image xong ổ tạm và cache chứng thư. Chị Hà đặt điện thoại xuống bàn, hai tay đan vào nhau. Tôi thấy chị nhìn dòng tên tôi trên biên bản ghi nhanh, rồi nhìn sang tôi, như muốn nhắc rằng từ phút này không ai được phép yếu lòng thay cho chứng cứ.
Chị Mai kéo ghế ngồi thẳng lại. “Từ thời điểm này, chúng ta chuyển sang cuộc họp kiểm toán khẩn cấp, phạm vi gồm ba nhánh: chữ ký điện tử M.Chau trên phụ lục M.Linh, rule exception của PeopleOps queue, và adjustment ML-17 trong Finance monthly close. Mục tiêu không phải tìm người để kết thúc cuộc họp nhanh. Mục tiêu là xác định control nào đã bị bypass, ai có quyền bypass, và bypass đó phục vụ giao dịch nào.” Chị dừng một nhịp rồi nhìn tôi. “Minh Châu, em vẫn là người liên quan trực tiếp vì tên em nằm trên audit stamp. Em có quyền bổ sung lời khai sau mỗi phần kiểm tra, nhưng chỉ bổ sung phần em biết trực tiếp.” Tôi gật đầu. Cổ họng khô đến đau, nhưng ít nhất quy tắc vẫn còn đó.
Anh Hưng ở phòng nhỏ bên cạnh bật cười rất khẽ, không giống cười, mà giống một tiếng thở bị bẻ gãy. “Audit meeting? Chỉ vì một phụ lục monthly close?” Chị Lan quay sang lớp kính mờ. “Không. Vì có dấu hiệu dùng danh tính nhân viên để xác nhận một hồ sơ không rõ căn cứ.” Chị Mai không nhìn anh, chỉ nói vào recorder: “Ghi nhận phản ứng của anh Hưng. Anh sẽ trả lời khi câu hỏi được đặt.” Câu đó làm phòng nhỏ im xuống. Tôi bỗng nhận ra, càng về sau, anh Hưng càng ít dùng giọng ra lệnh. Khi log bắt đầu có thứ tự, quyền lực ngoài log yếu đi rất nhanh.
Màn hình chuyển sang e-sign server. Anh Sơn đọc từng trường như đọc kết quả xét nghiệm. 14:32:48, PhuLuc_MLinh_ServiceClose.pdf được mở ở chế độ signing package từ HR-PRINT-03. 14:33:12, hệ thống tạo request ký cho trường “Internal Reconciliation Checker”. 14:33:18, credential provider xác nhận virtual smartcard cache hợp lệ. 14:33:56, chữ ký được áp vào file, signer display name: M.Chau, certificate alias: FIN-CHECKER-MCHAU. Không có MFA push. Không có nhập mật khẩu mới. Không có dấu hiệu interactive unlock của tài khoản M.Chau trong khung thời gian đó. Tôi nhìn ba dòng cuối, cảm giác như ai đó vừa mở một cửa nhỏ trong căn phòng kín, nhưng bên ngoài cửa vẫn là bóng tối. Không có MFA không chứng minh tôi vô tội. Nó chỉ chứng minh người ký không cần tôi ngồi đó để ký.
“Vì sao không có MFA?” Chị Hà hỏi. Anh Sơn mở policy mapping. “Trường hợp ký từ PrintSign Bridge trong monthly close exception được phép dùng cached smartcard trong vòng bốn giờ, nếu signing package đi từ queue đã được approve.” Chị Lan lập tức cau mày. “Finance checker signature không được nằm trong ngoại lệ phòng in.” Anh Sơn gật đầu. “Policy gốc là vậy. Nhưng rule override được thêm vào tháng trước, scope gồm PeopleOps.Contracts, Finance Archive và các phụ lục có tag ServiceClose.” Chị Mai ghi lại, rồi hỏi tiếp: “Ai thêm override?” Anh Sơn chưa trả lời ngay. Anh chuyển sang màn hình rule history, nhưng trước khi bấm mở, chị Mai đưa tay ngăn lại. “Trước khi xem người sửa rule, kiểm tra xem cache M.Chau vào HR-PRINT-03 bằng đường nào. Nếu bỏ qua bước đó, chúng ta sẽ chỉ đổi một cái tên nghi vấn thành một cái tên khác.”
Tôi cắn nhẹ vào mặt trong má. Câu đó giữ tôi lại khỏi một hy vọng quá sớm. Tôi đã bắt đầu muốn thấy tên anh Hưng ở mọi dòng log. Nhưng những cái bẫy được dựng bằng hệ thống hiếm khi đơn giản như vậy. Chúng không cần một cú đâm thẳng. Chúng chỉ cần đủ nhiều quyền nhỏ bị đặt cạnh nhau sai chỗ.
Log credential cache của HR-PRINT-03 hiện ra. Lần cuối smartcard alias FIN-CHECKER-MCHAU được load vào máy không phải 14:33. Nó là 10:17:04 sáng nay, trong một tác vụ “scan-to-archive validation” thuộc Finance Archive. Tôi thấy bụng mình lạnh xuống. Sáng nay, tôi đúng là đã mở email lạ, đúng là đã vào archive theo đường link bị dụ. Nhưng tôi chưa từng bước vào phòng in. Anh Sơn kéo thêm trường “source workstation”. Cache không đến từ máy tôi. Nó được broker từ session M.Chau đang treo trên Finance Archive web gateway, sau đó được PrintSign Bridge nhận như token hợp lệ vì hai hệ thống cùng nằm trong monthly close exception. Chị Hà khẽ nói: “Session treo có thể bị kéo sang signing package?” Anh Sơn đáp chậm: “Theo thiết kế thì không. Theo override này thì có thể, nếu package có tag ServiceClose và queue đã approve.”
Tôi nghe chính mình hỏi trước khi kịp sợ câu trả lời. “Vậy người ngồi ở HR-PRINT-03 có cần biết mật khẩu của em không?” Anh Sơn nhìn tôi qua màn hình. “Không nhất thiết. Nếu session của em đã bị giữ lại ở gateway và token bị broker, người đó chỉ cần khởi tạo package đúng tag, đúng queue. Nhưng để làm được vậy, người đó phải biết package nào cần tag ServiceClose, biết mailbox M.Linh còn sống, và có cách đưa phụ lục vào luồng ký.” Tôi gật đầu, rất chậm. Câu trả lời không rửa sạch tên tôi. Nhưng nó làm vết bẩn bớt giống dấu tay của tôi hơn.
“Thread ML-17.” Chị Mai nói. Anh Sơn mở compliance export của Finance Archive, lọc theo adjustment code. Thread tháng trước hiện ra, khô khốc và dài như mọi cuộc trao đổi đối soát chưa bao giờ được viết cho con người đọc. Tôi thấy mail của mình ở giữa chuỗi: “Vendor code không tồn tại trong vendor master. Đề nghị cung cấp supporting document trước khi đưa vào close pack.” Bên dưới là phản hồi từ PeopleOps.Contracts: “Hồ sơ hỗ trợ sau thử việc, pending contractual addendum, sẽ bổ sung trước cut-off.” Tôi nhớ buổi chiều hôm đó, nhớ mình đánh dấu đỏ dòng service fee vì số tiền không khớp danh sách nhà cung cấp, rồi nhận một cuộc gọi rất ngắn từ anh Hưng nói đây là khoản “nhạy cảm về nhân sự”, đừng kéo dài vì ảnh hưởng close. Khi ấy tôi chỉ nghĩ mình bị ép im như mọi lần. Tôi không nghĩ sự im lặng đó sẽ được dùng làm nền để tạo một chữ ký.
Chị Mai hỏi: “Minh Châu, em có phản hồi nào sau mail này không?” Tôi nhìn thread. “Không. Sau mail của PeopleOps, em không approve khoản ML-17. Em chỉ để trạng thái pending support trong file đối soát của em.” Chị Hà lập tức nói với anh Sơn: “Mở version history file đối soát của Minh Châu.” Anh Sơn mở thư mục Finance working drive. Bản cuối của tôi lúc 18:42 tháng trước hiện dòng ML-17 màu vàng, status: Pending supporting document, owner: PeopleOps.Contracts. Tôi nghe một tiếng thở rất nhẹ trong phòng, không rõ của ai. Chị Mai vẫn không thay đổi nét mặt. “Ghi nhận: file làm việc của Minh Châu không thể hiện approve ML-17 ở thời điểm tháng trước. Nhưng chữ ký hôm nay vẫn cần kiểm tra độc lập.” Tôi không thấy thất vọng. Lần đầu tiên trong ngày, tôi thấy một mảnh nhỏ của mình được trả lại đúng chỗ.
Anh Hưng đẩy cửa phòng nhỏ. “Pending không có nghĩa là từ chối. Finance để pending thì PeopleOps mới bổ sung phụ lục. Tôi làm theo quy trình bổ sung, không có gì sai.” Chị Lan nhìn anh. “Quy trình bổ sung không bao gồm việc tạo draft từ mailbox đã hidden, BCC về anh, và dùng token của Minh Châu để ký.” Anh Hưng mím môi. “Tôi không dùng token của cô ấy.” Chị Mai quay sang anh Sơn. “Log khởi tạo package.”
Dòng mới mở ra, và căn phòng như bị kéo sát vào màn hình. Signing package ID P2-17-SC-ML17 được tạo lúc 14:30:44. Source mailbox: M.Linh. Source document: PhuLuc_MLinh_ServiceClose.pdf. Queue: PeopleOps.Contracts.MonthlyClose. Request reference: ticket do H.Hung mở lúc 13:58. Operator field không phải H.Hung. Nó là Service Queue. Nhưng ở phần note tự động sinh, có một dòng ngắn: “Scan copy received from records by H.Hung, submitted for checker stamp.” Chị Vân cúi đầu sâu hơn. Anh Hưng đứng sau lớp kính, mặt trắng ra trong một khoảnh khắc rất ngắn rồi lập tức cứng lại. Tôi không biết anh sợ vì bị lộ, hay sợ vì cuối cùng cũng thấy có một thứ ngoài tầm kiểm soát của mình.
Chị Mai yêu cầu dừng hai phút để đóng gói phần log vừa mở. Không ai thật sự nghỉ. Chị Lan gọi IT Security xác nhận image HR-PRINT-03 đang chạy. Chị Hà yêu cầu Finance khóa close pack ML-17, không cho bất kỳ ai chỉnh trạng thái cho đến khi cuộc họp kiểm toán kết thúc. Anh Phúc vẫn đứng phía sau tôi; khi tôi vô thức siết tay đến đau, anh chỉ đặt một cốc nước giấy xuống mép bàn, không nói gì. Tôi cầm lên, uống một ngụm nước nguội và buộc mình nhìn lại màn hình.
Khi cuộc họp tiếp tục, chị Mai cho mở rule history. Tôi tưởng mình đã chuẩn bị sẵn cho tên anh Hưng. Nhưng log lại không cho con người sự dễ chịu đó. Rule override “MonthlyClose_ServiceClose_PrintSign” được tạo tháng trước bởi PeopleOps queue dưới change request hợp lệ. Hôm nay, lúc 09:07:31, rule được sửa thêm một điều kiện: nếu checker field trống, hệ thống được phép dùng “last queried Finance checker” từ Finance Archive gateway làm fallback signer. Người bị query cuối cùng trong thread ML-17 sáng nay là M.Chau. Người mở thread query đầu tiên không phải tôi. Source request đến từ một audit-prep task tự động.
“Task này phục vụ ai?” Chị Lan hỏi. Anh Sơn mở scheduler owner. Trên màn hình hiện ra một tên nhóm: ExternalAudit_PreSubmission. Bên dưới là thời điểm chạy tiếp theo: 15:00 hôm nay. Trong phần attachment pack chờ gửi, có một file đã được tạo sẵn tên “ML-17_Control_Exception_Evidence.zip”. Tôi nhìn tên file đó, và lần đầu tiên trong cả ngày, nỗi sợ của tôi đổi hình. Đây không chỉ là một cái bẫy để đổ lỗi sau khi sự việc vỡ ra. Có người đã chuẩn bị sẵn một gói bằng chứng cho kiểm toán bên ngoài trước khi cuộc họp này kịp bắt đầu. Và trong gói đó, tên tôi đã nằm ở vị trí người ký.
