В модуле Spring Core, поставляемом в составе фреймворка Spring Framework, выявлена критическая 0-day уязвимость, позволяющая неаутентифицированному удалённому атакующему выполнить свой код на сервере. Пока не ясно насколько катастрофичны могут быть последствия выявленной проблемы и будут атаки столь же массовыми, как в случае с уязвимостью в Log4j 2. CVE проблеме пока не присвоен. В Spring Framework проблема пока остаётся неисправленной и в сети уже доступно несколько рабочих прототипов эксплоитов (1, 2, 3, 4). Проблему усугубляет то, что многие корпоративные Java-приложения на базе Spring Framework выполняются с правами root и уязвимость позволяет сразу полностью скомпрометировать систему...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56941
Жаба как обычно, самая безопасная. Банально из-за сложности и многослойных нагромождений легаси.
Неа.> многие корпоративные Java-приложения на базе Spring Framework выполняются с правами root и уязвимость позволяет
Дело в попытке быстро получить бизнес результат. Поэтому халтурят во все лопатки. И таки - да, оно в контейнерах под рутом, и без контейнером под рутом. Так руководство топит за скорость.
Как будто "не под рутом" что-то изменило бы. У жабаприложения и так есть доступ ко всему, что вообще представляет хоть какую-то ценность. Причем обычно это ВСЬО значительно больше и дальше чем никому ненужный контейнер в контейнере в контейнере, хоть ты там будь рутом, хоть Г-дом Б-гом, все равно от юзера nobody (от которого, допустим на минуточку, выполняется весь твой из себя такой сесюрный жабокод из этого контейнера) есть доступ к хранилищу документов, базам, сервисным системам и так далее - иначе бы этот жабокот в сферическом вакууме никому нужен и не был.Не в ту сторону воюете, ик-сперды по безопастносте.
Речь про отношение людей к теме.Это может и да, если всё в целом. А про рута история про снижение скорости развития вектора атаки, про уменьшение возможностей. И что это не делают сознательно.
Ну потому что правда ни от чего не поможет и только займет лишнее время.
Обычно не от рута имеет смысл не ради этого а ради того что от рута у нас все еще вообще не все идеально работает - юникс-шмуникс какой-то, что-ли там был - некоторый софт все еще на полном серьезе рассчитывает, к примеру, что файл с правами 200 нельзя прочитать - и вместо ошибки доступа получает полузаписавшиеся данные.Но это ж надо хотя бы суметь юзера внутри контейнера поменять.
А уметь-то умеют. Только это ж работу работать надо. А на улице - весна.
Не умеют. В гугле искать умеют - но это ж искать надо, а там спринт не ждет!
На улице ночь полярная, я только что в окно выглядывал.
ой, извини... сглазил... Нашли они в гугле, пока я тебе предыдущее писал... как тебе контейнер после запуска которого надо вручную поменять ВНУТРИ права на некоторые подкаталоги? А то оно туда хочет записать - но не может. (Ну, ясен пень, снаружи к нему мапится дофига всего чему тоже нужно поменять, лучше сразу на 666, а то они сами не в курсе какой там userid и какой будет после автопересборки их чудо continuous desintegration, но на фоне вот этой простоты "залезь и поменяй!" уже мелочи)
Получил root контейнера, а дальше с ним со делать?
В контейнере кроме jvm и приложения ничего нет.
Там всякие капабилити включены, конт. привилегированный и прочие лёгкие способы достижения целей. Такая себе помойка.
Даже встречал как за своё выдают основную и первую идею контейнеризации и изоляции - типа собственного изобретения "новый", свой!, способ применения для безопасности. Настолько много тех, кому неизвестно для чего всё было придумано. Настолько неиспользуется.
> В контейнере кроме jvm и приложения ничего нет.А в конфиге приложения - всё, что нужно для доступа к БД, с которой это приложение работает.
Поэтому я решил что конфиги - г-но, немедля поперекодить все так чтоб все сикретные данные были в сикретных местах в самом коде. И чтоб никто не мог их потом найти!
Пральна, и каждый день выпускать апдейт, в котором всё будет в новых местах, чтобы хакеры не успевали узнать где и что спрятано.
Но пароли будут всегда старые, потому что не все те места удается найти и поменять.Причем, разумеется, это пароль 123.
так это же не зависит от того root там или не root. Всё самое ценное будет доступно независимо от того под каким пользователем java запущено.
> так это же не зависит от того root там или не root.
> Всё самое ценное будет доступно независимо от того под каким
> пользователем java запущено.дык. Эспертам опеннета это понимание чуждо.
Другой вопрос, правда, в том, что через какой-нибудь чатик сделанный индусским аутсорсером на от...сь и без поддержки потому что всего лишь чяаааатик - могут поломать инфраструктуру, потому что все контейнеры крутятся на одних и тех же серверах и иногда, уп-с, протекают.Но поможет ли от этого не-рут - в общем-то не факт. Например, предыдущие протечки позволяли запустить от нерута контейнер внутри контейнера - ой, с рутом. Который незамысловатыми телодвижениями внезапно становился системным рутом - с доступом ко всем контейнерам разом.
Т.е. фактически вы своим постом подтвердили, что жаба тотальный легаси. Дело было только за желающим это легаси пошатать.
Стандартная история с рефлексией-десериазилацией. Такое безопасно делать только по белым спискам. В любом, внезапно, языке, где есть что-то похожее. Это очень, кстати, похоже на старую уязвимость в Drupal - с именем функции-коллбэка в пейлоаде.Короче, в сотый раз те же грабли.
Спасибо г-споди, что я с этим больше не работаю.
А с чем работаете?
не с этим
С лопатой на стройке
не воспроизвелось. Так херово работает все, что даже эксплойты не работают
Но ведь даже без учёта уязвимостей - жаба тормозная и жручая. Кто в здравом уме будет будет её использовать?
Производители железа одобряют
зайдите на хх.ру да спросите у всех тамошних работодателей из сферы ИТ
Сейчас в результате февральских событий есть подозрение, что все это последие 30 лет были подсадные вакансии в подсадных проектах с нулевым результатом.
А она настолько была прогрессивнее Сей, что профит от того поборол.Как написано - столько и жрёт. Кто хорошо пишет, тот тоже будет использовать.
Дак класс RC счетчика (а смарт поинтеры в плюсах уже из коробки) в сях можно написать за час рабочего времениВ чем преимущество сегодня тогда в этих ваших джавах?
> В чем преимущество сегодня тогда в этих ваших джавах?В синтаксисе. Язык идеален для ОЧЕНЬ больших проектов, и наоборот, совершенно не расчитан для одностраничных хеллоуворлдов. Про тормознутость тоже улыбнуло, ведь джава всего в полтора раза медленнее Си, в то время, как богомерзкий питон в десятки раз медленнее.
> тормозная и жручаяНасчет жручести - может быть и правда, но тормоза - чистой воды фантастика. В яве тормозили только т.н. "ява-аплеты" (были популярны до того, как ты родился) и свинг. А серверная ява довольно шустра и всего в полтора раза медленнее плюсов (всякие пихтоны и пыхи -- на порядки порядков порядков медленнее плюсов). Любой, находящийся в здравом уме, предпочтет использовать уже состоявшуюся Платформу со стандартами на все случаи жизни вместо того, чтобы изобретать квадратное колесо в пихтонах/пыхах. Таких платформ сейчас всего две - сишарп и ява. Сишарп отбросим за его проприетарность. Остается только ява.
Но на пихтонах/пыхах все еще можно клепать гостевухи -- там, где производительность не важна. Эта гостевуха блестяще справится с двумя-тремя пользователями в месяц.
> Но на пихтонах/пыхах все еще можно клепать гостевухи -- там, где производительность не важна. Эта гостевуха блестяще справится с двумя-тремя пользователями в месяц.3000 одновременно залогиненых пользователей, каждый - на подсосе минимум одного вебсоскета. И всё это держит один пихтон-контейнер, ибо больше и не надо. Просто справляется и всё.
Я сам не фанат пихтонов, пыхов и прочих жабогадюк, но попросил бы тебя не болтать ерундой при людях.
> 3000 одновременно залогиненых пользователей, каждый - на подсосе минимум одного вебсоскетаЦелых 3 тысячи! При том что стек который это держит скорее всего чуть более, чем полностью сишный
По секрету скажу что любой асинхронный jvm фреймворк у которого на github хотя бы 100 звездочек будет держать и 100к websocketА те кто тюнит джаву получал 12 млн еще в 2013 году
https://migratorydata.com/blog/migratorydata-with-12-million.../
64к коннектов одновременно обрабатывали на нескольких томкатах, которые на одной тачке стояли. Обрабатывали бы и сильно больше, но обычно необходимости не было, поэтому роутер никто не менял.Еще помню, заказчик часть сервисов отдал пихтонистам и пыхыпешникам - те даже запросы подписывать и расшифровывать не умели, приходилось за них все делать.
а сессий десятки - сотни тысяч были и все летало на "тормозной" джаве. Надо просто писать нормально, тогда и лагать ничего не будет и ресурсов будет хватать на все.В том же постгресе миллиарды записей было, но мы даже на гибернейте работали с ним и нагружали одно ядро всего. Просто надо было запросы все оптимизировать, бд затюнить и кэши на серваке нормально настроить.
А если писать кривыми руками, то вам и один пользователь сервак положить сможет
> серверная ява довольно шустраДооо... Уж мы сейчас как всю память в системе отхаваем, да все свои структуры данных как проинициализируем, да кэши как прогреем, да после этого как попрём, как попрём, так попрём, что о-го-го, как попрём, ой, что-то как-то всё тормозить стало, ой памяти не хватает, ой, для свопа уже раздела не хватает, ой, всё раком встало, даже оом киллер не успел нашу шуструю серверную жабу пристрелить.
> ой, что-то как-то всё тормозить стало, ой памяти не хватает, ой,
> для свопа уже раздела не хватает, ой, всё раком встало, даже
> оом киллер не успел нашу шуструю серверную жабу пристрелить.это просто у тебя код г-но. Вот как надо правильно: "дорогая техподдержка - а чего это у нас через некоторое время работы вашего [очень ентер-прайсный протухт] он выжырает все выделенные жабовм терабайты, после чего начинает жрать еще и процессор как не в себя, так что и пристрелить его почти невозможно? - А это потому что когда у нас память кончается, автоматически запускается GC, шерстящий все эти понавыделенные терабайты. И чем больше их понавыделено тем медленнее он их перебирает. А поскольку памяти от этого нихрена не прибавляется - мы ему в подмогу запускаем еще один. И еще. И еще. Вот, теперь вам хорошо - у вас не только памяти нет, но и процессорные ядра все заняты непойми чем!"
Ага, LA за сотню, и когда очередь дойдёт до оом киллера - еще неизвестно ))
> свои структуры данных как проинициализируем, да кэши как прогреемна яве пишут долгоиграющие приложения. То, что он будет раз в месяц запускаться секунд 10 - не важно, это же твой IИDEX.рнр, запускающийся с полного нуля при каждом запросе.
> всю память в системе отхаваем
не позорься, погугли про Xmx/Xms и возвращайся править IИDEX.рнр (напрямую через FTP естессно, и не забудь в битриксе активировать режим проактивной защиты).
Вообще-то, кроме жабы на белом свете существуют не только php и python. Ну да ладно, не буду тебя грузить ненужностями.
Для корпоративных приложений кроме явы есть только сишарп, period. А так да, для твоих хелловорлдов и HQ9+ сойдет.
Ну да, ну да...
> Остается только яваДа есть, вообще-то, на белом свете один ЯП, специально созданный для написания неубиваемого ПО, главным образом серверного, разрабы которого в своё время на вопрос "как ваш язык справляется с проблемой 10к соединений" удивлённо ответили "а разве 10к соединений - это проблема?", но ты не обращай внимания, забей, правило "меньше знаешь - крепче спишь" никто не отменял.
но ты про этот язык никому не расскажешь, верно? А если и расскажешь, то выяснится, что "серверное ПО" и "корпоративное ПО" - это, мягко говоря, разные вещи, и требования к ним существенно отличаются.
Конечно нет, зачем людей смущать? Вон как они бодро плюсуют свои каменты, в их мире всё стройно, гармонично и однозначно, зачем им его ломать?
ну тогда продолжай пребывать в воображаемом мирке, где изобрели серебряную пулю "убийцу явы, сишарпа, сишки, неба, и вообще всего"
Имя, брат, имя! Неужели эрланг богомерз... богоподобный или эликсир, на нем настоянный?
Не могу, обещал не говорить. Но вобщем - те же яблоки, только в профиль.
Бежать немедленно с этой жабы
Дети всегда куда-то бегут.
Откуда-то или куда-то, неважно, направление задают эксперты на опеннете.
Жаба это давно уже легаси сводящееся к поддержке и допилу под нужды. Джуны нафиг не нужны, поэтому учить с нуля точно не стоит.
А к embedded tomcat не относится что-ли? Только если war-ник и на отдельном Tomcat сервере?
However, if Spring is deployed using the Embedded Tomcat Servlet Container the classloader is a LaunchedURLClassLoader which has limited access.
кто из опытных ушел из джавы в Го, как оно?
Я пытался подучить жабу как-то.Что меня с первого же шага выбесило -- нужно пройти регистрацию чтобы скачать СДК.
Потом начал писать код по метаниту. И когда понял, что жаба не поддерживает UTF-8 -- сказать что я немного прифигел -- ничего не сказать.
Дальше началась песня с какими-то промежуточными файлами, какими-то мутными настройками, манифестами... Короче меня это задолбало и бросил учить.
Гошечка просто кратно проще и логичней.
Скорее всего разработка ПО это не твое.
Уж жаба-то проще сей и крестов.
Корпо-лопатный игого тоже не вариант, он за тебя качественный код не напишет.
> Скорее всего разработка ПО это не твое.Угу, наверное ты прав. Ответил главный эксперт блока по техническому развитию одной из госкорпораций.
> Ответил главный эксперт блока по техническому развитию одной из госкорпорацийкакая госкорпорация, такие и главные эксперты
Да. Это трудная работа, писать код, в котором сложно отклониться от нужного. И инструмент давно уже вышел.Для Гошечки наработок мало. А под Жаву написано мириады уже делающего нужное кода.
Гошечка смутила признаками сейчас недоделанности всех фич, которые задуманы вообще. Возможно.
Большей шизофазии ппро джаву почти не встречал
Когда java разрабатывалась utf-8 еще небыло. Для внутренних строк используется единственная кодировка UTF-16, наружу она всю жизнь могла сохранять в любой кодировки, какую укажешь. А не укажешь, сохранит в системной.
это не аргумент. питон например еще старше и прожувал эту проблему. utf16 скорее бы уже всем забыть
> Когда java разрабатывалась utf-8 еще небылоЖабка вышла в 95-ом.
utf-8 - в 1992-ом. А используемый жабкой utf-16 - в 96-ом.
Но в целом, это религиозный вопрос что лучше иметь внутри: utf-8, или utf-16.
> жаба не поддерживает UTF-8Насколько нужно затупить чтобы такое написать?
>> жаба не поддерживает UTF-8
> Насколько нужно затупить чтобы такое написать?Нисколько. Все файлы сохранял в UTF-8 (кодировка по умолчанию), и компилятор не стал исходник кушать, пока принудительно не сохранил в CP-1251.
> Нисколько. Все файлы сохранял в UTF-8 (кодировка по умолчанию), и компилятор не
> стал исходник кушать, пока принудительно не сохранил в CP-1251.Походу в винде дело происходило? У Java в винде кодировка по умолчанию как раз 1251, потому что это кодировка по умолчанию в Windows.
У компилятора есть опция для указания кодировки.Я уж подумал что вы имели в виду что "жаба не поддерживает UTF-8" вообще. Решил что вы начали работать в 1996-ом году с JDK 1.0, там действительно не было работы с кодировками. И тогда же сразу разочаровались, не дождавшись версии 1.1 от 1997-го. И тогда же перешли на Go.
> Походу в винде дело происходило? У Java в винде кодировка по умолчанию
> как раз 1251, потому что это кодировка по умолчанию в Windows.
> У компилятора есть опция для указания кодировки.Почему-то компилятору golang, или pyhon -- никакие кодировки указывать не надо. Нигде. Совсем.
Java точно нормальные люди разрабатывали? Однобайтовая кодировка по умолчанию -- это из какого пещерного века стандарт?> Я уж подумал что вы имели в виду что "жаба не поддерживает
> UTF-8" вообще. Решил что вы начали работать в 1996-ом году с
> JDK 1.0, там действительно не было работы с кодировками. И тогда
> же сразу разочаровались, не дождавшись версии 1.1 от 1997-го. И тогда
> же перешли на Go.Нет, разумеется. Go ещё и 20 лет нету.
Проблема с УТФ-8 в консоли винды – бага самой винды, а не джавы. Проблема старая ещё с до-юникодовой эпохи. Решается флагом -encode utf8.
> Проблема с УТФ-8 в консоли винды – бага самой винды, а не
> джавы. Проблема старая ещё с до-юникодовой эпохи. Решается флагом -encode utf8.Ещё раз внимательно читаем текст. При чём тут консоль? При чём тут венда? utf8 -- это дефолтная кодировка у меня в IDE. Где вы всю эту чушь берёте? В каком месте я написал про венду и консоль?
Игого корпо-лопатен на уровне генетики.
Crystal прямой ему конкурент и заменитель.
> кто из опытных ушел из джавы в Го, как оно?Попробуй свой собственный ямл конфиг распарсить, со своей сложной схемой... Хороший пример, что иногда употеешь почти как на Яве, пока напишешь нужное. Вероятно дело в молодости языка.
Мало наработок типа Спринга... :) Как появятся, так Гошечка тоже и ожиреет и притормозит.
Позитив, что сырцы автоматически прикапываются в папочку на диске. И из той помойки можно в оффлайне собраться. Качество помойки не обязательно контролируется каким-либо автором. Но тут особой новизны нет. Всегда смотреть надо было.
> кто из опытных ушел из джавы в Го, как оно?Попробуй свой собственный ямл конфиг распарсить, со своей сложной схемой... Хороший пример, что иногда употеешь почти как на Яве, пока напишешь нужное. Вероятно дело в молодости языка.
Мало наработок типа Спринга... :) Как появятся, так Гошечка тоже и ожиреет и притормозит.
Позитив, что сырцы автоматически прикапываются в папочку на диске. И из той помойки можно в оффлайне собраться. Качество помойки не обязательно контролируется каким-либо автором. Но тут особой новизны нет. Всегда смотреть надо было.
Проверил, на пашет если сервисы сделаны норм и разрешено только то, что разрешено, можно до усрачки создавать все, что угодно, доступа туда не будет. Но в целом прикольно.
Еда... Есть в конторе бизнесовое приложение. Дико важное бизнесу. Пилят типа "мидлы', обученные де то на супер-курсах и в ютюбах. У нас, у админов, которые занимаются внедрением всей этой дичи, и обеспечением cicd и отказоустойчивости её, раньше была "палка", чтобы бить по рукам тем деятелям... После жалоб бизнесу на то, что мы тормозим их супер эффективный АДжаил своими придирками, и что им, несчастным, приходится тратить свое драгоценное время не на сам супер проект, а на ненужное замыкание дыр, бизнес у нас, вместе с ИБ отобрал "палку"... Вот так оно и живёт... Пипец, в общем.
Бежать без оглядки надо из такой конторы. Работа должна приносить удовольствие, а потом уже деньги. Живём один раз, не хватало ещё мучать себя аджаилами.
Запускающим java приложения из под рута должны выдаваться трудовые книжки.
Адекватный работодатель только так и должен поступать в своих же интересах.
Уязвимости класса privilege elevation находят довольно часто, про них часто в новостях даже не пишут
Вы из какого года вещание? Трудовые книжки сейчас остались лишь в госучреждениях, в остальных случаях это договор на минимальную по закону ЗП + "бонусы".
> Эксплуатация уязвимости .. при .. Java/JDK 9 или более новой версииЛюбителям тащить в рот всё новое посвящается.
А кто-то использует что-то новее JAVA8 для серьезных задач? Там где легаси и копро... корпоративщина - там Java8, лог4ж 1.х и полные лепота и благолепие.
На уже предыдущей работе использовали java 11, что openjdk. Собирались java 13, но на момент увольнения проектов с 13 не было.
>Собирались java 13А какой смысл использовать не LTS? У нее же срок поддержки пол года, пока что-то дельное напишешь уже поддержку прекратили.
JDK 11 она LTS и много где давно уже используется.
Через год можно будет уже 17 использовать на не сильно критичных задачах.
>кто-то использует что-то новее JAVA8 для серьезных задачпочти все вакансии во всяких криптостартапах, яндексы, тупкофф и остальном подобном ) но если им сказать, что они дурачки, не поверят
>>кто-то использует что-то новее JAVA8 для серьезных задач
> почти все вакансии во всяких криптостартапах, яндексы, тупкофф и остальном подобном )
> но если им сказать, что они дурачки, не поверятПоддерживаю несколько легаси проектов (моё легаси еще поддерживается разработчиком) на java8 и с любопытством смотрю на гитхабе.... в легаси версиях 100% новостей - бекпортирование фич, а в куррент версии на ява11 - сплошные цве. Вот тебе и копро-легаси.
>Поддерживаю несколько легаси проектовпоискал бы нормальную работу )
>а в куррент версии на ява11 - сплошные цве
а я уже накатил 2.6.6 и забыл ) хотя у нас только один проект из кучи был "надо чтобы на томкэте разворачивалось в виде WAR", остальные unaffected
> поискал бы нормальную работу )Хз, мне нравится... к тому же, поддержка легаси - это скорее дополнительное на парт-тайм.
Предложенное решение НЕ сработает!условие внутри матчера "patternMatchUtils" не выполнится "if (simpleMatch(pattern, str))" в следствии чего поля не будут удалены в методе "checkAllowedFields(MutablePropertyValues mpvs)" вызовом метода mpvs.removePropertyValue(pv); - класс DataBinder