AlphaBay SecOps
Trang chủ › Tin Tức Bảo Mật

Supply Chain Attack: Rủi ro từ thư viện mã nguồn mở

Ban biên tập AlphaBay SecOps · · Cập nhật
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ápChống đượcGợi ý thực hiện
Tệp khóa phiên bản (lockfile) và băm toàn vẹnTự động nhận phiên bản độc hại mớiCommit 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ênNhầm lẫn phụ thuộcDù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ộcQué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ạoDùng tính năng provenance của kho gói, Sigstore, khung SLSA
Hạn chế kịch bản cài đặtMã độc chạy lúc càiTắ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ộcGói kém chất lượng, bị bỏ rơiXem 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