Phần mềm độc hại đã cài các chỉ thị ẩn vào bên trong tệp .cursorrules và CLAUDE.md bằng cách sử dụng các ký tự Unicode không độ rộng – hoàn toàn vô hình trước mắt người nhưng lại đọc được bởi các công cụ như Cursor và Claude Code. Từ đó, các công cụ AI này có thể bị lừa thực hiện hành vi đánh cắp dữ liệu bí mật dưới vỏ bọc của một quy trình quét bảo mật thông thường .
Chiến dịch TrapDoor hoạt động đồng thời trên ba kho lưu trữ gói mã nguồn mở lớn, sử dụng các cơ chế kỹ thuật riêng biệt được thiết kế riêng cho từng nền tảng .
Phần lớn các gói độc hại xuất hiện trên npm, nơi chúng sử dụng các postinstall hook để tự động thực thi một công cụ thu thập thông tin xác thực ngay khi cài đặt. Tải trọng (payload) lõi, một đoạn script dài khoảng 1,149 dòng có tên trap-core.js, sẽ quét môi trường của nạn nhân một cách có hệ thống để tìm kiếm các bí mật và gửi chúng về cơ sở hạ tầng do kẻ tấn công kiểm soát .
Các gói Python được phát tán qua PyPI được thiết kế để tải về và thực thi các payload JavaScript từ xa tại thời điểm import. Khi đã chạy, chúng triển khai logic đánh cắp thông tin xác thực tương tự như các biến thể trên npm .
Trên kho lưu trữ chính của hệ sinh thái Rust, các gói độc hại đã lạm dụng các đoạn script build.rs để chạy mã đánh cắp thông tin xác thực trong quá trình build, đảm bảo việc thực thi diễn ra ngay cả trước khi chức năng dự kiến của gói được sử dụng .
Các gói này được ngụy trang thành các công cụ phát triển hợp pháp với những cái tên như token-usage-tracker, prompt-engineering-toolkit, và eth-wallet-security-auditor, khiến chúng trông có vẻ hữu ích đối với cộng đồng lập trình viên bị nhắm tới .
Payload của TrapDoor săn lùng một cách có hệ thống nhiều loại bí mật có giá trị cao. Theo phân tích của Socket, phần mềm độc hại này thu thập các tệp ví và kho lưu trữ khóa, khóa SSH riêng tư, mã thông báo truy cập cá nhân GitHub (GitHub personal access token), thông tin xác thực AWS, các biến môi trường chứa khóa API, thông tin xác thực được lưu trữ trên trình duyệt và các bí mật khác của lập trình viên từ máy bị xâm nhập .
Các mục tiêu ví cụ thể được đề cập trong báo cáo bao gồm dữ liệu tiện ích mở rộng trình duyệt của MetaMask và Phantom . Việc đánh cắp token GitHub đặc biệt đáng lo ngại vì nó có thể cho phép kẻ tấn công truy cập vào các kho lưu trữ mã nguồn riêng tư, tiêm mã độc vào đường ống CI/CD, hoặc di chuyển ngang (lateral movement) thông qua danh tính lập trình viên đã bị xâm phạm
.
Cuộc điều tra của Socket đã xác định các lập trình viên crypto, DeFi, Solana, Sui và AI là những mục tiêu chính . Quy ước đặt tên gói của chiến dịch trực tiếp nhắm đến các cộng đồng này, với các chủ đề xoay quanh kiểm tra bảo mật ví, giám sát giao dịch, phát triển hợp đồng thông minh và công cụ ngữ cảnh AI.
Kẻ tấn công hiểu rằng các lập trình viên trong những hệ sinh thái này thường xuyên nắm giữ khóa ví cho các tài sản lớn, có quyền truy cập vào cơ sở hạ tầng đám mây và có các quyền đặc quyền trên toàn bộ chuỗi công cụ phát triển – biến một máy trạm bị xâm phạm duy nhất thành cánh cổng dẫn đến những thiệt hại tài chính và vận hành to lớn .
Khía cạnh mới lạ nhất về mặt kỹ thuật của TrapDoor là việc khai thác ranh giới niềm tin vào trợ lý lập trình AI. Phần mềm độc hại cố gắng sửa đổi hoặc thả vào các tệp .cursorrules và CLAUDE.md – những tệp cấu hình mà lập trình viên sử dụng để đưa ra các chỉ thị cụ thể cho dự án tới các công cụ lập trình AI như Cursor và Claude Code .
Bên trong các tệp này, kẻ tấn công nhúng các chỉ thị ẩn bằng cách sử dụng các ký tự Unicode không độ rộng (chẳng hạn như U+200B, U+200C và U+FEFF). Những ký tự này vô hình trong các trình soạn thảo văn bản và trong quá trình xem xét mã (code review) tiêu chuẩn, vì vậy một lập trình viên sẽ không thấy gì khả nghi . Tuy nhiên, các trợ lý lập trình AI phân tích cú pháp toàn bộ văn bản Unicode và có thể bị lừa diễn giải các chỉ thị ẩn như những lệnh hợp pháp, có khả năng thực thi các quy trình thu thập thông tin xác thực, đánh cắp mã nguồn hoặc chạy các lệnh shell tùy ý mà lập trình viên không hề hay biết
.
Điều này tạo ra một kịch bản xâm nhập hai giai đoạn: gói phần mềm lây nhiễm vào môi trường của lập trình viên và đánh cắp thông tin xác thực ngay lập tức, trong khi tệp cấu hình AI bị nhiễm độc sẽ vũ khí hóa chính các công cụ AI của lập trình viên để khai thác thêm. Nghiên cứu liên quan đã xác nhận rằng các nền tảng tác nhân AI (AI agent) trong thực tế, bao gồm Claude Code và GitHub Copilot, có thể thực thi các lệnh tùy ý được nhúng dưới dạng chỉ thị Unicode vô hình trong các tệp kỹ năng của tác nhân .
Hạ tầng phát hiện của Socket đã xác định các bản phát hành của TrapDoor với thời gian phát hiện trung vị chỉ là 5 phút 27 giây, với lần phát hiện nhanh nhất được ghi nhận là 58 giây . Việc nhận dạng nhanh chóng này cho phép các nhà nghiên cứu kết nối các ấn phẩm gói tưởng chừng rời rạc thành một chiến dịch phối hợp duy nhất trong vòng 48 giờ kể từ lần tải lên đáng ngờ đầu tiên
.
Tất cả 34 gói được xác định trên ba kho lưu trữ đã được báo cáo cho các đơn vị duy trì kho lưu trữ tương ứng để gỡ bỏ .
Nếu bạn hoặc nhóm của bạn đã cài đặt bất kỳ gói nào trong số này, hãy hành động ngay lập tức:
Tạo lại cụm từ hạt giống (seed phrase) của ví tiền mã hóa và chuyển tiền đến các ví mới. Xoay vòng khóa AWS IAM, mã thông báo truy cập cá nhân GitHub, cặp khóa SSH và bất kỳ mã thông báo API nào được lưu trữ trong biến môi trường . Thu hồi mã thông báo OAuth cho các tích hợp CI/CD.
Chạy npm auditpip listCargo.lock để tìm bất kỳ gói độc hại nào trong số 34 gói đã được báo cáo . Tìm kiếm lịch sử tệp khóa trong git để tìm các tên gói này, xóa mọi kết quả trùng khớp và chạy cài đặt sạch.
Kiểm tra ~/.bashrc, ~/.zshrc, ~/.profile và ~/.config/fish/config.fish để tìm các bí danh (alias) hoặc lệnh curl và wget không được chú thích có thể thiết lập tính bền vững (persistence) .
Kiểm tra .git/hooks/ trong mọi kho lưu trữ để tìm các hook pre-commit, post-commit hoặc pre-push trái phép. Việc chiến dịch nhắm mục tiêu vào token GitHub khiến khả năng xâm phạm kho lưu trữ ở cấp độ tài khoản là một rủi ro thực sự .
Rà soát .github/workflows/ để tìm các tệp workflow không mong muốn, các bước curl hoặc wget đáng ngờ và các action của bên thứ ba trái phép. Kiểm tra nhật ký chạy Actions để tìm các yêu cầu mạng đi bất thường.
Tìm kiếm trong tất cả dự án các tệp .cursorrules và CLAUDE.md chứa ký tự Unicode không độ rộng. Lệnh grep để phát hiện các ký tự vô hình là:
grep -P '[\x{200B}-\x{200F}\x{2028}-\x{202F}\x{FEFF}]' .cursorrules CLAUDE.mdKiểm tra các công việc cron (crontab -l~/.config/systemd/user/) và LaunchAgents trên macOS (~/Library/LaunchAgents/) để tìm các mục nhập độc hại .
Tích hợp quét bảo mật chuỗi cung ứng vào đường ống CI của bạn để phát hiện các gói đáng ngờ trước khi cài đặt. Cân nhắc các công cụ phát hiện thời gian chạy (runtime detection) để giám sát việc truy cập vào các tệp ví, khóa SSH, thông tin xác thực đám mây và thư mục dữ liệu trình duyệt .
Comments
0 comments