Path traversal trong xử lý config dependency lockfile của pnpm cho phép tạo symlink ngoài thư mục dự kiến

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-59195 là gì?

Lỗ hổng CVE-2026-59195 là lỗ hổng Improper Limitation of a Pathname to a Restricted Directory ảnh hưởng tới pnpm (phiên bản bị ảnh hưởng: < 10.34.4 và >= 11.0.0, < 11.8.0). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.2. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

pnpm là một package manager. Trước 10.34.4 và 11.8.0, pnpm chấp nhận tên package từ phần configDependencies của env lockfile và sử dụng trực tiếp các tên đó khi tạo symlink config dependency bên dưới node_modules/.pnpm-config. Một repository độc hại có thể commit pnpm-lock.yaml được tạo thủ công, trong đó document env-lockfile chứa tên config dependency có dạng traversal. Trong quá trình pnpm install, pnpm cài đặt config dependency và tạo symlink tại một đường dẫn được dẫn xuất từ tên đó. Lỗ hổng này được khắc phục trong 10.34.4 và 11.8.0.

Sản phẩm và phạm vi ảnh hưởng

  • pnpm < 10.34.4: bị ảnh hưởng.
  • pnpm >= 11.0.0, < 11.8.0: bị ảnh hưởng.
  • Advisory của vendor liệt kê các bản đã sửa là >= 10.34.4, < 11.0.0 và >= 11.8.0. Không suy ra trạng thái của một nhánh ngoài các phạm vi này nếu không được các dữ kiện trên xác nhận.

Chi tiết kỹ thuật

Nguyên nhân là lỗi CWE-22: pnpm dùng dữ liệu bên ngoài để tạo pathname nhưng không giới hạn đúng trong thư mục đích. pnpm đọc các key tên package từ phần configDependencies của env lockfile rồi dùng trực tiếp các key này làm thành phần đường dẫn khi tạo symlink bên dưới node_modules/.pnpm-config. Nếu tên package chứa thành phần.., phép nối đường dẫn có thể tạo đích nằm ngoài thư mục dự kiến. Input do attacker kiểm soát là pnpm-lock.yaml được commit trong repository; lỗi được kích hoạt khi chạy pnpm install. Advisory xác nhận hành vi này vẫn xảy ra với --ignore-scripts và trong giai đoạn cài config dependency, trước khi cài dependency thông thường, nên không cần lifecycle script. Phạm vi file có thể bị tác động phụ thuộc vào quyền truy cập đường dẫn và đặc điểm nền tảng; bằng chứng hiện có không xác định mọi đích có thể tiếp cận trong từng môi trường.

Khả năng khai thác

Lỗi có thể bị khai thác từ xa theo mô hình attacker đưa một repository độc hại hoặc đã bị compromise cho nạn nhân và nạn nhân chạy pnpm install. Không cần quyền trước trên hệ thống pnpm, nhưng cần user interaction để cài đặt repository. Điều kiện khai thác có độ phức tạp thấp vì dữ liệu độc hại nằm trong pnpm-lock.yaml. Advisory của vendor công khai một local-only proof of concept chứng minh việc tạo symlink ra ngoài thư mục dự kiến; record cũng đánh dấu public exploit là có. Bằng chứng được cung cấp xác định proof of concept nhưng không nêu một campaign hoặc victim cụ thể.

Tác động kỹ thuật

pnpm có thể tạo symlink nằm ngoài thư mục config dependency dự kiến, tạo ra primitive ghi file trong project directory và trong một số điều kiện có thể ảnh hưởng các đường dẫn bên ngoài project. Hậu quả thực tế phụ thuộc vào quyền của tiến trình pnpm, vị trí workspace và giới hạn filesystem của nền tảng. Tác động chính được chứng minh là lên tính toàn vẹn của file; record không xác lập việc đọc dữ liệu hoặc đánh cắp thông tin. Vì user phải cài repository độc hại, rủi ro tập trung vào developer workstation, build runner và các môi trường tự động xử lý source không tin cậy.

Tác động đến tổ chức

Lỗi cho phép một repository độc hại tác động đến vị trí mà pnpm tạo symlink trong filesystem của môi trường cài đặt.

  • Symlink có thể được tạo trong project directory thay vì chỉ dưới node_modules/.pnpm-config.
  • Với traversal sâu hơn, đường dẫn có thể vươn ra ngoài project directory, tùy quyền truy cập và hành vi của nền tảng.
  • Điều này có thể dẫn đến thay đổi file hoặc làm ảnh hưởng tính toàn vẹn của workspace và công cụ build có thể truy cập các đường dẫn đó.
  • Record không nêu victim, campaign hoặc breach cụ thể.

Cách khắc phục

  1. Nâng cấp pnpm lên 10.34.4 trong nhánh 10.x hoặc lên 11.8.0 trong nhánh 11.x. Advisory xác nhận các phạm vi sửa lỗi là >= 10.34.4, < 11.0.0 và >= 11.8.0.
  2. Trước khi nâng cấp, tránh chạy pnpm install trên repository không tin cậy trong workspace có quyền ghi rộng hoặc chứa dữ liệu nhạy cảm. Đây là biện pháp phòng ngừa tạm thời, không thay thế bản sửa.
  3. Xem xét các pnpm-lock.yaml đã nhận từ nguồn bên ngoài và loại bỏ hoặc cô lập repository có env-lockfile configDependencies chứa tên không hợp lệ, path separator hoặc thành phần traversal.
  4. Sau khi cập nhật, kiểm tra lại các runner và máy developer để bảo đảm chúng thực sự sử dụng bản pnpm đã sửa, thay vì chỉ cập nhật dependency trong một project.
  5. Nếu đã chạy cài đặt trên repository đáng ngờ, kiểm tra các symlink ngoài node_modules/.pnpm-config và các thay đổi file bất thường trước khi tiếp tục sử dụng workspace.

Cách phát hiện

  1. Kiểm kê các phiên bản pnpm đang được dùng trên máy developer, runner và pipeline build, sau đó đối chiếu với các nhánh bị ảnh hưởng trong affected_summary.
  2. Kiểm tra document env-lockfile trong pnpm-lock.yaml, đặc biệt các key của configDependencies, để tìm tên chứa.., thành phần., đường dẫn tuyệt đối, backslash hoặc path separator dành riêng cho nền tảng.
  3. Với các repository không tin cậy đã được cài đặt, kiểm tra symlink mới xuất hiện bên ngoài node_modules/.pnpm-config và xem đích của symlink có bắt nguồn từ tên config dependency trong lockfile hay không.
  4. Rà soát thay đổi file bất thường trong workspace sau khi chạy pnpm install. Đây là biện pháp phát hiện bổ sung, không phải indicator đã được vendor xác nhận.
  5. Advisory hiện không cung cấp log event hoặc IOC cụ thể; việc không thấy log bất thường không chứng minh hệ thống an toàn.
Nguồn (10)
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á các giải pháp khác liên quan