Bản vá cho lỗ hổng thực thi mã trong Apache Struts

Khung ứng dụng web model-view-controller (MVC) mã nguồn mở cho phép các nhà phát triển xây dựng các ứng dụng Java đã bị ảnh hưởng bởi những lỗ hổng nguy cấp. Nhiều lỗ hổng trong số đó liên quan tới công nghệ OGNL (Object Graph Navigation Language) mà Struts 2 sử dụng.

Theo khuyến nghị của Apache: “Lỗ hổng có số hiệu CVE-2020-17530 mới được xử lý nằm trong “đánh giá OGNL bắt buộc (forced OGNL evaluation)” khi được đánh giá trên đầu vào người dùng trong các thuộc tính thẻ“.

Công ty cho biết, khi bắt buộc đánh giá GGNL được áp dụng với cú pháp %{…}, các thuộc tính của thẻ có thể thực hiện đánh giá kép. Hơn nữa, việc thực thi mã từ xa có thể xảy ra khi bắt buộc đánh giá GONL trên đầu vào không đáng tin cậy.

Lỗ hổng thực thi mã trong Apache Struts - Ảnh 1.

Một lỗ hổng tương tự là CVE-2019-0230 đã được xử lý hồi tháng 8/2020 với việc phát hành Struts 2.5.22.

Đánh giá kép đã có trong Struts 2 theo thiết kế, nghĩa là được áp dụng khi tham chiếu đến những giá trị đã được xác thực trong biểu thức đã cho. Tuy nhiên, khi tham chiếu tới đầu vào người dùng không đáng tin cậy thì các mã độc hại có thể bị cấy vào.

Giải pháp thay thế mà Apache đề xuất rất đơn giản: Các nhà phát triển nên đảm bảo rằng bắt buộc đánh giá OGNL không được sử dụng trên đầu vào không đáng tin cậy.

Lỗ hổng được phát hiện ảnh hưởng tới phiên bản từ Struts 2.0.0 tới Struts 2.5.25, và Struts 2.5.26 là bản vá mới nhất được đưa ra với sự kiểm tra đã được thực hiện để đảm bảo rằng sự đánh giá biểu thức không dẫn đến đánh giá kép. 

Cơ quan an ninh mạng và an ninh cơ sở hạ tầng (CISA) đã đưa ra một khuyến nghị để thông báo về tính khả dụng của các bản vá cho lỗ hổng CVE-2020-17530. CISA cảnh báo rằng lỗ hổng có thể cho phép một kẻ tấn công chiếm các hệ thống có chứa lỗ hổng và khuyến khích người dùng cũng như các quản trị viên áp dụng các bản vá đã phát hành.