GitHub siết chặt quy định npm sau khi phát hiện lỗ hổng cho phép chiếm quyền hơn 1.500 gói phần mềm
GitHub vừa cập nhật cơ chế 'trusted publishing' trên npm nhằm ngăn chặn các cuộc tấn công chuỗi cung ứng, sau khi các nhà nghiên cứu phát hiện lỗ hổng cho phép kẻ gian chiếm quyền kiểm soát các gói...
- Giọng nữ Bắc
GitHub đã triển khai biện pháp bảo mật mới cho cơ chế trusted publishing trên npm. Cụ thể, các cấu hình xác thực chưa được sử dụng sẽ tự động hết hạn sau 48 giờ kể từ khi tạo. Thay đổi này được đưa ra sau khi các nhà nghiên cứu từ Bloom Security phát hiện một lỗ hổng nghiêm trọng, cho phép kẻ tấn công đẩy các phiên bản mới của gói phần mềm từ người dùng khác mà không cần quyền truy cập vào tài khoản của họ.
Table Of Content
Lỗ hổng ‘SlugFest’ là gì?
Vấn đề nằm ở cách npm xác định danh tính của một repository thông qua ‘slug’ (định dạng owner/repository). Trước khi một phiên bản được xuất bản thành công lần đầu tiên, hệ thống xác thực dựa trên tên thay vì ID định danh vĩnh viễn của GitHub. Điều này tạo ra một kẽ hở: nếu một maintainer đổi tên hoặc chuyển nhượng repository, kẻ tấn công có thể đăng ký lại tên (slug) cũ đó để kế thừa quyền tin cậy của cấu hình trusted publisher cũ.
Kỹ thuật tấn công này, được đặt tên là SlugFest, cho phép kẻ xấu chiếm quyền kiểm soát gói phần mềm, đẩy mã độc dưới danh nghĩa một gói hợp lệ, từ đó tận dụng uy tín và số lượt tải xuống sẵn có để thực hiện các cuộc tấn công chuỗi cung ứng quy mô lớn.
Tác động và rủi ro
Theo Bloom Security, có hơn 1.500 gói phần mềm dễ bị tổn thương đã được xác định, với tổng số lượt tải xuống lên tới hơn 10 triệu. Đặc biệt, sự phổ biến của các tác nhân AI trong quy trình phát triển càng làm tăng nguy cơ, khi các AI này thường tự động cập nhật phiên bản mới nhất mà không kiểm tra nguồn gốc, vô tình kéo mã độc vào dự án.
Các biện pháp bảo vệ từ GitHub
Để khắc phục, GitHub đã áp dụng các thay đổi sau:
- Cấu hình trusted publishing phải thực hiện lần xuất bản thành công đầu tiên trong vòng 48 giờ để được xác thực và gắn kết với ID vĩnh viễn của repository.
- Việc thay đổi repository hoặc danh tính dự án sẽ yêu cầu một quy trình xác thực mới.
- Từ chối các token trusted publishing từ các sự kiện
issue_commentcủa GitHub Actions.
Khuyến nghị cho nhà phát triển
Để đảm bảo an toàn, các maintainer gói npm nên thực hiện:
- Kiểm tra lại các cấu hình trusted publisher và đảm bảo slug được liệt kê vẫn thuộc quyền kiểm soát của mình.
- Nếu repository đã đổi tên hoặc chuyển nhượng, hãy xóa cấu hình cũ và thiết lập lại từ đầu.
- Thường xuyên giám sát các sự kiện xuất bản gói (npm publish).
- Xóa các cấu hình tin cậy ngay khi repository bị xóa, đổi tên hoặc chuyển nhượng.
Đây không phải lần đầu tiên các lỗ hổng chuỗi cung ứng dạng ‘hồi sinh’ được phát hiện. Trước đó, Bloom Security cũng từng cảnh báo về kỹ thuật Extension Resurrection trên VS Code Marketplace và Open VSX, cho phép kẻ tấn công chiếm đoạt các không gian tên (namespace) bị bỏ trống trong các gói mở rộng.
Nguồn tham khảo: The Hacker News



No Comment! Be the first one.