NLTK bị vượt sandbox pathsec trong các API model-artifact

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-81726 là gì?

Lỗ hổng CVE-2026-81726 là lỗ hổng External Control of File Name or Path ảnh hưởng tới nltk (phiên bản bị ảnh hưởng: ≤ 3.10.3). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.3. 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

NLTK cho đến và bao gồm phiên bản 3.10.3 chứa lỗ hổng path traversal trong các API model-artifact, qua đó vượt qua cơ chế thực thi pathsec bằng cách sử dụng các thao tác tệp thô trên các đường dẫn do bên gọi kiểm soát. Kẻ tấn công có thể đọc hoặc ghi các tệp nằm ngoài các thư mục gốc sandbox được phép thông qua các API TransitionParser, AveragedPerceptron, PerceptronTagger và tham số maxent khi pathsec được bật.

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

  • Gói nltk: bản ghi chuẩn hóa xác định các phiên bản từ 0 đến và bao gồm 3.10.3 là bị ảnh hưởng theo semver; trạng thái mặc định được ghi là unaffected ngoài phạm vi bị ảnh hưởng này.
  • Advisory của vendor đã tái hiện lỗi trên 3.9.4 và source v3.10.0-rc2. Đây là các phiên bản được tái hiện, không phải ranh giới đầy đủ của trạng thái an toàn.
  • GitHub advisory hiện liệt kê không có phiên bản đã vá. Bản ghi chuẩn hóa đánh dấu patch_available là true, nhưng không cung cấp bản phát hành sửa lỗi cụ thể; trạng thái của các nhánh mới hơn hoặc song song chưa được xác minh.

Chi tiết kỹ thuật

Các helper import và export model của NLTK nhận đường dẫn do caller kiểm soát nhưng sử dụng thao tác tệp thô thay vì các helper nhận biết pathsec. Đây là lỗi CWE-73, trong đó dữ liệu bên ngoài kiểm soát tên hoặc đường dẫn được dùng trong các thao tác trên filesystem mà không được giới hạn đúng vào thư mục sandbox. Các luồng bị ảnh hưởng gồm TransitionParser.train, TransitionParser.parse, AveragedPerceptron.save, AveragedPerceptron.load, PerceptronTagger.save_to_json và save_maxent_params. Khi cơ chế thực thi pathsec được bật và workflow không tin cậy có thể chọn đường dẫn import hoặc export model, kẻ tấn công có thể hướng các API này tới vị trí bên ngoài các thư mục gốc được phép; kiểm thử được công bố cho thấy thao tác đọc và ghi vẫn thành công trong khi các helper được bảo vệ từ chối cùng đường dẫn. Thao tác filesystem diễn ra với quyền của tiến trình NLTK. Bằng chứng hiện có chưa xác định mọi giao diện triển khai có thể làm lộ các API này, cũng chưa làm rõ có hành vi chuẩn hóa đường dẫn hoặc xử lý symlink bổ sung nào trong từng triển khai hay không.

Khả năng khai thác

  • Khả năng tiếp cận: Bản ghi phân loại cuộc tấn công là có thể thực hiện qua mạng. Thao tác tệp vẫn diễn ra trong tiến trình NLTK trên máy chủ, vì vậy việc kích hoạt từ xa phụ thuộc vào việc ứng dụng có phơi bày chức năng chọn đường dẫn model hoặc workflow tương đương hay không.
  • Điều kiện tiên quyết: Ứng dụng phải bật pathsec, đồng thời cho phép workflow không tin cậy chọn đường dẫn import hoặc export model.
  • Xác thực và tương tác: Các metric được cung cấp cho biết không cần quyền truy cập trước và không cần người dùng khác tương tác riêng để hoàn tất cuộc tấn công.
  • Độ phức tạp: Bản ghi mô tả độ phức tạp tấn công là cao và xác định một điều kiện triển khai cần có.
  • Trạng thái khai thác: Advisory công khai có tài liệu proof of concept có thể tái hiện hành vi, và bản ghi chuẩn hóa đánh dấu public exploit là có sẵn. Entry này không suy diễn về một chiến dịch hoặc nạn nhân cụ thể.

Tác động kỹ thuật

Tác động kỹ thuật chính là vượt sandbox để đọc và ghi tệp. Việc đọc có thể làm lộ dữ liệu mà tiến trình NLTK truy cập được; việc ghi có thể sửa hoặc làm hỏng tệp và có thể gây gián đoạn dịch vụ nếu nhắm tới tệp quan trọng. Các metric được cung cấp cho biết không cần quyền trước hoặc tương tác riêng của người dùng, nhưng cuộc tấn công vẫn phụ thuộc vào việc pathsec được bật và workflow cho phép kiểm soát đường dẫn model. Quyền của hệ điều hành đối với tiến trình vẫn giới hạn các tệp có thể bị truy cập. Bằng chứng hiện có không xác lập tác động lan sang các hệ thống khác.

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

Khai thác thành công có thể làm lộ các tệp mà tiến trình NLTK có quyền đọc nhưng nằm ngoài sandbox được phê duyệt. Kẻ tấn công cũng có thể sửa hoặc làm hỏng các tệp mà tiến trình có quyền ghi, từ đó ảnh hưởng tới model artifact, dữ liệu hoặc hoạt động dịch vụ tùy theo đường dẫn được chọn. Mức độ tác động thực tế còn phụ thuộc vào quyền filesystem của tiến trình và việc ứng dụng cho phép người không tin cậy kiểm soát đường dẫn đến đâu. Bất kỳ hậu quả rộng hơn nào cũng phụ thuộc vào các tệp có thể truy cập và chưa được bằng chứng hiện có xác lập.

Cách khắc phục

  1. Áp dụng bản sửa lỗi chính thức của NLTK khi có bản phát hành ghi rõ đã xử lý lỗi này. Bản ghi chuẩn hóa đánh dấu đã có bản vá, nhưng advisory được kiểm tra không liệt kê phiên bản đã vá; không nên mặc định một bản phát hành mới hơn nhưng chưa được xác minh là đã an toàn.
  2. Với maintainer hoặc downstream fork, chuyển toàn bộ thao tác truy cập đường dẫn model qua nltk.pathsec.open() hoặc các helper đã nhận biết pathsec, đồng thời thêm regression test ghép từng API bị ảnh hưởng với một negative control được bảo vệ trên cùng đường dẫn ngoài root.
  3. Cho tới khi xác nhận được bản phát hành sửa lỗi, ngăn workflow không tin cậy tự chọn đường dẫn import hoặc export model, hoặc cô lập tiến trình NLTK để nó không có quyền filesystem đối với các tệp nhạy cảm. Không nên chỉ dựa vào pathsec để bảo vệ các API bị ảnh hưởng.

Cách phát hiện

  • Kiểm kê các bản cài đặt NLTK và đối chiếu phiên bản với các ranh giới bị ảnh hưởng được nêu trong phần affected_summary.
  • Xác định những deployment bật pathsec và cho phép workflow không tin cậy cung cấp đường dẫn import hoặc export model.
  • Rà soát mã nguồn hoặc call graph để tìm các API TransitionParser.train, TransitionParser.parse, AveragedPerceptron.save, AveragedPerceptron.load, PerceptronTagger.save_to_json và save_maxent_params, sau đó xác định liệu đối số đường dẫn có chịu ảnh hưởng từ dữ liệu bên ngoài hay không.
  • Trong môi trường cô lập, dùng các tệp kiểm thử không nhạy cảm để xác nhận helper được bảo vệ từ chối đường dẫn ngoài root, đồng thời kiểm tra xem các API model tương ứng có xử lý đường dẫn khác nhau hay không. Không thực hiện kiểm thử trên tệp hệ thống hoặc dữ liệu sản xuất.
  • Rà soát audit log hoặc telemetry filesystem của tiến trình NLTK để tìm việc đọc hoặc ghi ngoài các root được phê duyệt. Đây là biện pháp giám sát phòng ngừa, không phải IOC đã được xác nhận.
  • Các kiểm tra trên xác nhận điều kiện phơi nhiễm, không tự chúng chứng minh rằng hệ thống đã bị khai thác.
Nguồn (16)
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