CWE-367: Điều kiện tranh đua giữa thời điểm kiểm tra và thời điểm sử dụng (TOCTOU)

CWE-367 là gì?

CWE-367 là điều kiện tranh đua giữa thời điểm kiểm tra và thời điểm sử dụng (TOCTOU). Lỗi phát sinh khi sản phẩm kiểm tra trạng thái của một tài nguyên trước khi sử dụng, nhưng trạng thái của tài nguyên có thể thay đổi giữa lúc kiểm tra và lúc sử dụng, khiến kết quả kiểm tra không còn đúng. Hiện có 290 lỗ hổng trong kho dữ liệu liên quan đến CWE-367 và 1 trong số đó nằm trong danh mục khai thác thực tế của CISA.

Thứ hạng OWASP Top 10-
Tổng số CVE liên quan (365 ngày)290
Mức trừu tượngCơ bản
Khả năng khai thácTrung bình

Số lượng lỗ hổng nằm trong CWE-367

290 lỗ hổngTăng 480% so với cùng kỳ

Số lượng lỗ hổng trong CISA KEV của CWE-367

1 lỗ hổng

Định nghĩa chính thức

TheoMitre CWE

Chi tiết kỹ thuật

Lỗi hình thành khi chương trình dựa vào một trạng thái hoặc danh tính đã được quan sát ở thời điểm kiểm tra, rồi thực hiện thao tác ở thời điểm sau đó mà không bảo đảm tài nguyên vẫn là đối tượng đã được kiểm tra. Trong khoảng thời gian này, tiến trình khác, luồng khác hoặc tác nhân có khả năng kiểm soát tài nguyên có thể thay đổi tệp, bộ nhớ, biến hoặc tài nguyên dùng chung khác. Vì vậy, kiểm tra có thể cho kết quả an toàn nhưng thao tác thực tế lại tác động lên tài nguyên khác hoặc lên tài nguyên đang ở trạng thái không được phép.

Đặc điểm

Đây là một điều kiện tranh đua xảy ra trong giai đoạn triển khai, khi trạng thái hoặc danh tính của tài nguyên thay đổi sau bước kiểm tra nhưng trước thao tác sử dụng. Tình huống này đặc biệt liên quan đến tài nguyên dùng chung như tệp, bộ nhớ hoặc biến trong chương trình đa luồng, và trở thành vấn đề bảo mật khi kẻ tấn công có thể tác động đến tài nguyên trong khoảng thời gian đó. Các tên gọi thường gặp gồm TOCTTOU và TOCCTOU; tên thứ hai thường được xem là cách viết sai của tên thứ nhất.

Hậu quả thường gặp

  • Tính toàn vẹn và kiểm soát truy cập: Kẻ tấn công có thể truy cập các tài nguyên vốn không được phép, bao gồm quyền đọc hoặc ghi tệp, thư mục, dữ liệu ứng dụng hay bộ nhớ, đồng thời có thể làm thay đổi logic thực thi hoặc tạo ra trạng thái bất ngờ.
  • Thao túng tài nguyên: Tài nguyên bị ảnh hưởng, hoặc các tài nguyên khác có thể tiếp cận thông qua nó, có thể bị thay đổi theo cách không mong muốn. Sản phẩm cũng có thể thực hiện thao tác không hợp lệ khi tài nguyên ở trạng thái bất ngờ.
  • Không thể phủ nhận và che giấu hoạt động: Thao tác được thực hiện thông qua lỗi này có thể không được ghi nhật ký như dự kiến. Trong một số trường hợp, kẻ tấn công có thể xóa các tệp mà bình thường họ không có quyền truy cập, bao gồm cả tệp nhật ký.
Dữ liệu MITRE CWE chính thức
Tác độngPhạm viDiễn giải
Thay đổi logic thực thi, Trạng thái ngoài dự kiếnTính toàn vẹn, KhácThe attacker can gain access to otherwise unauthorized resources.
Thay đổi dữ liệu ứng dụng, Thay đổi tệp hoặc thư mục, Thay đổi bộ nhớ, KhácTính toàn vẹn, KhácRace conditions such as this kind may be employed to gain read or write access to resources which are not normally readable or writable by the user in question.
KhácTính toàn vẹn, KhácThe resource in question, or other resources (through the corrupted one), may be changed in undesirable ways by a malicious user.
Che giấu hoạt độngChống chối bỏIf a file or other resource is written in this method, as opposed to in a valid way, logging of the activity may not occur.
KhácChống chối bỏ, KhácIn some cases it may be possible to delete files a malicious user might not otherwise have access to, such as log files.
Trạng thái ngoài dự kiếnKhácThe product may perform invalid actions when the resource is in an unexpected state.

Biện pháp giảm thiểu rủi ro

  • Tránh kiểm tra riêng trước khi sử dụng khi có thể. Việc loại bỏ bước kiểm tra có thể tránh cảm giác an toàn giả tạo do bước này tạo ra, dù bản thân việc loại bỏ không bảo đảm trạng thái và danh tính của tài nguyên được duy trì trong suốt thao tác.
  • Kiểm soát ngữ cảnh đặc quyền đối với tệp thuộc sở hữu phù hợp. Khi tệp bị thay đổi thuộc về người dùng và nhóm hiện tại, đặt danh tính nhóm và người dùng hiệu lực tương ứng với người dùng và nhóm hiện tại khi thực thi câu lệnh.
  • Hạn chế việc đan xen thao tác. Hạn chế cách các thao tác trên tệp được đan xen giữa nhiều tiến trình.
  • Rút ngắn khoảng thời gian giữa kiểm tra và sử dụng khi không thể thực hiện nguyên tử. Nếu nhiều tiến trình hoặc luồng phải dùng chung tài nguyên, giảm tối đa thời gian CPU giữa lúc kiểm tra và sử dụng. Biện pháp này chỉ làm cuộc tấn công khó thành công hơn, không loại bỏ điều kiện tranh đua.
  • Xác minh sau khi sử dụng. Kiểm tra lại tài nguyên sau lời gọi sử dụng để xác nhận thao tác đã được thực hiện phù hợp.
  • Bảo đảm cơ chế khóa của môi trường. Đảm bảo có thể sử dụng một cơ chế khóa hiệu quả để bảo vệ tài nguyên dùng chung.
  • Khóa trước khi kiểm tra. Thực hiện khóa trước bước kiểm tra để tài nguyên được kiểm tra là cùng tài nguyên và trạng thái với tài nguyên được sử dụng.
Dữ liệu MITRE CWE chính thức
  1. Hiện thực hóaThe most basic advice for TOCTOU vulnerabilities is to not perform a check before the use. This does not resolve the underlying issue of the execution of a function on a resource whose state and identity cannot be assured, but it does help to limit the false sense of security given by the check.
  2. Hiện thực hóaWhen the file being altered is owned by the current user and group, set the effective gid and uid to that of the current user and group when executing this statement.
  3. Kiến trúc và thiết kếLimit the interleaving of operations on files from multiple processes.
  4. Hiện thực hóa, Kiến trúc và thiết kếIf you cannot perform operations atomically and you must share access to the resource between multiple processes or threads, then try to limit the amount of time (CPU cycles) between the check and use of the resource. This will not fix the problem, but it could make it more difficult for an attack to succeed.
  5. Hiện thực hóaRecheck the resource after the use call to verify that the action was taken appropriately.
  6. Kiến trúc và thiết kếEnsure that some environmental locking mechanism can be used to protect resources effectively.
  7. Hiện thực hóaEnsure that locking occurs before the check, as opposed to afterwards, such that the resource, as checked, is the same as it is when in use.

Cách phát hiện trong hệ thống

Phân tích tĩnh tự động, còn gọi là SAST, có thể phát hiện một số trường hợp bằng cách phân tích mã nguồn hoặc mã nhị phân đã biên dịch mà không cần thực thi. Phương pháp này thường xây dựng mô hình luồng dữ liệu và luồng điều khiển, sau đó tìm các mẫu nguy hiểm nối các nguồn đầu vào với các điểm sử dụng dữ liệu hoặc tương tác với thành phần bên ngoài, chẳng hạn hệ điều hành; phương pháp này không bảo đảm phát hiện mọi trường hợp TOCTOU.

Dữ liệu MITRE CWE chính thức
Phương phápCách làmHiệu quả
Phân tích tĩnh tự độngAutomated static analysis, commonly referred to as Static Application Security Testing (SAST), can find some instances of this weakness by analyzing source code (or binary/compiled code) without having to execute it. Typically, this is done by building a model of data flow and control flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input) with "sinks" (destinations where the data interacts with external components, a lower layer such as the OS, etc.)Cao

Lỗ hổng điển hình

Hồ sơ chính thức liệt kê các ví dụ đại diện sau, không phải toàn bộ các lỗ hổng thuộc loại này:

  • CVE-2015-1743: trong một tiến trình sandbox, tệp bị thay thế sau khi được xác minh nhưng trước khi được thực thi, cho phép cài đặt tiện ích trình duyệt không đáng tin cậy.
  • CVE-2003-0813: điều kiện tranh đua đa luồng khiến hai luồng xử lý cùng một yêu cầu RPC, sau đó một luồng gặp lỗi sử dụng sau khi giải phóng, thuộc CWE-416.
  • CVE-2004-0594: một lỗi trong PHP cho phép kẻ tấn công từ xa thực thi mã tùy ý bằng cách dừng quá trình thực thi trước khi các cấu trúc dữ liệu then chốt được khởi tạo hoàn tất.
  • CVE-2008-2958 và CVE-2008-1570: điều kiện tranh đua TOCTOU cho phép vượt qua cơ chế bảo vệ được thiết kế để ngăn chặn tấn công bằng liên kết tượng trưng.
Nguồn (2)

CWE™ Program, operated by The MITRE Corporation. Copyright © 2006–2026, The MITRE Corporation. The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. CWE Terms of Use.

Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.