Các nhà nghiên cứu an ninh mạng đã phát hiện hai gói độc hại trong kho lưu trữ Python Package Index (PyPI) giả mạo làm công cụ kiểm tra chính tả nhưng chứa chức năng phát tán một Remote Access Trojan (RAT).
Các gói này, có tên là spellcheckerpy và spellcheckpy, hiện không còn khả dụng để tải xuống, nhưng trước đó chúng đã được tải xuống tổng cộng hơn 1.000 lần.
"Ẩn bên trong tệp từ điển tiếng Basque là một payload được mã hóa Base64 dùng để tải xuống một Python RAT đầy đủ tính năng," nhà nghiên cứu Charlie Eriksen của Aikido cho biết. "Kẻ tấn công đã phát hành ba phiên bản 'ngủ đông' đầu tiên, có payload nhưng không có trigger, sau đó kích hoạt bằng spellcheckpy v1.2.0, thêm một trigger thực thi bị làm rối (obfuscated execution trigger) sẽ hoạt động ngay ngay khi bạn import SpellChecker."
Cơ Chế Hoạt Động Của Mã Độc
Không giống như các gói khác thường che giấu chức năng độc hại trong các script "__init__.py", kẻ tấn công đứng sau chiến dịch này đã thêm payload vào một tệp có tên "resources/eu.json.gz", chứa tần suất từ vựng tiếng Basque từ gói pyspellchecker hợp pháp.
Mặc dù hàm này có vẻ đơn giản và vô hại, nhưng hành vi độc hại được kích hoạt khi tệp lưu trữ được giải nén bằng hàm test_file() với các tham số: test_file("eu", "utf-8", "spellchecker"), khiến nó truy xuất một downloader được mã hóa Base64 ẩn trong từ điển dưới một khóa có tên "spellchecker".
Điều đáng chú ý là ba phiên bản đầu tiên của gói chỉ lấy và giải mã payload, nhưng không bao giờ thực thi nó. Tuy nhiên, điều đó đã thay đổi với phiên bản spellcheckpy 1.2.0, được phát hành vào ngày 21 tháng 1 năm 2026, khi nó có khả năng chạy payload.
Giai đoạn đầu tiên là một downloader được thiết kế để truy xuất một Python-based RAT từ một tên miền bên ngoài ("updatenet[.]work"). Nó có khả năng lấy dấu vân tay (fingerprinting) máy chủ bị xâm nhập, phân tích các lệnh đến và thực thi chúng. Tên miền này, được đăng ký vào cuối tháng 10 năm 2025, có liên quan đến 172.86.73[.]139, một địa chỉ IP do RouterHosting LLC (hay còn gọi là Cloudzy) quản lý, một nhà cung cấp dịch vụ hosting có tiền sử cung cấp dịch vụ cho các nhóm được nhà nước hậu thuẫn (nation-state groups).
Các Chiến Dịch Tấn Công Chuỗi Cung Ứng Tương Tự và Slopsquatting
Đây không phải là lần đầu tiên các công cụ kiểm tra chính tả Python giả mạo được phát hiện trong PyPI. Vào tháng 11 năm 2025, HelixGuard cho biết họ đã phát hiện một gói độc hại có tên "spellcheckers" có khả năng truy xuất và thực thi một payload RAT. Người ta nghi ngờ rằng hai nhóm tấn công này là tác phẩm của cùng một threat actor.
Sự việc này trùng hợp với việc phát hiện một số gói npm độc hại nhằm tạo điều kiện cho việc đánh cắp dữ liệu và nhắm mục tiêu vào các ví cryptocurrency:
- flockiali (1.2.3-1.2.6), opresc (1.0.0), prndn (1.0.0), oprnm (1.0.0), và operni, chứa một tệp JavaScript duy nhất mà khi được tải, sẽ hiển thị một màn hình đăng nhập giả mạo thương hiệu Microsoft như một phần của chiến dịch spear-phishing có mục tiêu nhằm vào nhân viên tại các công ty công nghiệp và năng lượng cụ thể ở Pháp, Đức, Tây Ban Nha, U.A.E và Hoa Kỳ với các liên kết độc hại
- ansi-universal-ui (1.3.5, 1.3.6, 1.3.7, 1.4.0, 1.4.1), giả mạo là một thư viện thành phần UI nhưng triển khai một stealer dựa trên Python có tên G_Wagon, chuyên đánh cắp thông tin đăng nhập trình duyệt web, ví cryptocurrency, thông tin đăng nhập đám mây và token Discord tới một Appwrite storage bucket
Việc tiết lộ này cũng diễn ra khi Aikido nhấn mạnh mối đe dọa liên quan đến slopsquatting, trong đó các agent được hỗ trợ bởi trí tuệ nhân tạo (AI) có thể "ảo giác" ra các gói không tồn tại mà sau đó có thể bị một threat actor chiếm đoạt để đẩy mã độc tới người dùng hạ nguồn.
Trong một trường hợp được công ty an ninh chuỗi cung ứng này nêu bật, một gói npm hư cấu có tên "react-codeshift" đã được 237 kho lưu trữ GitHub tham chiếu kể từ khi nó được tạo ra bởi một large language model vào giữa tháng 10 năm 2025, với một số kho thậm chí còn hướng dẫn các AI agent cài đặt nó.
"Làm thế nào nó lan truyền đến 237 kho lưu trữ? Tệp kỹ năng Agent. Sao chép, dán, phân nhánh, dịch sang tiếng Nhật, không bao giờ được xác minh," Eriksen cho biết. "Kỹ năng là mã mới. Chúng không giống mã. Chúng là Markdown và YAML và các hướng dẫn thân thiện. Nhưng chúng có thể thực thi được. Các AI agent làm theo chúng mà không hỏi, 'Gói này có thực sự tồn tại không?'"