XZ Backdoor: Khi Supply Chain Attack Suýt Phá Sập SSH Toàn Cầu
Câu chuyện về backdoor được cài vào xz/liblzma suýt compromise hàng triệu SSH server, và bài học supply chain security cho developer.
Nguyễn Nhật Long
@nguyennhatlong1303
Tưởng tượng một ngày đẹp trời, bạn phát hiện ra rằng một thư viện nén dữ liệu thứ mà gần như mọi Linux distro đều dùng đã bị cài backdoor suốt nhiều tuần. Backdoor này không nhắm vào thư viện nén, mà nhắm thẳng vào SSH server của bạn. Đó chính xác là những gì đã xảy ra vào cuối tháng 3 năm 2024 với xz/liblzma, và nó suýt trở thành một trong những supply chain attack lớn nhất lịch sử.
Mình vẫn nhớ cái cảm giác khi đọc email của Andres Freund trên mailing list oss-security. Kiểu như: "Wait, cái gì? xz à? Cái tool nén mà mình dùng hàng ngày?". Và rồi càng đọc càng thấy rùng mình.
Chuyện gì đã xảy ra?
Ngày 29/03/2024, Andres Freund một PostgreSQL developer tại Microsoft phát hiện ra rằng xz phiên bản 5.6.0 và 5.6.1 chứa backdoor. Anh phát hiện ra điều này không phải nhờ audit code, mà vì... SSH login trên máy anh bỗng dưng chậm đi 500ms và sshd ngốn CPU bất thường.
Bạn đọc đúng rồi đó. Một trong những supply chain attack tinh vi nhất lịch sử open source bị phát hiện vì một developer để ý rằng SSH hơi lag.
Backdoor này hoạt động theo cách cực kỳ thông minh:
- liblzma (thư viện nén của xz) được link vào
sshdthông qua dependency chain:sshd → libsystemd → liblzma - Malicious code được giấu trong test files dưới dạng binary blob, không nằm trong source code chính
- Khi build, một script phức tạp sẽ extract và inject code vào quá trình compilation
- Backdoor hook vào RSA authentication của OpenSSH, cho phép attacker bypass authentication hoàn toàn
Điều đáng sợ là nếu không ai phát hiện, backdoor này sẽ lan vào các bản stable release của Debian, Ubuntu, Fedora, và hàng loạt distro khác. Hàng triệu server trên toàn thế giới sẽ bị compromise.
Kẻ tấn công là ai?
Đây là phần khiến mình rùng mình nhất. Kẻ tấn công không phải hacker ngồi đâu đó exploit lỗ hổng. Đó là một contributor tên "Jia Tan" (account GitHub: JiaT75) người đã kiên nhẫn đóng góp cho xz project suốt hơn 2 năm trước khi thực hiện tấn công.
Timeline đại khái như sau:
Đây là một long-game social engineering attack. Kẻ tấn công đã đầu tư hơn 2 năm để xây dựng trust, rồi mới ra tay. Theo kinh nghiệm của mình, đây là kiểu tấn công mà gần như không thể phòng chống bằng công cụ nó exploit con người, không phải code.
| Thời điểm | Hành động |
|---|---|
| 2021 | Jia Tan bắt đầu contribute các patch nhỏ, vô hại |
| 2022 | Các account "lạ" bắt đầu pressure maintainer gốc (Lasse Collin) để add thêm co-maintainer |
| 2023 | Jia Tan được trust đủ để có quyền commit và release |
| 02/2024 | xz 5.6.0 release với backdoor được cài trong test files |
| 03/2024 | xz 5.6.1 release, backdoor được tinh chỉnh thêm |
| 29/03/2024 | Andres Freund phát hiện và công bố |
Tại sao attack vector này lại nguy hiểm đến vậy?
Có mấy lý do khiến vụ này đặc biệt nghiêm trọng:
Thứ nhất, dependency chain quá sâu. Hầu hết sysadmin không biết rằng sshd trên systemd-based distro lại depend vào liblzma. Mình cá là nhiều bạn đọc đến đây cũng mới biết. Cái kiểu "A depend B, B depend C, C bị compromise → A chết" là nightmare của supply chain security.
Thứ hai, malicious code không nằm trong source. Nếu bạn đọc source code của xz trên GitHub, bạn sẽ không thấy gì bất thường. Backdoor được giấu trong file test data (dạng binary), và chỉ được activate bởi build script khi build tarball release. Tức là git clone và build từ source thì sạch, nhưng download tarball release thì dính. Cực kỳ tinh vi.
Thứ ba, nó bypass SSH authentication. Không phải kiểu DoS hay information leak. Đây là full remote code execution với quyền root (vì sshd chạy root). Attacker chỉ cần gửi một SSH connection đặc biệt là có shell trên máy bạn.
Ai bị ảnh hưởng?
May mắn là backdoor bị phát hiện sớm, trước khi lan vào các bản stable release chính thức. Tuy nhiên, nếu bạn đang chạy:
Nếu bạn đang dùng rolling release hoặc testing branch, hãy kiểm tra ngay: xz --version. Nếu thấy 5.6.0 hoặc 5.6.1, downgrade ngay lập tức.
| Distro | Ảnh hưởng? | Chi tiết |
|---|---|---|
| Fedora 40 (beta), Rawhide | **Có** | Đã ship xz 5.6.x |
| Debian Sid (unstable) | **Có** | Đã có trong repo |
| openSUSE Tumbleweed | **Có** | Rolling release, đã cập nhật |
| Ubuntu 24.04 (dev) | **Có thể** | Tùy thời điểm cài |
| Debian Stable, Ubuntu LTS | **Không** | Vẫn dùng xz cũ |
| RHEL, CentOS | **Không** | Chưa cập nhật |
| Arch Linux | **Một phần** | Có xz 5.6.x nhưng sshd không link liblzma theo cách bị exploit |
Bài học cho developer chúng ta
Điều mình thấy đáng suy nghĩ nhất từ vụ này không phải là kỹ thuật tấn công, mà là những vấn đề mang tính hệ thống của open source.
Open source maintainer burnout là attack vector thực sự
Lasse Collin maintainer duy nhất của xz đã công khai nói về việc bị burnout, không có thời gian maintain project. Đó chính là lúc "Jia Tan" xuất hiện và "giúp đỡ". Khi một critical infrastructure project chỉ có 1 maintainer không được trả lương, đó là lỗ hổng bảo mật không phải lỗ hổng code, mà lỗ hổng con người.
Trust nhưng phải verify
Việc review code từ trusted contributor thường bị lỏng hơn. Đây là điều tự nhiên nhưng nguy hiểm. Mình nghĩ các project cần có policy: mọi commit ảnh hưởng đến build process hoặc binary test data đều cần review kỹ, bất kể ai commit.
Reproducible builds quan trọng hơn bạn nghĩ
Nếu tất cả distro đều dùng reproducible builds (build từ source, verify output giống nhau), thì backdoor kiểu này sẽ khó thành công hơn rất nhiều. Tarball release khác với git source là một red flag mà hệ thống nên tự detect được.
Monitor hành vi, không chỉ scan code
Andres Freund phát hiện backdoor nhờ quan sát hành vi bất thường (SSH chậm 500ms). Không tool nào scan ra được backdoor này vì nó không nằm trong source theo cách truyền thống. Đôi khi, performance monitoring lại là security tool tốt nhất.
Bạn nên làm gì ngay bây giờ?
- Kiểm tra version xz trên tất cả server:
xz --version - Nếu đang dùng 5.6.0 hoặc 5.6.1: downgrade về 5.4.x ngay
- Nếu dùng rolling release distro: cập nhật các distro đã revert về version an toàn
- Review lại dependency chain của các service critical (đặc biệt sshd)
- Cân nhắc dùng SBOM (Software Bill of Materials) cho infrastructure của bạn
Vụ xz backdoor là lời nhắc nhở rằng supply chain security không phải chuyện của "ai đó". Nó là chuyện của mỗi developer, mỗi sysadmin, mỗi người đang apt install hay dnf update hàng ngày. Và đôi khi, thứ cứu cả internet không phải là một tool fancy hay AI gì cả mà là một developer đủ tò mò để hỏi: "Sao SSH hôm nay chậm thế nhỉ?"
Nguyễn Nhật Long
@nguyennhatlong1303Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.
Thấy hay? Chia sẻ cho bạn bè!