Tóm tắt nhanh
- NLTK có lỗi đọc dữ liệu qua symlink trong YCOECorpusReader.
- NLTK 3.10.0–3.10.3 bị ảnh hưởng trong điều kiện xử lý corpus YCOE cụ thể.
- Dữ liệu đọc được vẫn nằm trong NLTK data sandbox được cho phép.
- Ưu tiên nâng cấp gói pip:nltk lên 3.10.4.
NLTK 3.10.0–3.10.3 có lỗi đọc dữ liệu qua symlink, hãy nâng cấp lên 3.10.4
NLTK 3.10.0–3.10.3 mắc CVE-2026-126304: YCOECorpusReader có thể đọc dữ liệu ngoài corpus root nhưng vẫn trong NLTK data sandbox khi xử lý corpus YCOE có symlink và nội dung do bên khác kiểm soát. Nâng cấp lên 3.10.4.
Nội dung bài viết
GitHub Advisories công bố advisory GHSA-qg35-44qx-7vrr về CVE-2026-126304 trong NLTK, thư viện Python xử lý ngôn ngữ tự nhiên. Lỗi liên quan tới YCOECorpusReader và có thể khiến ứng dụng đọc dữ liệu ngoài corpus root trong một điều kiện cấu hình cụ thể.
Tổng quan và thông tin kỹ thuật
Nguyên nhân được mô tả là kiểm tra đường dẫn con không ràng buộc đường dẫn đó với corpus root. Tác động là đọc dữ liệu ngoài corpus root nhưng vẫn trong NLTK data sandbox được cho phép; đây là tác động chỉ đọc.
| Thông tin | Chi tiết |
|---|---|
| Sản phẩm | NLTK, thư viện Python xử lý ngôn ngữ tự nhiên |
| Mã định danh | CVE-2026-126304; GHSA-qg35-44qx-7vrr |
| CWE | CWE-59 (Improper Link Resolution Before File Access) |
| CVSS | 7.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) |
| Nguồn | GitHub Advisories |
Phạm vi ảnh hưởng
| Sản phẩm | Phiên bản ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| pip:nltk | >= 3.10.0, <= 3.10.3 | 3.10.4 |
Điều kiện được nêu là ứng dụng tải corpus YCOE có nội dung do bên khác kiểm soát trong NLTK data root được phép, với pathsec.ENFORCE=True. Symlink trỏ ra ngoài mọi NLTK data root được phép bị từ chối; thư mục psd hoặc pos thật, không phải symlink, không tái hiện lỗi.
Cơ chế và tác động
Các thư mục psd hoặc pos có thể là symlink trỏ tới vị trí khác bên trong NLTK data sandbox. YCOECorpusReader tạo sub-reader từ đường dẫn được kiểm tra theo dạng từ vựng, trong khi kiểm tra của CorpusReader.__init__ không ràng buộc đường dẫn con với corpus root.
Do đó, parsed_sents(), tagged_words() và các phương thức liên quan có thể đọc dữ liệu ngoài corpus root nhưng vẫn nằm trong sandbox được cho phép. Phạm vi rò rỉ bị giới hạn trong sandbox; không thể đọc tùy ý các tệp ngoài mọi root được phép. Tác động được mô tả là chỉ đọc, không ảnh hưởng tính toàn vẹn hoặc tính sẵn sàng.
Kiểm tra hệ thống
Kiểm tra phiên bản NLTK trong môi trường Python bằng lệnh:
python -c "import nltk; print(nltk.__version__)"Hoặc xem thông tin gói đã cài bằng:
pip show nltk
Phiên bản từ 3.10.0 đến 3.10.3 thuộc diện lỗi; 3.10.4 là bản đã vá.
Khắc phục và giảm thiểu
Ưu tiên nâng cấp gói
pip:nltklên phiên bản 3.10.4. Đặc biệt lưu ý nếu ứng dụng tải corpus YCOE được chia sẻ, tải xuống hoặc có nội dung do bên khác kiểm soát trong NLTK data root được phép.