Phân tích tầng lưu trữ cơ sở dữ liệu để phát hiện các hoạt động bị che giấu trong nhật ký kiểm toán (Phần 1)

12:02 | 20/01/2026
PGS , TS. Trần Thị Lượng (Học viện Kỹ thuật mật mã)

Trong các hệ quản trị cơ sở dữ liệu (CSDL) hiện đại, nhật ký kiểm toán (audit log) được xem là cơ chế trọng yếu nhằm giám sát và phát hiện các hành vi truy cập, chỉnh sửa dữ liệu trái phép. Tuy nhiên, trong trường hợp kẻ tấn công sở hữu đặc quyền cao hoặc khai thác thành công lỗ hổng leo thang đặc quyền, các cơ chế kiểm toán logic này có thể bị vô hiệu hóa hoặc bị làm giả, tạo ra “khoảng trống kiểm toán”. Bài báo này trình bày một phương pháp phát hiện các hoạt động bị che giấu trong CSDL thông qua việc phân tích trực tiếp tầng lưu trữ, đối chiếu sự nhất quán giữa trạng thái vật lý của dữ liệu (trên đĩa và bộ nhớ) với các mục ghi nhận trong nhật ký kiểm toán.

GIỚI THIỆU

Trong kỷ nguyên chuyển đổi số, CSDL đã trở thành hạ tầng cốt lõi của hầu hết các hệ thống thông tin trong các lĩnh vực trọng yếu như tài chính - ngân hàng, chính phủ điện tử, y tế, viễn thông và quốc phòng. Các hệ quản trị CSDL (Database Management Systems - DBMS) không chỉ lưu trữ dữ liệu nghiệp vụ thông thường mà còn quản lý một lượng lớn thông tin nhạy cảm, bao gồm dữ liệu cá nhân, dữ liệu tài chính, hồ sơ y tế và các thông tin mật của tổ chức. Do đó, việc đảm bảo tính bảo mật, toàn vẹn và khả năng truy vết các thao tác trên CSDL là yêu cầu then chốt trong thiết kế và vận hành hệ thống.

Để đáp ứng yêu cầu này, hầu hết các DBMS hiện đại đều tích hợp các cơ chế kiểm soát truy cập và ghi nhật ký kiểm toán (audit log), cho phép ghi nhận lịch sử các truy vấn SQL đã được thực thi, bao gồm các thao tác truy cập, chèn, xóa và cập nhật dữ liệu. Audit log được xem là nguồn bằng chứng quan trọng phục vụ cho giám sát an toàn, điều tra số sự cố và tuân thủ các quy định pháp lý. Trong nhiều chuẩn mực và khung pháp lý quốc tế như SOX (Sarbanes-Oxley) hay HIPAA (Health Insurance Portability and Accountability Act), việc duy trì và bảo vệ audit log là yêu cầu bắt buộc nhằm đảm bảo khả năng truy vết và trách nhiệm giải trình.

Tuy nhiên, trên thực tế, audit log không phải lúc nào cũng là nguồn bằng chứng đáng tin cậy. Một giả định ngầm trong nhiều cơ chế kiểm toán là người vận hành hệ thống, đặc biệt là quản trị viên CSDL (DBA), luôn trung thực và không lạm dụng đặc quyền được cấp. Giả định này không phải lúc nào cũng đúng. Khi kẻ tấn công là người nội bộ có đặc quyền cao, hoặc đã khai thác thành công lỗ hổng leo thang đặc quyền trong DBMS hay hệ điều hành, họ có khả năng vô hiệu hóa tạm thời cơ chế kiểm toán, chỉnh sửa hoặc xóa các mục trong audit log nhằm che giấu hành vi độc hại. Hệ quả là các hệ thống giám sát dựa hoàn toàn trên log có thể đưa ra kết luận âm tính giả (false negative), tức là có sự cố thực sự xảy ra nhưng không bị phát hiện.

Vấn đề này trở nên đặc biệt nghiêm trọng trong bối cảnh các mối đe dọa dai dẳng nâng cao - APT (Advanced Persistent Threat) và các kịch bản lạm dụng đặc quyền nội bộ. Trong các kịch bản này, kẻ tấn công không nhất thiết phải phá hủy hệ thống, mà chỉ cần thực hiện những thay đổi tinh vi trên dữ liệu, sau đó làm sạch dấu vết để duy trì trạng thái “bình thường” của hệ thống. Khi audit log đã bị thao túng, việc Điều tra sự cố dựa trên các cơ chế kiểm toán logic truyền thống gần như không còn hiệu quả.

Trước thách thức đó, điều tra số CSDL (database forensics) nổi lên như một hướng tiếp cận bổ sung mang tính nền tảng. Thay vì chỉ dựa vào các bản ghi logic do DBMS cung cấp, điều tra số tập trung vào việc phân tích các dấu vết còn tồn tại trong lưu trữ vật lý của hệ thống, bao gồm các trang dữ liệu trên đĩa, cấu trúc chỉ mục và các trang được nạp vào bộ nhớ đệm. Khác với audit log, các thao tác trên CSDL luôn để lại tác động vật lý lên cấu trúc lưu trữ, những dấu vết này rất khó bị xóa bỏ hoàn toàn mà không gây ra sự không nhất quán hoặc lỗi hệ thống.

Dựa trên nhận định rằng lưu trữ vật lý là nguồn bằng chứng ổn định và đáng tin cậy hơn trong nhiều kịch bản tấn công, bài báo này trình bày một phương pháp phát hiện các hoạt động bị che giấu trong CSDL thông qua việc phân tích trực tiếp tầng lưu trữ và đối chiếu với audit log. Phương pháp được xây dựng dựa trên kiến trúc của hệ thống DBDetective, cho phép phát hiện các thao tác INSERT, DELETE, UPDATE cũng như các truy vấn chỉ đọc không được ghi nhận trong nhật ký kiểm toán. Cách tiếp cận này không nhằm thay thế audit log, mà đóng vai trò như một cơ chế “kiểm tra chéo”, góp phần nâng cao khả năng phát hiện và điều tra số các sự cố an toàn thông tin trong môi trường CSDL hiện đại. Trước hết, Phần 1 của bài báo sẽ đưa ra

KIỂM TOÁN CSDL TRONG BỐI CẢNH CÁC MỐI ĐE DỌA HIỆN ĐẠI

Hình 1. Tổng quan các hướng nghiên cứu về kiểm toán và điều tra số CSDL

Kiểm toán CSDL và mô hình đe dọa

Kiểm toán CSDL là cơ chế cho phép ghi nhận và truy vết các hoạt động xảy ra trong hệ quản trị CSDL, bao gồm truy cập dữ liệu, thay đổi cấu trúc lược đồ và các thao tác quản trị. Về bản chất, kiểm toán trong DBMS là một dạng kiểm soát hậu kiểm (post-event control), cung cấp bằng chứng phục vụ giám sát an toàn, điều tra số sự cố và tuân thủ pháp lý.

Các hệ quản trị CSDL hiện đại như Oracle, SQL Server hay PostgreSQL đều hỗ trợ nhiều mức kiểm toán khác nhau, từ kiểm toán theo người dùng, theo đối tượng đến theo câu lệnh SQL. Tuy nhiên, phần lớn các cơ chế này đều dựa trên giả định rằng tiến trình ghi log là đáng tin cậy và không bị can thiệp bởi người dùng có đặc quyền cao. Trong thực tế, giả định này không hoàn toàn phù hợp với các mô hình đe dọa hiện đại, đặc biệt là các kịch bản lạm dụng đặc quyền nội bộ.

Trong mô hình đe dọa Insider Threat, kẻ tấn công có thể là DBA hoặc người dùng đã chiếm được tài khoản có quyền quản trị. Khi đó, họ có khả năng vô hiệu hóa audit, chỉnh sửa hoặc xóa các bản ghi log, hoặc thực hiện các thao tác trực tiếp ở mức thấp hơn DBMS. Điều này khiến audit log không còn phản ánh trung thực lịch sử hoạt động của hệ thống, làm suy giảm nghiêm trọng giá trị điều tra số của log.

Bảo vệ tính toàn vẹn của nhật ký kiểm toán

Để khắc phục các hạn chế của audit log truyền thống, nhiều nghiên cứu đã đề xuất các cơ chế bảo vệ tính toàn vẹn của log. Một hướng tiếp cận phổ biến là sử dụng các cấu trúc mật mã, chẳng hạn như chuỗi băm hoặc chữ ký số, nhằm phát hiện việc chỉnh sửa trái phép các mục log. Một số nghiên cứu khác đề xuất lưu trữ log trên hệ thống bên ngoài hoặc gửi log tới bên thứ ba tin cậy để tránh bị can thiệp bởi DBA.

Mặc dù các giải pháp này giúp nâng cao khả năng phát hiện việc sửa đổi log, chúng vẫn tồn tại những hạn chế nhất định. Thứ nhất, các cơ chế bảo vệ chỉ có hiệu lực nếu việc ghi log vẫn được kích hoạt. Trong trường hợp audit bị vô hiệu hóa hoàn toàn, sẽ không có bản ghi nào để bảo vệ. Thứ hai, việc tích hợp các cơ chế mật mã thường làm gia tăng chi phí lưu trữ và ảnh hưởng đến hiệu năng của hệ thống. Do đó, trong nhiều hệ thống thực tế, mức độ triển khai các biện pháp bảo vệ log vẫn còn hạn chế.

Điều tra số CSDL dựa trên lưu trữ

Điều tra số CSDL là lĩnh vực nghiên cứu tập trung vào việc thu thập và phân tích bằng chứng trực tiếp từ phần lưu trữ của DBMS. Một nguyên lý quan trọng của điều tra số là các thao tác trên dữ liệu, dù ở mức logic hay vật lý, đều để lại dấu vết trong hệ thống. Trong DBMS, các dấu vết này tồn tại dưới dạng các trang dữ liệu, các khối chỉ mục, undo/redo log và các cấu trúc bộ nhớ đệm.

Nhiều nghiên cứu đã chứng minh khả năng khôi phục các bản ghi đã bị xóa hoặc ghi đè bằng cách phân tích trực tiếp các trang dữ liệu thô. Kỹ thuật này thường được gọi là database carving, cho phép trích xuất các bản ghi không còn được DBMS quản lý chính thức nhưng vẫn tồn tại trong không gian lưu trữ. Các công trình của Wagner và cộng sự cho thấy rằng các bản ghi đã xóa có thể tồn tại trong một khoảng thời gian dài, đặc biệt trong các hệ thống có tần suất ghi thấp hoặc dung lượng lưu trữ lớn.

Phát hiện sự không nhất quán giữa log và lưu trữ

Một hướng nghiên cứu quan trọng trong điều tra số CSDL là phát hiện sự không nhất quán giữa các nguồn bằng chứng khác nhau. Trong bối cảnh này, audit log đại diện cho “góc nhìn logic” của DBMS, trong khi lưu trữ vật lý phản ánh “trạng thái thực” của dữ liệu. Nếu tồn tại sự sai lệch giữa hai nguồn này, nhiều khả năng đã xảy ra một hành vi bị che giấu.

Một số nghiên cứu đã đề xuất việc đối chiếu giữa undo/redo log và trạng thái hiện tại của dữ liệu nhằm phát hiện các thao tác bất thường. Tuy nhiên, các tiếp cận này thường phụ thuộc vào sự tồn tại đầy đủ của các log hệ thống và không giải quyết triệt để trường hợp log bị xóa hoặc làm sạch. Hơn nữa, nhiều nghiên cứu chỉ tập trung vào các thao tác ghi dữ liệu, trong khi các truy vấn chỉ đọc cũng có thể mang giá trị điều tra số quan trọng, đặc biệt trong các kịch bản rò rỉ thông tin.

Từ tổng quan các nghiên cứu liên quan có thể thấy rằng vẫn tồn tại một khoảng trống giữa kiểm toán logic dựa trên audit log và điều tra số dựa trên lưu trữ vật lý. Bài báo này tiếp cận vấn đề theo hướng kết hợp hai nguồn bằng chứng này, sử dụng lưu trữ vật lý như một “nguồn kiểm chứng độc lập” để đánh giá độ tin cậy của audit log. Khác với các nghiên cứu trước đây, phương pháp được trình bày không chỉ tập trung vào việc khôi phục dữ liệu đã xóa, mà còn tập trung vào các thuật toán đối chiếu nhằm phát hiện các thao tác INSERT, DELETE, UPDATE và SELECT bị che giấu. Cách tiếp cận này cho phép mở rộng phạm vi điều tra số từ dữ liệu đã bị xóa sang toàn bộ lịch sử thao tác tiềm ẩn của hệ thống, góp phần nâng cao hiệu quả phát hiện các mối đe dọa nội bộ trong môi trường CSDL hiện đại.

PHÁT HIỆN CÁC THAY ĐỔI BỊ CHE GIẤU TRONG LƯU TRỮ

Nguyên lý phát hiện dựa trên dấu vết lưu trữ

Mọi thao tác ghi dữ liệu trong hệ quản trị csdl, bao gồm chèn, xóa và cập nhật, đều làm thay đổi trạng thái vật lý của lưu trữ. Các thay đổi này không chỉ phản ánh ở mức logic (thông qua audit log), mà còn để lại dấu vết trong các cấu trúc lưu trữ như trang dữ liệu, không gian trống, chỉ mục và các vùng nhớ tạm thời. Ngay cả trong trường hợp audit log bị vô hiệu hóa hoặc bị chỉnh sửa, các dấu vết vật lý này vẫn tồn tại trong một khoảng thời gian nhất định và có thể được khai thác cho mục đích điều tra.

Phát hiện các thao tác INSERT, DELETE và UPDATE bị che giấu thông qua phân tích lưu trữ vật lý

Nguyên lý cốt lõi của phương pháp được đề xuất là sự nhất quán nội tại của DBMS: Trạng thái hiện tại của lưu trữ phải là kết quả của một chuỗi các thao tác hợp lệ đã được thực thi. Do đó, nếu tồn tại sự thay đổi trong lưu trữ mà không thể gán cho bất kỳ thao tác hợp lệ nào được ghi nhận trong audit log, thì có thể suy luận rằng đã xảy ra một hoạt động bị che giấu. Cách tiếp cận này xem lưu trữ vật lý như một nguồn bằng chứng độc lập, cho phép kiểm chứng độ tin cậy của audit log.

Phát hiện các thao tác xóa bị che giấu

Trong nhiều DBMS, thao tác DELETE không dẫn đến việc xóa ngay dữ liệu khỏi trang, mà chỉ đánh dấu bản ghi là đã xóa và cập nhật các cấu trúc quản lý không gian trống. Do đó, các bản ghi bị xóa vẫn có thể được khôi phục thông qua phân tích các trang dữ liệu thô. Việc khôi phục này cho phép xác định các bản ghi đã tồn tại trong hệ thống nhưng hiện không còn được quản lý chính thức bởi DBMS.

Phương pháp phát hiện thao tác xóa bị che giấu được xây dựng bằng cách đối chiếu tập các bản ghi đã bị xóa được khôi phục từ lưu trữ với các lệnh DELETE được ghi nhận trong audit log. Nếu tồn tại một bản ghi bị xóa mà không thỏa mãn điều kiện WHERE của bất kỳ lệnh DELETE nào trong log, bản ghi đó được xem là bằng chứng của một thao tác xóa bị che giấu. Cách tiếp cận này không yêu cầu audit log phải đầy đủ, mà chỉ cần log hiện có để loại trừ các thao tác hợp lệ đã được ghi nhận.

Phát hiện các thao tác chèn bị che giấu

Đối với thao tác INSERT, các DBMS thường ghi dữ liệu mới vào các vùng trống hoặc ghi đè lên các bản ghi đã bị xóa trước đó. Quá trình này để lại dấu vết trong trang dữ liệu, bao gồm sự xuất hiện của các bản ghi “hoạt động” mà không có lịch sử tương ứng trong audit log.

Phương pháp phát hiện INSERT bị che giấu dựa trên việc đối chiếu tập các bản ghi hiện đang tồn tại trong lưu trữ với các lệnh INSERT được ghi nhận trong log. Nếu một bản ghi hợp lệ không thể được ánh xạ tới bất kỳ lệnh INSERT nào trong audit log, bản ghi đó được xem là kết quả của một thao tác chèn bị che giấu. Việc đối chiếu này được thực hiện trên cơ sở các thuộc tính khóa, giá trị dữ liệu và bối cảnh thời gian, nhằm giảm thiểu khả năng nhầm lẫn với các thao tác hợp lệ khác.

Phát hiện các thao tác cập nhật bị che giấu

Về bản chất, một thao tác UPDATE có thể được xem như sự kết hợp của một thao tác DELETE đối với bản ghi cũ và một thao tác INSERT đối với bản ghi mới. Do đó, việc phát hiện UPDATE bị che giấu có thể được thực hiện bằng cách liên kết các bản ghi đã bị xóa và các bản ghi được thêm vào, dựa trên các tiêu chí như khóa chính, cấu trúc dữ liệu và ngữ nghĩa của thuộc tính.

Phương pháp đề xuất xây dựng các cặp bản ghi trước - sau nhằm xác định các thay đổi giá trị thuộc tính. Nếu tồn tại một cặp bản ghi thể hiện rõ mối quan hệ cập nhật nhưng không tương ứng với bất kỳ lệnh UPDATE nào trong audit log, có thể kết luận rằng đã xảy ra một thao tác cập nhật bị che giấu. Cách tiếp cận này đặc biệt hữu ích trong các kịch bản mà kẻ tấn công chỉ muốn thay đổi một phần nhỏ dữ liệu để tránh bị chú ý.

Giá trị của điều tra số và giới hạn của phương pháp

Việc phát hiện các thay đổi bị che giấu trong lưu trữ mang lại giá trị điều tra số quan trọng, bởi nó cho phép tái dựng lại lịch sử thao tác của hệ thống ngay cả khi audit log không còn đáng tin cậy. Phương pháp này giúp giảm thiểu nguy cơ âm tính giả trong giám sát an toàn CSDL và bổ sung một lớp kiểm chứng độc lập cho các cơ chế kiểm toán truyền thống.

Tuy nhiên, phương pháp cũng tồn tại một số giới hạn như: Khả năng khôi phục và phát hiện phụ thuộc vào thời gian tồn tại của các dấu vết lưu trữ và chính sách ghi đè của DBMS; Trong các hệ thống có tần suất ghi cao hoặc cơ chế dọn dẹp tích cực, một số dấu vết có thể bị mất. Mặc dù vậy, trong nhiều kịch bản thực tế, đặc biệt là các cuộc tấn công nội bộ mang tính thận trọng, các dấu vết lưu trữ vẫn tồn tại đủ lâu để phục vụ điều tra.

Còn tiếp!

Để lại bình luận