Log4j — бібліотека журналювання Java програм, частина загального проєкту «Apache Logging Project». Log4j спочатку розвивався в рамках «Apache Jakarta Project», відповідального за всі Java-проєкти Apache, але згодом виділився в окремий, дуже популярний проєкт журналювання.
Тип | Журналювання |
---|---|
Розробники | Apache Software Foundation і d |
Платформа | віртуальна машина Java |
Операційна система | кросплатформова програма |
Мова програмування | Java |
Ліцензія | d |
Репозиторій | github.com/apache/logging-log4j2 |
Вебсайт | logging.apache.org/log4j/2.x/ |
|
Log4Shell
На початку грудня 2021 року низка сайтів, що пропонували різні послуги для гравців у гру Minecraft повідомили про уразливість в серверних системах, а також в Java-клієнті Minecraft.
Перші відомі спроби її реалізації датовані 1 або 2 грудня 2021 року, проте ознак масового використання для атак на той час зареєстровано не було, попри те, що вона існувала приблизно з 2013 року. А вже 14 грудня 2021 року було зареєстровано понад 840 тисяч спроб її реалізувати.
Дана уразливість отримала код CVE-2021-44228 та 10 балів з 10 за рівнем небезпеки.
Вона спричинена особливістю обробки фрагментів ${} в рядках для журналів функціями Log4j. При певній комбінації кодових слів існує можливість завантаження класів через (англ. Java Naming and Directory Interface) з LDAP-серверів та виконання їхнього коду.
Версії Java новіші за 6u211, 7u201, 8u191, та 11.0.1 начебто менш вразливі, оскільки вони за замовченням не дозволяють JNDI завантажувати код з серверів LDAP. Проте й новіші версії Java дають можливість виконувати код, який вже наявний в локальній системі.
14 грудня 2021 року була випущена версія 2.16.0, в якій обробка запитів JNDI взагалі вимкнена за замовченням. Аби її увімкнути, користувач має виконати відповідне налаштування. Дослідження оригінальної уразливості показали, що такий підхід — єдиний спосіб захисту, оскільки навіть новіші версії Java без змін в Log4j уразливі до неї.
Опис уразливості
Уразливість з'явилась в коді Log4j завдяки латці LOG4J2-313 та вперше потрапила в реліз 2.0-beta9 (випущена у вересні 2013 року), а прибрати її вперше спробували у версії 2.14.1 (березень 2021 року).
Новим функціоналом була додана можливість робити запит на віддалені ресурси із використанням спеціального синтаксису. При цьому, кодова комбінація може зустрічатись як в налаштуваннях бібліотеки, так і при додаванні нових записів в журнал.
Оскільки вебсервери часто зберігають інформацію передану користувачем, наприклад, заголовок User-Agent в запиті HTTP, або ж ім'я облікового запису під час автентифікації користувача, то зловмисник має широкі можливості для передачі потрібного йому рядка в уразливий код.
Крім того, уразливість може бути реалізована й проти програмних систем, які обробляють дані отримані не безпосередньо з інтернету, а від інших додатків, або ж при обробці QR-кодів тощо.
Спеціальний синтаксис складається з комбінації спеціальних символів та кодових слів: ${jndi:протокол://сервер}. При цьому спеціальні символи можуть визначати вкладені фрагменти рядка, наприклад, ${${lower:jn}${lower:di}} буде перетворене на ${jndi} й при цьому омине прості правила виявлення.
Коли бібліотека зустрічає вказану директиву, вона надсилає запит за вказаною адресою, і якщо атрибут ObjectClass завантаженого класу має значення javaNamingReference та має атрибути javaCodebase, javaFactory та javaClassName, то завантажувач об'єктів LDAP завантажить клас за URL вказаним в атрибуті javaCodebase та створить його екземпляр. При створенні екземпляра цього, завантаженого зі стороннього сервера, класу, буде виконаний його конструктор.
Таким чином, зловмисник отримує можливість віддаленого виконання коду в ураженій системі.
Навіть без віддаленого виконання коду (наприклад, якщо вказаний інший, не LDAP, протокол) зловмисники можуть додавати в адресу запиту значення змінних середовища, іншу конфіденційну інформацію з середини системи.
Захист
Перша спроба позбутись уразливості призвела до релізу Log4j 2.15.0. Проте, виявилось, що вжитих заходів недостатньо — за певного збігу налаштувань зловмисники все одно мали можливість реалізувати атаку на відмову в обслуговуванні, відомої як CVE-2021-45046 або CVSS 3.7.
Також, подальший аналіз показав, що у версії 2.15.0 залишилась уразливість із витоком чутливих даних.
Ця уразливість з'являлась при використанні параметрів «контекстної перевірки» англ. Context Lookup, типу $${ctx:loginId}) або англ. Thread Context Map, типу %X, %mdc або %MDC в шаблонах журнальних записів.
Дана уразливість залишається і при встановленні системного прапорця log4j2.noFormatMsgLookup в значення true.
Тому було терміново випущено реліз 2.16.0, в якому обробка запитів через JNDI була повністю вимкнена за замовченням.
У випадку неможливості оновити версію бібліотеки можна видалити відповідний клас вручну:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Примітки
- Dan Goodin (10 грудня 2021). Zero-day in ubiquitous Log4j tool poses a grave threat to the Internet. Ars Technica.
- Dan Goodin (13 грудня 2021). The Log4Shell 0-day, four days on: What is it, and how bad is it really?. Ars Technica.
- Hannah Murphy (14 грудня 2021). Hackers launch over 840,000 attacks through Log4J flaw. Ars Technica.
- Dirk Knop (14 грудня 2021). . Heise security. Архів оригіналу за 14 грудня 2021. Процитовано 14 грудня 2021.
- . Архів оригіналу за 14 грудня 2021. Процитовано 15 грудня 2021.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Martin Zugec (13 грудня 2021). . BitDefender. Архів оригіналу за 15 грудня 2021. Процитовано 15 грудня 2021.
- Dirk Knop (15 грудня 2021). . Heise security. Архів оригіналу за 15 грудня 2021. Процитовано 15 грудня 2021.
- Dan Goodin (15 грудня 2021). Patch fixing critical Log4J 0-day has its own vulnerability that’s under exploit. Ars Technica.
Посилання
- Головний сайт проєкту [ 14 грудня 2021 у Wayback Machine.]
Інформація про уразливості:
- CVE-2021-44228 [ 14 грудня 2021 у Wayback Machine.]
- CVE-2021-45046 [ 16 грудня 2021 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Log4j biblioteka zhurnalyuvannya Java program chastina zagalnogo proyektu Apache Logging Project Log4j spochatku rozvivavsya v ramkah Apache Jakarta Project vidpovidalnogo za vsi Java proyekti Apache ale zgodom vidilivsya v okremij duzhe populyarnij proyekt zhurnalyuvannya Log4jTipZhurnalyuvannyaRozrobnikiApache Software Foundation i dPlatformavirtualna mashina JavaOperacijna sistemakrosplatformova programaMova programuvannyaJavaLicenziyadRepozitorijgithub com apache logging log4j2Vebsajtlogging apache org log4j 2 x Mediafajli u VikishovishiLog4ShellNa pochatku grudnya 2021 roku nizka sajtiv sho proponuvali rizni poslugi dlya gravciv u gru Minecraft povidomili pro urazlivist v servernih sistemah a takozh v Java kliyenti Minecraft Pershi vidomi sprobi yiyi realizaciyi datovani 1 abo 2 grudnya 2021 roku prote oznak masovogo vikoristannya dlya atak na toj chas zareyestrovano ne bulo popri te sho vona isnuvala priblizno z 2013 roku A vzhe 14 grudnya 2021 roku bulo zareyestrovano ponad 840 tisyach sprob yiyi realizuvati Dana urazlivist otrimala kod CVE 2021 44228 ta 10 baliv z 10 za rivnem nebezpeki Vona sprichinena osoblivistyu obrobki fragmentiv v ryadkah dlya zhurnaliv funkciyami Log4j Pri pevnij kombinaciyi kodovih sliv isnuye mozhlivist zavantazhennya klasiv cherez angl Java Naming and Directory Interface z LDAP serveriv ta vikonannya yihnogo kodu Versiyi Java novishi za 6u211 7u201 8u191 ta 11 0 1 nachebto mensh vrazlivi oskilki voni za zamovchennyam ne dozvolyayut JNDI zavantazhuvati kod z serveriv LDAP Prote j novishi versiyi Java dayut mozhlivist vikonuvati kod yakij vzhe nayavnij v lokalnij sistemi 14 grudnya 2021 roku bula vipushena versiya 2 16 0 v yakij obrobka zapitiv JNDI vzagali vimknena za zamovchennyam Abi yiyi uvimknuti koristuvach maye vikonati vidpovidne nalashtuvannya Doslidzhennya originalnoyi urazlivosti pokazali sho takij pidhid yedinij sposib zahistu oskilki navit novishi versiyi Java bez zmin v Log4j urazlivi do neyi Opis urazlivosti Urazlivist z yavilas v kodi Log4j zavdyaki latci LOG4J2 313 ta vpershe potrapila v reliz 2 0 beta9 vipushena u veresni 2013 roku a pribrati yiyi vpershe sprobuvali u versiyi 2 14 1 berezen 2021 roku Novim funkcionalom bula dodana mozhlivist robiti zapit na viddaleni resursi iz vikoristannyam specialnogo sintaksisu Pri comu kodova kombinaciya mozhe zustrichatis yak v nalashtuvannyah biblioteki tak i pri dodavanni novih zapisiv v zhurnal Oskilki vebserveri chasto zberigayut informaciyu peredanu koristuvachem napriklad zagolovok User Agent v zapiti HTTP abo zh im ya oblikovogo zapisu pid chas avtentifikaciyi koristuvacha to zlovmisnik maye shiroki mozhlivosti dlya peredachi potribnogo jomu ryadka v urazlivij kod Krim togo urazlivist mozhe buti realizovana j proti programnih sistem yaki obroblyayut dani otrimani ne bezposeredno z internetu a vid inshih dodatkiv abo zh pri obrobci QR kodiv tosho Specialnij sintaksis skladayetsya z kombinaciyi specialnih simvoliv ta kodovih sliv jndi protokol server Pri comu specialni simvoli mozhut viznachati vkladeni fragmenti ryadka napriklad lower jn lower di bude peretvorene na jndi j pri comu omine prosti pravila viyavlennya Koli biblioteka zustrichaye vkazanu direktivu vona nadsilaye zapit za vkazanoyu adresoyu i yaksho atribut ObjectClass zavantazhenogo klasu maye znachennya javaNamingReference ta maye atributi javaCodebase javaFactory ta javaClassName to zavantazhuvach ob yektiv LDAP zavantazhit klas za URL vkazanim v atributi javaCodebase ta stvorit jogo ekzemplyar Pri stvorenni ekzemplyara cogo zavantazhenogo zi storonnogo servera klasu bude vikonanij jogo konstruktor Takim chinom zlovmisnik otrimuye mozhlivist viddalenogo vikonannya kodu v urazhenij sistemi Navit bez viddalenogo vikonannya kodu napriklad yaksho vkazanij inshij ne LDAP protokol zlovmisniki mozhut dodavati v adresu zapitu znachennya zminnih seredovisha inshu konfidencijnu informaciyu z seredini sistemi Zahist Persha sproba pozbutis urazlivosti prizvela do relizu Log4j 2 15 0 Prote viyavilos sho vzhitih zahodiv nedostatno za pevnogo zbigu nalashtuvan zlovmisniki vse odno mali mozhlivist realizuvati ataku na vidmovu v obslugovuvanni vidomoyi yak CVE 2021 45046 abo CVSS 3 7 Takozh podalshij analiz pokazav sho u versiyi 2 15 0 zalishilas urazlivist iz vitokom chutlivih danih Cya urazlivist z yavlyalas pri vikoristanni parametriv kontekstnoyi perevirki angl Context Lookup tipu ctx loginId abo angl Thread Context Map tipu X mdc abo MDC v shablonah zhurnalnih zapisiv Dana urazlivist zalishayetsya i pri vstanovlenni sistemnogo praporcya log4j2 noFormatMsgLookup v znachennya true Tomu bulo terminovo vipusheno reliz 2 16 0 v yakomu obrobka zapitiv cherez JNDI bula povnistyu vimknena za zamovchennyam U vipadku nemozhlivosti onoviti versiyu biblioteki mozhna vidaliti vidpovidnij klas vruchnu zip q d log4j core jar org apache logging log4j core lookup JndiLookup classPrimitkiDan Goodin 10 grudnya 2021 Zero day in ubiquitous Log4j tool poses a grave threat to the Internet Ars Technica Dan Goodin 13 grudnya 2021 The Log4Shell 0 day four days on What is it and how bad is it really Ars Technica Hannah Murphy 14 grudnya 2021 Hackers launch over 840 000 attacks through Log4J flaw Ars Technica Dirk Knop 14 grudnya 2021 Heise security Arhiv originalu za 14 grudnya 2021 Procitovano 14 grudnya 2021 Arhiv originalu za 14 grudnya 2021 Procitovano 15 grudnya 2021 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Martin Zugec 13 grudnya 2021 BitDefender Arhiv originalu za 15 grudnya 2021 Procitovano 15 grudnya 2021 Dirk Knop 15 grudnya 2021 Heise security Arhiv originalu za 15 grudnya 2021 Procitovano 15 grudnya 2021 Dan Goodin 15 grudnya 2021 Patch fixing critical Log4J 0 day has its own vulnerability that s under exploit Ars Technica PosilannyaGolovnij sajt proyektu 14 grudnya 2021 u Wayback Machine Informaciya pro urazlivosti CVE 2021 44228 14 grudnya 2021 u Wayback Machine CVE 2021 45046 16 grudnya 2021 u Wayback Machine