CWE-78 là gì?
Sản phẩm xây dựng lệnh hệ điều hành từ dữ liệu chịu ảnh hưởng bên ngoài nhưng không vô hiệu hóa đúng các phần tử đặc biệt có thể thay đổi lệnh dự kiến trước khi lệnh được thực thi.
Sản phẩm xây dựng lệnh hệ điều hành từ dữ liệu chịu ảnh hưởng bên ngoài nhưng không vô hiệu hóa đúng các phần tử đặc biệt có thể thay đổi lệnh dự kiến trước khi lệnh được thực thi.
Điểm yếu này có thể ảnh hưởng đến các ứng dụng thực thi lệnh hệ điều hành thay mặt người dùng, bao gồm ứng dụng web nơi kẻ tấn công không có quyền truy cập trực tiếp vào hệ điều hành. Nó thường xuất hiện dưới hai dạng: dữ liệu không tin cậy vốn chỉ được dùng làm đối số cho một chương trình cố định nhưng chứa dấu phân cách lệnh hoặc siêu ký tự để chạy thêm chương trình, hoặc dữ liệu không tin cậy quyết định toàn bộ lệnh và chương trình được thực thi, từ đó cho phép chạy lệnh tùy ý. Tác động có thể nghiêm trọng hơn khi tiến trình bị ảnh hưởng có đặc quyền cao hoặc không tuân thủ nguyên tắc đặc quyền tối thiểu, vì lệnh do kẻ tấn công kiểm soát có thể chạy với quyền mà kẻ tấn công không trực tiếp có.
Đây là điểm yếu cơ sở, cấu trúc đơn giản, phát sinh trong giai đoạn triển khai. Điểm cốt lõi là trộn cú pháp điều khiển với dữ liệu chịu ảnh hưởng bên ngoài trong lệnh hệ điều hành, dù dữ liệu chỉ được đưa vào đối số của một chương trình cố định hay quyết định cả chương trình và lệnh cần chạy. Các thuật ngữ liên quan gồm shell injection, shell metacharacters và OS command injection; điểm yếu này phân biệt với nhưng có thể đi kèm argument injection.
Kẻ tấn công có thể thực thi lệnh hệ điều hành trái phép, vô hiệu hóa hoặc làm ứng dụng gặp sự cố, cũng như đọc hay sửa tệp, thư mục và dữ liệu ứng dụng vượt quá quyền dự kiến. Hoạt động độc hại có thể trông như bắt nguồn từ ứng dụng hoặc chủ sở hữu ứng dụng, ảnh hưởng đến tính bí mật, toàn vẹn, sẵn sàng và khả năng chống chối bỏ, đồng thời có thể giúp che giấu hoạt động.
| Tác động | Phạm vi | Diễn giải |
|---|---|---|
| Thực thi mã hoặc lệnh trái phép, Từ chối dịch vụ: sập, thoát hoặc khởi động lại, Đọc tệp hoặc thư mục, Thay đổi tệp hoặc thư mục, Đọc dữ liệu ứng dụng, Thay đổi dữ liệu ứng dụng, Che giấu hoạt động | Tính bí mật, Tính toàn vẹn, Tính sẵn sàng, Chống chối bỏ | Attackers could execute unauthorized operating system commands, which could then be used to disable the product, or read and modify data for which the attacker does not have permissions to access directly. Since the targeted application is directly executing the commands instead of the attacker, any malicious activities may appear to come from the application or the application's owner. |
Kiến trúc và thiết kế: Ưu tiên lời gọi thư viện thay vì tiến trình bên ngoài, đồng thời giữ dữ liệu dùng để tạo lệnh ngoài quyền kiểm soát bên ngoài nếu có thể, và ánh xạ các giá trị đầu vào cố định như mã số sang tên tệp hoặc URL đã biết. Lặp lại các kiểm tra bảo mật phía máy khách ở máy chủ, và dùng thư viện hoặc framework đã được thẩm định để tách dữ liệu khỏi mã. Khi có thể, dùng cơ chế tham số hóa có cấu trúc với từng đối số riêng thay cho một chuỗi lệnh gọi shell, chẳng hạn giao diện nhận mảng đối số thay vì cách gọi kiểu system.
Triển khai: Đặt dấu ngoặc và escape đúng cho đối số; khi khả thi, dùng allowlist cực kỳ nghiêm ngặt, rồi đặt từng đối số trong dấu ngoặc sau bước lọc hoặc escape. Nếu chương trình hỗ trợ, ưu tiên truyền đối số qua tệp đầu vào hoặc đầu vào chuẩn. Áp dụng chiến lược xác thực “chấp nhận giá trị hợp lệ đã biết”, dựa trên kiểu, độ dài, cú pháp, giá trị được phép và quy tắc nghiệp vụ; tuy nhiên, xác thực chỉ là lớp phòng thủ bổ sung, không thay thế encoding, escape và quoting. Giữ thông báo lỗi ở mức tối thiểu cần thiết và ghi chi tiết cần thiết vào nhật ký được bảo vệ phù hợp.
Vận hành và gia cố: Dùng sandbox hoặc jail, allowlist lệnh ở thời gian chạy và quyền thấp nhất cần thiết, đồng thời hiểu rằng các biện pháp này thường chỉ giới hạn tác động chứ không loại bỏ điểm yếu. Cơ chế lan truyền taint tự động có thể ngăn thực thi lệnh với biến bị taint, nhưng phải xác thực đúng để loại bỏ trạng thái taint. Application firewall có thể cung cấp bảo vệ tạm thời hoặc phòng thủ nhiều lớp, nhưng có thể bỏ sót vectơ đầu vào, bị vượt qua hoặc từ chối yêu cầu hợp lệ. Khi phù hợp, không sử dụng PHP register_globals và không tái tạo tính năng này một cách không an toàn. Tránh các điểm yếu liên quan đến thiết kế jail, bao gồm CWE-243.
Có thể kết hợp các phương pháp thủ công và tự động. Rà soát mã nguồn thủ công, kiểm tra điểm tập trung, rà soát kiến trúc hoặc thiết kế và phương pháp hình thức có thể đạt mức bao phủ cao hoặc hiệu quả cao khi đánh giá được toàn bộ đường dẫn thực thi lệnh. Phân tích tĩnh tự động trên mã nguồn, nhị phân hoặc bytecode có thể phát hiện luồng dữ liệu đi vào thao tác thực thi lệnh, nhưng có thể tạo cảnh báo giả khi không nhận diện được bước xác thực, bỏ sót API tùy chỉnh hoặc thư viện bên thứ ba không có mã để phân tích; không thể đạt độ chính xác và bao phủ tuyệt đối.
Kiểm thử động có thể sử dụng fuzzing, kiểm thử độ bền, fault injection, trình quét ứng dụng web, dịch vụ web và cơ sở dữ liệu. Các phương pháp này thường chỉ cung cấp mức bao phủ vừa phải hoặc từng phần và có thể làm chậm hoạt động, nhưng sản phẩm không được trở nên mất ổn định, bị lỗi hoặc tạo kết quả sai trong quá trình kiểm thử.
| Phương pháp | Cách làm | Hiệu quả |
|---|---|---|
| Phân tích tĩnh tự động | This weakness can often be detected using automated static analysis tools. Many modern tools use data flow analysis or constraint-based techniques to minimize the number of false positives. Automated static analysis might not be able to recognize when proper input validation is being performed, leading to false positives - i.e., warnings that do not have any security consequences or require any code changes. Automated static analysis might not be able to detect the usage of custom API functions or third-party libraries that indirectly invoke OS commands, leading to false negatives - especially if the API/library code is not available for analysis.This is not a perfect solution, since 100% accuracy and coverage are not feasible. | — |
| Phân tích động tự động | This weakness can be detected using dynamic tools and techniques that interact with the product using large test suites with many diverse inputs, such as fuzz testing (fuzzing), robustness testing, and fault injection. The product's operation may slow down, but it should not become unstable, crash, or generate incorrect results. | Khá |
| Phân tích tĩnh thủ công | Since this weakness does not typically appear frequently within a single software package, manual white box techniques may be able to provide sufficient code coverage and reduction of false positives if all potentially-vulnerable operations can be assessed within limited time constraints. | Cao |
| Phân tích tĩnh tệp nhị phân hoặc bytecode tự động | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Highly cost effective: ``` Bytecode Weakness Analysis - including disassembler + source code weakness analysis Binary Weakness Analysis - including disassembler + source code weakness analysis | Cao |
| Phân tích động với diễn giải kết quả tự động | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Cost effective for partial coverage: ``` Web Application Scanner Web Services Scanner Database Scanners | SOAR một phần |
| Phân tích động với diễn giải kết quả thủ công | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Cost effective for partial coverage: ``` Fuzz Tester Framework-based Fuzzer | SOAR một phần |
| Phân tích tĩnh mã nguồn thủ công | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Highly cost effective: ``` Manual Source Code Review (not inspections) ``` Cost effective for partial coverage: ``` Focused Manual Spotcheck - Focused manual analysis of source | Cao |
| Phân tích tĩnh mã nguồn tự động | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Highly cost effective: ``` Source code Weakness Analyzer Context-configured Source Code Weakness Analyzer | Cao |
| Rà soát kiến trúc hoặc thiết kế | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Highly cost effective: ``` Formal Methods / Correct-By-Construction ``` Cost effective for partial coverage: ``` Inspection (IEEE 1028 standard) (can apply to requirements, design, source code, etc.) | Cao |
Hồ sơ chính thức liệt kê các trường hợp sau là ví dụ đại diện, không phải danh sách đầy đủ: CVE-2024-53899 liên quan đến chuỗi mẫu không được đặt dấu ngoặc và siêu ký tự shell trong tên thư mục; CVE-2025-44844 liên quan đến chức năng tải tệp của điểm truy cập không dây, sử dụng tên tệp lấy từ header Content-Disposition; CVE-2024-6091 và CVE-2024-44335 minh họa các chuỗi lỗi có liên quan đến denylist không đầy đủ cho đường dẫn hoặc ký tự; CVE-2024-41316 liên quan đến os.execute trong ứng dụng Lua trên thiết bị mạng; còn CVE-2024-52803 liên quan đến việc sử dụng không an toàn Popen trong quá trình huấn luyện LLM. Các ví dụ cũ hơn gồm chèn lệnh trong bộ định tuyến Wi-Fi, chức năng quản lý cấu hình mạng và máy chủ web, xử lý tên tệp FTP và liên kết telnet, tên tệp ZIP, biến môi trường, URL HTTPS, cũng như tệp hoặc tham số chứa siêu ký tự shell, gồm CVE-2020-10987, CVE-2020-9054, CVE-1999-0067, CVE-2002-0061, CVE-2003-0041, CVE-2008-2575, CVE-2002-1898, CVE-2008-4304, CVE-2008-4796, CVE-2007-3572 và CVE-2012-1988. CVE-2001-1246 còn cho thấy chèn lệnh hệ điều hành có thể đồng thời tồn tại với chèn đối số.
Dưới đây là các lỗ hổng tiêu biểu liên quan đến CWE-78, 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