
GitHub bị tấn công qua tiện ích mở rộng VS Code (Tháng 5/2026): Quy trình khẩn cấp 60 phút mà mọi lập trình viên cần thực hiện ngay tối nay
Vào ngày 20 tháng 5 năm 2026, GitHub xác nhận khoảng 3.800 kho mã nguồn nội bộ của họ đã bị đánh cắp thông qua một tiện ích mở rộng VS Code độc hại được cài đặt trên máy trạm của một nhân viên. Nếu bạn đã sử dụng GitHub PAT (Personal Access Token) hoặc token npm bên trong VS Code trong 14 ngày qua, thì 60 phút tiếp theo là cực kỳ quan trọng. Đây là quy trình hành động: những gì thực sự đã xảy ra, liệu bạn có bị ảnh hưởng hay không, và những thông tin xác thực nào cần xoay vòng (rotate) đầu tiên.
Những điểm chính
- Điều gì đã xảy ra: Hạ tầng sản xuất của GitHub.com không bị xâm nhập; một nhân viên đã cài đặt một tiện ích mở rộng bị nhiễm độc trên VS Code (khả năng cao là Nx Console v18.95.0), dẫn đến việc đánh cắp các PAT và rò rỉ khoảng 3.800 kho mã nội bộ.
- Dữ liệu khách hàng: Không bị ảnh hưởng. Dữ liệu bị xâm phạm là mã nguồn nội bộ của GitHub, không phải mã nguồn hoặc tài khoản của khách hàng.
- Ai đang gặp rủi ro: Bất kỳ lập trình viên nào đã cài đặt tiện ích mở rộng VS Code trong khoảng thời gian từ 12:36 UTC đến 12:47 UTC ngày 18 tháng 5 (cửa sổ 11 phút), hoặc bất kỳ ai sử dụng GitHub PAT có thời hạn dài từ bên trong VS Code.
- Cần làm gì ngay bây giờ: Ưu tiên xoay vòng GitHub PAT, sau đó đến token npm, rồi đến khóa AWS/cloud. Xem quy trình đầy đủ trong phần "Những điều lập trình viên phải làm" bên dưới.
TL;DR: 6 việc cần làm trong giờ tới
Cách nhanh nhất để giới hạn phạm vi thiệt hại từ câu chuyện github hacked vscode extension là xoay vòng các thông tin xác thực mà một tiện ích mở rộng bị nhiễm độc có thể truy cập, kiểm tra những gì đã được cài đặt trên laptop của bạn và xem nhật ký tổ chức GitHub của bạn trong khung thời gian UTC từ ngày 18-20 tháng 5. Sáu hành động, được xếp hạng theo mức độ tác động, theo thứ tự ưu tiên.
- Thu hồi mọi GitHub Personal Access Token được tạo hoặc sử dụng trong VS Code trong 30 ngày qua.
- Xoay vòng token npm thông qua lệnh
npm token revokevà cấp lại với xác thực hai yếu tố (2FA) + xuất bản đáng tin cậy (trusted publishing). - Quét laptop của bạn để tìm các Chỉ dấu xâm nhập (IoC) từ GHSA-c9j4-9m59-847w (đường dẫn tệp, tiến trình; xem lệnh bên dưới).
- Kiểm tra danh sách tiện ích bằng lệnh
code --list-extensions --show-versionsvà gỡ cài đặt bất kỳ tiện ích nào bạn không thể giải thích rõ ràng. - Ghim cứng phiên bản tiện ích mở rộng trong
devcontainer.jsonvà áp dụng danh sách cho phép (allow-list) ở cấp độ tổ chức. - Kiểm tra nhật ký kiểm toán (audit log) của tổ chức GitHub trên GitHub để tìm các lần đẩy mã (push) lạ vào kho lưu trữ trong khoảng thời gian UTC từ ngày 18-20 tháng 5.
Nếu bạn chỉ có thời gian cho hai việc, hãy làm #1 và #3. Những việc còn lại có thể chờ thêm một giờ.
Liệu GitHub có thực sự bị hack? Hãy làm rõ tiêu đề
Không, hạ tầng sản xuất của GitHub.com không bị xâm nhập vào ngày 20 tháng 5 năm 2026. Máy trạm của một nhân viên GitHub duy nhất đã bị xâm phạm sau khi nhân viên này cài đặt một tiện ích mở rộng VS Code độc hại (khả năng cao là Nx Console v18.95.0). Kẻ tấn công, tự xưng là TeamPCP (được theo dõi dưới mã UNC6780), đã đánh cắp khoảng 3.800 kho mã nguồn nội bộ của GitHub. Mã nguồn của khách hàng, tài khoản khách hàng và các dịch vụ sản xuất của GitHub không bị ảnh hưởng.
Dưới đây là phiên bản rõ ràng hơn về những gì đã và chưa xảy ra.
| Điều đã xảy ra | Điều KHÔNG xảy ra |
|---|---|
| Laptop của một nhân viên bị xâm phạm qua một tiện ích mở rộng VS Code bị nhiễm độc | Hạ tầng sản xuất của GitHub.com bị xâm nhập |
| Khoảng 3.800 kho mã nguồn nội bộ bị đánh cắp | Kho lưu trữ hoặc tài khoản của khách hàng bị động chạm |
| Thông tin xác thực của nhân viên GitHub trên thiết bị đó bị đánh cắp | PAT của khách hàng, token npm hoặc ủy quyền OAuth bị đánh cắp từ hệ thống của GitHub |
| TeamPCP đòi tiền chuộc (theo Tom's Hardware) | GitHub trả tiền chuộc (không có bằng chứng về việc thanh toán) |
Tại sao cách diễn đạt này lại quan trọng? Vì bài học rút ra không phải là "github bị hack." Bài học thực sự là các thiết bị đầu cuối của nhà phát triển (developer endpoints) hiện đang là điểm yếu mềm của mọi tổ chức kỹ thuật. Mọi bí mật mà nhóm của bạn sở hữu (GitHub PAT, token npm, khóa AWS, phiên vault, khóa nhà cung cấp AI) đều nằm trên một chiếc laptop với rất ít hoặc không có lớp phủ EDR (Phát hiện và Phản ứng Điểm cuối). Một tiện ích mở rộng bị nhiễm độc duy nhất chạy trong IDE của bạn sẽ kế thừa tất cả quyền truy cập đó.
Người phát ngôn của GitHub, được trích dẫn trong Bleeping Computer, đã xác nhận kịch bản xâm phạm thiết bị đầu cuối của nhân viên và khẳng định "không có dữ liệu khách hàng". Help Net Security đã bổ sung thông tin quy kết cho TeamPCP. Chuỗi lưu giữ bằng chứng kỹ thuật cho tiện ích mở rộng này nằm trong khuyến cáo bảo mật GHSA-c9j4-9m59-847w.
GitHub.com không bị xâm nhập. Một nhân viên GitHub thì có. Hãy giữ khung suy nghĩ này trong đầu khi bạn đọc phần còn lại.
Những gì thực sự đã xảy ra: Dòng thời gian của vụ vi phạm tháng 5/2026
Câu chuyện github breach 2026 diễn ra qua bốn giai đoạn trong khoảng 48 giờ. Một tiện ích mở rộng bị nhiễm độc được công bố vào ngày 18 tháng 5 lúc 12:36 UTC, bị gỡ bỏ 11 phút sau đó, được GitHub phát hiện vào ngày hôm sau và công khai tiết lộ vào ngày 20 tháng 5. Dòng thời gian ngắn gọn, kèm nguồn tham khảo:
| Thời gian (UTC) | Sự kiện | Nguồn |
|---|---|---|
| 18 tháng 5, 12:36 | Nx Console v18.95.0 được công bố trên OpenVSX / Visual Studio Marketplace (khả năng cao) | StepSecurity / GHSA-c9j4-9m59-847w |
| 18 tháng 5, 12:47 | Phiên bản độc hại bị gỡ bỏ, cửa sổ 11 phút | StepSecurity |
| 19 tháng 5 | GitHub phát hiện thiết bị đầu cuối của nhân viên bị xâm phạm; cô lập sự cố | Người phát ngôn GitHub qua Bleeping Computer |
| 20 tháng 5 | Công khai tiết lộ; TeamPCP / UNC6780 công khai nhận trách nhiệm | Help Net Security, Hackread |
Khoảng thời gian 11 phút đó là chi tiết kỳ lạ nhất. Nó gợi ý rằng kẻ tấn công đã luân chuyển các tiện ích mở rộng để né tránh việc phát hiện trên marketplace, cùng mô hình mà Koi Security đã ghi nhận trong sâu worm GlassWorm trên OpenVSX vào tháng 10 năm 2025. TeamPCP / UNC6780 trước đó đã nhận trách nhiệm cho các vụ xâm phạm năm 2026 đối với Trivy, KICS, LiteLLM, TanStack và MistralAI. Cùng một nhóm, cùng một quy trình, nhưng mục tiêu khác nhau.
Tháng trước là biến môi trường (env vars) của Vercel. Hôm nay là kho mã của GitHub. Mô hình mà chúng ta đã chứng kiến phát triển trong 9 tháng qua tiếp tục mở rộng phạm vi thiệt hại. Xem phân tích của chúng tôi về phản ứng với vụ hack Vercel để thấy sự tương đồng.
Tiện ích mở rộng có khả năng gây ra lỗi: Nx Console v18.95.0 (Và lý do GitHub chưa xác nhận)
GitHub chưa chính thức nêu tên tiện ích mở rộng liên quan đến vụ xâm phạm thiết bị đầu cuối của nhân viên. Bằng chứng pháp y phù hợp mạnh mẽ với Nx Console v18.95.0, nhưng điều này vẫn chỉ là khả năng cao, chưa được xác nhận. Chúng tôi sẽ cập nhật bài viết này nếu GitHub chính thức gọi tên một tiện ích mở rộng khác. Hãy xem phần còn lại của mục này như là sự quy kết dựa trên thông tin tốt nhất hiện có, không phải là sự thật đã được tuyên bố.
Bốn mảnh bằng chứng gián tiếp liên kết Nx Console với thông báo của GitHub:
- Khớp thời gian: Cửa sổ khuyến cáo GHSA-c9j4-9m59-847w (18 tháng 5, 12:36-12:47 UTC) nằm trọn trong cửa sổ xâm phạm thiết bị đầu cuối của nhân viên GitHub trong thông báo chính thức của họ.
- Trùng lặp IoC pháp y: Phân tích tải trọng Nx Console được công bố bởi StepSecurity (đường dẫn tệp, các tiến trình như
__DAEMONIZED, điểm cuối mạng) khớp với các artifact thấy trên thiết bị đầu cuối bị xâm phạm theo báo cáo của Wiz. - Mô hình quy kết TeamPCP: TeamPCP / UNC6780 đã hoạt động tích cực trong không gian chuỗi cung ứng VS Code (Trivy, KICS, LiteLLM, TanStack, MistralAI trong năm 2026) với cấu trúc tải trọng nhất quán.
- Cửa sổ gỡ bỏ 11 phút: Đặc trưng của các cuộc tấn công chuỗi cung ứng nơi kẻ tấn công kiểm soát thời điểm công bố nhưng marketplace nhanh chóng phát hiện ra.
Nếu bạn không cài đặt Nx Console, bạn vẫn chưa hoàn toàn an toàn. Mô hình tấn công rộng hơn (các tiến trình __DAEMONIZED, lạm dụng IMDS, đánh cắp ~/.claude/settings.json) có thể áp dụng cho bất kỳ tiện ích mở rộng bị nhiễm độc nào. Việc phân loại trong phần tiếp theo áp dụng bất kể bạn nghi ngờ tiện ích mở rộng nào.

Bạn có bị ảnh hưởng không? Phân loại nhanh trong 5 phút
Có ba bài kiểm tra nhanh. (1) Bạn có cài đặt hoặc tự động cập nhật một tiện ích mở rộng VS Code nào trong khoảng thời gian từ 12:36 đến 12:47 UTC ngày 18 tháng 5 không? (2) Có bất kỳ tệp IoC nào từ GHSA-c9j4-9m59-847w trên laptop của bạn ngay bây giờ không? (3) Bạn có sử dụng GitHub PAT bên trong VS Code trong 14 ngày qua không? Thực hiện cả ba bước này trong dưới năm phút.
Bài kiểm tra 1, Kiểm toán tiện ích mở rộng
# List all installed extensions with versions
code --list-extensions --show-versions
# Specifically check for Nx Console v18.95.0
code --list-extensions --show-versions | grep -i "nrwl.angular-console\|nx-console"Bất kỳ thứ gì tự động cập nhật giữa ngày 17 và ngày 18 tháng 5 đều đáng được xem xét lại. Nếu bạn thấy Nx Console ở chính xác phiên bản 18.95.0, bạn có khả năng cao bị ảnh hưởng. Phiên bản đã vá lỗi là 18.100.0. Hoặc là gỡ cài đặt, hoặc chuyển thẳng sang quy trình hành động bên dưới.
Bài kiểm tra 2, Quét IoC
# Check for the daemonized credential-harvest process artifacts (GHSA-c9j4-9m59-847w)
ps aux | grep -i "__DAEMONIZED" | grep -v grep
ls -la ~/.local/share/kitty/ 2>/dev/null
find ~ -name "*.daemonized*" 2>/dev/null
# IMDS abuse indicator (AWS credential harvest)
# Check shell history for unexpected curl to 169.254.169.254
grep -E "169\.254\.169\.254|metadata\.google\.internal" ~/.zsh_history ~/.bash_history 2>/dev/nullMột máy sạch sẽ không trả về kết quả gì cho lệnh grep __DAEMONIZED, không có tệp .daemonized và không có hit IMDS trong lịch sử shell của bạn. Nếu bất kỳ điều nào trong số đó xuất hiện, hãy giả định laptop đã bị xâm phạm và coi mọi thông tin xác thực mà nó đã chạm vào trong 30 ngày qua là đã bị lộ.
Bài kiểm tra 3, Phơi nhiễm PAT
Nếu bạn đã sử dụng GitHub PAT (cổ điển hoặc chi tiết) bên trong bất kỳ terminal VS Code nào, git tích hợp hoặc bất kỳ tiện ích mở rộng nào gọi API GitHub trong 14 ngày qua, hãy giả định nó đã bị xâm phạm và tiến hành quy trình xoay vòng bên dưới. Đây là mặc định thận trọng, bạn không thể kiểm toán xem "liệu token có nằm trong bộ nhớ khi tiện ích mở rộng hoạt động hay không". Hãy xoay vòng nó.
Nếu bạn sử dụng Claude Code, danh sách IoC đặc biệt bao gồm ~/.claude/settings.json. Hãy xem hướng dẫn về hooks của Claude Code để biết những gì được lưu trữ trong tệp đó và những khóa nào cần xoay vòng đầu tiên.
Kết luận. Nếu bất kỳ bước nào trong ba bước trên cho kết quả dương tính, hãy dừng đọc phần tường thuật. Chuyển thẳng sang quy trình hành động trong phần tiếp theo. 55 phút tiếp theo quan trọng hơn nhiều so với báo cáo hậu sự cố.
Những điều lập trình viên phải làm: Quy trình khẩn cấp 60 phút
Xoay vòng thông tin xác thực theo thứ tự ưu tiên. Cấp 0 (30 phút tiếp theo): GitHub PAT và token npm. Cấp 1 (trong ngày): Khóa AWS / cloud, 1Password / Vault, bí mật GitHub Actions. Cấp 2 (trong tuần này): SaaS bên thứ ba, ủy quyền OAuth, khóa SSH. Cấp 3 (khi thuận tiện): Các khóa chỉ đọc và khóa công khai. Mỗi cấp độ tương ứng với việc giảm thiểu phạm vi thiệt hại cụ thể.

NGAY BÂY GIỜ: Nếu bạn nghĩ mình bị ảnh hưởng
Nếu kết quả phân loại của bạn là dương tính, hãy thực hiện ba điều này theo thứ tự trước khi làm bất cứ điều gì khác.
- Tiêu diệt daemon và gỡ cài đặt tiện ích mở rộng đáng ngờ:
# Kill the malicious payload (GHSA-c9j4-9m59-847w)
pkill -f __DAEMONIZED
pkill -f "nx-console.*18.95.0"
# Uninstall the suspect extension immediately
code --uninstall-extension nrwl.angular-console- Rút cáp mạng của laptop nếu bạn có bất kỳ bằng chứng nào về việc đánh cắp dữ liệu đang diễn ra. Nghe có vẻ cực đoan. Đúng vậy. Nhưng hãy làm anyway. Bạn có thể điều tra lại ngoại tuyến.
- Gọi cho đội bảo mật của bạn hoặc đăng trong kênh Slack
#securitytrước khi chạy bất kỳ lệnh nào khác. Nếu bạn làm việc đơn lẻ, hãy chuyển sang Cấp 0 bên dưới.
Cấp 0 (30 phút tiếp theo): GitHub + npm
Thu hồi GitHub PAT thông qua CLI gh và giao diện cài đặt web:
# Confirm what you're authenticated as
gh auth status
# List app installations the token has access to (helps inventory blast radius)
gh api -H "Accept: application/vnd.github+json" /user/installations
# The gh CLI cannot revoke classic PATs directly — use the web UI:
# https://github.com/settings/tokens
# Click "Revoke" on EVERY token. Do not selectively keep "the one that's probably fine."
# Re-issue with fine-grained PATs + ≤90-day expiration:
# https://github.com/settings/personal-access-tokens/new
# Scope one repo at a time, never the whole account.
# For org-owned PATs and installations:
gh api /orgs/{ORG}/installationsXoay vòng token npm:
# List and revoke every npm token
npm token list
npm token revoke <token-id-1>
npm token revoke <token-id-2>
# Force 2FA on auth and writes
npm profile enable-2fa auth-and-writes
# For CI: migrate to OIDC trusted publishing — no more long-lived tokens
# Docs: https://docs.npmjs.com/trusted-publishersNếu bạn duy trì các gói đã xuất bản, token npm của bạn là thông tin xác thực nguy hiểm nhất mà bạn sở hữu. Hãy xoay vòng nó trước cả AWS.
Cấp 1 (Trong ngày): Cloud + Vaults + Bí mật CI
Khóa truy cập AWS là bước tiếp theo. Các IoC cho thấy sự lạm dụng IMDS, vì vậy bất kỳ người dùng IAM nào đã chạm vào thiết bị đầu cuối bị xâm phạm đều đáng nghi ngờ:
# List access keys for the current IAM user
aws iam list-access-keys --user-name $(aws sts get-caller-identity --query 'Arn' --output text | cut -d/ -f2)
# Deactivate the old key (don't delete yet — let workloads fail loudly first)
aws iam update-access-key --access-key-id AKIA... --status Inactive --user-name <user>
# Create a new key
aws iam create-access-key --user-name <user>
# Once deployed and verified, delete the old key
aws iam delete-access-key --access-key-id AKIA... --user-name <user>
# If any EC2 instance was using IMDSv1, force IMDSv2 immediately
aws ec2 modify-instance-metadata-options --instance-id i-... --http-tokens required1Password CLI: đăng xuất khỏi mọi thiết bị (op signout --all), tạo lại token phiên và kiểm tra quyền truy cập vault gần đây thông qua nhật ký kiểm toán web của 1Password để tìm bất kỳ hoạt động nào chạy từ thiết bị đầu cuối bị xâm phạm.
HashiCorp Vault: thu hồi token người dùng của bạn (vault token revoke -self) và yêu cầu quản trị viên cấp một token mới với TTL ngắn hơn.
Bí mật GitHub Actions: nếu bất kỳ thông tin xác thực nào được xoay vòng cũng nằm trong Actions, hãy cập nhật nó. Sử dụng gh secret set GITHUB_PAT --body <new-pat> cho từng repo, hoặc giao diện cấp tổ chức cho bí mật tổ chức.
Khóa API Anthropic và OpenAI: danh sách IoC GHSA-c9j4-9m59-847w đặc biệt chỉ ra ~/.claude/settings.json là mục tiêu thu thập. Thu hồi và cấp lại khóa API bảng điều khiển Anthropic của bạn và bất kỳ khóa OpenAI nào bạn đã từng lưu trữ trong tệp đó.
Cấp 2 (Trong tuần này): SSH + OAuth + Trình quản lý mật khẩu
Khóa SSH di chuyển chậm hơn nhưng vẫn nằm trong phạm vi. Tiện ích mở rộng có quyền đọc hệ thống tệp trên ~/.ssh/:
# Audit existing SSH keys (when were they generated?)
for key in ~/.ssh/id_*; do
if [ -f "$key" ]; then
echo "Key: $key"
stat -c '%y' "$key" 2>/dev/null || stat -f '%Sm' "$key"
fi
done
# Generate a new Ed25519 key
ssh-keygen -t ed25519 -C "rotated-$(date +%Y%m%d)" -f ~/.ssh/id_ed25519_new
# Upload public key to GitHub
gh ssh-key add ~/.ssh/id_ed25519_new.pub --title "rotated-$(date +%Y%m%d)"
# Delete the old key from GitHub via web UI, then verify SSH still works
ssh -T [email protected]Trình quản lý mật khẩu trình duyệt và keychain hệ điều hành: xoay vòng bất kỳ mật khẩu nào mà tiện ích mở rộng có thể hợp lý đã nhìn thấy thông qua clipboard. Phạm vi phơi nhiễm thực tế là các mật khẩu bạn đã sao chép vào clipboard khi tiện ích mở rộng đang hoạt động.
Cấp 3 (Khi thuận tiện): Kiểm toán + Xác minh
Kiểm tra nhật ký tổ chức GitHub của bạn trong cửa sổ xâm phạm. Việc này yêu cầu quyền quản trị viên tổ chức:
# Pull push events for the May 18-20 window
gh api -X GET /orgs/{ORG}/audit-log \
--paginate \
-f phrase='action:repo.push created:2026-05-18..2026-05-20' | jq '.[] | {actor, created_at, repo}'
# Spot-check suspicious commits (unexpected authors, large diffs)
gh api -X GET /repos/{ORG}/{REPO}/commits \
-f since=2026-05-18T00:00:00Z \
-f until=2026-05-20T23:59:59Z | jq '.[] | {sha, author: .commit.author, message: .commit.message}'
# Refresh OAuth grants
gh auth refresh -s admin:org -s admin:public_keyNếu nhật ký kiểm toán hiển thị các lần đẩy (push) từ cửa sổ xâm phạm mà bạn không thực hiện, hãy leo thang vấn đề lên đội bảo mật và bảo tồn tệp JSON nhật ký kiểm toán. Đừng cố gắng "hoàn tác" bất cứ điều gì trong repo. Bảo tồn bằng chứng trước.
Chúng tôi đã đề cập đến logic xoay vòng theo cấp độ tương tự cho vụ vi phạm biến môi trường Vercel vào tháng 4: cùng hình dạng, nhưng lớp khác.
Khung kiểm toán tiện ích mở rộng 5 câu hỏi (Sử dụng mãi mãi)
Trước khi cài đặt hoặc tin tưởng bất kỳ tiện ích mở rộng VS Code nào, hãy đưa nó qua năm bài kiểm tra: tuổi tên miền nhà xuất bản, tốc độ phiên bản, sự kiện kích hoạt package.json, phạm vi quyền so với hành vi dự kiến và kiểm toán kho mã nguồn mở. Nx Console v18.95.0 lẽ ra đã trượt Bài kiểm tra #2: một bước nhảy vọt đột ngột về phiên bản sau một nhịp độ phát hành ổn định là dấu hiệu kinh điển của tấn công chuỗi cung ứng.
- Tuổi tên miền nhà xuất bản. Tên miền của nhà xuất bản có cũ hơn một năm không? Các nhà xuất bản mới trên tên miền mới đăng ký mang nhiều rủi ro hơn. Kiểm tra qua trang nhà xuất bản trên Visual Studio Marketplace hoặc lệnh
whoistrên tên miền email của nhà xuất bản. - Tốc độ phiên bản. Lịch sử phiên bản có hiển thị nhịp độ bình thường (một bản phát hành mỗi 1-4 tuần) hay một đỉnh đột ngột (ba bản phát hành trong 24 giờ)? Tốc độ đột ngột là tín hiệu cảnh báo. Nx Console v18.95.0 là một dị thường về tốc độ.
- Sự kiện kích hoạt
package.json. Mở tệp.vsix(nó là một file zip) và đọcactivationEvents. Các tiện ích mở rộng kích hoạt trên*(luôn bật) có bề mặt tấn công lớn nhất. Ưu tiên các tiện ích mở rộng kích hoạt trên một ngôn ngữ hoặc tên tệp cụ thể. - Quyền yêu cầu so với hành vi dự kiến. Một tiện ích mở rộng "chủ đề" có yêu cầu truy cập mạng không? Một tiện ích mở rộng "đoạn mã" có cần ghi vào hệ thống tệp không? Sự không khớp là cờ đỏ. Đối chiếu chéo với tài liệu bảo mật thời gian chạy tiện ích mở rộng của Microsoft.
- Kiểm toán kho mã nguồn mở. Mã nguồn có trên GitHub không? Đọc năm commit gần nhất để tìm các thay đổi đáng ngờ: hook sau khi cài đặt, blob mã hóa base64, lệnh gọi mạng đến các tên miền lạ.
Một tiện ích mở rộng kích hoạt trên * và yêu cầu truy cập mạng về cơ bản là một remote shell được gắn kèm với VS Code.
Khung kiểm toán tương tự áp dụng cho các máy chủ MCP, bề mặt chuỗi cung ứng lớp tiện ích mở rộng tiếp theo. Xem phân tích các máy chủ MCP tốt nhất 2026 của chúng tôi để biết những cái nào chúng tôi tin tưởng và tại sao.
Tại sao điều này tiếp tục xảy ra: Làn sóng chuỗi cung ứng 2025-2026
Vụ vi phạm GitHub ngày 20 tháng 5 là một nút trong vòng cung 9 tháng: sâu worm npm Shai-Hulud (tháng 9/2025), sâu worm OpenVSX GlassWorm (tháng 10-11/2025), Shai-Hulud 2.0 (tháng 11/2025, hơn 25.000 repo bị ảnh hưởng), Mini Shai-Hulud (đầu năm 2026), Nx Console (ngày 18 tháng 5 năm 2026), xâm phạm thiết bị đầu cuối GitHub (ngày 20 tháng 5 năm 2026). Các thiết bị đầu cuối của nhà phát triển đã trở thành điểm yếu mềm mới.
- Tháng 9/2025, sâu worm npm Shai-Hulud. Phần mềm độc hại tự lây lan trong các gói npm phổ biến. CISA đã đưa ra cảnh báo về sự xâm phạm rộng rãi.
- Tháng 10-11/2025, GlassWorm. Sâu worm tự lây lan đầu tiên nhắm vào các tiện ích mở rộng VS Code trên OpenVSX. Thông báo của Koi Security.
- Tháng 11/2025, Shai-Hulud 2.0. Hơn 25.000 repo bị đánh cắp. Microsoft Security Blog đã công bố hướng dẫn ngăn chặn.
- Đầu năm 2026, Mini Shai-Hulud. Biến thể của TeamPCP. Các cuộc lặp lại quy mô nhỏ hơn chống lại Trivy, KICS, LiteLLM, TanStack và MistralAI.
- Ngày 18 tháng 5 năm 2026, Nx Console v18.95.0. Vector có khả năng cao dẫn đến sự xâm phạm thiết bị đầu cuối GitHub.
- Ngày 20 tháng 5 năm 2026, GitHub tiết lộ. Khoảng 3.800 repo nội bộ bị đánh cắp. Theo loạt bài pháp y Shai-Hulud của Wiz, mô hình lạm dụng IMDS là một sự tiến hóa trực tiếp.
Mô hình rất rõ ràng: laptop của nhà phát triển chứa mọi bí mật trong tổ chức (GitHub PAT, khóa AWS, token vault, khóa nhà cung cấp AI) và hầu như không có lớp phủ EDR. Cho đến khi sự mất cân bằng này được đảo ngược, làn sóng này sẽ tiếp tục.
AI phòng thủ là một phần của câu trả lời. Chúng tôi đã đề cập góc độ này trong phân tích về cách AI ngăn chặn vi phạm dữ liệu vào đầu năm nay.
Phản ứng lớn hơn của GitHub: Xuất bản đáng tin cậy, FIDO 2FA, Token 90 ngày
GitHub đã và đang triển khai bốn biện pháp kiểm soát chuỗi cung ứng trước ngày 20 tháng 5: bắt buộc 2FA cho nhà xuất bản npm, giới hạn 90 ngày đối với token ghi chi tiết, ngừng hỗ trợ TOTP để ưu tiên FIDO và passkeys, và xuất bản đáng tin cậy OIDC cho GitHub Actions và GitLab CI. Vụ vi phạm tháng 5 đẩy nhanh quá trình di chuyển đang diễn ra; nó không giới thiệu một chính sách mới.
| Biện pháp kiểm soát | Trạng thái | Hành động cho bạn |
|---|---|---|
| Bắt buộc npm 2FA | Đang hoạt động | Bật ngay: npm profile enable-2fa auth-and-writes |
| Giới hạn token ghi chi tiết 90 ngày | Đang triển khai (các token hiện có bị buộc hết hạn) | Di chuyển sang PAT chi tiết với TTL ≤90 ngày |
| Ngừng hỗ trợ TOTP, FIDO / passkeys | Triển khai theo giai đoạn 2026 | Đăng ký passkey cho mọi tài khoản GitHub ngay hôm nay |
| Xuất bản đáng tin cậy OIDC | Đang hoạt động cho GitHub Actions + GitLab CI | Di chuyển CI từ token npm sống lâu sang OIDC |
Kế hoạch tổng thể của GitHub cho một chuỗi cung ứng npm an toàn hơn đã có từ nhiều tháng trước sự cố này. Bạn càng nhanh chóng tuân thủ, phạm vi thiệt hại của bạn sẽ càng nhỏ hơn vào lần sau.
Củng cố: Cách tồn tại qua sự cố tiếp theo
Sáu bước tiến về phía trước: ghim cứng phiên bản tiện ích mở rộng trong devcontainer.json, thực thi danh sách cho phép tiện ích mở rộng ở cấp tổ chức, chạy EDR với khả năng hiển thị quy trình tiện ích mở rộng, quét bí mật mọi lần đẩy, giới hạn PAT cho một repo và áp dụng xuất bản đáng tin cậy OIDC thay vì token sống lâu. Không biện pháp nào trong số này có thể ngăn chặn mọi sự cố, nhưng cùng nhau chúng thu hẹp phạm vi thiệt hại từ "mọi thứ trên laptop" xuống còn "một repo".
{
"name": "secure-dev",
"extensions": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"settings": {
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
},
"containerEnv": {
"VSCODE_GALLERY_SERVICE_URL": "https://your-internal-allow-list.example.com"
}
}Tóm lại:
- Ghim cứng mọi phiên bản tiện ích mở rộng trong
devcontainer.jsonđể vô hiệu hóa tự động cập nhật. - Danh sách cho phép ở cấp tổ chức bằng cách trỏ
VSCODE_GALLERY_SERVICE_URLđến một mirror nội bộ. - EDR với khả năng hiển thị quy trình IDE: Crowdstrike, SentinelOne hoặc Microsoft Defender for Endpoint với VS Code trong phạm vi.
- Quét bí mật mọi lần đẩy: trước commit và tại thời điểm đẩy, phía máy chủ.
- Giới hạn mỗi PAT cho một repo: không bao giờ sử dụng phạm vi
*. - Xuất bản đáng tin cậy OIDC: không có token npm hoặc registry sống lâu trong CI.
Lỗ hổng copy_file_range CVE của Linux tuần trước là một câu chuyện anh em: lớp khác, nhưng cùng bài học. Ranh giới tin cậy mà bạn quên mất chính là ranh giới sẽ cắn bạn.
Nếu bạn đang cân nhắc sử dụng tác nhân lập trình AI tiếp theo, hãy áp dụng cùng khung kiểm toán. Chúng có hồ sơ tin cậy giống như các tiện ích mở rộng. Phân tích các tác nhân lập trình AI tốt nhất 2026 của chúng tôi sẽ hướng dẫn qua các tác nhân nào xứng đáng với sự tin tưởng đó.
Câu hỏi thường gặp
GitHub có bị hack không?
Không, không theo nghĩa mà hầu hết các tiêu đề báo chí ám chỉ. Hạ tầng sản xuất của GitHub.com không bị xâm nhập. Một nhân viên GitHub đã cài đặt một tiện ích mở rộng VS Code độc hại trên máy trạm của họ, dẫn đến việc đánh cắp khoảng 3.800 kho mã nguồn nội bộ của GitHub. Mã nguồn của khách hàng, tài khoản khách hàng và các dịch vụ sản xuất của GitHub không bị ảnh hưởng.
Tiện ích mở rộng VS Code nào thực sự liên quan?
GitHub chưa chính thức xác nhận tên tiện ích mở rộng. Bằng chứng pháp y từ StepSecurity, Wiz và GHSA-c9j4-9m59-847w chỉ ra khả năng cao là Nx Console v18.95.0, được công bố vào ngày 18 tháng 5 lúc 12:36 UTC và bị gỡ bỏ 11 phút sau đó. Chúng tôi coi đây là "khả năng cao, chưa được xác nhận" cho đến khi GitHub gọi tên nó.
Nx Console có an toàn để sử dụng bây giờ không?
Phiên bản đã vá lỗi là 18.100.0. Nếu bạn có phiên bản v18.95.0 cũ hơn được cài đặt, hãy gỡ cài đặt ngay lập tức, chạy quét IoC trong phần phân loại của chúng tôi và chỉ cài đặt lại từ nhà xuất bản Nrwl chính thức ở phiên bản 18.100.0 trở lên. Xác minh tên miền nhà xuất bản trước khi cài đặt lại và ghim cứng phiên bản trong devcontainer.json.
Dữ liệu khách hàng có bị ảnh hưởng bởi vụ vi phạm GitHub không?
Không. Theo tuyên bố chính thức của GitHub qua Bleeping Computer, mã nguồn khách hàng, tài khoản khách hàng, token OAuth và dữ liệu sản xuất được lưu trữ trên GitHub không bị truy cập. Dữ liệu bị xâm phạm là mã nguồn nội bộ của GitHub từ thiết bị đầu cuối của nhân viên. Hãy coi đây là sự cố laptop của nhân viên, không phải là sự xâm nhập nền tảng.
Làm thế nào để tôi biết GitHub PAT của mình có bị đánh cắp không?
Bạn không thể biết chắc chắn. Giả định thận trọng: nếu bạn đã sử dụng bất kỳ GitHub PAT nào bên trong VS Code trong 14 ngày qua, hãy coi nó đã bị xâm phạm và xoay vòng nó. Kiểm tra nhật ký kiểm toán GitHub của bạn qua gh api /orgs/{ORG}/audit-log để tìm các sự kiện đẩy lạ trong khoảng thời gian UTC từ ngày 18-20 tháng 5, sau đó thu hồi và cấp lại token.
TeamPCP và UNC6780 là gì?
TeamPCP là một nhóm tác nhân đe dọa; UNC6780 là ID theo dõi được gán bởi các nhà cung cấp phản ứng sự cố. Họ đã công khai nhận trách nhiệm cho vụ vi phạm GitHub. Cùng nhóm này đã nhận trách nhiệm cho các vụ xâm phạm năm 2026 đối với Trivy, KICS, LiteLLM, TanStack và MistralAI, một mô hình nhắm mục tiêu chuỗi cung ứng VS Code và npm nhất quán.
Các tiện ích mở rộng VS Code có được sandbox không?
Không, không một cách có ý nghĩa. Các tiện ích mở rộng VS Code chạy trong quy trình Node.js của IDE với đầy đủ quyền hệ thống tệp và mạng của người dùng. Chúng có thể đọc mọi tệp trong thư mục home của bạn, bao gồm khóa SSH, ~/.aws/credentials, ~/.claude/settings.json và bộ nhớ quy trình qua /proc/*/mem trên Linux. Microsoft ghi lại mô hình bảo mật thời gian chạy và các giới hạn của nó trong tài liệu tiện ích mở rộng chính thức.
Điều này có ảnh hưởng đến GitHub Codespaces hoặc CI runners không?
Chưa có bằng chứng cho đến nay. Sự xâm phạm là trên máy trạm của một nhân viên, không phải hạ tầng do GitHub lưu trữ. Codespaces, GitHub Actions runners và hạ tầng CI hướng đến khách hàng không được báo cáo là bị ảnh hưởng. Chúng tôi sẽ cập nhật bài viết này nếu các IoC mới thay đổi bức tranh đó.
Kết luận
Ba điều cần ghi nhớ:
- GitHub.com không bị hack. Máy trạm VS Code của một nhân viên thì có. Bài học này áp dụng chung cho mọi nhà phát triển.
- Xoay vòng ngay bây giờ, khung kiểm toán mãi mãi. Quy trình 60 phút là bản vá; khung kiểm toán 5 câu hỏi là hệ miễn dịch.
- Đây không phải là sự cố đơn lẻ. Đó là nút số 6 trong làn sóng chuỗi cung ứng 9 tháng chưa có dấu hiệu chậm lại.
Cập nhật lần cuối: 20 tháng 5 năm 2026. Chúng tôi sẽ rà soát lại bài viết này vào ngày 27 tháng 5 năm 2026 với các IoC mới, khuyến cáo của nhà cung cấp và bất kỳ sự quy kết tiện ích mở rộng nào được GitHub xác nhận.
Nếu nhóm của bạn cần hỗ trợ kiểm toán bề mặt tiện ích mở rộng VS Code, vệ sinh PAT và token, hoặc xây dựng chính sách danh sách cho phép cấp tổ chức, nhận tư vấn miễn phí. Chúng tôi đã tập trung sâu vào bảo mật thiết bị đầu cuối của nhà phát triển kể từ vụ vi phạm Vercel vào tháng 4, và quy trình hành động trên là những gì chúng tôi thực hiện với khách hàng ngay từ ngày đầu tiên.