Giải thích cho người mới · 10/2026

Gói không
tồn tại

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.

Ví dụ đời thường Số liệu nghiên cứu Tính thử Thói quen an toàn
npm install csv-tidy-helper-x Tên này có thật không?
Câu hỏi của bài này

Tên gói AI bịa ra có thể thành bẫy

1AI có thể gợi ý một thư viện không có thật.
2Kẻ xấu có thể đăng ký đúng tên đó. Ai cài theo gợi ý sẽ nhận mã độc. Gọi là slopsquatting.
3Rủi ro có thật, nhưng chưa rõ lớn đến đâu.

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.

Hình dung trước

Nhân viên gợi ý một món hàng ma

AI

Cô nhân viên nhiệt tình

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.

Kẻ xấu

Cửa hàng mạo danh

Hắn mở cửa hàng “Zorbo Pro” bên cạnh và bán hàng độc hại.

Người dùng

Không sai gì cả

Khách làm theo gợi ý và bước vào cửa hàng đó. Họ không gõ nhầm gì.

Thư viện là món hàng, kho gói là cửa hàng, lệnh cài là bước vào cửa.
Từ khó, nói dễ

Sáu từ sẽ gặp trong bài

Gói

tên kỹ thuật: package

Code người khác viết sẵn để bạn dùng, như mua linh kiện thay vì tự chế.

Kho gói

tên kỹ thuật: registry (npm, PyPI)

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.

AI nói điều không có thật

tên kỹ thuật: hallucination

Nói tên thư viện không có thật bằng giọng như có thật.

Mở tiệm đúng tên AI bịa

tên kỹ thuật: slopsquatting

Đăng ký trước đúng cái tên AI hay bịa ra, rồi chờ người cài.

Lệnh tự chạy lúc cài

tên kỹ thuật: install script

Gói tự chạy lệnh ngay khi cài, trước khi bạn đọc code của nó.

Hóa đơn phiên bản

tên kỹ thuật: lockfile

Danh sách chính xác từng gói và phiên bản đã dùng.

Cơ chế

Bốn bước từ lời gợi ý đến mã độc

1
Bạn hỏiNhờ AI viết code kèm lệnh cài
2
AI gợi ý tênĐôi khi tên đó không có thật
3
Kẻ xấu đăng kýChiếm tên còn trống, để mã độc vào
4
Lệnh cài chạyCùng lệnh nay thành công, script chạy
Đoạn nguy hiểm là bước 4: không ai nhìn tên gói trước khi lệnh chạy.
Vì sao đoán trước được

Cùng một tên giả có thể lặp lại

Lặp đủ 10 lần43%
Lặp hơn 1 lần58%
Không lặp lại39%

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.

Ví dụ tính được

Tính thử: 1.000 lời gợi ý

devs, per_day, days = 10, 5, 20 suggestions = 10 * 5 * 20 1000 fake = 1000 * 0.052 52 repeating = 52 * 0.43 22.36 checking = 52 * 2 min 104 min

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.

Ca thứ nhất · Lasso Security

Một gói rỗng vẫn có người tải

30.000+

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.

Tên bịa lặp lại đủ nhiều thì có người cài thật.
Ca thứ hai · Aikido Security

Một tên bịa lan ra hơn 200 repo

17/10/2025Một commit thêm 47 skill do AI sinh ra. Có lệnh npx react-codeshift, một gói chưa từng tồn tại.
12/2025Hơn 200 repo nhắc đến lệnh này qua sao chép và fork.
14/1/2026Nhà nghiên cứu đăng ký tên. Có 237 repo trở lên, khoảng 74 lượt tải ngày đầu, không có mã độc.
Lỗi của AI không đứng yên: nó được chép, fork, dịch. Số repo tùy cách đếm, nên hiểu là hơn 200.
Một sự cố dễ nhầm

Không phải vụ nào cũng là slopsquatting

169

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.

Đừng chỉ nhìn cái tên. Việc cần làm là kiểm soát cái gì được cài vào máy bạn.
Số liệu nghiên cứu

Nghiên cứu đo được gì?

Mô hình thương mại5,2%
Mô hình mã nguồn mở21,7%

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.

Trong công việc

Chỗ này dễ hở trong công việc

1Agent tự chạy lệnh cài ở chế độ tự duyệtKhông ai nhìn tên gói trước khi chạy
2Chép lệnh cài của AI vào README hay tệp skillTên giả đi theo bản sao, như react-codeshift
3PR thêm gói mới lẫn trong lockfile dàiKhông ai đọc lockfile
4Máy dev chứa khóa truy cập và biến môi trườngMã chạy lúc cài có thể đọc được chúng
Minh họa, không có thật

Minh họa: một buổi sáng với agent

10:00 · DevGộp các tệp CSV rồi làm sạch cột ngày.
10:03 · AgentCài csv-tidy-helper-x, đang chạy lệnh cài (chế độ tự duyệt).
10:04 · Hậu quảTên đó mới được ai đó đăng ký tuần trước. Script cài đặt đã chạy.
Nên làm gì

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.

Cách làm

Thói quen cài đặt: tám bước

1

Khóa phiên bản

Dùng lockfile và npm ci.

2

Tra gói mới

Ngày tạo, lượt tải, kho mã, người duy trì.

3

Tắt script

Cài với ignore-scripts.

4

Danh sách cho phép

Hoặc kho gương nội bộ.

5

Xem provenance

Biết nguồn gốc, chưa phải bảo đảm sạch.

6

Người duyệt lệnh cài

Không tự duyệt lệnh cài của agent.

7

Cô lập agent

Sandbox hoặc devcontainer, không có khóa thật.

8

Đọc lockfile

Mỗi PR: có gói mới nào không?

Lệnh nên nhớ

Bốn lệnh nên nhớ

# 1 npm ci --ignore-scripts
# 2 npm view some-package time.created maintainers repository.url
# 3 npm audit signatures
# 4 git diff package-lock.json | grep '^+.*"resolved"'

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.

Nhìn cân bằng

Nhìn cân bằng: biết gì, chưa biết gì

Khá chắc
  • Mô hình có bịa tên gói, vài phần trăm đến hơn 20%
  • Tên giả có thể lặp lại
  • Tên bịa có thể bị đăng ký, và có người cài
Chưa rõ
  • Tỷ lệ bịa của mô hình và công cụ mới hơn
  • Thiệt hại thật: chưa thấy vụ lớn được xác nhận
  • Thí nghiệm dùng gói vô hại, kẻ xấu thật không báo
Danh sách kiểm

Mười câu hỏi trước khi cài

1Tên gói có trên kho thật không?
2Gói tạo từ khi nào?
3Lượt tải mỗi tuần có hợp lý không?
4Có kho mã nguồn công khai khớp không?
5Người duy trì là ai?
6Có chạy script lúc cài không?
7Có gói phổ biến hơn không?
8Lệnh này đã có người duyệt chưa?
9Nếu gói độc, máy này có gì để mất?
10Lockfile thêm gì, tôi đã đọc chưa?
Kết luận

Cho lệnh cài một chốt kiểm: khóa phiên bản, tra gói mới, bắt agent xin duyệt.

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.