AI đôi khi bịa tên thư viện, và kẻ xấu có thể đăng ký đúng tên đó. Vì sao điều này nguy hiểm, và cách tập cho agent không cài bừa.
Chưa ai hiểu hết vì sao AI bịa tên gói. Các hình ảnh ở đây chỉ để dễ nhớ, thực tế phức tạp hơn.
Bạn hỏi ốp lưng. Cô đáp: “Có món Zorbo Pro.” Không có món đó, nhưng tên nghe rất đúng.
Hắn mở cửa hàng “Zorbo Pro” bên cạnh và bán hàng độc hại.
Khách làm theo gợi ý và bước vào cửa hàng đó. Họ không gõ nhầm gì.
Code người khác viết sẵn để bạn dùng, như mua linh kiện thay vì tự chế.
Cửa hàng chung của các gói. Ai cũng mở được gian hàng với tên còn trống.
Nói tên thư viện không có thật bằng giọng như có thật.
Đăng ký trước đúng cái tên AI hay bịa ra, rồi chờ người cài.
Gói tự chạy lệnh ngay khi cài, trước khi bạn đọc code của nó.
Danh sách chính xác từng gói và phiên bản đã dùng.
Chạy lại 500 câu hỏi từng ra tên giả, mỗi câu 10 lần. Tỷ lệ tính trên số tên giả. Nguồn: nghiên cứu USENIX Security 2025.
Tên giả không hoàn toàn ngẫu nhiên. Kẻ xấu có thể hỏi nhiều lần để biết tên nào hay xuất hiện.
Chỉ 13,4% tên giả chỉ cách một tên thật một hai chữ cái. Đây không chủ yếu là lỗi gõ sai.
Minh họa: 10 dev, 5 lần mỗi ngày, 20 ngày. Mốc 5,2% và 43% lấy từ nghiên cứu.
1.000 lời gợi ý có khoảng 52 tên giả, cỡ 22 tên thuộc loại lặp lại, đoán trước được.
Kiểm mỗi gói 2 phút: 104 phút một tháng cho cả nhóm, cỡ 10 phút mỗi người.
lượt tải trong khoảng 3 tháng (các báo ghi từ 15.000 đến 35.000)
AI cứ gợi ý cài gói huggingface-cli trên PyPI. Gói không có thật. Nhà nghiên cứu đăng ký một gói rỗng để xem có ai cài không.
Lượt tải không phân biệt được người, máy quét và bot, nên không chứng minh ai bị hại.
gói npm trong sâu npm tháng 5/2026 (cùng 2 gói PyPI, 373 phiên bản), theo ghi chú CSA
Đây là gói thật bị chiếm quyền, không phải tên do AI bịa. Provenance cũng không phải bảo chứng tuyệt đối.
Ghi chú thứ cấp, thuật lại nguồn khác. Mở bản gốc trước khi trích dẫn.
Tỷ lệ tên gói không tồn tại trong số tên gói mô hình gợi ý, trung bình. Số 5,2% là mức tối thiểu (ít nhất).
16 mô hình, Python và JavaScript, 576.000 mẫu code, 205.474 tên gói giả khác nhau.
Giới hạn: thí nghiệm với mô hình thời 2024. Công cụ mới biết tra mạng có thể cho số khác.
Bắt agent dừng ở lệnh cài và hỏi. Tra tên: tạo tuần trước, 3 lượt tải, không có kho mã nguồn. Từ chối.
Nếu chạy trong sandbox, thiệt hại cũng bị giới hạn.
Dùng lockfile và npm ci.
Ngày tạo, lượt tải, kho mã, người duy trì.
Cài với ignore-scripts.
Hoặc kho gương nội bộ.
Biết nguồn gốc, chưa phải bảo đảm sạch.
Không tự duyệt lệnh cài của agent.
Sandbox hoặc devcontainer, không có khóa thật.
Mỗi PR: có gói mới nào không?
Lần lượt: cài đúng lockfile, xem gói trước khi cài, kiểm tra chữ ký, tìm gói mới sau khi agent sửa.
Cái tên AI bịa ra vô hại cho đến khi có người đăng ký nó và có máy tự cài. Phần lớn rủi ro nằm ở chỗ không ai nhìn.