-
09/04/2020
-
128
-
1.811 bài viết
Lỗ hổng trong Composer: Nguy cơ thực thi lệnh từ xa qua file cấu hình
Hai lỗ hổng vừa được công bố trong Composer (công cụ quản lý thư viện phổ biến trong hệ sinh thái PHP) đang làm dấy lên lo ngại về nguy cơ bị tấn công chuỗi cung ứng phần mềm. Nếu bị khai thác thành công, các lỗ hổng này có thể cho phép tin tặc thực thi lệnh tùy ý trên hệ thống của nhà phát triển hoặc máy chủ, chỉ thông qua việc thao túng file cấu hình dự án.
Theo thông tin từ nhóm phát triển Composer, các lỗ hổng đều liên quan đến thành phần xử lý hệ thống quản lý mã nguồn Perforce. Đây không phải là lỗi phổ biến mà người dùng thường chú ý, nhưng lại trở thành điểm yếu nghiêm trọng do cách Composer xử lý dữ liệu đầu vào trong file "composer[.]json".
Cụ thể, hai lỗ hổng đã được định danh gồm:
- CVE-2026-40176 (CVSS 7,8): Lỗi kiểm tra đầu vào không đầy đủ, cho phép kẻ tấn công chèn lệnh độc hại thông qua cấu hình repository Perforce trong file composer.json.
- CVE-2026-40261 (CVSS 8,8): Lỗi xử lý ký tự đặc biệt không an toàn, cho phép chèn lệnh thông qua các tham chiếu nguồn (source reference) được tạo thủ công.
Điểm đáng chú ý là cả hai lỗ hổng này đều có thể bị khai thác ngay cả khi hệ thống không cài đặt Perforce. Điều này khiến phạm vi ảnh hưởng rộng hơn dự kiến, bởi nhiều môi trường phát triển có thể vô tình trở thành mục tiêu mà không nhận ra.
Về cơ chế tấn công, kẻ xấu sẽ tạo một dự án hoặc gói thư viện chứa file composer.json đã được cài cắm sẵn mã độc. Khi người dùng tải về và chạy lệnh Composer (ví dụ composer install), các tham số độc hại sẽ được xử lý như một phần của cấu hình hợp lệ. Do thiếu cơ chế kiểm tra chặt chẽ, Composer sẽ thực thi trực tiếp các lệnh này trong môi trường hệ thống.
Nói cách khác, chỉ cần một thao tác cài đặt thư viện từ nguồn không tin cậy, toàn bộ hệ thống có thể bị chiếm quyền điều khiển. Đây chính là kịch bản tấn công chuỗi cung ứng điển hình, nơi mã độc được “ngụy trang” bên trong các thành phần hợp pháp.
Về cơ chế tấn công, kẻ xấu sẽ tạo một dự án hoặc gói thư viện chứa file composer.json đã được cài cắm sẵn mã độc. Khi người dùng tải về và chạy lệnh Composer (ví dụ composer install), các tham số độc hại sẽ được xử lý như một phần của cấu hình hợp lệ. Do thiếu cơ chế kiểm tra chặt chẽ, Composer sẽ thực thi trực tiếp các lệnh này trong môi trường hệ thống.
Nói cách khác, chỉ cần một thao tác cài đặt thư viện từ nguồn không tin cậy, toàn bộ hệ thống có thể bị chiếm quyền điều khiển. Đây chính là kịch bản tấn công chuỗi cung ứng điển hình, nơi mã độc được “ngụy trang” bên trong các thành phần hợp pháp.
Phạm vi ảnh hưởng và mức độ nguy hiểm
Các lỗ hổng này ảnh hưởng đến nhiều phiên bản Composer đang được sử dụng rộng rãi, bao gồm:
- Từ phiên bản 2.3 đến trước 2.9.6
- Từ phiên bản 2.0 đến trước 2.2.27
Mức độ nguy hiểm được đánh giá cao do khả năng thực thi lệnh tùy ý mà không cần quyền đặc biệt, miễn là nạn nhân chạy Composer trên dự án bị cài cắm. Trong môi trường doanh nghiệp, điều này có thể dẫn đến việc lộ mã nguồn, đánh cắp thông tin nhạy cảm hoặc cài đặt backdoor.
Tuy nhiên, theo kiểm tra ban đầu trên Packagist, chưa có bằng chứng cho thấy các lỗ hổng này đã bị khai thác rộng rãi trong thực tế. Dù vậy, giới chuyên gia cảnh báo rằng nguy cơ vẫn rất lớn nếu người dùng chủ quan.
Tuy nhiên, theo kiểm tra ban đầu trên Packagist, chưa có bằng chứng cho thấy các lỗ hổng này đã bị khai thác rộng rãi trong thực tế. Dù vậy, giới chuyên gia cảnh báo rằng nguy cơ vẫn rất lớn nếu người dùng chủ quan.
Biện pháp phòng tránh và khuyến nghị
Hiện tại, các bản vá đã được phát hành và người dùng được khuyến nghị cập nhật ngay lập tức lên các phiên bản an toàn:
- Phiên bản 2.9.6
- Phiên bản 2.2.27
Trong trường hợp chưa thể cập nhật, người dùng cần đặc biệt thận trọng khi làm việc với các dự án từ nguồn bên ngoài. Việc kiểm tra kỹ nội dung file "composer[.]json", đặc biệt là các cấu hình liên quan đến repository và Perforce, là bước quan trọng để phát hiện dấu hiệu bất thường.
Ngoài ra, các chuyên gia khuyến nghị:
Ngoài ra, các chuyên gia khuyến nghị:
- Chỉ sử dụng thư viện và repository từ nguồn đáng tin cậy
- Tránh chạy Composer trên các dự án không rõ nguồn gốc
- Hạn chế sử dụng cấu hình cài đặt dạng “dist” nếu không cần thiết
- Tăng cường kiểm soát quy trình kiểm duyệt mã nguồn trong nội bộ
Việc tắt tính năng liên quan đến metadata Perforce trên Packagist cũng đã được triển khai như một biện pháp phòng ngừa tạm thời.
Theo The Hacker News
