Lỗ hổng CVE Apache Struts nguy hiểm: Nguy cơ DoS nghiêm trọng

Lỗ hổng CVE Apache Struts nguy hiểm: Nguy cơ DoS nghiêm trọng

Một lỗ hổng CVE bảo mật nghiêm trọng đã được phát hiện trong Apache Struts, có thể cho phép kẻ tấn công gây ra các cuộc tấn công cạn kiệt không gian đĩa (disk exhaustion attacks). Tình trạng này khiến các hệ thống bị ảnh hưởng trở nên không thể sử dụng được, đe dọa nghiêm trọng đến tính khả dụng của ứng dụng.

Lỗ hổng CVE này, được theo dõi dưới mã định danh CVE-2025-64775, xuất phát từ một lỗi rò rỉ tệp trong quá trình xử lý yêu cầu multipart. Điều này tạo điều kiện cho các điều kiện từ chối dịch vụ (denial-of-service) có thể được kích hoạt bởi kẻ tấn công không cần xác thực.

Nội dung
Tổng quan về CVE-2025-64775: Mối đe dọa DoS nghiêm trọng

Cơ chế khai thác và Tác động kỹ thuật
Phạm vi ảnh hưởng của lỗ hổng

Rủi ro đối với các phiên bản End-of-Life (EOL)
Giải pháp khắc phục và Biện pháp giảm thiểu

Cập nhật bản vá bảo mật
Các biện pháp tạm thời và Giám sát

Tổng quan về CVE-2025-64775: Mối đe dọa DoS nghiêm trọng

Nghiên cứu viên của Apache Struts đã phát hiện lỗ hổng CVE này trong cơ chế xử lý yêu cầu multipart của framework. Cụ thể, lỗi cho phép kẻ tấn công khai thác các hoạt động xử lý tệp, dẫn đến việc tích lũy tệp không kiểm soát trên máy chủ.

Cơ chế khai thác bắt đầu khi ứng dụng xử lý các yêu cầu multipart (ví dụ: tải lên tệp). Trong các trường hợp bình thường, các tệp tạm thời được tạo ra để xử lý dữ liệu đầu vào sẽ được dọn dẹp sau khi yêu cầu hoàn tất.

Tuy nhiên, do lỗi rò rỉ tệp, các tệp tạm thời này không được giải phóng đúng cách, dẫn đến việc chúng tồn đọng trên hệ thống tệp. Khi số lượng yêu cầu độc hại tăng lên, dung lượng đĩa khả dụng của máy chủ sẽ giảm dần.

Cơ chế khai thác và Tác động kỹ thuật

Khi dung lượng đĩa cạn kiệt, các ứng dụng không thể ghi thêm dữ liệu, lưu trữ nhật ký, hoặc tạo các tệp tạm thời cần thiết cho hoạt động. Điều này dẫn đến các ứng dụng trở nên không phản hồi và cuối cùng là bị lỗi (crash), làm gián đoạn các hoạt động và dịch vụ kinh doanh quan trọng.

Tác động của cuộc tấn công cạn kiệt đĩa không chỉ giới hạn ở việc làm sập ứng dụng. Nó có thể dẫn đến mất dữ liệu tiềm ẩn nếu các thao tác ghi tệp không hoàn tất hoặc các dịch vụ phụ thuộc vào không gian đĩa bị ảnh hưởng.

Việc khôi phục hệ thống sau một cuộc tấn công như vậy đòi hỏi thời gian ngừng hoạt động đáng kể để xác định và xóa các tệp rò rỉ, cũng như khởi động lại các dịch vụ bị ảnh hưởng.

Điều làm cho lỗ hổng CVE này đặc biệt nguy hiểm là kẻ tấn công không yêu cầu xác thực để khai thác. Bất kỳ ai cũng có thể gửi các yêu cầu multipart độc hại đến một ứng dụng Struts dễ bị tổn thương thông qua internet, biến nó thành một mục tiêu dễ dàng cho các cuộc tấn công diện rộng.

Phạm vi ảnh hưởng của lỗ hổng

Lỗ hổng này ảnh hưởng đến nhiều phiên bản Apache Struts khác nhau, bao gồm cả những phiên bản đã đạt trạng thái End-of-Life (EOL). Cụ thể, tất cả các phiên bản Struts từ 2.0.0 đến 2.3.372.5.0 đến 2.5.33 đều đã EOL.

Ngoài ra, các phiên bản 6.0.0 đến 6.7.07.0.0 đến 7.0.3 hiện tại cũng đang dễ bị tổn thương. Các tổ chức đang chạy các phiên bản EOL đối mặt với rủi ro tổng hợp từ các lỗ hổng chưa được vá, không chỉ riêng CVE-2025-64775.

Mặc dù lỗ hổng được đánh giá ở mức Important về mức độ nghiêm trọng bảo mật, khả năng gây ra tình trạng từ chối dịch vụ hoàn toàn và không yêu cầu xác thực khiến nó trở thành một CVE nghiêm trọng cần được ưu tiên xử lý.

Rủi ro đối với các phiên bản End-of-Life (EOL)

Các tổ chức đang sử dụng các phiên bản Struts đã EOL phải đối mặt với rủi ro cao hơn đáng kể. Các phiên bản này không còn nhận được các bản cập nhật bảo mật từ Apache, điều đó có nghĩa là bất kỳ lỗ hổng CVE nào mới phát hiện hoặc đã biết đều không được vá chính thức.

Việc thiếu các bản vá bảo mật khiến các hệ thống này trở thành mục tiêu lý tưởng cho kẻ tấn công, không chỉ đối với CVE-2025-64775 mà còn với hàng loạt các lỗ hổng khác đã được công bố.

Các nhóm phát triển, quản trị viên hệ thống và đội ngũ bảo mật duy trì ứng dụng được xây dựng trên framework Apache Struts cần ngay lập tức đánh giá mức độ phơi nhiễm của mình đối với lỗ hổng CVE-2025-64775. Việc không hành động có thể dẫn đến gián đoạn dịch vụ nghiêm trọng, tổn thất dữ liệu và thời gian ngừng hoạt động trong quá trình khôi phục hệ thống.

Giải pháp khắc phục và Biện pháp giảm thiểu

Apache Software Foundation khuyến nghị mạnh mẽ các tổ chức nâng cấp lên Struts 6.8.0 hoặc phiên bản mới hơn trong nhánh 6.x. Ngoài ra, các tổ chức có thể nâng cấp lên Struts 7.1.1 hoặc các phiên bản mới hơn. Đây là những phiên bản đã được vá lỗi và đảm bảo an toàn.

Bạn có thể tham khảo thông tin chi tiết về bản vá và hướng dẫn nâng cấp từ nguồn chính thức của Apache Struts tại: Apache Struts S2-068 Advisory.

Cập nhật bản vá bảo mật

Bản vá này giải quyết triệt để vấn đề rò rỉ tệp trong quá trình xử lý yêu cầu multipart, đồng thời duy trì khả năng tương thích ngược. Điều này đảm bảo rằng các ứng dụng hiện có tiếp tục hoạt động mà không cần sửa đổi mã nguồn, giúp quá trình nâng cấp trở nên dễ dàng hơn.

Các nhóm bảo mật cần ưu tiên bản vá bảo mật cho các ứng dụng Struts hướng internet. Trước khi triển khai lên môi trường sản xuất, cần tiến hành kiểm tra kỹ lưỡng trong môi trường phát triển để đảm bảo tính ổn định và tránh các sự cố không mong muốn.

Việc triển khai bản vá bảo mật một cách nhanh chóng và có hệ thống là cực kỳ quan trọng để bảo vệ các ứng dụng khỏi lỗ hổng CVE này. Đây là một bản vá có độ ưu tiên cao và nên được đưa vào kế hoạch bảo trì tiếp theo của tổ chức.

Các biện pháp tạm thời và Giám sát

Đối với các tổ chức chưa thể nâng cấp ngay lập tức, cần triển khai các biện pháp giám sát chặt chẽ. Cụ thể, cần theo dõi các bất thường về việc sử dụng không gian đĩa (disk usage anomalies) trên các máy chủ chạy ứng dụng Struts. Việc thiết lập cảnh báo khi dung lượng đĩa đạt đến ngưỡng nhất định có thể giúp phát hiện sớm các cuộc tấn công.

Ngoài ra, có thể xem xét các biện pháp giảm thiểu tạm thời như hạn chế kích thước yêu cầu multipart. Điều này có thể được cấu hình ở cấp độ máy chủ web (ví dụ: `LimitRequestBody` trong Apache HTTP Server, `client_max_body_size` trong Nginx) hoặc thông qua cấu hình của chính framework Struts, nhằm giới hạn lượng dữ liệu mà kẻ tấn công có thể gửi trong một yêu cầu duy nhất, làm chậm hoặc ngăn chặn quá trình cạn kiệt đĩa.

Ví dụ, trong tệp cấu hình của một số máy chủ web, bạn có thể thiết lập giới hạn như sau:

# Ví dụ cho Apache HTTP Server
LimitRequestBody 10485760  # Giới hạn 10MB cho body của request

# Ví dụ cho Nginx
client_max_body_size 10M; # Giới hạn 10MB cho kích thước request body của client

Các biện pháp này không thay thế việc áp dụng bản vá bảo mật chính thức nhưng có thể cung cấp một lớp bảo vệ tạm thời trong khi chờ đợi quá trình nâng cấp hoàn tất. Việc phản ứng nhanh chóng từ nhóm Apache Struts đã giúp phát hành các phiên bản vá lỗi kịp thời, và các tổ chức nên coi đây là một nhiệm vụ ưu tiên hàng đầu trong quản lý an ninh mạng của mình.