CWE-22 là gì?
Sản phẩm sử dụng dữ liệu đầu vào bên ngoài để tạo tên đường dẫn vốn phải nằm dưới một thư mục cha bị hạn chế, nhưng không vô hiệu hóa đúng các phần tử đặc biệt khiến đường dẫn có thể được phân giải ra ngoài thư mục đó.
Sản phẩm sử dụng dữ liệu đầu vào bên ngoài để tạo tên đường dẫn vốn phải nằm dưới một thư mục cha bị hạn chế, nhưng không vô hiệu hóa đúng các phần tử đặc biệt khiến đường dẫn có thể được phân giải ra ngoài thư mục đó.
Path traversal xảy ra khi quá trình xử lý tên đường dẫn cho phép đường dẫn do kẻ tấn công kiểm soát vượt ra khỏi ranh giới thư mục dự kiến. Dạng tương đối thường sử dụng .. cùng dấu phân cách /, còn dạng tuyệt đối cung cấp toàn bộ tên đường dẫn như /usr/local/bin; bản ghi cũng bao quát việc xử lý đường dẫn phụ thuộc nền tảng. Vì vậy, thao tác có thể tác động đến các tệp hoặc thư mục ở nơi khác trên hệ thống thay vì chỉ trong vị trí bị hạn chế.
Đây là một điểm yếu cơ sở, đơn giản, thường phát sinh trong giai đoạn triển khai khi dữ liệu bên ngoài được dùng trong thao tác với tệp hoặc thư mục mà thiếu kiểm tra, giải mã, chuẩn hóa tên đường dẫn hoặc thực thi ranh giới phù hợp. Điểm yếu có thể xuất hiện qua đường dẫn tương đối hoặc tuyệt đối, giải nén lưu trữ, siêu dữ liệu tải lên, lệnh quản lý tệp, tệp được đưa vào và các giao diện tương tự. Bản ghi ưu tiên thuật ngữ path traversal hơn directory traversal, đồng thời vẫn liệt kê cả hai thuật ngữ và cách gọi path transversal.
Hậu quả tiềm tàng bao gồm tính bí mật, tính toàn vẹn và tính sẵn sàng. Kẻ tấn công có thể đọc các tệp ngoài dự kiến, tạo hoặc ghi đè chương trình, thư viện, dữ liệu quan trọng hoặc tệp liên quan đến cơ chế bảo mật, từ đó có khả năng vượt qua xác thực hoặc thực thi mã hay lệnh trái phép. Việc ghi đè, xóa hoặc làm hỏng các tệp quan trọng cũng có thể khiến sản phẩm bị dừng, khởi động lại, không hoạt động hoặc khóa người dùng.
| Tác động | Phạm vi | Diễn giải |
|---|---|---|
| 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 | The attacker may be able to create or overwrite critical files that are used to execute code, such as programs or libraries. |
| Thay đổi tệp hoặc thư mục | Tính toàn vẹn | The attacker may be able to overwrite or create critical files, such as programs, libraries, or important data. If the targeted file is used for a security mechanism, then the attacker may be able to bypass that mechanism. For example, appending a new account at the end of a password file may allow an attacker to bypass authentication. |
| Đọc tệp hoặc thư mục | Tính bí mật | The attacker may be able read the contents of unexpected files and expose sensitive data. If the targeted file is used for a security mechanism, then the attacker may be able to bypass that mechanism. For example, by reading a password file, the attacker could conduct brute force password guessing attacks in order to break into an account on the system. |
| Từ chối dịch vụ: sập, thoát hoặc khởi động lại | Tính sẵn sàng | The attacker may be able to overwrite, delete, or corrupt unexpected critical files such as programs, libraries, or important data. This may prevent the product from working at all and in the case of protection mechanisms such as authentication, it has the potential to lock out product users. |
Áp dụng các biện pháp nhiều lớp theo đúng nội dung bản ghi chính thức:
., loại bỏ dấu phân cách thư mục và giới hạn phần mở rộng. Không chỉ dựa vào denylist hoặc xóa ký tự nguy hiểm, vì dấu phân cách khác và các cách vượt qua khác vẫn có thể tồn tại.realpath trong C hoặc PHP, getCanonicalPath trong Java, GetFullPath trong ASP.NET hoặc abs_path trong Perl, đồng thời xử lý các chuỗi .. và liên kết tượng trưng.chroot, AppArmor, SELinux hoặc Java java.io.FilePermission có thể hạn chế tệp hay lệnh được truy cập, nhưng hiệu quả có giới hạn và phụ thuộc triển khai cụ thể; chúng có thể chỉ thu hẹp phạm vi tác động và cần tránh các điểm yếu liên quan đến jail.register_globals và không xây dựng cơ chế mô phỏng không an toàn cho tính năng này.Bản ghi chính thức xác định nhiều phương pháp phát hiện bổ trợ cho nhau:
Các kỹ thuật tự động có thể cần tùy chỉnh để phân biệt hành vi chỉ dành cho quản trị viên hoặc người có đặc quyền với điểm yếu có thể khai thác. Không có phương pháp đơn lẻ nào được nêu là bảo đảm bao phủ đầy đủ.
| Phương pháp | Cách làm | Hiệu quả |
|---|---|---|
| Phân tích tĩnh tự động | Automated techniques can find areas where path traversal weaknesses exist. However, tuning or customization may be required to remove or de-prioritize path-traversal problems that are only exploitable by the product's administrator - or other privileged users - and thus potentially valid behavior or, at worst, a bug instead of a vulnerability. | Cao |
| Phân tích tĩnh thủ công | Manual white box techniques may be able to provide sufficient code coverage and reduction of false positives if all file access 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 ``` Cost effective for partial coverage: ``` Binary Weakness Analysis - including disassembler + source code weakness analysis | Cao |
| Phân tích tĩnh tệp nhị phân hoặc bytecode thủ công | According to SOAR [REF-1479], the following detection techniques may be useful: ``` Cost effective for partial coverage: ``` Binary / Bytecode disassembler - then use manual analysis for vulnerabilities & anomalies | SOAR một phần |
| 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: ``` Highly cost effective: ``` Web Application Scanner Web Services Scanner Database Scanners | Cao |
| 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: ``` Highly cost effective: ``` Fuzz Tester Framework-based Fuzzer | Cao |
| 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 |
Bản ghi chính thức liệt kê các ví dụ tiêu biểu, không phải danh sách đầy đủ:
CVE-2024-37032: Công cụ quản lý LLM cho phép traversal tương đối do không kiểm tra digest từ registry mô hình không đáng tin cậy.CVE-2024-4315: API tạo văn bản bằng LLM bỏ sót dấu phân cách Windows \ trong denylist, cho phép xóa tệp tùy ý trên Windows.CVE-2024-0520: Sản phẩm quản lý tập dữ liệu AI cho phép traversal tương đối và tuyệt đối qua Content-Disposition để ghi đè tệp.CVE-2022-45918: Trình gỡ lỗi của công cụ quản lý học tập dùng đường dẫn kiểm tra không đầy đủ để tìm log phiên qua chuỗi ../.CVE-2019-20916: Trình quản lý gói Python cho phép đọc tệp tùy ý qua traversal trong tên tệp Content-Disposition.CVE-2022-31503: Việc dùng os.path.join không an toàn trong Python cho phép đường dẫn tuyệt đối từ đầu vào thay thế tên đường dẫn dự kiến.CVE-2022-24877: Operator Kubernetes viết bằng Go cho phép truy cập tệp trong pod điều khiển qua ../ trong YAML.CVE-2021-21972: Tải lên lưu trữ không yêu cầu xác thực kết hợp với traversal .. để truy cập tệp ngoài dự kiến; bản ghi cho biết lỗi này đã bị khai thác ngoài thực tế.CVE-2020-4053 và CVE-2019-10743: Xử lý gói hoặc lưu trữ trong Go cho phép sao chép hoặc giải nén tệp từ plugin hay archive ZIP độc hại ra ngoài thư mục dự kiến, thường gọi là Zip Slip.CVE-2020-3452: Kiểm tra đầu vào không đúng trong sản phẩm bảo mật dẫn đến directory traversal; bản ghi cho biết lỗi này đã bị khai thác ngoài thực tế.CVE-2010-0467: Mô-đun bản tin cho phép đọc tệp tùy ý qua ../.CVE-2006-7079: Lớp tương thích PHP dùng extract cho khả năng tương thích register_globals, từ đó cho phép traversal.CVE-2009-4194, CVE-2009-4053 và CVE-2009-0244: Các dịch vụ liên quan đến FTP cho phép xóa tệp tùy ý, tạo thư mục, liệt kê thư mục hoặc đọc tệp qua chuỗi ...CVE-2009-4013 và CVE-2010-0012: Xử lý gói hoặc torrent cho phép ghi đè tệp tùy ý qua .. hoặc ../.CVE-2010-0013: Chương trình trò chuyện cho phép ghi đè tệp qua yêu cầu smiley tùy chỉnh.CVE-2009-4449: Bulletin board cho phép kẻ tấn công xác định sự tồn tại của tệp.CVE-2009-4581: Chương trình PHP cho phép thực thi mã tùy ý khi tên tệp chứa .. được truyền vào include.CVE-2008-5748: Việc kiểm soát từ bên ngoài các giá trị ngôn ngữ và giao diện đã cho phép traversal.CVE-2009-1936: Kiểm tra chuyển hướng của tệp thư viện vẫn cho phép thực thi khi tệp bị yêu cầu trực tiếp, dẫn đến remote file inclusion và traversal.Dưới đây là các lỗ hổng tiêu biểu liên quan đến CWE-22, 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