Đầu tháng 4 năm 2024, một kỹ sư Microsoft đã khiến giới an ninh mạng bất ngờ khi tiết lộ về một lỗ hổng được cài đặt có chủ ý vào XZ Utils. Đây là một tiện ích nén dữ liệu mã nguồn mở rất phổ biến, có mặt trên hầu hết các bản cài đặt Linux và các hệ điều hành tương tự Unix khác.

Kẻ hoặc nhóm thực hiện điều này có khả năng đã dành nhiều năm để cài cắm mã độc này.

Chỉ một chút nữa thì bản cập nhật chứa lỗ hổng đã được đưa vào Debian và Red Hat, hai bản phân phối Linux lớn nhất, nếu không nhờ con mắt tinh tường của một kỹ sư phần mềm.

"Đây có thể là cuộc tấn công chuỗi cung ứng (supply chain attack) được thực hiện tinh vi nhất mà chúng ta từng biết. Nó là một kịch bản ác mộng. Một mã độc nguy hiểm từ những kẻ vừa có năng lực vừa có quyền sửa đổi một phần mềm được sử dụng rộng rãi", kỹ sư phần mềm và mật mã Filippo Valsorda nhận định về lỗ hổng này.

XZ Utils là gì?

XZ Utils cung cấp khả năng nén dữ liệu không hao hụt (lossless data compression) trên hầu hết các hệ điều hành tương tự Unix. Công cụ này đóng vai trò quan trọng trong việc nén và giải nén dữ liệu trong suốt quá trình hoạt động của hệ thống. Nó được cài đặt trên hầu như tất cả hệ thống Linux trên toàn thế giới.

Chuyện gì đã xảy ra?

Andres Freund là một kỹ sư làm việc tại Microsoft. Gần đây anh nhận thấy hệ thống Debian của anh bị chậm bất thường khi sử dụng SSH - giao thức phổ biến nhất để đăng nhập thiết bị từ xa qua Internet.

Cụ thể, việc đăng nhập SSH sử dụng quá nhiều CPU  và tạo ra lỗi với Valgrind, một công cụ theo dõi bộ nhớ máy tính. Nhờ cả may mắn và con mắt tinh tường của mình, Freund đã phát hiện ra nguồn gốc của việc này là do các bản cập nhật gần đây của phần mềm nén dữ liệu XZ Utils.

Vào thứ Sáu tuần trước, Freund đã công bố trên Danh sách An ninh Nguồn mở (Open Source Security List) rằng trong những bản cập nhật trên có ai đó đã cố tình cài backdoor vào phần mềm này.

Thật khó để có thể nói ngắn gọn về độ phức tạp của các thủ thuật cũng như cách thức hoạt động của backdoor này. Thomas Roccia, một nhà nghiên cứu tại Microsoft, đã vẽ một đồ họa để chỉ rõ mức độ nguy hiểm của âm mưu này.

Sơ đồ hoạt động của backdoor XZ

Backdoor này hoạt động như thế nào?

Mã độc này được thêm vào XZ Utils phiên bản 5.6.0 và 5.6.1 để làm thay đổi cơ chế hoạt động của nó.

Cụ thể, nó tác động vào sshd, tập tin dùng để tạo kết nối SSH từ xa. Kẻ tấn công có thể dùng một khóa mã hóa được chỉ định trước để giấu mã độc khác tùy ý vào chứng chỉ đăng nhập SSH, tải nó tới máy nạn nhân và chạy mã độc đó.

Chúng ta vẫn không biết kẻ tấn công dự định dùng loại mã độc nào. Về mặt lý thuyết, nó này cho phép thực hiện hầu hết mọi hành vi nguy hiểm, bao gồm đánh cắp khóa mã hóa hoặc cài đặt phần mềm độc hại.

Làm sao một công cụ nén dữ liệu có thể tác động vào một công cụ nhạy cảm về bảo mật như SSH?

Thực tế, bất kỳ thư viện phần mềm nào cũng có thể can thiệp vào hoạt động của một tệp thực thi nếu nó được liên kết trong tập tin đó. Thông thường, người lập trình phần mềm sẽ chủ động liên kết nó với các thư viện cần thiết cho việc hoạt động của nó.

OpenSSH, chương trình sshd phổ biến nhất, vốn không cần liên kết với thư viện liblzma.

Tuy nhiên, Debian và nhiều bản phân phối Linux khác đã chủ động liên kết sshd với systemd – chương trình chịu trách nhiệm khởi động nhiều dịch vụ hệ thống khác nhau khi hệ điều hành khởi động.  Đến lượt mình, systemd lại liên kết với liblzma, và điều này vô tình mở đường cho XZ Utils can thiệp vào sshd.

Backdoor này hình thành như thế nào?

Có vẻ như việc cài đặt backdoor này đã được lên kế hoạch từ lâu.

Năm 2021, một người dùng GitHub tên JiaT75 bắt đầu đóng góp mã nguồn tới một dự án mã nguồn mở, libarchive. Bây giờ nhìn lại, những mã nguồn đó rất đáng ngờ, vì nó thay thế hàm safe_fprint bằng một phiên bản kém an toàn hơn theo đánh giá từ giới chuyên gia. Tuy nhiên, thời điểm đó không ai để ý để ý đến việc này.

Một năm sau, JiaT75 gửi một bản vá trên nhóm thư của XZ Utils. Gần như ngay lập tức, một thành viên chưa từng xuất hiện trước đó tên Jigar Kumar tham gia thảo luận.

Người này cho rằng rằng Lasse Collin, người bảo trì lâu năm của XZ Utils, đã làm cập nhật phần mềm quá chậm. Với sự ủng hộ của Dennis Ens và một số người khác (cũng lần đầu xuất hiện trên danh sách), Kumar gây áp lực buộc Collin phải đưa thêm một lập trình viên khác vào dự án để đẩy nhanh tiến độ.

Vào tháng 1 năm 2023, JiaT75 thêm những mã nguồn đầu tiên của họ vào với XZ Utils. Trong những tháng tiếp theo, JiaT75, còn có tên là Jia Tan, ngày càng tích cực can thiệp vào XZ Utils.

Ví dụ, Tan thay thế thông tin liên lạc của Collins bằng thông tin của mình trên oss-fuzz, một dự án chuyên quét các lỗ hổng bảo mật của các phần mềm mã nguồn mở.

Tan cũng yêu cầu oss-fuzz vô hiệu hóa hàm ifunc trong quá trình thử nghiệm. Đây là một thay đổi cho phép những sửa đổi độc hại của Tan đối với XZ Utils né việc bị phát hiện sau này.

Vào tháng 2 năm nay, Tan đã đưa backdoor này vào các phiên bản 5.6.0 và 5.6.1 của XZ Utils.

Trong các tuần tiếp theo, Tan hoặc đồng bọn đã kêu gọi các nhà phát triển của Ubuntu, Red Hat và Debian đưa những bản cập nhật này vào hệ điều hành của họ. Chính vì thế, chúng đã có mặt trong một số phiên bản Linux như Fedora Rawhide hay Debian testing.

Jia Tan là ai?

Hiện tại thông tin về người này gần như rất ít, mặc dù họ là một người được tin tưởng quản lý một phần mềm phổ biến và nhạy cảm như XZ Utils.

Nhân vật này cũng đã để lại dấu ấn trên hàng chục các dự án mã nguồn mở khác trong vài năm qua. Thời gian sẽ trả lời liệu có một người thật sự mang tên này hay Jia Tan chỉ là một bí danh tạo ra bởi một ai đó.

Theo Ars Technica.

Chia sẻ bài viết này