31 điểm bởi GN⁺ 2024-04-03 | 7 bình luận | Chia sẻ qua WhatsApp
  • 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

 
sagee 2024-04-09

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?

 
botplaysdice 2024-04-05

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

 
aer0700 2024-04-04

Có lẽ Lesser Collin đã phải trải qua nhiều khó khăn theo nhiều mặt...

 
xcutz 2024-04-03

Ừ, Arch Linux đã vá từ lâu rồi~ vào đi vào đi, ừ, backdoor out, latest Arch đỉnh của chóp~

 
tpdns90321 2024-04-07

pacman -Syu

 
sdkfile 2024-04-03

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/

 
GN⁺ 2024-04-03
Ý 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.

    • Ở phần "khởi đầu cuộc tấn công", Ubuntu và Debian có được nhắc đến nhưng Fedora lại bị thiếu, nên có thể bổ sung để hoàn thiện hơn.
    • Có vẻ áp lực social engineering nhắm vào Fedora đã bắt đầu từ tuần trước ngày 4 tháng 3 năm 2024.
  • Chỉ ra rằng mốc thời gian của Fedora đang bị thiếu.

    • Một người tên là "Jia Tan" đã cố gắng liên hệ trong khoảng từ ngày 27 tháng 2 đến 27 tháng 3 để đưa phiên bản xz mới vào Fedora 40 và 41.
  • Đư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.

    • Cho rằng đã đến lúc loại bỏ M4 và các shell script phức tạp.
  • 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.

    • Nhiều người, bao gồm cả lập trình viên, cần cân nhắc cẩn thận rủi ro và lợi ích thay vì luôn mặc định rằng nâng cấp là điều tốt.
  • Đề 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.

    • Định dạng địa chỉ email của Jigar Kumar và Dennis Ens khác nhau, và điều này không chứng minh cũng không bác bỏ việc hai người đó là cùng một người (sockpuppets).
  • 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.

    • Không thể tưởng tượng nổi vụ việc này hẳn gây sốc đến mức nào cho tác giả gốc của XZ, và mong rằng đây sẽ trở thành một ví dụ mạnh mẽ cho những người làm open source khác: đừng khuất phục trước áp lực từ người khác.
  • 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.

    • Đây là lời cảnh báo cho những người ủng hộ binary blob dành cho phần cứng không được hỗ trợ trong phần mềm open source.
    • Cho rằng hoặc phải có khả năng tái tạo ở dạng mã nguồn, hoặc không nên tồn tại.