CWE-94 là gì?
Sản phẩm sử dụng dữ liệu đầu vào chịu ảnh hưởng từ bên ngoài để tạo một phần hoặc toàn bộ đoạn mã nhưng không vô hiệu hóa đúng cách cú pháp hoặc các thành phần khác có thể làm thay đổi hành vi dự kiến của mã.
Sản phẩm sử dụng dữ liệu đầu vào chịu ảnh hưởng từ bên ngoài để tạo một phần hoặc toàn bộ đoạn mã nhưng không vô hiệu hóa đúng cách cú pháp hoặc các thành phần khác có thể làm thay đổi hành vi dự kiến của mã.
Điểm yếu này xảy ra khi dữ liệu từ một thành phần thượng nguồn được đưa vào mã tạo động và vẫn có thể ảnh hưởng đến cú pháp, luồng điều khiển hoặc các thao tác được thực thi. Mã kết quả có thể thực hiện những hành động vượt quá mục đích của sản phẩm, đặc biệt khi dữ liệu đầu vào đến cơ chế đánh giá hoặc thực thi mà không bị giới hạn nghiêm ngặt về các cấu trúc được phép. Bản ghi xác định giai đoạn triển khai là nơi điểm yếu được hình thành, đồng thời nêu các ngôn ngữ thông dịch và công nghệ AI/ML là những bối cảnh áp dụng, với mức phổ biến lần lượt là đôi khi và chưa xác định.
Đây là một điểm yếu cơ sở, đơn giản, trong đó giá trị chịu ảnh hưởng từ bên ngoài đi vào mã được tạo động. Đặc điểm cốt lõi là không giới hạn hoặc không vô hiệu hóa đúng cú pháp đặc biệt, khiến dữ liệu đầu vào có thể thay đổi luồng điều khiển dự kiến hoặc gọi các thao tác vốn không được phép. Bản ghi cũng dùng thuật ngữ liên quan "Code Injection" và gắn điểm yếu này với môi trường thông dịch cùng các ứng dụng AI/ML.
Các hậu quả có thể gồm vượt qua xác thực hoặc cơ chế bảo vệ khác khi mã chèn kiểm soát quyết định truy cập, giành đặc quyền hoặc giả mạo danh tính khác, và thực thi mã hoặc lệnh trái phép. Việc này có thể ảnh hưởng đến tính bí mật, toàn vẹn và khả dụng, bao gồm thực thi mã tùy ý và làm mất tính toàn vẹn dữ liệu. Các hành động do mã chèn thực hiện cũng có thể không được ghi nhật ký, khiến hoạt động bị che giấu và làm suy yếu khả năng quy trách nhiệm.
| Tác động | Phạm vi | Diễn giải |
|---|---|---|
| Vượt qua cơ chế bảo vệ | Kiểm soát truy cập | In some cases, injectable code controls authentication; this may lead to a remote vulnerability. |
| Chiếm đặc quyền hoặc mạo danh | Kiểm soát truy cập | Injected code can access resources that the attacker is directly prevented from accessing. |
| Thực thi mã hoặc lệnh trái phép | Tính toàn vẹn, Tính bí mật, Tính sẵn sàng | When a product allows a user's input to contain code syntax, it might be possible for an attacker to craft the code in such a way that it will alter the intended control flow of the product. As a result, code injection can often result in the execution of arbitrary code. Code injection attacks can also lead to loss of data integrity in nearly all cases, since the control-plane data injected is always incidental to data recall or writing. |
| Che giấu hoạt động | Chống chối bỏ | Often the actions performed by injected control code are unlogged. |
Kiến trúc và thiết kế: Tái cấu trúc sản phẩm để không cần tạo mã động. Nếu không thể tránh việc tạo mã động, hãy chạy mã trong jail hoặc sandbox có ranh giới nghiêm ngặt, chẳng hạn môi trường sử dụng chroot hoặc AppArmor; biện pháp này chỉ giới hạn tác động lên hệ điều hành, có thể không khả thi và không được tạo ra các điểm yếu liên quan đến jail như CWE-243.
Triển khai: Coi mọi dữ liệu đầu vào là độc hại và áp dụng kiểm tra allowlist nghiêm ngặt, chỉ chấp nhận các giá trị phù hợp với độ dài, kiểu, phạm vi, cú pháp, tính nhất quán và quy tắc nghiệp vụ yêu cầu. Không chỉ dựa vào denylist hoặc việc tìm dữ liệu sai định dạng. Hãy giới hạn các cấu trúc mã được phép, vì kiểm tra một giá trị chỉ gồm chữ và số vẫn có thể cho phép tham chiếu đến các hàm nguy hiểm như system, exec hoặc exit. Đối với Python, bản ghi nêu ast.literal_eval như một lựa chọn thay cho eval vì được thiết kế để không thực thi mã, nhưng đánh dấu cách làm này là không được khuyến nghị do dữ liệu lồng sâu vẫn có thể gây tiêu thụ quá mức bộ nhớ hoặc ngăn xếp.
Kiểm thử và vận hành: Sử dụng fuzzing, kiểm thử độ bền và fault injection với nhiều dữ liệu đa dạng, đồng thời kiểm tra để sản phẩm không mất ổn định, bị treo hoặc tạo kết quả sai. Sử dụng môi trường có lan truyền taint tự động và ngăn thực thi lệnh với biến bị taint, chẳng hạn tùy chọn -T của Perl, nhưng phải xác thực cẩn thận trước khi coi dữ liệu là đã hết taint. Biện pháp kiểm soát taint này được bản ghi liệt kê ở cả hardening biên dịch hoặc xây dựng và hardening môi trường.
Phân tích tĩnh tự động, thường được triển khai dưới dạng SAST, có thể phát hiện một số trường hợp mà không cần thực thi sản phẩm. Phương pháp này có thể lập mô hình luồng dữ liệu và luồng điều khiển, rồi tìm đường đi từ nguồn đầu vào đến các sink nơi dữ liệu tương tác với thành phần bên ngoài hoặc lớp thấp hơn như hệ điều hành. Khả năng bao phủ bị giới hạn bởi những mẫu mà công cụ có thể lập mô hình, nên không chứng minh được rằng mọi trường hợp đều đã được phát hiện.
| Phương pháp | Cách làm | Hiệu quả |
|---|---|---|
| Phân tích tĩnh tự động | Automated 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 |
Bản ghi chính thức cung cấp các ví dụ tiêu biểu, không phải danh sách đầy đủ. Các ví dụ gồm những framework ứng dụng LLM hoặc AI đưa dữ liệu người dùng hay phản hồi được nhà cung cấp tạo ra vào exec hoặc eval của Python, như CVE-2023-29374, CVE-2024-5565 và CVE-2024-4181. Những ví dụ khác liên quan đến việc đánh giá hoặc chèn mã trực tiếp trong Python, PHP và Perl, gồm CVE-2022-2054, CVE-2008-5071, CVE-2002-1750, CVE-2008-5305, CVE-2002-1752, CVE-2002-1753, CVE-2005-1527, CVE-2005-2837, CVE-2005-1921, CVE-2005-2498, CVE-2005-3302, CVE-2007-1253, CVE-2001-1471, CVE-2002-0495, CVE-2005-1876, CVE-2005-1894 và CVE-2003-0395. Tập ví dụ còn có CVE-2021-22204, trong đó điểm yếu xử lý ranh giới chuỗi ở thượng nguồn dẫn đến chèn mã khi đánh giá, và CVE-2020-8218, được mô tả là chèn mã trong một sản phẩm VPN; bản ghi cung cấp nêu cả hai đã bị khai thác ngoài thực tế.
Dưới đây là các lỗ hổng tiêu biểu liên quan đến CWE-94, dựa theo mức độ ưu tiên
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.
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.
Khám phá CyStack VulnScanvi