2013-08-01 6 views
6

В последнее время стойки исправили уязвимость, позволяющую злоумышленникам выполнять удаленный код. По-видимому, не латать это как давать черные цилиндры красного ковер прием с подножкой: -/Struts 2 S2-016 Смягчение последствий для уязвимостей до обновления

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

В основном это позволяет выполнять команды атаки, как это:

Legit действие: http://host/struts2-showcase/employee/save.action?redirect:%25{3*4} Exploited действия: http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

Хотя я знаю, что обновление должно быть выполнено как можно скорее, как можно скорее будет означать некоторое время, так как наша база кода использует старые версии расположений и плагины.

Что потребует некоторого рефакторинга обновить распорки 2 библиотеки, то эти должен быть проверен и т.д.

Моего вопроса для этого есть кто-то, есть ли какие-либо идеи, чтобы остановить эту уязвимость от выполняются? Это будет только до тех пор, пока мы не сможем обновиться.

Мне было интересно, возможно ли писать перехватчик для дезинфекции URL-адреса перед его оценкой против OGNL, и если это так смягчит эту проблему?

Другая идея, которую я имел, заключалась в том, чтобы как-то использовать диспетчера безопасности Java, чтобы остановить произвольные вызовы процессов, возможно ли это? Будет ли он патч отверстие временное?

Используется сервер jBoss, если кто-то считает это актуальным.

+0

У вас есть некоторые сервер перед вашим jBoss, возможно, apache? Как насчет ограничения доступа к определенным uri-s в нем. –

+0

Вы имеете в виду что-то вроде балансировщика нагрузки или брандмауэра с возможностями ограничения URL? – Thihara

+0

Это или обратный прокси, например Apache. –

ответ

1

Проблема связана с DefaultActionMapper и как она обрабатывает специальные параметры. Этот класс может быть расширен для переопределения метода handleSpecialParameters. Однако, если вы отключите DMI, эти специальные параметры больше не работают. Используйте постоянную конфигурацию

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

К сожалению, мы используем DMI не менее чем на 40% от наших вызовов ajax ... Я собираюсь изучить вариант переопределения, хотя .... – Thihara

+1

Экспозиция собственного контейнера действий в контейнер struts, [docs] (http: //struts.apache.org/release/2.3.x/docs/actionmapper.html#ActionMapper-CustomActionMapper) на сайте Apache отлично описал, как это сделать. –

+0

@Thihara: Создание пользовательского 'DefaultActionMapper' нуждается в тестировании, не так ли? –

2

Если у вас есть веб-сервер перед сервером приложений, вы можете ограничить доступ по URL-адресу. В Apache имеется модуль mod_rewrite, который вы можете использовать. Set RewriteCond директива QUERY_STRING переменная к некоторому шаблону запроса и перенаправление на dev/null.

0

Согласно другому комментарию, если вы используете Apache перед Tomcat, вы можете использовать этот фрагмент конфигурации Apache для предотвращения запросов достижения Tomcat:

RewriteEngine On 
RewriteCond %{QUERY_STRING} java.lang.ProcessBuilder 
RewriteRule (.*) - [F]