Vá ngay lỗ hổng thực thi mã từ xa CVE-2023-37895 trong Apache Jackrabbit

Marcus1337

VIP Members
01/04/2021
62
76 bài viết
Vá ngay lỗ hổng thực thi mã từ xa CVE-2023-37895 trong Apache Jackrabbit
Một lỗ hổng nghiêm trọng được phát hiện trong Apache Jackrabbit - hệ thống lưu trữ nội dung mã nguồn mở dành cho nền tảng Java. Lỗ hổng có mã định danh CVE-2023-37895 cho phép kẻ tấn công thực thi mã từ xa trên hệ thống bị ảnh hưởng bằng cách khai thác lỗi Java deserialization trong RMI.

Apache Jackrabbit là một loạt công cụ phát triển phần mềm theo chuẩn Content Repository for Java Technology API (JCR), cho phép lưu trữ và quản lý các loại nội dung khác nhau trong một kho dữ liệu.

Nó gồm nhiều tính năng và được sử dụng rộng rãi trong các hệ thống quản lý nội dung web, hệ thống quản lý tài liệu, hệ thống quản lý nội dung doanh nghiệp,...

363352954_208971971798160_4355928054793498104_n.png

CVE-2023-37895 là lỗ hổng thực thi mã từ xa (RCE) thông qua việc khai thác giao diện Remote Method Invocation (RMI) trong Jackrabbit. Lỗ hổng được đánh giá nghiêm trọng, ảnh hưởng đến các phiên bản Apache Jackrabbit Webapp và Standalone từ 1.0.0 đến 2.21.18.

Nguyên nhân tồn tại lỗ hổng do vấn đề về giải mã đối tượng Java (Java object deserialization) tồn tại trên tất cả các nền tảng của phiên bản Jackrabbit Webapp và Standalone trước 2.20.10 và 2.21.17. Việc khai thác CVE-2023-37895 liên quan đến thành phần "commons-beanutils" có chứa một lớp dễ bị tấn công từ xa thông qua RMI.

Jackrabbit khuyến cáo người dùng lập tức cập nhật lên phiên bản 2.20.11 hoặc 2.21.18 để giải quyết lỗ hổng. Các phiên bản cũ hơn không còn được hỗ trợ và sẽ không nhận bản cập nhật mới (đã kết thúc vòng đời).

Tuy nhiên, ngay cả khi không có mã khai thác (PoC) trong Jackrabbit, việc hỗ trợ RMI có thể tiềm ẩn các lỗ hổng khác. Do đó, việc vô hiệu hóa RMI trên máy chủ là điều cần thiết để ngăn chặn các rủi ro an ninh mạng.

Cách kiểm tra hỗ trợ RMI có được kích hoạt hay không:

Để kiểm tra xem hỗ trợ RMI có được kích hoạt hay không, chúng ta cần kiểm tra xem hệ thống có hỗ trợ RMI qua cổng TCP hoặc kết nối HTTP không. Cả hai kết nối này đều được kích hoạt mặc định trong Jackrabbit Webapp/Standalone.

Giao thức RMI mặc định sử dụng cổng 1099. Sử dụng công cụ "netstat" để kiểm tra xem cổng 1099 (RMI) có được kích hoạt hay không. Nếu RMI-over-HTTP được sử dụng, đường dẫn mặc định là "/rmi". Kiểm tra bằng cách gửi yêu cầu GET HTTP tới địa chỉ localhost:8080/rmi. Nếu trả về mã trạng thái 404, điều đó có nghĩa là RMI không được kích hoạt. Trả về mã trạng thái 200 có nghĩa là RMI đã được kích hoạt.

Lưu ý rằng đường dẫn HTTP có thể khác khi ứng dụng web được triển khai trong một container với ngữ cảnh không phải là root, trong trường hợp này tiền tố được kiểm soát bởi người dùng.

Tắt chức năng RMI: Tìm tệp web.xml (trong tệp JAR/WAR hoặc trong thư mục ứng dụng web đã giải nén), xóa khai báo và định nghĩa mapping cho RemoteBindingServlet.

1690438209217.png

Tìm tệp bootstrap.properties (trong $REPOSITORY_HOME) và đặt rmi.enabled=false cũng như xóa các thuộc tính:
  • rmi.host
  • rmi.port
  • rmi.url-pattern
Nếu không có tệp bootstrap.properties trong, nó có thể được đặt ở một vị trí nào đó trong classpath (đường dẫn môi trường Java). Trong trường hợp này, bạn cần sao chép một bản sao của tệp vào $REPOSITORY_HOME và thực hiện các thay đổi như đã giải thích ở trên.

 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
apache jackrabbit cve-2023-37895
Bên trên