Supply Chain Attack: Rủi ro từ thư viện mã nguồn mở
Tấn công chuỗi cung ứng qua thư viện mã nguồn mở xảy ra khi kẻ tấn công cài mã độc vào một gói thư viện mà phần mềm của bạn phụ thuộc, trực tiếp hoặc gián tiếp, để mã độc tự động đi vào sản phẩm khi bạn cài đặt hoặc cập nhật. Các kỹ thuật phổ biến gồm đặt tên gói na ná (typosquatting), nhầm lẫn phụ thuộc giữa kho nội bộ và kho công khai, chiếm tài khoản người duy trì, và nguy hiểm nhất là trở thành người duy trì đáng tin rồi cài cửa hậu như vụ xz utils năm 2024. Phòng thủ dựa trên việc biết rõ mình đang dùng gì, khóa phiên bản, xác minh nguồn gốc và giảm quyền của mã cài đặt.
Vì sao thư viện mã nguồn mở là mục tiêu hấp dẫn
- Phụ thuộc lồng nhau: một dự án JavaScript hay Python thông thường có thể kéo theo hàng trăm gói gián tiếp mà lập trình viên chưa từng nhìn thấy.
- Tin tưởng mặc định: lệnh cài gói chạy với quyền của lập trình viên hoặc máy chủ CI, thường có quyền truy cập mã nguồn, khóa API, thông tin triển khai.
- Người duy trì quá tải: nhiều thư viện quan trọng do một vài tình nguyện viên duy trì, ít nguồn lực bảo mật.
- Hiệu ứng nhân rộng: nhiễm một gói phổ biến là tiếp cận hàng nghìn tổ chức cùng lúc.
Các kỹ thuật tấn công chính
Typosquatting và gói giả mạo
Kẻ tấn công đăng gói có tên gần giống gói phổ biến, sai một chữ cái, đổi dấu gạch ngang thành gạch dưới, hoặc thêm hậu tố như "-utils". Lập trình viên gõ nhầm hoặc làm theo hướng dẫn sai sẽ cài phải mã độc, thường đánh cắp biến môi trường và khóa truy cập. Các kho như npm và PyPI liên tục phát hiện và gỡ hàng loạt gói kiểu này.
Nhầm lẫn phụ thuộc (dependency confusion)
Doanh nghiệp dùng gói nội bộ với tên riêng. Nếu kẻ tấn công đăng gói cùng tên lên kho công khai với số phiên bản cao hơn, một số cấu hình trình quản lý gói sẽ ưu tiên tải bản công khai. Kỹ thuật này được nhà nghiên cứu chứng minh năm 2021 trên hệ thống của nhiều công ty lớn.
Chiếm tài khoản người duy trì
Mật khẩu yếu, không có xác thực hai lớp, hoặc tên miền email của người duy trì hết hạn và bị đăng ký lại cho phép kẻ tấn công phát hành phiên bản độc hại của gói hợp pháp. Trường hợp gói ua-parser-js năm 2021 là ví dụ điển hình.
Chuyển giao quyền duy trì cho người lạ
Người duy trì mệt mỏi chấp nhận để người khác tiếp quản. Năm 2018, gói event-stream được chuyển giao cho một người mới, người này sau đó thêm phụ thuộc chứa mã nhắm vào ví tiền mã hóa.
Cửa hậu được cài kiên nhẫn: vụ xz utils
Năm 2024, một kỹ sư phát hiện tình cờ đăng nhập SSH chậm bất thường và lần ra cửa hậu trong thư viện nén xz utils, thành phần có mặt trong nhiều bản phân phối Linux. Kẻ đứng sau đã đóng góp cho dự án trong khoảng hai năm, dần được tin tưởng trở thành người đồng duy trì, rồi giấu mã độc trong tệp thử nghiệm và kịch bản build. Cửa hậu được phát hiện trước khi vào các bản phát hành ổn định của phần lớn bản phân phối, nhưng vụ việc cho thấy mức độ tinh vi và kiên nhẫn của tấn công chuỗi cung ứng.
Mã độc trong kịch bản cài đặt
Nhiều hệ sinh thái cho phép gói chạy kịch bản tự động khi cài. Đây là điểm kích hoạt mã độc phổ biến nhất vì chạy ngay cả khi thư viện chưa được dùng trong mã.
Lỗ hổng vô tình cũng là rủi ro chuỗi cung ứng
Không phải mọi rủi ro đều đến từ kẻ cố ý. Log4Shell năm 2021, lỗ hổng nghiêm trọng trong thư viện ghi nhật ký Log4j, cho thấy một thư viện phổ biến có lỗi có thể khiến vô số hệ thống bị khai thác, và nhiều tổ chức mất nhiều tuần chỉ để biết mình có dùng thư viện đó ở đâu.
Biện pháp phòng thủ cho đội phát triển
| Biện pháp | Chống được | Gợi ý thực hiện |
|---|---|---|
| Tệp khóa phiên bản (lockfile) và băm toàn vẹn | Tự động nhận phiên bản độc hại mới | Commit lockfile, dùng lệnh cài đặt nghiêm ngặt theo lockfile trong CI |
| Phạm vi tên gói, kho nội bộ ưu tiên | Nhầm lẫn phụ thuộc | Dùng scope cho gói nội bộ, cấu hình proxy kho gói |
| Công cụ phân tích thành phần phần mềm (SCA) | Lỗ hổng đã biết trong phụ thuộc | Quét trong CI, cảnh báo khi có lỗ hổng mới |
| Danh mục thành phần phần mềm (SBOM) | Không biết mình dùng gì | Sinh SBOM theo chuẩn SPDX hoặc CycloneDX mỗi bản build |
| Xác minh nguồn gốc và chữ ký | Gói bị giả mạo | Dùng tính năng provenance của kho gói, Sigstore, khung SLSA |
| Hạn chế kịch bản cài đặt | Mã độc chạy lúc cài | Tắt chạy script tự động khi có thể, cài trong môi trường cô lập |
| Đánh giá trước khi thêm phụ thuộc | Gói kém chất lượng, bị bỏ rơi | Xem mức độ hoạt động, số người duy trì, điểm OpenSSF Scorecard |
Cơ chế băm toàn vẹn trong lockfile dựa trên hàm băm mật mã; tham khảo bài hàm băm và vai trò xác thực dữ liệu.
Bảo vệ môi trường build
- Máy CI không giữ bí mật dài hạn; dùng thông tin xác thực ngắn hạn, phạm vi hẹp.
- Tách bước cài phụ thuộc khỏi bước có quyền triển khai.
- Giới hạn kết nối mạng ra ngoài của máy build.
- Bật xác thực hai lớp cho tài khoản kho mã và kho gói của tổ chức.
Mở rộng sang mô hình AI và container
Rủi ro tương tự đang xuất hiện với mô hình AI tải từ kho công khai và container image. Một số định dạng lưu mô hình có thể chạy mã khi nạp. Hãy áp dụng cùng nguyên tắc: nguồn tin cậy, xác minh, quét và cô lập. Xu hướng này được nhắc tới trong bài AI bị vũ khí hóa. Với góc nhìn rộng hơn về nhà cung cấp phần mềm thương mại, dịch vụ quản lý và phần cứng, xem bài tấn công chuỗi cung ứng: mối đe dọa tiềm ẩn.
Câu hỏi thường gặp
Dùng gói phổ biến nhiều lượt tải có an toàn không?
Phổ biến giúp lỗi dễ được phát hiện hơn, nhưng cũng khiến gói thành mục tiêu hấp dẫn. Cần khóa phiên bản, theo dõi cảnh báo và xem xét kỹ các bản cập nhật bất thường.
SBOM có giúp chặn tấn công không?
SBOM không chặn trực tiếp, nhưng giúp bạn biết ngay hệ thống nào dùng thành phần bị ảnh hưởng khi có cảnh báo, rút ngắn thời gian phản ứng.
Có nên tự sao chép mã thư viện vào dự án thay vì dùng trình quản lý gói?
Cách này giảm phụ thuộc vào kho công khai nhưng khiến bạn khó nhận bản vá bảo mật. Thường tốt hơn là dùng kho gói nội bộ có kiểm soát và khóa phiên bản.
Doanh nghiệp có thể hỗ trợ cộng đồng mã nguồn mở thế nào?
Tài trợ người duy trì các thư viện mình phụ thuộc, đóng góp kiểm thử và rà soát bảo mật, tham gia các sáng kiến như OpenSSF. Thư viện được duy trì tốt là lợi ích trực tiếp cho chính doanh nghiệp.
Bài liên quan

APT Group tấn công cơ sở hạ tầng quan trọng tại Đông Nam Á
Phân tích cách các nhóm APT nhắm vào hạ tầng quan trọng ở Đông Nam Á: lý do khu vực bị nhắm, chuỗi tấn công điển hình, đặc thù OT và ưu tiên phòng thủ.

Xu hướng an ninh mạng 2026: Trí tuệ nhân tạo bị vũ khí hóa
Phân tích xu hướng an ninh mạng 2026 khi AI bị vũ khí hóa: lừa đảo cá nhân hóa, deepfake, khai thác lỗ hổng nhanh, tấn công hệ thống AI và cách ứng phó.

Botnet và nguy cơ tấn công DDoS quy mô lớn vào hạ tầng IoT
Botnet IoT hình thành thế nào, bài học từ Mirai, các kiểu tấn công DDoS, hậu quả và cách bảo vệ camera, router gia đình cũng như hệ thống doanh nghiệp.

Cảnh báo chiến dịch Phishing mạo danh ngân hàng ngày càng tinh vi
Phân tích 6 thủ đoạn phishing mạo danh ngân hàng: SMS brandname giả, trang web sao chép, chuyển tiếp OTP, ứng dụng giả, mã QR, giọng AI và cách phòng vệ.