08/10/2026 · VietTechies · Biên tập

Khi nâng cấp các hệ thống Java doanh nghiệp lên Java 21, các nhóm phát triển phải đối mặt với không ít thách thức trong việc xử lý các thư viện phụ thuộc cũ và cơ chế đóng gói của Java Platform Module System. Tài liệu kỹ thuật xuất bản ngày 7 tháng 10 năm 2026 đã phân tích chi tiết các lỗ hổng bảo mật cùng hành vi thực thi của Log4j 1.2.17, đồng thời đánh giá mức độ tương thích hiện đại của Jackson Annotations 2.17.2 trên Java 21.
Cơ chế đóng gói và các rủi ro bảo mật của Log4j 1.2.17
Ban đầu, Log4j 1.2.17 được thiết kế cho Java 1.4 với phiên bản class file 48.0. Trên Java 21, cơ chế đóng gói nghiêm ngặt của môi trường thực thi mặc định sẽ ngăn chặn truy cập phản xạ (reflection) vào các API nội bộ của JDK. Nếu cố gắng chạy thư viện cũ này trên Java 21, ứng dụng sẽ gặp phải các lỗi runtime như IllegalAccessException hoặc InaccessibleObjectException, trừ khi bổ sung các cờ JVM cụ thể bao gồm –add-opens=java.base/java.lang=ALL-UNNAMED, –add-opens=java.base/java.util=ALL-UNNAMED và -Dsun.util.logging.disableWindowWarning=true.
Các tham số dòng lệnh này chỉ mang tính chất giải pháp tạm thời ở cấp độ thực thi chứ không thể xử lý các vấn đề bảo mật gốc rễ. Thư viện Log4j 1.2.17 đã bị ngừng hỗ trợ (end-of-life) từ tháng 8 năm 2015 và tiềm ẩn nhiều lỗ hổng nghiêm trọng. Trong đó có thể kể đến lỗi thực thi mã từ xa qua CVE-2019-17571 và lỗi tấn công SQL injection qua CVE-2022-23305 (đều đạt điểm CVSS 9,8), cùng với các lỗ hổng giải mã dữ liệu (deserialization) thuộc CVE-2021-4104 và CVE-2022-23302 khi sử dụng một số appender nhất định.
Chiến lược chuyển đổi thông qua cầu nối Log4j 2
Để loại bỏ nguy cơ bảo mật mà không cần viết lại các khai báo import trong mã nguồn hiện có, các lập trình viên có thể áp dụng cầu nối log4j-1.2-api phiên bản 2.23.1. Trình can thiệp này sẽ chặn các lời gọi org.apache.log4j.* và chuyển hướng trực tiếp sang công cụ thực thi Log4j 2 hiện đại. Việc chuyển đổi sang cầu nối đòi hỏi phải khai báo log4j-1.2-api, log4j-api và log4j-core phiên bản 2.23.1 trong tệp cấu hình build của Maven hoặc Gradle, đồng thời đổi định dạng các tệp cấu hình cũ sang log4j2.xml.
Mức độ tương thích của Jackson Annotations 2.17.2
Trái ngược với thư viện ghi log đời cũ, Jackson Annotations 2.17.2 đáp ứng hoàn hảo các tiêu chuẩn của Java 21. Dù ban đầu nhắm đến Java 8 với phiên bản class file 52.0, bản phát hành này được đóng gói dưới dạng Multi-Release JAR và đi kèm mô tả module đầy đủ mang tên com.fasterxml.jackson.annotation.
Jackson Annotations 2.17.2 không ghi nhận bất kỳ lỗ hổng CVE nào và không yêu cầu bổ sung tham số dòng lệnh JVM. Các annotation phổ biến như @JsonProperty, @JsonIgnore, @JsonInclude và @JsonCreator vẫn duy trì tính tương thích ngược hoàn toàn. Tài liệu hướng dẫn chuyển đổi khuyến nghị giữ nguyên phiên bản 2.17.2 và đồng bộ các thư viện liên quan như jackson-core và jackson-databind thông qua tệp khai báo phụ thuộc jackson-bom.
Ảnh minh họa do AI tạo, không phải ảnh tư liệu.
Nguồn: greadle-127
