Một lỗ hổng đã được xác định trong Composer làm ảnh hưởng đến kho lưu trữ Packagist PHP

Vài ngày trước tin tức đã phá vỡ rằng một lỗ hổng nghiêm trọng đã được xác định en người quản lý phụ thuộc của sáng tác (CVE-2021-29472) cho phép bạn thực hiện các lệnh tùy ý trên hệ thống khi xử lý gói có giá trị URL được tạo đặc biệt xác định hướng tải xuống mã nguồn.

Vấn đề tự thể hiện trong các thành phần GitDriver, SvnDriver và HgDriver được sử dụng với hệ thống điều khiển nguồn Git, Subversion và Mercurial. Lỗ hổng bảo mật đã được sửa trong phiên bản Composer 1.10.22 và 2.0.13.

Đặc biệt, kho lưu trữ gói Packagist mặc định của Composer, chứa 306.000 gói dành cho nhà phát triển PHP và cung cấp hơn 1.400 tỷ lượt tải xuống hàng tháng, bị ảnh hưởng đặc biệt.

Trong hệ sinh thái PHP, Composer là công cụ chính để quản lý và cài đặt các phần mềm phụ thuộc. Các nhóm phát triển trên khắp thế giới sử dụng nó để dễ dàng quá trình nâng cấp và đảm bảo các ứng dụng chạy dễ dàng trên tất cả các môi trường và phiên bản.

Thử nghiệm cho thấy rằng nếu có thông tin về sự cố, những kẻ tấn công có thể kiểm soát cơ sở hạ tầng Packagist và chặn thông tin đăng nhập của người bảo trì hoặc chuyển hướng tải xuống các gói đến máy chủ của bên thứ ba, sắp xếp việc phân phối các biến thể gói với các thay đổi. người dùng độc hại để thay thế một cửa sau trong quá trình cài đặt phụ thuộc.

Nguy cơ đối với người dùng cuối được hạn chế do thực tế là nội dung của composer.json thường được người dùng xác định và các liên kết đến nguồn được chuyển khi truy cập các kho của bên thứ ba, các kho này thường đáng tin cậy. Cú đánh chính rơi vào kho lưu trữ Packagist.org và dịch vụ Private Packagist, cuộc gọi đó Composer với việc chuyển dữ liệu nhận được từ người dùng. Những kẻ tấn công có thể chạy mã của chúng trên các máy chủ Packagist bằng cách thả một gói được chế tạo đặc biệt.

Nhóm Packagist đã giải quyết lỗ hổng trong vòng 12 giờ kể từ khi thông báo tính dễ bị tổn thương. Các nhà nghiên cứu đã thông báo riêng cho các nhà phát triển Packagist vào ngày 22 tháng 27 và sự cố đã được khắc phục cùng ngày. Bản cập nhật Trình soạn nhạc công khai với bản sửa lỗi cho lỗ hổng đã được phát hành vào ngày 28 tháng XNUMX và thông tin chi tiết được tiết lộ vào ngày XNUMX tháng XNUMX. Việc kiểm tra nhật ký trên máy chủ của Packagist không cho thấy bất kỳ hoạt động đáng ngờ nào liên quan đến lỗ hổng.

Lỗi chèn đối số là một loại lỗi thực sự thú vị thường bị bỏ qua trong quá trình xem xét mã và hoàn toàn bị bỏ qua trong các tương tác hộp đen.

Sự cố là do lỗi trong mã xác thực URL trong tệp composer.json gốc và trong các liên kết tải xuống nguồn. Lỗi đã xuất hiện trong mã từ tháng 2011 năm XNUMX. Packagist sử dụng các lớp đặc biệt để quản lý tải xuống mã mà không bị ràng buộc với hệ thống kiểm soát nguồn cụ thể, được thực thi bằng cách gọi "fromShellCommandline" với các đối số dòng lệnh.

Trung tâm của vấn đề là phương thức ProcessExecutor cho phép chỉ định bất kỳ tham số cuộc gọi bổ sung nào trong URL. Các trình điều khiển GitDriver.php, SvnDriver.php và HgDriver.php bị thiếu một lối thoát như vậy. Cuộc tấn công GitDriver.php bị cản trở bởi thực tế là lệnh "git ls-remote" không hỗ trợ chỉ định các đối số bổ sung sau đường dẫn.

Một cuộc tấn công vào HgDriver.php đã được thực hiện bằng cách truyền tham số "–config" cho tiện ích "hq", cho phép tổ chức thực thi bất kỳ lệnh nào bằng cách thao tác với cấu hình "alias.identify".

Bằng cách gửi gói thử nghiệm có URL tương tự tới Packagist, các nhà nghiên cứu đảm bảo rằng sau khi nó được xuất bản, máy chủ của họ nhận được yêu cầu HTTP từ một trong các máy chủ Packagist trên AWS có chứa danh sách các tệp trong thư mục hiện tại.

Cần lưu ý rằng những người bảo trì không xác định được bất kỳ dấu hiệu nào về việc khai thác lỗ hổng này trước đó trong phiên bản công khai của packagist.

Cuối cùng, nếu bạn quan tâm muốn biết thêm về nó, bạn có thể tham khảo chi tiết Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.