2013-08-01 33 views
6

Các thanh chống xóa gần đây vá lỗ hổng cho phép kẻ tấn công thực thi mã từ xa. Rõ ràng không vá này cũng giống như đem lại đen mũ một thảm chào đón màu đỏ với một bandwagon: -/Struts 2 S2-016 Giảm thiểu khả năng tiết kiệm cho đến khi nâng cấp

http://struts.apache.org/release/2.3.x/docs/s2-016.html

Về cơ bản nó cho phép lệnh tấn công thực hiện như thế này:

hành động VN: http://host/struts2-showcase/employee/save.action?redirect:%25{3*4} hành động bị bóc lột: http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

Mặc dù tôi biết rằng việc nâng cấp nên được thực hiện càng sớm càng tốt, càng sớm càng tốt sẽ có nghĩa là một thời gian kể từ khi cơ sở mã của chúng tôi sử dụng phiên bản và trình cắm cũ.

Mà sẽ yêu cầu một số refactoring để nâng cấp struts 2 thư viện, sau đó những người cần phải được kiểm tra, vv

Câu hỏi của tôi do là liệu có ai có bất kỳ ý tưởng để ngăn chặn lỗ hổng này từ được thực thi? Điều này sẽ chỉ cho đến khi chúng tôi có thể nâng cấp.

Tôi đã tự hỏi liệu viết một kẻ đánh chặn để khử trùng URL trước khi được đánh giá chống lại OGNL là có thể và nếu như vậy nó sẽ giảm thiểu vấn đề này?

Ý tưởng khác tôi đã có là sử dụng trình quản lý bảo mật Java bằng cách nào đó để ngăn chặn các yêu cầu quy trình tùy ý, điều này có khả thi không? Nó sẽ vá lỗ tạm thời?

Máy chủ đang được sử dụng là jBoss nếu có ai đó cho rằng có liên quan.

+0

Bạn có một số máy chủ ở phía trước của jBoss của bạn, apache có thể? Làm thế nào về hạn chế truy cập vào một số uri-s trong đó. –

+0

Bạn có ý nghĩa gì đó của trình cân bằng tải hoặc tường lửa có khả năng hạn chế URL? – Thihara

+0

Điều đó hoặc proxy ngược lại, như Apache. –

Trả lời

1

Sự cố có liên quan đến DefaultActionMapper và cách xử lý thông số đặc biệt. Lớp này có thể được mở rộng để ghi đè phương thức handleSpecialParameters. Tuy nhiên, nếu bạn tắt DMI, các thông số đặc biệt này sẽ không hoạt động nữa. Sử dụng các cấu hình liên tục

<constant name="struts.enable.DynamicMethodInvocation" value="false"/> 
+0

Thật không may, chúng tôi đang sử dụng DMI trong ít nhất 40% cuộc gọi ajax của chúng tôi ... Tôi sẽ khám phá tùy chọn ghi đè mặc dù .... – Thihara

+1

Hiển thị trình ánh xạ hành động của riêng bạn tới vùng chứa struts, [tài liệu] (http: //struts.apache.org/release/2.3.x/docs/actionmapper.html#ActionMapper-CustomActionMapper) trên trang Apache hoàn toàn mô tả cách thực hiện điều đó. –

+0

@Thihara: Việc tạo tùy chỉnh 'DefaultActionMapper' cũng cần thử nghiệm, phải không? –

2

Nếu bạn có một số máy chủ web ở phía trước máy chủ ứng dụng của mình, bạn có thể giới hạn quyền truy cập theo url. Trong Apache có mod_rewrite mô-đun mà bạn có thể sử dụng. Đặt RewriteCond chỉ thị QUERY_STRING biến cho một số mẫu truy vấn và chuyển hướng đến dev/null.

0

Theo những nhận xét khác, nếu bạn đang sử dụng Apache trước Tomcat, bạn có thể sử dụng đoạn cấu hình Apache này để ngăn chặn các yêu cầu đạt Tomcat:

RewriteEngine On 
RewriteCond %{QUERY_STRING} java.lang.ProcessBuilder 
RewriteRule (.*) - [F] 
Các vấn đề liên quan