TL;DR — 28.65 triệu secret bị lộ trên GitHub năm 2025, và commit có AI hỗ trợ rò rỉ gấp đôi tỷ lệ bình thường. Checklist 6 lớp này bao gồm npm config, automation hook, OAuth hygiene, quản lý secret, quyền agent, và incident response. Tổng thời gian setup: dưới 30 phút. Nhảy tới Lớp 1 →

📊 6 lớp bao gồm:

  • Lớp 1: Config .npmrc chặn 80% tấn công supply chain (30 giây)
  • Lớp 2: PreToolUse hook chặn lệnh npm install không an toàn (5 phút)
  • Lớp 3: Audit OAuth thu hồi quyền dư thừa của AI tool (5 phút)
  • Lớp 4: .claudeignore + pre-commit scanning chặn rò rỉ secret (10 phút)
  • Lớp 5: Deny rule cho agent chặn lệnh phá hoại (5 phút)
  • Lớp 6: Runbook incident response khi token bị lộ (5 phút đọc)

Đây là workflow AI-assisted điển hình, với attack surface được đánh dấu:

Bạn: "Thêm HTTP client và deploy"
Agent: npm install axios ← supply chain (Lớp 1-2)
Agent: đọc .env để lấy config ← rò rỉ secret (Lớp 4)
Agent: git push origin main ← lệnh phá hoại (Lớp 5)
Bạn: đã cấp OAuth cho 6 tool ← token sprawl (Lớp 3)
Bạn: token lộ lên GitHub ← incident response (Lớp 6)

Năm 2025, 28.65 triệu hardcoded secret được thêm vào public GitHub, tăng 34% so với năm trước (GitGuardian, 2026). Cùng báo cáo cho thấy commit có AI hỗ trợ rò rỉ secret ở mức 3.2%, gấp đôi baseline 1.5%. Hệ thống bảo mật hiện tại của bạn có lỗ hổng với các vector đặc thù của AI. Checklist này bịt chúng lại.


Tại Sao AI Coding Cần Checklist Bảo Mật Riêng?

AI coding tool tạo ra attack surface mà checklist bảo mật truyền thống không bao phủ. Commit có AI hỗ trợ rò rỉ secret ở mức 3.2% so với baseline 1.5% trên toàn bộ public GitHub năm 2025 (GitGuardian, 2026). Đó không phải bug của tool. Đó là một loại rủi ro chưa tồn tại hai năm trước.

Khoảng cách giữa “ship nhanh” và “ship an toàn” đang ngày càng rộng. Pull request mỗi tác giả tăng 20% so với năm trước, nhưng incident mỗi pull request tăng 23.5% và tỷ lệ change failure tăng khoảng 30% (Kusari, 2026). Nhiều code hơn, nhiều bug hơn, nhiều exposure hơn.

VectorDev truyền thốngDev có AI hỗ trợ
Install packageCon người review depAgent install tốc độ máy
Lộ secretDev quản lý .envAgent đọc file không nên đọc
OAuth tokenÍt grant thủ côngHàng chục kết nối AI tool
Lệnh phá hoạiDev gõ cẩn thậnAgent chạy rm, git push --force
Incident responseGiống nhauGiống nhau, nhưng incident xảy ra nhanh hơn

Key insight: Báo cáo GitGuardian 2026 cho thấy commit có AI hỗ trợ trên public GitHub rò rỉ secret ở mức 3.2%, gấp hơn hai lần baseline 1.5% (GitGuardian State of Secrets Sprawl 2026). Rủi ro không phải AI tool có ý đồ xấu. Rủi ro là chúng di chuyển nhanh hơn hệ thống bảo mật của bạn.

Checklist truyền thống bao gồm code review, dependency audit, secret scanning. Chúng không bao gồm OAuth token sprawl qua AI tool, ranh giới quyền agent, hay việc AI agent có thể chạy rm -rf nếu bạn chưa cấu hình deny rule. Checklist này có.


Lớp 1 — Khóa npm Trong 30 Giây Bằng Cách Nào?

Bốn dòng trong ~/.npmrc chặn vector tấn công supply chain npm phổ biến nhất. Năm 2025, hơn 454,600 package độc hại mới được phát hiện trên các registry, tăng 75% so với năm trước (Sonatype, 2026). Cơ chế payload chính là postinstall lifecycle script. Bốn dòng này tắt chúng.

~/.npmrc
ignore-scripts=true
save-exact=true
audit-level=moderate
fund=false

Mỗi dòng làm gì:

  • ignore-scripts=true tắt postinstall script toàn cục. RAT của axios, worm Shai-Hulud, Bitcoin stealer của event-stream đều cần cơ chế này để chạy.
  • save-exact=true pin version chính xác. Không còn ^1.14.0 tự resolve sang 1.14.1 bị chiếm quyền.
  • audit-level=moderate fail npm install khi gặp CVE đã biết, thay vì giấu trong warning.
  • fund=false bỏ thông báo funding để warning bảo mật không bị chìm.

Verify config:

Terminal window
npm config get ignore-scripts save-exact audit-level fund
# Kết quả mong đợi: true true moderate false

Key insight: Hơn 454,600 package độc hại mới được phát hiện năm 2025, nâng tổng tích lũy lên hơn 1.23 triệu trên npm, PyPI và các registry khác (Sonatype State of the Software Supply Chain 2026). Tắt lifecycle script trong ~/.npmrc vô hiệu hóa cơ chế payload chính cho tất cả chúng.

Bài chi tiết: Phòng Thủ npm Trong 30 Giây Cho Dân Vibe Coding bao gồm edge case, native package cần npm rebuild, và @lavamoat/allow-scripts cho team.


Lớp 2 — Tự Động Hóa npm Audit Bằng Hook Như Thế Nào?

PreToolUse hook của Claude Code chặn mọi lệnh npm install trước khi thực thi và block nếu thiếu --ignore-scripts. Hook này bắt trường hợp agent (hoặc dependency) override default .npmrc. 19.7% package do AI code assistant đề xuất thậm chí không tồn tại, tạo cơ hội cho “slopsquatting” attack (OpenSSF, 2026).

Config hook tối giản trong .claude/settings.json:

{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/npm-audit-check.sh",
"timeout": 30
}
]
}
]
}
}

Hook script kiểm tra ba thứ: (1) --ignore-scripts có mặt không, (2) package có CVE đã biết qua npm audit không, (3) package đạt ngưỡng weekly download tối thiểu không. Bất kỳ check nào fail thì install bị block trước khi npm resolve dependency.

Thêm rule CLAUDE.md làm fallback khi không có hook:

## npm Security Rules
- ALWAYS use --ignore-scripts with npm install
- ALWAYS use --save-exact to pin versions
- NEVER install packages with < 1,000 weekly downloads without asking
- NEVER install packages first published within 30 days without asking

Key insight: 19.7% package do AI code assistant đề xuất không tồn tại trên bất kỳ registry nào, tạo cơ hội “slopsquatting” khi kẻ tấn công đăng ký tên package ảo đó dưới dạng package độc hại (OpenSSF Best Practices Working Group, 2026). Hook ở cấp process bắt được chúng trước khi cài đặt.

Bài chi tiết: Stop npm Supply Chain Attacks with Claude Code Hooks bao gồm setup đầy đủ ba lớp: PreToolUse audit, PostToolUse lockfile diff, và CLAUDE.md version pinning.

Nhận tip Claude Code hàng tuần — Một email mỗi tuần. Hook, CLAUDE.md pattern, và phân tích tấn công thực tế. Đăng ký AI Developer Weekly →


Lớp 3 — Bạn Đã Cấp Quyền OAuth Cho AI Tool Nào?

Mọi AI tool kết nối với Google, GitHub, hoặc Slack đều nắm giữ OAuth token bypass MFA hoàn toàn. Năm 2025, 1.27 triệu AI-service secret bị lộ trên GitHub, tăng 81% so với năm trước (GitGuardian, 2026). Nếu một trong những vendor đó bị breach, token của bạn chính là attack vector.

Chuyện này đã xảy ra rồi. Trong vụ Vercel breach, kẻ tấn công đánh cắp OAuth token của Context.ai qua infostealer malware, rồi pivot vào Google Workspace của nhân viên Vercel, rồi vào hệ thống nội bộ Vercel. Vector ban đầu là một OAuth grant duy nhất của một AI tool.

Chạy audit 5 phút ngay bây giờ:

  1. Google: myaccount.google.com/permissions — thu hồi AI tool bạn không dùng nữa
  2. GitHub: github.com/settings/applications — kiểm tra cả tab OAuth Apps và GitHub Apps
  3. Slack: Workspace Settings → Manage Apps — xóa integration không dùng
  4. npm: npm token list — revoke token bạn không nhận ra

Với mỗi tool bạn giữ lại, kiểm tra scope. AI coding assistant không bao giờ cần full Google Drive access hay GitHub admin:org permission.

Key insight: GitGuardian phát hiện 1.27 triệu AI-service secret bị lộ trên public GitHub năm 2025, tăng 81% so với năm trước, cộng thêm 24,008 secret riêng trong MCP configuration file (GitGuardian State of Secrets Sprawl 2026). OAuth scope creep từ AI tool hiện là một trong ba vector rò rỉ credential hàng đầu.

Bài chi tiết: OAuth Supply Chain Attacks: Your AI Tools Are the New Vector bao gồm toàn bộ chuỗi tấn công Vercel/Context.ai và playbook ứng phó khi vendor bị breach.


Lớp 4 — Chặn Secret Rò Rỉ Vào Commit Bằng Cách Nào?

Dùng .claudeignore để chặn AI agent đọc file nhạy cảm, và pre-commit hook để bắt bất kỳ thứ gì lọt qua. AI agent không biết file nào chứa secret trừ khi bạn nói cho nó. 64% secret bị lộ năm 2022 vẫn còn valid và có thể khai thác tính đến tháng 1 năm 2026 (GitGuardian, 2026).

Tạo file .claudeignore ở root project:

.claudeignore
.env
.env.*
*.pem
*.key
credentials.json
google-services.json
local.properties
config/secrets/

Thêm pre-commit secret scanning với gitleaks:

Terminal window
# Cài gitleaks
brew install gitleaks
# Thêm pre-commit hook
cat > .git/hooks/pre-commit << 'HOOK'
#!/bin/bash
gitleaks protect --staged --verbose
HOOK
chmod +x .git/hooks/pre-commit

Muốn cách ly mạnh hơn? Dùng git worktree. Clone một bản sạch của repo mà không có file secret nào, rồi trỏ Claude Code vào worktree thay vì checkout chính. Worktree không có .env, không có credential, không thể rò rỉ thứ nó không nhìn thấy.

Key insight: 64% secret hợp lệ bị lộ trên public GitHub năm 2022 vẫn còn active và có thể khai thác tính đến tháng 1 năm 2026 (GitGuardian State of Secrets Sprawl 2026). Một khi secret bị lộ, nó ở đó mãi. Phòng ngừa là chiến lược duy nhất hoạt động ở quy mô lớn.

Bài chi tiết: How I Protect Sensitive Code While Using Claude Code on Real Projects bao gồm bốn chiến lược xếp hạng theo bảo mật vs. khả năng duy trì hàng ngày.


Lớp 5 — AI Agent Của Bạn Nên Có Quyền Gì?

Cấu hình deny rule rõ ràng trong .claude/settings.json cho lệnh phá hoại và đường dẫn file nhạy cảm. Quyền mặc định của Claude Code quá rộng. Tôi học bài này theo cách khó nhất khi rm Claude.md qua mặt ba lớp phòng thủ vì tất cả đều cấu hình chặn rm -rf, không phải rm.

{
"permissions": {
"deny": [
"Bash(rm *)",
"Bash(git push --force*)",
"Bash(git reset --hard*)",
"Bash(chmod 777*)",
"Read(.env*)",
"Read(credentials*)",
"Read(*.pem)",
"Read(*.key)"
]
}
}

Deny list cần bao gồm:

  • Thao tác file phá hoại: rm, rmdir, ghi đè file
  • Lệnh git nguy hiểm: push --force, reset --hard, clean -f
  • Đọc file secret: .env, credential file, private key
  • Leo thang quyền: chmod 777, sudo

Test deny list sau khi cấu hình. Chạy đúng các lệnh bạn đang block và xác nhận Claude Code từ chối chúng. Số lượng lớp bảo mật không quan trọng nếu bất kỳ lớp nào có lỗ hổng.

Key insight: Hệ thống permission của Claude Code cấp quyền truy cập filesystem và shell theo mặc định khi người dùng approve lệnh. Không có deny list cấu hình trong settings.json, agent có thể đọc credential file, ghi vào bất kỳ đường dẫn nào, và chạy lệnh phá hoại. Deny rule rõ ràng là lớp bảo vệ duy nhất được đảm bảo.

Bài chi tiết: I Set Up 3 Layers of Defense in Claude Code. It Deleted My File Anyway. giải thích tại sao test đúng threat model thực tế quan trọng hơn xếp chồng nhiều lớp.


Lớp 6 — Kế Hoạch Incident Response Khi Token Bị Lộ Là Gì?

Revoke trước, scope blast radius sau, rotate credential downstream thứ ba. Scanner tự động harvest secret bị lộ từ public GitHub trong vòng 5 phút. Bạn có một giờ trước khi thiệt hại kép. Đây là runbook rút gọn:

Phút 0-5: Revoke

Terminal window
# npm token
npm token revoke <token-id>
# GitHub PAT
# → github.com/settings/tokens → Delete
# AWS access key
aws iam deactivate-access-key --access-key-id <key>

Phút 5-15: Scope blast radius

  • Token đó có thể truy cập gì? Liệt kê mọi service, repo, secret nó có thể reach.
  • Export audit log trước khi chúng rotate hết (GitHub, Google Workspace, npm).

Phút 15-30: Rotate downstream

  • Nếu npm token đọc được CI secret, những CI secret đó cũng bị compromise.
  • Nếu GitHub PAT có repo access, mọi secret trong các repo đó đều bị lộ.
  • Đi theo cascade. Rotate mọi thứ mà token bị lộ có thể chạm tới.

Phút 30-60: Harden

  • Bật GitHub secret scanning push protection.
  • Thêm pre-commit gitleaks hook từ Lớp 4.
  • Chuyển từ long-lived token sang short-lived (GitHub fine-grained PAT, npm granular token).

Key insight: GitGuardian theo dõi credential bị lộ năm 2022 và thấy 64% vẫn còn valid, có thể khai thác tính đến tháng 1 năm 2026. Khoảng cách remediation nghĩa là phần lớn secret bị lộ không bao giờ được revoke. Cửa sổ response 60 phút là ranh giới giữa incident được kiểm soát và breach lan rộng.

Bài chi tiết: Your npm Token Got Leaked. Here’s Your Next 60 Minutes. bao gồm runbook đầy đủ với lệnh chính xác cho npm, GitHub, Vercel, và AWS.


Làm Sao Biết Mình Đã Được Bảo Vệ Thật Sự?

Chạy self-audit 5 phút này mỗi quý. Một check mỗi lớp, mỗi cái cho tín hiệu pass/fail:

Terminal window
# Lớp 1: npm config
npm config get ignore-scripts save-exact audit-level
# Kết quả mong đợi: true true moderate
# Lớp 2: Hook đã cài (Claude Code)
cat .claude/settings.json | grep -c "npm-audit"
# Kết quả mong đợi: 1 hoặc hơn
# Lớp 4: Pre-commit secret scan
gitleaks protect --staged --verbose
# Kết quả mong đợi: no leaks found
# Lớp 5: Deny list đã cấu hình
cat .claude/settings.json | grep -c "deny"
# Kết quả mong đợi: 1 hoặc hơn

Với Lớp 3 (OAuth), kiểm tra thủ công trang permission mỗi quý:

Với Lớp 6 (incident response), làm tabletop exercise. Chọn một token ngẫu nhiên từ npm token list và đi qua chuỗi revoke-scope-rotate-harden mà không thực sự revoke. Nếu không hoàn thành trong 15 phút, runbook của bạn cần cải thiện.

Thử ngay: Chạy npm config get ignore-scripts save-exact audit-level trong terminal. Nếu không thấy true true moderate, mở ~/.npmrc và thêm bốn dòng từ Lớp 1. 30 giây chặn vector tấn công npm phổ biến nhất. Rồi chọn thêm một lớp nữa và làm hôm nay.

Checklist này là sàn, không phải trần. Mỗi lớp có bài chi tiết với setup đầy đủ, edge case, và vụ việc thực tế đã tạo động lực cho nó. Bắt đầu từ Lớp 1 và đi xuống. Dưới 30 phút cho cả sáu lớp.

Muốn nhận bài bảo mật tiếp theo khi ra mắt? Một email mỗi tuần, không rác. Tham gia AI Developer Weekly →


FAQ

Có cần đủ 6 lớp không?

Lớp 1 (npmrc) và Lớp 4 (secret) là bắt buộc. Các lớp còn lại tùy threat model của bạn. Solo dev làm side project? Lớp 1-4. Ship production code với team? Cả 6.

Checklist này có dùng được cho Cursor, Copilot, Windsurf không?

Lớp 1, 3, 4, 6 là tool-agnostic. Lớp 2 và 5 dành riêng cho Claude Code (hook và settings.json), nhưng mọi AI coding agent đều có hệ thống permission tương đương. Kiểm tra documentation của tool bạn dùng để tìm config tương ứng.

Setup hết bao lâu?

Dưới 30 phút nếu làm theo thứ tự. Lớp 1 mất 30 giây. Lớp 2 mất 5 phút. Lớp 3 tùy số AI tool bạn đã kết nối, nhưng bản thân audit mất 5 phút. Lớp 4-6 mỗi lớp 5 phút.

Hành động nào có impact cao nhất?

Thêm ignore-scripts=true vào ~/.npmrc. Một dòng, 30 giây, chặn vector malware npm phổ biến nhất. RAT của axios, worm Shai-Hulud, event-stream đều dựa vào postinstall script để chạy.

Có nên ngừng dùng AI coding tool vì rủi ro này không?

Không. Lợi ích năng suất là thật. Nhưng ship mà không có các lớp này nghĩa là bạn đang chạy nhanh về phía một vụ breach. Checklist này là sàn. Xây thêm lên trên nó.


Đọc Gì Tiếp Theo