CWE-77: Vô hiệu hóa không phù hợp các phần tử đặc biệt được sử dụng trong lệnh

CWE-77 là gì?

CWE-77 là vô hiệu hóa không phù hợp các phần tử đặc biệt được sử dụng trong lệnh. Lỗi phát sinh khi sản phẩm tạo toàn bộ hoặc một phần lệnh từ dữ liệu chịu ảnh hưởng bên ngoài nhưng không vô hiệu hóa, hoặc vô hiệu hóa sai, các phần tử đặc biệt có thể thay đổi lệnh dự kiến khi lệnh được gửi đến thành phần tiếp nhận. Hiện có 637 lỗ hổng trong kho dữ liệu liên quan đến CWE-77 và 4 trong số đó nằm trong danh mục khai thác thực tế của CISA.

THỨ HẠNG OWASP TOP 10:20255 — A05:2025 — Injection
Tổng số CVE liên quan (365 ngày)637
Mức trừu tượngLớp
Khả năng khai thácCao

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

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

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

4 lỗ hổngKhông đổi so với cùng kỳ

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

TheoMitre CWE

Chi tiết kỹ thuật

Nhiều giao thức và sản phẩm sử dụng ngôn ngữ lệnh riêng. Vì vậy, việc chỉ xem xét chuỗi lệnh OS hoặc shell là chưa đủ: cú pháp đặc biệt của một ngôn ngữ lệnh tùy chỉnh cũng có thể thay đổi ý nghĩa thao tác mà ứng dụng dự định thực hiện. Điểm yếu hình thành khi dữ liệu không tin cậy được ghép vào lệnh và truyền đến thành phần thực thi mà không có cơ chế trung hòa phù hợp, cho phép dữ liệu đó kết thúc lệnh hiện tại hoặc tạo thêm thao tác ngoài dự kiến.

Đặc điểm

Điểm cốt lõi là dữ liệu từ nguồn không tin cậy đi vào chuỗi lệnh được thực thi bởi sản phẩm hoặc được gửi đến một thành phần khác, trong khi các ký tự hay cú pháp đặc biệt không được xử lý đúng. Kẻ tấn công có thể lợi dụng ngôn ngữ lệnh của hệ điều hành, shell, hoặc một giao thức và sản phẩm riêng, không chỉ các lệnh OS hoặc shell quen thuộc. Điểm yếu thường phát sinh trong giai đoạn triển khai, khi dữ liệu bên ngoài vừa được đưa vào ứng dụng vừa trở thành một phần của chuỗi được thực thi.

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

Kẻ tấn công có thể chèn một dấu phân cách, chẳng hạn dấu chấm phẩy, để kết thúc lệnh dự kiến và đưa vào một lệnh khác. Điều này có thể cho phép thực thi mã hoặc lệnh trái phép, đồng thời cấp cho kẻ tấn công năng lực hoặc đặc quyền vốn không được phép có. Tác động có thể ảnh hưởng đến tính bí mật, tính toàn vẹn và tính sẵn sàng, tùy thuộc vào các lệnh bị thực thi.

Dữ liệu MITRE CWE chính thức
Tác độngPhạm viDiễn giải
Thực thi mã hoặc lệnh trái phépTính toàn vẹn, Tính bí mật, Tính sẵn sàngIf a malicious user injects a character (such as a semi-colon) that delimits the end of one command and the beginning of another, it may be possible to then insert an entirely new and unrelated command that was not intended to be executed. This gives an attacker a privilege or capability that they would not otherwise have.

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

Kiến trúc và thiết kế: Ưu tiên gọi thư viện thay vì tiến trình bên ngoài khi thư viện có thể cung cấp chức năng cần thiết. Triển khai: Nếu cần gọi lệnh bên ngoài, hãy tạo lệnh tĩnh bất cứ khi nào có thể. Kiểm tra đầu vào theo chiến lược chấp nhận dữ liệu hợp lệ đã biết, dùng allowlist tuân thủ nghiêm ngặt đặc tả, bao gồm độ dài, kiểu, phạm vi giá trị, trường bị thiếu hoặc thừa, cú pháp, tính nhất quán giữa các trường và quy tắc nghiệp vụ; từ chối hoặc chuyển đổi dữ liệu không phù hợp. Không chỉ dựa vào denylist các mẫu độc hại, dù denylist vẫn có thể hỗ trợ phát hiện tấn công hoặc loại bỏ dữ liệu rõ ràng sai định dạng. Vận hành: Thực thi allowlist các lệnh được phép tại thời điểm chạy. Cấu hình hệ thống: Cấp quyền để người dùng không thể truy cập hoặc mở các tệp đặc quyền.

Dữ liệu MITRE CWE chính thức
  1. Kiến trúc và thiết kếIf at all possible, use library calls rather than external processes to recreate the desired functionality.
  2. Hiện thực hóaIf possible, ensure that all external commands called from the program are statically created.
  3. Kiểm tra dữ liệu đầu vào · Hiện thực hóaAssume all input is malicious. Use an "accept known good" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does. When performing input validation, consider all potentially relevant properties, including length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields, and conformance to business rules. As an example of business rule logic, "boat" may be syntactically valid because it only contains alphanumeric characters, but it is not valid if the input is only expected to contain colors such as "red" or "blue." Do not rely exclusively on looking for malicious or malformed inputs. This is likely to miss at least one undesirable input, especially if the code's environment changes. This can give attackers enough room to bypass the intended validation. However, denylists can be useful for detecting potential attacks or determining which inputs are so malformed that they should be rejected outright.
  4. Vận hànhRun time: Run time policy enforcement may be used in an allowlist fashion to prevent use of any non-sanctioned commands.
  5. Cấu hình hệ thốngAssign permissions that prevent the user from accessing/opening privileged files.

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

Phân tích tĩnh tự động, thường 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ã đã biên dịch mà không cần thực thi. Công cụ thường lập mô hình luồng dữ liệu và luồng điều khiển, sau đó tìm các mẫu kết nối nguồn dữ liệu đầu vào với các đích nơi dữ liệu tương tác với thành phần bên ngoài hoặc lớp bên dưới, chẳng hạn hệ điều hành. Phương pháp này có hiệu quả cao nhưng chỉ phát hiện được những trường hợp mà công cụ có thể mô hình hóa và nhận diện.

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

Các ví dụ sau là những ví dụ đại diện, không phải danh sách đầy đủ:

  • CVE-2026-27806: sản phẩm quản lý thiết bị cho phép chèn lệnh Tcl/expect.
  • CVE-2022-1509, CVE-2021-41282 và CVE-2019-13398: cho phép chèn cú pháp kịch bản sed.
  • CVE-2024-5184: một sản phẩm phân tích email dựa trên ML cho phép chèn prompt trực tiếp vào dịch vụ API, làm thay đổi logic dịch vụ và buộc dịch vụ làm lộ prompt hệ thống hoặc xử lý prompt không mong muốn để làm lộ dữ liệu nhạy cảm.
  • CVE-2020-11698: cho phép chèn lệnh SNMP vào tệp cấu hình.
  • CVE-2019-12921: cho phép chèn lệnh trong ngôn ngữ Magick Vector Graphics (MVG).
  • CVE-2022-36069: tránh được chèn lệnh OS khi tạo lệnh Git nhưng vẫn cho phép chèn các đối số tùy chọn khi đầu vào bắt đầu bằng dấu gạch ngang, thuộc CWE-88, và có thể dẫn đến thực thi mã.
  • CVE-1999-0067: ví dụ kinh điển về chèn lệnh OS, trong đó chương trình CGI không vô hiệu hóa siêu ký tự | khi gọi chương trình danh bạ điện thoại.
  • CVE-2020-9054: chuỗi điểm yếu bắt đầu bằng kiểm tra đầu vào không phù hợp trong tham số tên người dùng, dẫn đến chèn lệnh OS; trường hợp này được khai thác ngoài thực tế theo CISA KEV.
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.