Oracle исправила на прошлой неделе более 400 уязвимостей в своих продуктах, и среди них была особо критическая уязвимость получившая идентификатор CVE-2020-14882. Она набрала 9,8 баллов из 10 по шкале уязвимостей CVSS.
Данная уязвимость была связана c WebLogic версий 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 и 14.1.1.0, которая позволяет взламывать с помощью запроса HTTP GET уязвимые системы. Поскольку уязвимость проста использовании, эксперты полагают, что данную уязвимость уже используют хакеры. PoC-эксплойты уже доступны на github (1, 2, 3, 4, 5).
Инженеры Oracle уже выпустили хотфикс для багфикса CVE-2020-14882, поскольку багфикс CVE-2020-14882 легко обходится. Сам bypass исправления получил свой индекс CVE-2020-14750. Адам Бойло (Adam Boileau), главный консультант по безопасности Insomnia Sec, заявил что оригинальный патч обходится изменением регистра одного символа в эксплойте.
По информации специалистов Spyse, в сети доступно более 3000 серверов Oracle WebLogic уязвимых перед CVE-2020-14882 и CVE-2020-14750.
Kirhgoff
Интересно, а кто-то еще пользуется WebLogic? Мой опыт работы с ней был связан с выкручиванием из нее Java кода и переноса его в jboss порядка 15-20 лет назад, и это тогда уже воспринималось как что-то доисторическое. Если кто есть, поделитесь своей болью (ну или восторгами...?)
SicYar
Без шуток делал похожее полтора — два года назад, да и ходят слухи, в подвалах сбера он ещё жив.
Кровавый энтерпрайз не быстр на изменения.
ykosyakov
К сожалению, да. Есть немало банков, в которых он используется.
ivanovdev
А чем он плох? В чем его доисторичность?
Kirhgoff
Ну я, наверное, не тот, человек, которого стоит спрашивать, я его не видел в глаза с тех пор, а с Java не работал года 4 уже.
Могу попробовать вспомнить про то, что было. Во-первых, там очень тяжело использовались EJB, как выше выразились, «кровавый энтерпрайз». Если не в курсе, что это такое, обьяснять не возьмусь, но помню, что на каждый чих-пых приходилось писать по 5-7 классов, которые были одним сплошным бойлерплейтом, который на самом деле был никому не нужен.
Затем коммуникации. Клиенты для взаимодействия с сервером использовали не REST (который тогда только-только появился), не даже SOAP, который, хоть и вербозный, но при наличии прямых рук можно было готовить, а CORBA, которую я отпилил и забыл, как страшный сон.
Ну и сама тяжесть всего сервака. Там нельзя было просто взять и перезапустить его, там все процессы были как-то размазаны про разным бинарникам, которые как-то там по-своему запускались и черт там ногу мог сломать, где что летит, да и классы запускались не напрямую, а через какие-то кастомные класс лоадеры, так, что непонятно было вообще, что где запущено.
Не знаю, может, мне просто не повезло с той конкретной системой, которую моей команде передали, может, сейчас оно все совсем другое, но время, когда мы это пытались мантейнить, было кошмаром.
sparhawk
То, что вы перечислили, это не проблемы WebLogic, а проблемы Java EE.
WebLogic сделан так, чтобы не нужно было его перезапускать часто, но из-за этого он плохо ложится в контенеры.
Много приложений сделал, которые потом запускались на WebLogic (в банках, да). Из специфичного в одном месте только была завязка на проприетарный протокол Weblogic T3, а все остальной — бины и т.п. можно перенести нв WildFly или что-то еще (теоретически даже без изменений)
Kirhgoff
Вы спросили, в чем доисторичность, я ответил (если использовать ваши слова) — в том что EJB и что есть специфика что он плохо ложиться в контейнеры. Разве EJB — это модная молодежная технология? Не вижу логической ошибки.
sparhawk
Из вашего комментария не понятно, что устарело — технология (Java EE) или ее конкретная реализация (Weblogic).
На Weblogic можно запускать приложения без EJB, используя только сервлеты (и Spring, например — для одного заказчика только так и писали, без EJB). А тот же EJB можно и на TomEE запустить (стартовал в 2012-м — старым не назовешь).
В принципе Weblogic и под контейнеры пойдет, если ограничиваться одним сервером (процессом в терминах Weblogic). Просто он сам как менеджер контейнеров.
Kirhgoff
Ну а с тем, что EJB устарело, вы согласны? Сами бы вы свою собственную продакшн систему стали бы писать на EJB?
sparhawk
Последние версии Jakarta EE 8 даже не смотрел. Сам не стал бы использовать — больше на Spring специализируюсь. Но это не только от меня, а от команды и компании зависит.