- Trong hơn 2 năm, kẻ tấn công sử dụng tên "Jia Tan" đã hoạt động như một người đóng góp tận tâm và hiệu quả cho thư viện nén xz, cuối cùng được cấp quyền commit và quyền quản trị.
- Sử dụng các quyền đó, kẻ này đã cài một backdoor cực kỳ tinh vi và được che giấu cẩn thận vào
liblzma, một phần của xz, đồng thời cũng là phụ thuộc của OpenSSH sshd trên Debian, Ubuntu, Fedora và các hệ Linux khác dựa trên systemd.
- Backdoor này theo dõi việc bắt đầu phiên SSH để chờ kẻ tấn công gửi các lệnh ẩn, từ đó cho phép thực thi lệnh tùy ý trên hệ thống mục tiêu mà không cần đăng nhập. Đây là lỗ hổng thực thi mã từ xa trên mục tiêu chưa được xác thực.
- Vụ tấn công này được công khai vào ngày 2024-03-29, và có vẻ là cuộc tấn công chuỗi cung ứng nghiêm trọng đầu tiên nhằm vào phần mềm mã nguồn mở được sử dụng rộng rãi.
- Đây là một sự kiện mang tính bước ngoặt đối với an ninh chuỗi cung ứng mã nguồn mở.
- Bài viết này là dòng thời gian chi tiết được tổng hợp về khía cạnh social engineering của vụ tấn công này, vốn dường như bắt đầu từ cuối năm 2021.
Mở đầu
- Trong giai đoạn 2005-2008, Lasse Collin cùng sự hỗ trợ của những người khác đã thiết kế định dạng tệp
.xz bằng thuật toán nén LZMA, có thể nén tệp xuống khoảng 70% so với gzip.
- Theo thời gian, định dạng này được sử dụng rộng rãi để nén các tệp tar, ảnh nhân Linux và nhiều thứ khác.
Sự xuất hiện của Jia Tan và các “người ủng hộ”
- 2021-10-29: Jia Tan gửi bản vá vô hại đầu tiên lên mailing list xz-devel.
- 2021-11-29: Jia Tan gửi bản vá vô hại thứ hai.
- 2022-04-19: Jia Tan gửi thêm một bản vá vô hại khác.
- 2022-04-22: "Jigar Kumar" phàn nàn rằng các bản vá của Jia Tan vẫn chưa được merge.
- 2022-05-19: "Dennis Ens" hỏi về tình trạng bảo trì của XZ for Java.
- 2022-05-19: Lasse Collin xin lỗi vì phản hồi chậm, và trả lời rằng "Jia Tan đang hỗ trợ XZ Utils ngoài mailing list, và ít nhất có thể sẽ đảm nhận vai trò lớn hơn trong XZ Utils".
- 2022-05-27: Jigar Kumar gửi email gây áp lực trong thread bản vá.
- 2022-06-07: Jigar Kumar gửi email gây áp lực trong thread Java.
- 2022-06-08: Lasse Collin trả lời rằng ông không mất hứng thú, nhưng bị hạn chế do các vấn đề sức khỏe tâm thần.
- 2022-06-10: Lasse Collin merge commit đầu tiên do Jia Tan viết.
- 2022-06-14: Jugar Kumar gửi thêm một email gây áp lực khác.
- 2022-06-21: Dennis Ens gửi email gây áp lực, đề xuất chuyển việc bảo trì cho người khác.
- 2022-06-22: Jigar Kumar gửi email gây áp lực trong thread bản vá C.
- 2022-06-29: Lasse Collin trả lời, ám chỉ rằng "Jia Tan có thể đảm nhận vai trò lớn hơn trong dự án".
Jia Tan trở thành maintainer
- Có vẻ như Lasse bắt đầu hợp tác chặt chẽ hơn với Jia Tan. Jigar Kumar và Dennis Ens rất có thể là các nhân vật giả mạo.
- 2022-09-27: Jia Tan cung cấp bản tổng kết phát hành 5.4.0.
- 2022-11-30: Lasse Collin đổi email báo cáo lỗi từ địa chỉ cá nhân sang một bí danh được chia sẻ với Jia Tan.
- 2022-12-30: Jia Tan trực tiếp merge commit đầu tiên vào kho lưu trữ xz.
- 2023-01-11: Lasse Collin gắn thẻ và build bản phát hành cuối cùng của mình, v5.4.1.
- 2023-03-18: Jia Tan gắn thẻ và build bản phát hành đầu tiên của mình, v5.4.2.
- 2023-03-20: Jia Tan cập nhật cấu hình Google oss-fuzz để lỗi được gửi cho mình.
- 2023-06-22: Hans Jansen gửi cặp bản vá dùng tính năng "GNU indirect function"; Lasse Collin làm lại chúng và Jia Tan merge.
- 2023-07-07: Jia Tan vô hiệu hóa hỗ trợ ifunc trong quá trình build oss-fuzz.
- 2024-01-19: Jia Tan chuyển trang web sang GitHub Pages và kiểm soát trang web XZ Utils.
Cuộc tấn công bắt đầu
- 2024-02-23: Jia Tan merge mã nhị phân backdoor được giấu trong tệp đầu vào kiểm thử.
- 2024-02-24: Jia Tan gắn thẻ v5.6.0 và phát hành gói phân phối
xz-5.6.0.tar.gz có chứa build-to-host.m4 độc hại.
- 2024-02-24: Gentoo bắt đầu gặp crash với 5.6.0.
- 2024-02-26: Debian thêm
xz-utils 5.6.0-0.1 vào unstable.
- 2024-02-28: Debian thêm
xz-utils 5.6.0-0.2 vào unstable.
- 2024-02-29: Trên GitHub,
@teknoraver gửi pull request để ngăn liblzma liên kết với libsystemd.
- 2024-02-28: Jia Tan thêm một lỗi đánh máy rất tinh vi vào chương trình C dùng để kiểm tra hỗ trợ Landlock, làm hỏng việc phát hiện Landlock trong script
configure.
- 2024-03-04: Các bản phân phối RedHat bắt đầu gặp lỗi Valgrind tại
_get_cpuid của liblzma.
- 2024-03-05: PR
libsystemd được merge, và liblzma bị loại bỏ.
- 2024-03-05: Debian thêm
xz-utils 5.6.0-0.2 vào testing.
- 2024-03-05: Jia Tan commit bản sửa lỗi ifunc.
- 2024-03-08: Jia Tan commit bản sửa cho Valgrind.
- 2024-03-09: Jia Tan commit bản cập nhật tệp backdoor.
- 2024-03-09: Jia Tan gắn thẻ v5.6.1 và phát hành bản phân phối xz 5.6.1.
- 2024-03-20: Lasse Collin gửi lên LKML một bộ bản vá bổ sung mình và Jia Tan làm maintainer cho mã nén xz của kernel.
- 2024-03-25: Hans Jansen mở bug Debian để cập nhật
xz-utils lên 5.6.1.
- 2024-03-28: Jia Tan mở bug Ubuntu để cập nhật
xz-utils từ Debian lên 5.6.1.
Phát hiện cuộc tấn công
- 2024-03-28: Andres Freund phát hiện lỗi và thông báo riêng cho Debian cùng distros@openwall. RedHat gán mã CVE-2024-3094.
- 2024-03-28: Debian rollback 5.6.1 và đưa vào
5.6.1+really5.4.5-1.
- 2024-03-29: Andres Freund đăng cảnh báo backdoor lên danh sách công khai oss-security@openwall, nói rằng ông đã phát hiện ra nó "trong vài tuần qua".
- 2024-03-29: RedHat công bố rằng xz có chứa backdoor đã được phân phối trong Fedora Rawhide và Fedora Linux 40 beta.
- 2024-03-30: Debian dừng build và build lại các máy build bằng Debian stable.
Góc nhìn của GN⁺
- Sự kiện này sẽ trở thành một bước ngoặt quan trọng đối với các cuộc tấn công chuỗi cung ứng vào phần mềm mã nguồn mở. Lý do là bên đồng mưu đã dùng cách tiếp cận social engineering kéo dài để giành được niềm tin và quyền truy cập, rồi âm thầm cài backdoor vào một thư viện lõi được sử dụng rộng rãi.
- Cần xem xét lại quy trình quản trị và chuyển giao quyền hạn trong các dự án mã nguồn mở. Có thể cân nhắc mô hình quản trị phân tán để dự án không bị chi phối bởi hoàn cảnh cá nhân của maintainer cốt lõi.
- Việc kiểm toán bảo mật và code review đối với các dự án mã nguồn mở quan trọng sẽ càng trở nên quan trọng hơn. Cũng cần các công cụ kiểm tra tự động để phát hiện thay đổi đáng ngờ và ngăn việc lạm dụng quyền hạn, ví dụ như cảnh báo khi có thêm dữ liệu nhị phân.
- Cần xây dựng các biện pháp kỹ thuật và thể chế để có thể sàng lọc người đóng góp độc hại và chặn sớm các cuộc tấn công, trong khi vẫn không làm suy giảm ưu điểm của mô hình mã nguồn mở là phát triển công khai và ai cũng có thể đóng góp.
- Các dự án mã nguồn mở sử dụng ngôn ngữ hay công cụ kém an toàn về bảo mật sẽ càng rủi ro hơn. Bên cạnh nỗ lực nâng cao bảo mật theo nhiều hướng như an toàn bộ nhớ, phân tích tĩnh, Fuzzing, cũng sẽ cần chuyển sang các công cụ hiện đại hơn.
- Sự chú ý sẽ đổ dồn vào các kết quả phân tích chi tiết như điều kiện kích hoạt ẩn của backdoor, đường phát tán và phạm vi ảnh hưởng. Từ đó có thể rút ra những hiểu biết để phòng thủ trước các cuộc tấn công tương tự trong tương lai.
7 bình luận
Vụ việc này khiến tôi thấy lo là...
Liệu có thể xảy ra chuyện hack PC của lập trình viên mã nguồn mở, hoặc bắt cóc/giam giữ họ, hoặc mua chuộc bằng tiền để cài mã độc hay không...
Nghĩ đến chuyện tiền bạc lại thấy băn khoăn không biết các lập trình viên mã nguồn mở có đang sống ổn không nữa?
Tôi làm bên mảng bảo mật, nên mỗi khi review code mà tìm ra bug thì lại có mấy câu đùa kiểu: “Ông vào công ty này từ 5 năm trước chỉ để cài đoạn code này vào đây à?” haha
Có lẽ Lesser Collin đã phải trải qua nhiều khó khăn theo nhiều mặt...
Ừ, Arch Linux đã vá từ lâu rồi~ vào đi vào đi, ừ, backdoor out, latest Arch đỉnh của chóp~
pacman -Syu
Lasse Collin đã đăng một bài viết tổng hợp lại sự việc này
https://tukaani.org/xz-backdoor/
Ý kiến trên Hacker News
Đây là bản tóm tắt rất xuất sắc, tập hợp mọi liên kết vào một chỗ, là tài liệu hoàn hảo cho những ai muốn tìm hiểu cách một cuộc tấn công social engineering thực sự diễn ra.
Chỉ ra rằng mốc thời gian của Fedora đang bị thiếu.
Đưa ra ý kiến rằng không nên tiếp tục chấp nhận các đoạn mã khó hiểu trong hệ thống nữa.
Có vẻ đây có thể là một trong những hệ quả tích cực dẫn đến thái độ thận trọng hơn đối với việc nâng cấp.
Đề xuất rằng trong cộng đồng FOSS có thể sẽ xuất hiện sự thay đổi văn hóa theo hướng cấm có hệ thống những người dùng thô lỗ, hoặc nâng cao nhận thức cộng đồng để phản ứng mạnh tay hơn với hành vi thiếu lịch sự.
Chỉ ra rằng nhận xét về định dạng địa chỉ email là không chính xác.
Bày tỏ lo ngại về việc áp lực xã hội có thể dễ dàng khiến con người từ bỏ quyền kiểm soát đến mức nào.
Với tư cách là một maintainer, nhấn mạnh rằng người đóng góp hay người dùng càng đòi hỏi dai dẳng thì khả năng yêu cầu đó được chấp nhận lại càng thấp.
Trích dẫn ý kiến của Joe Cooper và chia sẻ quan điểm của ông về áp lực nhắm vào các maintainer của dự án.
Giải thích rằng mã nhị phân backdoor được ẩn rất kỹ bên trong các tệp đầu vào kiểm thử dạng nhị phân, và vì các tệp này phần lớn được tạo thủ công bằng trình sửa hex nên chính bản thân các tệp đó là "mã nguồn" tốt nhất.