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

CWE-77 là gì?

Sản phẩm xây dựng một phần hoặc toàn bộ lệnh từ dữ liệu chịu ảnh hưởng của nguồn bên ngoài, nhưng không vô hiệu hóa hoặc vô hiệu hóa không đúng các phần tử đặc biệt có thể thay đổi lệnh dự kiến trước khi lệnh được gửi đến thành phần xử lý phía sau.

Thống kê dữ liệu

THỨ HẠNG OWASP TOP 10:20255 — A05:2025 — Injection
TỔNG SỐ CVE LIÊN QUAN (365 NGÀY)515
MỨC TRỪU TƯỢNGLớp
KHẢ NĂNG KHAI THÁCCao

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

515 lỗ hổngTăng 210,2% so với cùng kỳ

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

2 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

Điểm yếu này xảy ra khi dữ liệu không đáng tin cậy được đưa vào chuỗi lệnh mà ứng dụng thực thi hoặc chuyển cho một trình thông dịch lệnh khác. Dấu phân cách hoặc cú pháp đặc biệt do kẻ tấn công chèn vào có thể kết thúc lệnh dự kiến và đưa thêm một lệnh hoặc thao tác mới. Vấn đề không chỉ giới hạn ở shell của hệ điều hành; các ngôn ngữ tùy biến được giao thức, tiện ích, bộ xử lý ảnh, định dạng cấu hình và sản phẩm khác sử dụng cũng có thể diễn giải cú pháp do kẻ tấn công kiểm soát. Điểm yếu này là một dạng cụ thể trong nhóm chèn vào ngôn ngữ lệnh rộng hơn và thường, nhưng không phải luôn, liên quan đến chèn lệnh hệ điều hành.

Đặc điểm

Điểm yếu không phụ thuộc vào ngôn ngữ hay nền tảng cụ thể và thường phát sinh trong giai đoạn triển khai, khi dữ liệu từ nguồn không đáng tin cậy trở thành một phần của lệnh do ứng dụng thực thi. Mô hình thường gặp là luồng dữ liệu từ nguồn đến điểm đích, trong đó dữ liệu chịu ảnh hưởng bên ngoài đến trình thông dịch lệnh hoặc thành phần khác có khả năng phân tích cú pháp lệnh. Cú pháp liên quan có thể là ký tự đặc biệt của shell, cú pháp tập lệnh, tham số tùy chọn, lệnh cấu hình hoặc cấu trúc của ngôn ngữ lệnh riêng của sản phẩm. Hồ sơ chính thức liệt kê AI/ML là một công nghệ áp dụng, nhưng không xác định mức độ phổ biến.

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

Chèn lệnh thành công có thể cho phép kẻ tấn công thực thi mã hoặc lệnh trái phép, từ đó đạt được khả năng hoặc đặc quyền mà thiết kế ban đầu không cho phép. 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 mà thành phần phía sau chấp nhận và đặc quyền của tiến trình 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 lời gọi thư viện thay cho tiến trình bên ngoài khi các lời gọi đó cung cấp được chức năng cần thiết. Triển khai: Khi có thể, giữ các lệnh gọi ra bên ngoài ở dạng được tạo tĩnh. Coi mọi dữ liệu đầu vào là độc hại và áp dụng kiểm tra theo allowlist, tức chỉ chấp nhận dữ liệu đã biết là hợp lệ, bao quát độ dài, kiểu dữ liệu, phạm vi giá trị, trường bị thiếu hoặc dư, cú pháp, tính nhất quán và quy tắc nghiệp vụ. Không chỉ dựa vào denylist hoặc việc tìm kiếm các mẫu độc hại đã biết; denylist vẫn có thể hỗ trợ phát hiện nghi vấn tấn công hoặc loại bỏ dữ liệu rõ ràng sai định dạng. Thời gian chạy và cấu hình: Thực thi allowlist các lệnh được phép tại thời gian chạy và 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à Kiểm thử bảo mật ứng dụng tĩnh (SAST), có thể phát hiện một số trường hợp mà không cần thực thi chương trình. Phương pháp này thường lập mô hình luồng dữ liệu và luồng điều khiển, sau đó tìm các đường đi từ nguồn đầu vào đến điểm đích, 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. Hồ sơ đánh giá phương pháp này có hiệu quả cao, nhưng phạm vi bao phủ bị giới hạn ở các điểm yếu có thể nhận diện từ mã nguồn hoặc biểu diễn đã biên dịch được phân tích và từ các mẫu luồng nguồn đến điểm đích đã được mô hình hóa.

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 cung cấp các ví dụ tiêu biểu sau, không phải danh sách đầy đủ:

  • CVE-2022-1509, CVE-2021-41282 và CVE-2019-13398: chèn cú pháp tập lệnh sed.
  • CVE-2024-5184: chèn trực tiếp lời nhắc trong dịch vụ API sử dụng mô hình AI tạo sinh lớn, cho phép làm lộ lời nhắc hệ thống được mã hóa cứng hoặc thực thi các lời nhắc khác.
  • CVE-2020-11698: chèn lệnh SNMP vào tệp cấu hình của sản phẩm chống thư rác.
  • CVE-2019-12921: chèn lệnh trong ngôn ngữ Magick Vector Graphics (MVG) được chương trình xử lý ảnh sử dụng.
  • CVE-2022-36069: chèn tham số tùy chọn bắt đầu bằng dấu gạch ngang trong công cụ quản lý phụ thuộc Python, có khả năng dẫn đến thực thi mã, dù công cụ tránh được chèn lệnh hệ điều hành khi tạo lệnh Git.
  • CVE-1999-0067: không vô hiệu hóa ký tự đặc biệt | khi chương trình CGI gọi chương trình danh bạ điện thoại.
  • CVE-2020-9054: kiểm tra không phù hợp tham số tên người dùng dẫn đến chèn lệnh hệ điều hành; hồ sơ ghi nhận điểm yếu này đã bị khai thác ngoài thực tế.
Nguồn (5)

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.

Khám phá CyStack VulnScan