Jenkins đã phát hành một thông báo khẩn cấp chi tiết về hai lỗ hổng bảo mật, trong đó có một lỗ hổng được đánh giá ở mức nghiêm trọng.Những lỗ hổng này, được xác định là CVE-2024-43044 và CVE-2024-43045, khiến các phiên bản Jenkins đối mặt với rủi ro đọc tệp tùy ý và truy cập trái phép.
1. CVE-2024-43044: Lỗ hổng đọc tệp tùy ý qua kết nối agent có thể dẫn đến RCE
Mức độ nghiêm trọng: Critical
Mô tả:
Lỗ hổng nghiêm trọng nhất trong hai lỗ hổng, được xác định là CVE-2024-43044, cho phép kẻ tấn công thực thi mã tùy ý từ xa trên Jenkins Controller( trước đây còn có tên là Jenkins Master). Lỗ hổng này bắt nguồn từ một lỗi trong thư viện Remoting, được sử dụng để giao tiếp giữa các Jenkins Controller và các agent. Bằng cách khai thác lỗi này, kẻ tấn công có thể đọc các tệp tùy ý từ hệ thống tệp củaJenkins Controller, có khả năng truy cập vào dữ liệu cấu hình nhạy cảm, thông tin đăng nhập, hoặc thậm chí mã nguồn. Mức độ nguy hiểm của lỗ hổng này là rất lớn, vì nó có thể cho phép kẻ tấn công chiếm quyền kiểm soát hoàn toàn một phiên bản Jenkins và các quy trình xây dựng liên quan.
Chi tiết kĩ thuật
Jenkins sử dụng thư viện Remoting (thường là agent.jar hoặc remoting.jar) để giao tiếp giữa Controllers và các Agent. Thư viện này cho phép các agent tải các lớp (classes) và tài nguyên của trình nạp lớp (classloader) từ Controllers, để các đối tượng Java được gửi từ Controllers có thể được thực thi trên các agent.
Ngoài các Class và tệp tài nguyên, Remoting còn cho phép các plugin Jenkins truyền toàn bộ tệp jar đến các agent bằng cách sử dụng API Channel#preloadJar. Tính đến thời điểm công bố thông báo này, tính năng này được sử dụng bởi các plugin sau đây được phân phối bởi dự án Jenkins: bouncycastle API, Groovy, Ivy, TeamConcert.
Trong Remoting phiên bản 3256.v88a_f6e922152 và các phiên bản trước đó, ngoại trừ các phiên bản 3206.3208.v409508a_675ff và 3248.3250.v3277a_8e88c9b_, được bao gồm trong Jenkins 2.470 và các phiên bản trước đó, LTS 2.452.3 và các phiên bản trước đó, các lệnh gọi đến Channel#preloadJar dẫn đến việc agent truy xuất các tệp từ Controllers bằng cách sử dụng ClassLoaderProxy#fetchJar. Thêm vào đó, việc triển khai ClassLoaderProxy#fetchJar trên bộ điều khiển không giới hạn các đường dẫn mà các agent có thể yêu cầu đọc từ hệ thống tệp của Controllers.
Điều này cho phép các tiến trình agent, mã chạy trên các agent, và những kẻ tấn công có quyền Agent/Connect đọc các tệp tùy ý từ hệ thống tệp của Jenkins Controllers.
Các phiên bản bị ảnh hưởng
Jenkins weekly: các phiên bản trước đó và bao gồm cả phiên bản 2.470
Jenkins LTS: các phiên bản trước đó và bao gồm cả phiên bản 2.452.3
Khuyến Nghị
Cập nhật các phiên bản mới nhất 2.471 (weekly),đối với phiên bản LTS thì cập nhật lên các phiên bản 2.452.4 hoặc 2.462.1 , để giảm thiểu nguy cơ bị khai thác lỗ hổng vào hệ thống.
Mô tả thêm:
Thư viện Remoting trong Jenkins phiên bản 2.471, LTS 2.452.4, LTS 2.462.1 hiện tại gửi nội dung tệp jar cùng với các yêu cầu Channel#preloadJar, là trường hợp duy nhất mà ClassLoaderProxy#fetchJar được sử dụng trong các agent, do đó các agent không cần phải yêu cầu nội dung tệp jar từ các bộ điều khiển nữa.
Để duy trì khả năng tương thích với các phiên bản Remoting cũ hơn khi kết hợp với các plugin được liệt kê ở trên, ClassLoaderProxy#fetchJar vẫn được giữ lại và không được sử dụng cho mục đích khác, chỉ bị đánh dấu là không còn sử dụng nữa. Việc triển khai trong Jenkins 2.471, LTS 2.452.4, LTS 2.462.1 đã được thay đổi để giới hạn việc truy xuất tệp jar chỉ từ các tệp jar được tham chiếu trong trình Classloader lõi hoặc bất kỳ trình nạp Class plugin nào.
2. CVE-2024-43045: Thiếu việc kiểm tra quyền kết nối cho phép truy cập vào “My Views” của người dùng khác
Mức độ nghiêm trọng: Medium
Mô tả:
Lỗ hổng CVE-2024-43045 cho phép truy cập trái phép vào “My Views” của người dùng, là các bảng điều khiển cá nhân hóa trong Jenkins. Lỗ hổng này có thể làm lộ thông tin nhạy cảm và cho phép kẻ tấn công chỉnh sửa những bảng điều khiển này, có khả năng gây gián đoạn quy trình làm việc hoặc gây nhầm lẫn. Mặc dù không nghiêm trọng như lỗ hổng RCE quan trọng, vấn đề này vẫn đặt ra rủi ro đáng kể đối với quyền riêng tư và tính toàn vẹn của dữ liệu người dùng Jenkins.
Các phiên bản bị ảnh hưởng
Jenkins weekly: các phiên bản trước đó và bao gồm cả phiên bản 2.470
Jenkins LTS: các phiên bản trước đó và bao gồm cả phiên bản 2.452.3
Khuyến nghị
Jenkins weekly: Cập nhật lên phiên bản 2.471
Jenkins LTS: Cập nhật lên phiên bản 2.452.4 hoặc 2.462.1
Nguồn tham khảo:
CVE-2024-43044: Critical Jenkins Vulnerability Exposes Servers to RCE Attacks: securityonline.info/cve-2024-43044-critical..
CVE-2024-43044 Detail: nvd.nist.gov/vuln/detail/CVE-2024-43044
CVE-2024-43045 Detail: nvd.nist.gov/vuln/detail/CVE-2024-43045
SECURITY-3430 Workaround: github.com/jenkinsci-cert/SECURITY-3430
Jenkins Vulnerabilities Expose Servers to RCE Attack (CVE-2024-43044, CVE-2024-43045): op-c.net/blog/jenkins-vulnerabilities-expos..