Змест[Схаваць][Паказаць]
Log4Shell, уразлівасць у Інтэрнэце, нядаўна закранула мільёны машын. Log4j, незразумелае, але амаль паўсюднае праграмнае забеспячэнне, выклікае гэта.
Log4j выкарыстоўваецца для рэгістрацыі ўсіх дзеянняў, якія адбываюцца за кадрам у розных камп'ютэрных сістэмах.
Ён заснаваны на бібліятэцы рэгістрацыі з адкрытым зыходным кодам, якая выкарыстоўваецца прадпрыемствамі і нават дзяржаўнымі арганізацыямі ў большасці прыкладанняў.
Будучы адной з найгоршых дзірак у кібербяспецы, калі-небудзь выяўленых, вельмі важна абараніць свае сістэмы ад гэтай уразлівасці. Але як?
Давайце падрабязна вывучым уразлівасць Log4j і ўсе магчымыя рашэнні для яе выпраўлення.
Што такое Log4j?
Log4j - гэта з адкрытым зыходным кодам сістэма вядзення часопісаў, якая дазваляе распрацоўшчыкам праграмнага забеспячэння запісваць розныя даныя ў сваіх праграмах. Гэта кампанент праекта Apache Logging Services, якім кіруе Фонд Apache Software.
Сотні вэб-сайтаў і праграм выкарыстоўваюць Log4j для выканання крытычных аперацый, такіх як запіс даных для адладкі і іншых мэтаў.
Калі вы ўводзіце або націскаеце на дрэнную спасылку ў Інтэрнэце і атрымліваеце паведамленне пра памылку 404, гэта часты прыклад працы Log4j. Вэб-сервер, які кіруе даменам вэб-спасылкі, па якой вы спрабавалі атрымаць доступ, паведамляе вам, што такой вэб-старонкі не існуе. Ён таксама рэгіструе падзею ў Log4j для сістэмных адміністратараў сервера.
Падобныя дыягнастычныя сігналы выкарыстоўваюцца ва ўсіх праграмах. У анлайн-гульні Minecraft, напрыклад, сервер выкарыстоўвае Log4j для рэгістрацыі такіх дзеянняў, як агульная выкарыстоўваная аператыўная памяць і інструкцыі карыстальніка, адпраўленыя на кансоль.
Як узнікае ўразлівасць?
Пошукі - гэта новая функцыя, прадстаўленая ў Log4j 2.0, якая дапамагае ўключаць дадатковую інфармацыю ў запісы журнала. Адным з такіх пошукаў з'яўляецца пошук JNDI (інтэрфейс імёнаў і каталогаў Java), які ўяўляе сабой API Java для сувязі са службай каталогаў.
Выкарыстоўваючы гэты падыход, унутраныя ідэнтыфікатары карыстальнікаў могуць быць адлюстраваны на рэальныя імёны карыстальнікаў. Гэты запыт раскрывае нядаўна выяўленую ўразлівасць RCE, паколькі адзін з тыпаў даных, якія прадстаўляюцца серверам LDAP, з'яўляецца URI, які паказвае на клас Java, які затым загружаецца ў памяць і запускаецца асобнікам Log4j.
З-за слабасці ў праверцы ўводу бібліятэкі Log4j можна дадаць адвольны сервер LDAP з ненадзейнай крыніцы. Паколькі распрацоўшчыкі мяркуюць, што даныя, адпраўленыя ў журналы, будуць апрацоўвацца як звычайны тэкст, дадатковая праверка ўводу не праводзіцца, і небяспечны ўвод карыстальніка трапляе ў журналы.
Заява часопіса можа выглядаць так:
Цяпер шкоднасны карыстальнік уставіць у параметр URL пошук JNDI, які спасылаецца на падроблены сервер LDAP. Пошук JNDI будзе выглядаць наступным чынам:
Затым бібліятэка Log4j размаўляе з гэтым серверам LDAP на attacker.com, каб атрымаць інфармацыю аб каталогу, уключаючы значэнні для Java Factory і Java Codebase.
Гэтыя два значэнні ўключаюць у сябе клас Java зламысніка, які затым загружаецца ў памяць і выконваецца асобнікам Log4j, завяршаючы выкананне кода.
Хто рызыкуе?
Уразлівасць Log4j неверагодна шырокая і ўплывае на бізнес-праграмы, убудаваныя прылады і іх падсістэмы. Сярод закранутых праграм Cisco Webex, Minecraft і FileZilla FTP.
Аднак гэта далёка не ўвесь спіс. Недахоп нават уплывае на місію верталёта Ingenuity Mars 2020, які выкарыстоўвае Apache Log4j для запісу падзей.
Супольнасць бяспекі склала а спіс уразлівых сістэм. Вельмі важна адзначыць, што гэтыя спісы пастаянна абнаўляюцца, таму, калі пэўная праграма або сістэма не прадстаўлены, не думайце, што яны не закрануты.
Ўздзеянне гэтай уразлівасці цалкам верагодна, і нават калі спецыфічны тэхнічны стэк не прымяняе Java, кіраўнікам службы бяспекі варта чакаць, што крытычна важныя сістэмы пастаўшчыкоў, пастаўшчыкі SaaS, пастаўшчыкі хмарнага хостынгу і пастаўшчыкі вэб-сервераў будуць рабіць гэта.
Як праверыць наяўнасць уразлівасці Log4j?
Першы крок - вызначыць, ці адбылося ўжо напад. Вы можаце зрабіць гэта, праверыўшы сістэмныя журналы на наяўнасць фрагментаў карыснай нагрузкі RCE.
Калі пошук па такіх тэрмінах, як «jndi», «ldap» або «$::», дае якія-небудзь журналы, даследчыкі бяспекі павінны вывучыць далей, каб убачыць, ці была гэта законная атака або проста зняцце адбіткаў пальцаў.
Было выяўлена мноства нападаў у дзікай прыродзе, якія не прыносілі шкодных карысных нагрузак. Тым не менш, яны былі праведзены экспертамі па бяспецы, каб вызначыць, колькі прыкладанняў уразлівыя для гэтай атакі.
Наступны крок - выкарыстанне бібліятэкі Log4j для ідэнтыфікацыі ўсіх праектаў. Калі выкарыстоўваюцца версіі паміж 2.0-beta9 і 2.14.1, праект можа быць успрымальным.
Улічваючы цяжкасці ў вызначэнні, дзе існуе гэтая ўразлівасць, лепш выказаць здагадку, што праект успрымальны і што абнаўленне бібліятэкі з'яўляецца найлепшым спосабам дзеянняў для ліквідацыі небяспекі выканання кода.
Праект не ўразлівы, калі выкарыстоўваецца версія ніжэй за 2.0-beta 9, хоць бібліятэка Log4j усё роўна павінна быць абноўлена, таму што версіі ў дыяпазоне 1.x старыя і больш не абнаўляюцца.
Рэкамендуецца праверыць, ці знойдзены ўразлівы праект, каб даведацца, ці змяшчае інфармацыя, зарэгістраваная з дапамогай Log4j, інфармацыю, якую карыстальнік можа змяніць. Прыкладамі гэтых даных з'яўляюцца URL-адрасы, параметры запытаў, загалоўкі і файлы cookie. Калі адзін з іх зарэгістраваны, праект знаходзіцца пад пагрозай.
Гэтыя веды могуць дапамагчы вам у далейшым паглыбленні ў сістэмныя журналы і вызначэнні таго, ці падвяргалася ваша вэб-прыкладанне ўжо нападу.
Ёсць бясплатныя онлайн-інструменты, якія могуць вызначыць, ці з'яўляецца вэб-прыкладанне ўразлівым. Адна з такіх праграм Log4Shell паляўнічая. Гэта з адкрытым зыходным кодам і даступны на GitHub.
Пры выяўленні ўразлівай вобласці кода ў інтэрнэт-праграме карысная нагрузка, прадстаўленая раскрытым інструментам, можа быць выкарыстана для ўвядзення яе ў вэб-праграму. Інструмент тэсціравання выявіў бы злучэнні паміж вашым вэб-прыкладаннем і іх серверам LDAP, калі ўразлівасць была выкарыстана.
Рашэнні для ліквідацыі ўразлівасці Log4j
Першы крок - абнавіць Log4j, што можна зрабіць з дапамогай звычайных менеджэраў пакетаў або загрузіўшы яго непасрэдна з гэтага старонка.
Таксама можна знізіць магчымасць выкарыстання ўразлівасці, усталяваўшы для зменнай асяроддзя FORMAT MSG NO LOOKUPS значэнне true. Гэтая контрмера, аднак, прымяняецца толькі да версій Log4j больш або роўна 2.10.
Зараз разгледзім альтэрнатыўныя варыянты.
1. Абыходныя шляхі для Log4j версіі 2.17.0
Безумоўна, настойліва рэкамендуецца выкарыстоўваць Log4j версіі 2.15.0 для абароны ад Log4Shell, аднак, калі гэта немагчыма, даступныя іншыя рашэнні.
Версіі 2.7.0 і больш познія Log4j: Цалкам магчыма абараніцца ад любой атакі, змяніўшы фармат падзей, якія будуць запісвацца, выкарыстоўваючы сінтаксіс % m nolookups для даных, якія прадстаўляюцца карыстальнікам. Гэта абнаўленне патрабуе рэдагавання файла канфігурацыі Log4j для стварэння новай версіі праграмы. У выніку перад разгортваннем гэтай новай версіі неабходна паўтарыць этапы тэхнічнай і функцыянальнай праверкі.
Log4j версіі 2.10.0 і пазнейшыя: Таксама можна абараніцца ад любой атакі, усталяваўшы для параметра канфігурацыі log4j2.formatMsgNoLookups значэнне true, напрыклад, пры запуску віртуальнай машыны Java з опцыяй -Dlog4j2». formatMsgNoLookups = true, Іншы варыянт - выдаліць клас JndiLookup з аргумента classpath, што выдаліць асноўны вектар атакі (даследчыкі не выключаюць магчымасці іншага вектара атакі).
Amazon Web Services прадастаўляе патч, які «трэба выкарыстоўваць на ваш страх і рызыка». Былі апублікаваныя іншыя «метады», такія як Logout4Shell, які «выкарыстоўвае гэтую ўразлівасць супраць сябе». Эксперт па бяспецы сумняваецца ў законнасці гэтага кроку, які прадугледжвае «ўзлом машыны, каб выправіць яе».
2. Праблема была вырашана ў Log4j v2.17.0.
Для версій вышэй за 2.10: для Log4j2.formatMsgNoLookups павінна быць усталявана значэнне true.
Для версій ад 2.0 да 2.10.0: выканайце наступную каманду, каб выдаліць клас LDAP з Log4j.
Log4j2.formatMsgNoLookups павінна быць усталявана ў значэнне true ў наладах сістэмы.
Змякчэнне ў JVM
Змякчэнне з дапамогай параметраў JVM больш не магчыма. Іншыя метады змякчэння наступстваў працягваюць быць паспяховымі. Абнавіцеся да Log4j версіі 2.17.0, калі магчыма. Існуе кіраўніцтва па міграцыі для Log4j v1.
Калі абнаўленне немагчымае, пераканайцеся, што для кліенцкіх і серверных кампанентаў устаноўлена сістэмнае ўласцівасць -Dlog4j2.formatMsgNoLookups = true.
Звярніце ўвагу, што Log4j v1 дасягнуў канца жыцця (EOL) і больш не будзе выпраўляць памылкі. Іншыя вектары RCE таксама ўспрымальныя да Log4j v1. Такім чынам, мы заклікаем вас як мага хутчэй абнавіць Log4j 2.17.0.
3. Меры па змякчэнні наступстваў
Бягучыя эксплойты не могуць працаваць, нават калі ў некаторых выпадках Log4j успрымальны, напрыклад, калі на хост-машыне працуе версія Java вышэй за 6u212, 7u202, 8u192 або 11.0.2.
Гэта звязана з лепшай абаронай ад аддаленай загрузкі класаў Java Naming and Directory Interface (JNDI) у бягучых версіях, што неабходна для працы атакі.
Больш за тое, з версіямі Log4j, большымі за 2.10, праблемы можна пазбегнуць, усталяваўшы сістэмнае значэнне formatMsgNoLookups у true, указаўшы аргумент JVM -Dlog4j2.formatMsgNoLookups = true або выдаліўшы клас JndiLookup з шляху да класаў.
Тым часам, пакуль уразлівыя асобнікі не будуць выпраўлены, уразлівасць можна ліквідаваць з дапамогай прыведзеных ніжэй метадаў:
- Усталюйце для сістэмнай уласцівасці log4j2.formatMsgNoLookups значэнне true для >=2.10.
- Усталюйце для параметра асяроддзя LOG4J FORMAT MSG NO LOOKUPS значэнне true для >=2.10.
- Выдаліце JndiLookup.class са шляху да класаў для 2.0-beta9 да 2.10.0: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Адна з рэкамендаваных найлепшых практык - абмежаваць выхадны трафік у Інтэрнэт толькі адпаведнымі партамі.
Нягледзячы на тое, што большасць нападаў у гэтай галіне ажыццяўляецца праз HTTP, уразлівасць можа быць выкарыстана праз любы пратакол, які рэгіструе ўведзеныя карыстальнікам дадзеныя з дапамогай Log4j.
Тым не менш, абнаўленне да log4j 2.17.0 з'яўляецца лепшым сродкам, таму што хтосьці можа знайсці дадатковы падыход да праблемы. Акрамя таго, многія выдаўцы і вытворцы абвясцілі аб паляпшэнні сваіх сэрвісаў і праграм.
4. Патч уразлівасці Log4Shell
Log4j усюдыісны, асабліва цяпер, калі ўразлівасць выкарыстоўваецца. Падводзячы вынік, усё, што вам трэба зрабіць, гэта ўключыць наступныя сімвалы ў часопісы, правераныя Log4j.
І гэта загрузіць і выканае файл Java, які знаходзіцца ў канцы URL. Гэта так проста, як і драматычна.
Як вы ведаеце, вельмі важна абнавіць log4j да версіі >= 2.17.0, каб выправіць гэтую ўразлівасць Log4Shell (CVE-2021-44228).
Калі гэта немагчыма:
Для прыкладанняў, якія выкарыстоўваюць бібліятэку Log4j версій 2.10.0 і больш позніх, таксама можна абараніць ад любой атакі, усталяваўшы для параметра канфігурацыі log4j2.formatMsgNoLookups значэнне true, напрыклад, пры запуску віртуальнай машыны Java з параметрам -Dlog4j2.formatMsgNoLookups = true.
Іншы варыянт - выдаліць клас JndiLookup з аргумента classpath, што выдаліць асноўны вектар атакі (даследчыкі не выключаюць існавання іншага вектара атакі).
Нататка
Арганізацыі, якія вагаюцца або не жадаюць уносіць карэкціроўкі ў адчувальныя сістэмы (або жадаюць усталяваць дадатковыя меры абароны), павінны падумаць аб:
- Пераканайцеся, што ўвесь трафік накіроўваецца праз iSensor/WAF/IPS. Гэта можа перашкодзіць зламысніку атрымаць доступ да сістэмы.
- Абмежаванне аб'ёму трафіку, які можа дасягнуць успрымальнай сістэмы Калі сістэма не мае патрэбы ў падключэнні да Інтэрнэту, абмяжуйце доступ толькі неабходнымі і надзейнымі IPS і дыяпазонамі.
- Скарачэнне аўтарызаванага выходнага трафіку хоста. Паколькі гэтая атака дзейнічае праз падключэнне да фальшывага сервера, усе лішнія IP-адрасы і парты павінны быць заблакіраваны брандмаўэрам.
- Калі паслуга больш не патрабуецца, яе трэба адключыць, пакуль не будзе гатова выпраўленне.
заключэнне
Недахопы Log4j шакавалі нашу супольнасць і нагадалі ўсім нам, наколькі мы залежым ад праграмнага забеспячэння з адкрытым зыходным кодам.
Log4j унікальны. Гэта не ані аперацыйная сістэма, ані браўзер, ані праграмнае забеспячэнне. Гэта хутчэй тое, што праграмісты называюць бібліятэкай, пакетам або кодавым модулем. Ён служыць толькі адной мэты, гэта значыць весці ўлік таго, што адбываецца на серверы.
Людзі, якія пішуць код, аддаюць перавагу канцэнтравацца на тым, што робіць іх праграмнае забеспячэнне адметным. Яны не зацікаўлены ў тым, каб вынаходзіць ровар. У выніку яны абапіраюцца на мноства існуючых бібліятэк кода, такіх як Log4j.
Модуль Log4j паходзіць ад Apache, найбольш шырока выкарыстоўванага праграмнага забеспячэння вэб-сервера. Вось чаму яго можна выявіць на мільёнах сервераў. Такім чынам, павялічваюцца пагрозы бяспецы.
Я спадзяюся, што прыведзеныя вышэй рашэнні дапамогуць вам захаваць вашы прылады ў бяспецы.
Сачыце за абнаўленнямі HashDork, каб атрымаць больш карыснай інфармацыі са свету тэхналогій.
Пакінуць каментар