Lỗi nghiêm trọng trên Apache Struts2 cho phép hacker chiếm quyền máy chủ web

Các nhà nghiên cứu mới phát hiện ra một lỗ hổng thực thi đoạn mã từ xa trên bộ khung ứng dụng web mã nguồn mở Apache Struts, cho phép kẻ tấn công chạy mã độc trên máy chủ.

Apache Struts là một bộ khung Model-View-Control (MVC – kiến trúc phần mềm theo 3 phần) mã nguồn mở miễn phí dùng để phát triển ứng dụng web viết bằng Java, hỗ trợ cả REST, AJAX và JSON.

Lỗ hổng này (CVE-2017-9805) là một lỗi lập trình nằm trong cách Struts xử lý dữ liệu từ nguồn không đáng tin tưởng. Cụ thể là plugin REST của Struts không thể xử lý payload XML trong khi vẫn chuyển đổi cấu trúc dữ liệu (deserialization) đúng cách.

Tất cả các phiên bản của Apache Struts từ 2008 (từ Struts 2.5 tới Struts 2.5.23) đều bị ảnh hưởng, khiến các ứng dụng web sử dụng plugin REST của bộ khung này đều có khả năng bị tấn công từ xa.

Lỗ hổng trên Apache Struts2 cho phép hacker thực thi đoạn mã độc từ xa
Lỗ hổng trên Apache Struts2 cho phép hacker thực thi đoạn mã độc từ xa

Theo các nhà nghiên cứu tại LGTM, bộ khung Struts được dùng bởi nhiều tổ chức, bao gồm cả Lockheed Martin, Vodafone, Virgin Atlantic và IRS. “Chưa kể, lỗ hổng cũng rất dễ được dùng, tất cả những gì bạn cần là trình duyệt web”, Man Yue Mo, nhà nghiên cứu tại LGTM nói. Kẻ tấn công chỉ cần đưa mã XML nhiễm độc theo 1 định dạng riêng để khai thác lỗ hổng này trên máy chủ.

Khai thác thành công sẽ cho phép hacker chiếm quyền kiểm soát toàn bộ máy chủ nhiễm độc, từ đó xâm nhập vào các hệ thống khác trên cùng mạng lưới.

Mo nói rằng lỗi này là do việc chuyển đổi cấu trúc dữ liệu không an toàn, tương tự lỗ hổng trên Apache Commons Collections đã được Chris Frohoff và Gabriel Lawrence phát hiện vào năm 2015, cũng cho phép thực thi đoạn mã ngẫu nhiên.

Nhiều ứng dụng Java đã bị ảnh hưởng bởi các lỗ hổng tương tự trong những năm gần đây. Lỗ hổng này đã được vá từ Struts 2.5.13 nên quản trị viên nên cập nhật Apache Struts mình đang dùng.