Lỗ hổng nguy cấp trên máy chủ Jenkins có thể gây rò rỉ thông tin

Jenkins, một phần mềm máy chủ mã nguồn mở phổ biến, mới đây đã công bố thông tin về một lỗ hổng nguy cấp nằm trong máy chủ web có thể gây hỏng bộ nhớ và lộ lọt thông tin bí mật.

 Lỗ hổng có số hiệu là CVE-2019-17638, với điểm số CVSS 9,4 và ảnh hưởng tới các phiên bản Eclipse Jetty từ 9.4.27.v20200227 đến 9.4.29.v20200521.

Theo bản công bố: "Jenkins đóng gói Winstone-Jetty, một trình bao bọc xung quanh Jetty để hoạt động như máy chủ chạy công nghệ Servlet (một công nghệ được dùng để thiết lập các ứng dụng web) và HTTP khi sử dụng java-jar jenkins.war. Đây là cách Jenkins chạy khi sử dụng bất kỳ gói hoặc cài đặt nào, nhưng không phải chạy trên các vùng chứa servlet như TomcatLỗ hổng có thể cho phép những kẻ tấn công không được xác thực lấy được những tiêu đề phản hồi HTTP có chứa dữ liệu nhạy cảm dành cho người dùng khác".
 
20200821-pg3.jpg
 
Lỗ hổng, ảnh hưởng tới Jetty và Jenkins Core, dường như bắt đầu xuất hiện trong phiên bản Jetty 9.4.27 - phiên bản bổ sung cơ chế xử lý các tiêu đề phản hồi HTTP lớn và ngăn chặn các lỗi về tràn bộ đệm.
 
Người đứng đầu dự án của Jetty, Greg Wilkins cho biết: "Vấn đề là trong trường hợp tràn bộ đệm, chúng tôi đã giải phóng bộ đệm tiêu đề (header buffer) nhưng không làm vô hiệu hóa trường".
 
Để xử lý vấn đề tràn bộ đệm này, Jetty trả về một kết quả ngoại lệ, tạo lỗi HTTP 431, khiến tiêu đề phản hồi HTTP được phát hành vào vùng đệm 2 lần gây ra lỗi hỏng bộ nhớ và tiết lộ thông tin.
 
Để xử lý điều này, Jetty đưa vào một ngoại lệ để tạo ra lỗi HTTP 431, khiến cho những tiêu để phản hồi HTTP được phát hành 2 lần gây hỏng bộ nhớ và lộ thông tin.
Nói cách khác, trong khi tiến trình (thread1) chuẩn bị sử dụng ByteBuffer (một trong số các bộ đệm được cung cấp bởi Java NIO) để ghi dữ liệu phản hồi 1 (response1), thread2 chiếm ByteBuffer với dữ liệu response2. Do tiêu đề phản hồi được phát hành 2 lần, 2 thread có thể sẽ cùng một lúc có cùng 1 bộ đệm, dẫn đến nguy cơ một trong hai thread tiếp cận phản hồi của thread còn lại cùng các thông tin như session ID, thông tin xác thực và thông tin nhạy cảm khác.
 
Lỗi bộ nhớ khiến máy khách có thể thay đổi giữa các phiên, do đó có quyền truy cập nhiều tài khoản, cho phép người dùng A chuyển sang phiên của người dùng B.
Sau khi những khuyến cáo bảo mật được tiết lộ, lỗ hổng đã được xử lý trong phiên bản Jetty 9.4.30.v20200611 phát hành hồi tháng trước. Jenkins đã vá lỗ hổng trong tiện ích của mình trên Jenkins 2.243 và Jenkins LTS 2.235.5
 
Người dùng Jenkins được khuyến nghị nên cập nhật phần mềm của họ lên phiên bản mới nhất để giảm thiểu rủi ro.
Nguồn: theo ictvietnam.vn