GitHub bổ sung thời gian chờ 3 ngày cho Dependabot để hạn chế gói phần mềm độc hại

GitHub đã công bố cơ chế thời gian chờ (cooldown) mới trong Dependabot, cho phép công cụ này đợi ít nhất ba ngày sau khi một phiên bản phần mềm được phát hành trước khi mở một pull request. Cơ chế này nhằm hạn chế việc dự án tự động cập nhật phải các gói phần mềm độc hại trước khi chúng bị phát hiện và gỡ bỏ khỏi các kho lưu trữ.
GitHub Dependabot Cooldown
GitHub bổ sung cơ chế trì hoãn cập nhật để tăng cường bảo mật chuỗi cung ứng.

GitHub đã công bố một cơ chế thời gian chờ (cooldown) mới trong Dependabot, cho phép công cụ này đợi ít nhất ba ngày sau khi một bản phát hành được công bố trước khi mở một pull request.

"Tùy chọn cấu hình cooldown trong file dependabot.yml vẫn kiểm soát hành vi này, vì vậy bạn có thể chọn một tham số cooldown khác phù hợp với dự án của mình," công ty con thuộc sở hữu của Microsoft cho biết.

Theo GitHub, thời gian chờ mặc định ba ngày chỉ áp dụng cho các bản cập nhật phiên bản (version updates), vốn được thiết kế để giữ cho các phụ thuộc phần mềm luôn được cập nhật. Các bản cập nhật bảo mật (security updates) sẽ tiếp tục được đẩy ngay lập tức, cho phép Dependabot đưa ra cảnh báo và mở pull request để chuyển dự án sang phiên bản đã được vá lỗi.

Ngăn chặn mã độc trong chuỗi cung ứng

Với bản cập nhật này, ý tưởng là để xử lý các kịch bản mà một kẻ tấn công tìm cách đẩy một phiên bản độc hại của một gói phần mềm phổ biến, sau đó nhanh chóng được các dự án hạ nguồn (downstream) tải về trước khi phiên bản đó bị xóa khỏi kho lưu trữ (registry). Mặc dù các gói phần mềm chứa mã độc (trojanized packages) như vậy thường có tuổi thọ ngắn, nhưng khoảng thời gian chúng tồn tại là đủ để mở rộng phạm vi ảnh hưởng của một cuộc tấn công chuỗi cung ứng (supply chain attack).

GitHub cho biết họ chọn con số ba ngày làm mặc định vì coi đây là khoảng thời gian lý tưởng (vùng Goldilocks). "Ba ngày làm mặc định giúp cân bằng hai mục tiêu: nó giúp bạn vượt qua khoảng thời gian mà hầu hết các cuộc tấn công này diễn ra, và nó không giữ các phụ thuộc của bạn lại lâu hơn mức cần thiết," GitHub cho biết thêm.

Một lớp phòng thủ bổ sung

Đồng thời, nền tảng phát triển phần mềm này nhấn mạnh rằng việc kiểm soát này chỉ nên là một lớp phòng thủ trong số nhiều lớp khác, bao gồm việc ghim các phụ thuộc (pinning dependencies) bằng lockfiles, vô hiệu hóa các install scripts trong CI, giới hạn phạm vi của tokens trong build pipelines và xem xét kỹ các bản cập nhật trước khi merge.

"Cơ chế cooldown được xây dựng cho một mô hình cụ thể: một phiên bản độc hại được xuất bản, lan truyền và bị phát hiện nhanh chóng," GitHub chia sẻ. "Nó ít có tác dụng đối với các cuộc tấn công dài hơi, bao gồm các backdoor được cài đặt trong các bản phát hành và để nằm im, hành động phá hoại của người duy trì (maintainer), hoặc một hệ thống build bị xâm nhập."

Đáng chú ý là các biện pháp kiểm soát cooldown tương tự đã được công bố trên nhiều hệ sinh thái gói phần mềm khác nhau trong năm qua, bao gồm Microsoft Visual Studio Code (VS Code), Ruby, Bun, npm, pnpm và Yarn.

Phòng thủ dựa trên thời gian của GitHub được đưa ra khi những người duy trì Python Package Index (PyPI) thông báo kế hoạch ngăn chặn các maintainer thêm tệp mới vào một bản phát hành gói sau khi đã trôi qua 14 ngày kể từ khi công bố.

"Biện pháp này nhằm ngăn chặn những kẻ tấn công chiếm đoạt publishing tokens hoặc quy trình làm việc (workflows) để đầu độc các bản phát hành cũ, vốn đã được tin cậy," PyPI lưu ý.