Tóm tắt nhanh
- NLTK có lỗi DoS CPU bậc hai trong bộ phân tích CCG lexicon.
- NLTK 3.10.3 trở xuống bị ảnh hưởng; đầu vào có thể làm cạn worker và gây mất khả dụng.
- Nâng cấp lên NLTK 3.10.4 và xác minh phiên bản đã cài.
NLTK 3.10.3 trở xuống mắc lỗi DoS CPU, nâng cấp lên 3.10.4
GitHub Advisories cảnh báo NLTK 3.10.3 trở xuống có lỗi DoS CPU trong bộ phân tích CCG lexicon, có thể khiến worker cạn tài nguyên và hệ thống mất khả dụng. Hãy nâng cấp lên NLTK 3.10.4 và xác minh phiên bản đã cài.
Nội dung bài viết
GitHub Advisories thông báo về CVE-2026-126299 trong thư viện Python NLTK. Lỗ hổng nằm trong quá trình phân tích CCG lexicon và được khắc phục ở phiên bản 3.10.4. Xem advisory GHSA-89p3-fcch-88ph.
Tổng quan và thông tin kỹ thuật
NLTK là thư viện Python xử lý ngôn ngữ tự nhiên; bộ phân tích CCG lexicon chuyển văn bản từ vựng thành cấu trúc phục vụ xử lý ngôn ngữ. Lỗi tiêu thụ tài nguyên không được kiểm soát và độ phức tạp thuật toán kém cho phép đầu vào lexicon làm tăng thời gian xử lý CPU.
| Thông tin | Chi tiết |
|---|---|
| Sản phẩm | NLTK |
| CVE / GHSA | CVE-2026-126299 / GHSA-89p3-fcch-88ph |
| CWE | CWE-400 (Uncontrolled Resource Consumption); CWE-407 (Inefficient Algorithmic Complexity) |
| CVSS | 7.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) |
Phạm vi ảnh hưởng
| Sản phẩm | Phiên bản ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| PyPI (pip), gói nltk | 3.10.3 trở xuống | 3.10.4 |
Cơ chế và tác động
Các hàm công khai nltk.ccg.lexicon.fromstring và tên được xuất lại nltk.ccg.chart.fromstring xử lý chuỗi lexicon do bên gọi cung cấp. Trong matchBrackets, phần đuôi bị cắt lại theo từng ký tự trong thân ngoặc rộng; trong augParseCategory, phần đuôi được sao chép theo từng toán tử trong chuỗi dài. Các thao tác này tạo độ phức tạp O(n²).
Kẻ tấn công có thể cung cấp đầu vào qua ứng dụng gọi các hàm này, khiến CPU đơn luồng bị tiêu thụ trong thời gian dài, làm cạn worker và gây mất khả dụng. Không cần xác thực hay tương tác người dùng. MAX_PARSE_DEPTH = 500 chỉ giới hạn độ sâu lồng nhau, không chặn đầu vào phẳng có chiều rộng lớn; timeout regex cũng không bao phủ các vòng lặp Python này.
Kiểm tra hệ thống
Kiểm tra phiên bản NLTK đang được pip quản lý:
pip show nltkPhiên bản 3.10.3 trở xuống thuộc phạm vi ảnh hưởng; 3.10.4 đã được vá.
Khắc phục và giảm thiểu
Nâng cấp gói bằng pip lên
nltk 3.10.4, đặc biệt ưu tiên các ứng dụng phân tích lexicon CCG do người dùng hoặc nguồn không tin cậy kiểm soát.Sau khi nâng cấp, chạy
pip show nltkvà xác nhận phiên bản đã cài là 3.10.4.
Bản sửa được nêu sử dụng con trỏ chỉ mục trên chuỗi gốc hoặc collections.deque để tránh cắt hoặc sao chép phần đuôi lặp lại.