6 điểm bởi darjeeling 2026-04-23 | 5 bình luận | Chia sẻ qua WhatsApp

Nhóm nghiên cứu bảo mật JFrog đã phát hiện phiên bản 2026.4.0 của @bitwarden/cli trên npm đã bị chiếm quyền. Gói này vẫn giữ nguyên metadata và branding chính thức của Bitwarden, nhưng chỉ thay thế script preinstall và điểm vào nhị phân bw bằng một trình tải độc hại (bw_setup.js).

Cách thức hoạt động

Khi cài đặt, trình tải trước tiên tải runtime Bun từ GitHub, sau đó thực thi payload JavaScript bị làm rối (bw1.js). Việc dùng Bun thay vì Node.js tự thân đã là một chiến lược né tránh phát hiện.

Payload này thu thập diện rộng thông tin xác thực trong máy trạm của nhà phát triển và môi trường CI thông qua ba bộ thu thập.

  • Bộ thu thập hệ thống tệp: khóa SSH (~/.ssh/), thông tin xác thực Git (.git-credentials), token npm (~/.npmrc), .env, thông tin xác thực AWS (~/.aws/credentials), thông tin xác thực GCP (~/.config/gcloud/credentials.db) v.v.
  • Bộ thu thập shell/môi trường: chạy lệnh gh auth token, quét process.env để dò khớp mẫu token GitHub·npm
  • Bộ thu thập GitHub Actions: chèn workflow vào các repo mà token có quyền truy cập để trích xuất cả secret của Actions
Quảng cáo

Điểm đặc biệt đáng chú ý là các công cụ AI và tệp cấu hình MCP như ~/.claude.json, ~/.claude/mcp.json, ~/.kiro/settings/mcp.json cũng nằm trong phạm vi thu thập.

Đường rò rỉ kép

Dữ liệu bị đánh cắp được nén bằng gzip rồi truyền đi sau khi qua mã hóa lai AES-256-GCM + RSA-OAEP.

  • Đường thứ nhất: HTTPS POST tới audit.checkmarx.cx/v1/telemetry (ngụy trang như một dịch vụ bảo mật hợp pháp)
  • Đường thứ hai (lạm dụng GitHub): nếu đường thứ nhất thất bại, mã độc sẽ tìm và trích xuất một PAT được mã hóa Base64 hai lớp từ message commit GitHub bằng marker LongLiveTheResistanceAgainstMachines. Nó cũng khôi phục động miền rò rỉ thay thế thông qua marker beautifulcastle và xác minh chữ ký RSA. Cuối cùng, nó tạo một repo mới trong tài khoản GitHub của nạn nhân và tải JSON đã mã hóa lên thư mục results/.
Quảng cáo

Cách nhận diện nhiễm mã độc

Metadata Bitwarden CLI hợp lệ được nhúng bên trong là 2026.3.0, nhưng thư mục gốc của gói lại ghi 2026.4.0, cho thấy đây không phải build từ pipeline chính thức mà là một lớp độc hại được phủ thêm từ bên ngoài.

Cách ứng phó

Nếu có lịch sử cài đặt phiên bản này, cần xem như toàn bộ thông tin xác thực trên host đó đã bị lộ.

  • npm uninstall -g @bitwarden/cli và dọn cache
  • Luân chuyển toàn bộ GitHub PAT, token npm, AWS access key
  • Kiểm tra audit log của Azure Key Vault / GCP Secret Manager
  • Rà soát lịch sử thực thi trái phép trong workflow GitHub Actions
  • Chặn mạng tới audit.checkmarx.cx94.154.172.43
  • Kiểm tra khả năng lộ dữ liệu nhạy cảm trong các tệp cấu hình công cụ AI (Claude, Kiro v.v.)

Đây là một cuộc tấn công tinh vi, vượt xa kiểu stealer thông tin xác thực npm thông thường, khi kết hợp xâm phạm chuỗi cung ứng + đánh cắp secret nhiều tầng + vũ khí hóa hạ tầng GitHub.

5 bình luận

 
onlyforyou 2026-04-30

Hãy thử dùng Enpass, tôi khuyên bạn.

 
savvykang 2026-04-24

THE MOST TRUSTED PASSWORD MANAGER
Defend against hackers and data breaches

Tôi đã hủy dùng vì tagline trên trang chủ công ty này trông thật vô nghĩa

 
t7vonn 2026-04-24

Rùng mình thật;; ngày nào cũng dùng mà may là bên Homebrew không bị đánh cắp.
Haizz… chắc phải tạm thời gỡ hết mọi thư viện npm global hoặc tắt pre/postinstall thôi

 
lamanus 2026-04-24

Homebrew đã chuyển sang mặc định vô hiệu hóa postinstall và chỉ cho phép ngoại lệ. Không biết nên gọi là may mắn hay không, nhưng vì tôi cập nhật theo thẻ repo thay vì nhìn npm nên đã tránh được bản phát hành lần này. Gần đây còn có thêm thời gian chờ của npm, nên có lẽ dù có theo dõi npm thì nó cũng đã không được phát hành.

 
sanghunka 2026-04-23

Wow, vụ này khá sốc đấy.