Talaan ng nilalaman[Tago][Ipakita]
Ang Log4Shell, isang kahinaan sa internet, ay nakaapekto kamakailan sa milyun-milyong makina. Log4j, isang malabo ngunit halos lahat ng bahagi ng software, ang sanhi nito.
Ang Log4j ay ginagamit upang i-log ang lahat ng mga aksyon na nangyayari sa likod ng mga eksena sa iba't ibang mga sistema ng computer.
Ito ay batay sa isang open-source logging library na ginagamit ng mga negosyo at maging ng mga organisasyon ng gobyerno sa karamihan ng mga application.
Bilang isa sa mga pinakamasamang butas sa seguridad sa cyber na natuklasan, kritikal na protektahan ang iyong mga system mula sa kahinaang ito. Pero paano?
Tuklasin natin nang detalyado ang kahinaan ng Log4j at lahat ng posibleng solusyon sa pag-aayos para dito.
Ano ang Log4j?
Ang Log4j ay isang open-source balangkas ng pag-log na nagbibigay-daan sa mga developer ng software na magtala ng iba't ibang data sa loob ng kanilang mga application. Ito ay bahagi ng proyekto ng Apache Logging Services, na pinapatakbo ng Apache Software Foundation.
Daan-daang website at app ang gumagamit ng Log4j para magsagawa ng mga kritikal na operasyon gaya ng pag-log data para sa pag-debug at iba pang gamit.
Kapag nag-input o nag-click ka sa isang mahinang online na link at nakatanggap ng 404 error notice, ito ay isang madalas na halimbawa ng Log4j sa trabaho. Ang web server na nagpapatakbo ng domain ng web link na sinubukan mong i-access ay nagpapaalam sa iyo na walang ganoong webpage na umiiral. Nila-log din nito ang kaganapan sa Log4j para sa mga administrator ng system ng server.
Sa buong software program, ginagamit ang mga katulad na diagnostic signal. Sa online game na Minecraft, halimbawa, ang server ay gumagamit ng Log4j upang mag-log ng aktibidad tulad ng kabuuang RAM na ginamit at mga tagubilin ng user na ipinadala sa console.
Paano nangyayari ang kahinaan?
Ang mga lookup ay isang bagong feature na ipinakilala sa Log4j 2.0, na tumutulong na isama ang karagdagang impormasyon sa mga log entry. Isa sa mga paghahanap na ito ay ang JNDI (Java Naming and Directory Interface) lookup, na isang Java API para sa pakikipag-ugnayan sa isang serbisyo ng direktoryo.
Gamit ang diskarteng ito, ang mga internal na user ID ay maaaring imapa sa aktwal na mga pangalan ng user. Inilalantad ng query na ito ang bagong natuklasang kahinaan ng RCE, dahil ang isa sa mga uri ng data na ibinibigay ng LDAP server ay isang URI na tumuturo sa isang klase ng Java, na pagkatapos ay na-load sa memorya at pinapatakbo ng Log4j instance.
Dahil sa kahinaan sa input validation ng Log4j library, posibleng mag-inject ng arbitrary na LDAP server mula sa hindi pinagkakatiwalaang source. Dahil ipinapalagay ng mga developer na ang data na ipinadala sa mga log ay hahawakan bilang plain text, walang dagdag na input validation ang isasagawa, at ang mapanganib na input ng user ay pumapasok sa mga log.
Maaaring ganito ang hitsura ng isang log statement:
Ang isang nakakahamak na user ay maglalagay na ngayon ng JNDI lookup na tumutukoy sa isang buhong LDAP server sa isang parameter ng URL. Ang paghahanap ng JNDI ay magiging ganito:
Ang Log4j library pagkatapos ay nakikipag-usap sa LDAP server na ito sa attacker.com upang makakuha ng impormasyon ng direktoryo, kabilang ang mga halaga para sa Java Factory at Java Codebase.
Kasama sa dalawang value na ito ang Java class ng attacker, na pagkatapos ay ilo-load sa memorya at ipapatupad ng Log4j instance, na kumukumpleto ng code execution.
Sino ang nasa panganib?
Ang kahinaan ng Log4j ay hindi kapani-paniwalang malawak, na nakakaapekto sa mga application ng negosyo, mga naka-embed na device, at sa kanilang mga subsystem. Kabilang sa mga apektadong app ang Cisco Webex, Minecraft, at FileZilla FTP.
Gayunpaman, hindi ito isang buong listahan. Ang kapintasan ay nakakaapekto pa rin sa Ingenuity Mars 2020 chopper mission, na gumagamit ng Apache Log4j para sa pag-record ng kaganapan.
Ang komunidad ng seguridad ay nag-compile ng a listahan ng mga mahinang sistema. Mahalagang tandaan na ang mga listahang ito ay patuloy na nag-a-update, kaya kung ang isang partikular na programa o system ay hindi itinampok, huwag ipagpalagay na hindi ito apektado.
Ang pagkakalantad sa kahinaan na ito ay malamang, at kahit na partikular stack ng tech ay hindi inilalapat ang Java, dapat asahan ng mga executive ng seguridad ang mga kritikal na sistema ng supplier, mga supplier ng SaaS, mga provider ng cloud hosting, at mga provider ng web server na gawin ito.
Paano suriin ang kahinaan ng Log4j?
Ang unang hakbang ay upang matukoy kung ang isang pag-atake ay naganap na. Magagawa mo ito sa pamamagitan ng pagsuri sa mga log ng system para sa mga fragment ng RCE payload.
Kung ang isang paghahanap para sa mga termino tulad ng "jndi", "ldap", o "$::" ay magbubunga ng anumang mga log, dapat mag-explore pa ang mga mananaliksik ng seguridad upang makita kung ito ay isang lehitimong pag-atake o fingerprinting lamang.
Maraming mga pag-atake sa ligaw ang natuklasan na hindi naghahatid ng anumang nakakapinsalang kargamento. Gayunpaman, isinagawa sila ng mga eksperto sa seguridad upang matukoy kung gaano karaming mga app ang mahina sa pag-atakeng ito.
Ang susunod na hakbang ay ang paggamit ng Log4j library para matukoy ang lahat ng proyekto. Kung ang mga bersyon sa pagitan ng 2.0-beta9 at 2.14.1 ay ginagamit, ang proyekto ay maaaring maging madaling kapitan.
Dahil sa kahirapan sa pagtukoy kung saan umiiral ang kahinaang ito, mas mainam na ipagpalagay na ang proyekto ay madaling kapitan at ang pag-update sa library ay ang pinakamahusay na paraan ng pagkilos upang alisin ang panganib ng pagpapatupad ng code.
Ang proyekto ay hindi masusugatan kung ang ginamit na bersyon ay mas mababa sa 2.0-beta 9, bagama't ang Log4j library ay dapat pa ring i-upgrade dahil ang mga bersyon sa 1.x na hanay ay luma at hindi na nakakakuha ng mga update.
Kung ang isang madaling kapitan na proyekto ay natuklasan, ito ay pinapayuhan na ito ay suriin upang makita kung anumang impormasyon na naka-log gamit ang Log4j ay naglalaman ng impormasyon na maaaring baguhin ng user. Ang mga URL, parameter ng kahilingan, header, at cookies ay mga halimbawa ng data na ito. Kung ang isa sa mga ito ay naka-log, ang proyekto ay nasa panganib.
Makakatulong sa iyo ang kaalamang ito sa pag-devise pa sa mga log ng system at pagtukoy kung naatake na ang iyong web application.
May mga libreng online na tool na maaaring makakita kung ang isang web application ay mahina. Isa sa mga programang ito ay Log4Shell huntress. Ito ay open-source at available sa GitHub.
Kung matuklasan ang isang mahinang bahagi ng code sa online na application, ang kargamento na ibinigay ng isiniwalat na tool ay maaaring gamitin upang ipasok ito sa web application. Ipapakita ng tool sa pagsubok ang mga koneksyon na ginawa sa pagitan ng iyong web application at ng kanilang LDAP server kung ang kahinaan ay pinagsamantalahan.
Mga solusyon upang ayusin ang kahinaan ng Log4j
Ang unang hakbang ay i-update ang Log4j, na maaari mong gawin sa pamamagitan ng paggamit ng mga normal na manager ng package o sa pamamagitan ng pag-download nito nang direkta mula dito. pahina.
Posible ring bawasan ang pagiging mapagsamantala ng kahinaan sa pamamagitan ng pagtatakda sa variable ng kapaligiran FORMAT MSG NO LOOKUPS sa true. Ang countermeasure na ito, gayunpaman, ay naaangkop lamang sa mga bersyon ng Log4j na mas malaki sa o katumbas ng 2.10.
Isaalang-alang natin ngayon ang mga alternatibong opsyon.
1. Mga solusyon para sa Log4j na bersyon 2.17.0
Talagang mahigpit na ipinapayo na gamitin ang Log4j na bersyon 2.15.0 upang maprotektahan laban sa Log4Shell, gayunpaman, kung hindi ito posible, ang iba pang mga solusyon ay magagamit.
Mga Bersyon 2.7.0 at mas bago ng Log4j: Posibleng protektahan laban sa anumang pag-atake sa pamamagitan ng pagbabago sa format ng mga kaganapang itatala gamit ang porsyento ng m nolookups syntax para sa data na ibinigay ng user. Ang update na ito ay nangangailangan ng pag-edit ng Log4j configuration file upang makabuo ng bagong bersyon ng program. Bilang resulta, bago i-deploy ang bagong bersyong ito, dapat na ulitin ang teknikal at functional na mga yugto ng pagpapatunay.
Mga bersyon ng Log4j 2.10.0 at mas bago: Posible ring protektahan laban sa anumang pag-atake sa pamamagitan ng pagtatakda ng log4j2.formatMsgNoLookups configuration parameter sa true, halimbawa, kapag sinimulan ang Java virtual machine gamit ang -Dlog4j2 na opsyon." formatMsgNoLookups = true, Ang isa pang opsyon ay tanggalin ang JndiLookup class mula sa classpath argument, na mag-aalis ng pangunahing attack vector (hindi inaalis ng mga mananaliksik ang posibilidad ng isa pang attack vector).
Nagbibigay ang Amazon Web Services ng hotpatch na "dapat gamitin sa sarili mong peligro." Ang iba pang "mga diskarte," tulad ng Logout4Shell, na "gumagamit ng kahinaang ito laban sa sarili nito," ay nai-publish. Ang eksperto sa seguridad ay nagtatanong sa legalidad ng hakbang na ito, na kinabibilangan ng "pag-hack ng makina upang ayusin ito."
2. Ang problema ay nalutas sa Log4j v2.17.0.
Para sa mga bersyon na higit sa 2.10: Log4j2.formatMsgNoLookups ay dapat itakda sa true.
Para sa mga bersyon 2.0 hanggang 2.10.0: Patakbuhin ang sumusunod na command para alisin ang LDAP class mula sa Log4j.
Ang Log4j2.formatMsgNoLookups ay dapat itakda sa true sa mga setting ng system.
Pagbabawas sa JVM
Ang pagpapagaan sa mga parameter ng JVM ay hindi na isang opsyon. Ang iba pang mga paraan ng pagpapagaan ay patuloy na matagumpay. Mag-upgrade sa Log4j na bersyon 2.17.0 kung maaari. Mayroong magagamit na gabay sa paglilipat para sa Log4j v1.
Kung hindi posible ang isang pag-update, tiyaking ang bahagi ng client-side at server-side ay mayroong -Dlog4j2.formatMsgNoLookups = set ng true system property.
Pakitandaan na ang Log4j v1 ay umabot na sa katapusan ng buhay nito (EOL) at hindi na makakatanggap ng mga pag-aayos ng bug. Ang ibang RCE vectors ay madaling kapitan din sa Log4j v1. Kaya naman, hinihimok namin na mag-upgrade ka sa Log4j 2.17.0 sa lalong madaling panahon.
3. Mga hakbang sa pagpapagaan
Ang mga kasalukuyang pagsasamantala ay hindi maaaring gumana kahit na ang Log4j ay madaling kapitan sa ilang mga pagkakataon, tulad ng kung ang host machine ay nagpapatakbo ng isang bersyon ng Java na mas mataas kaysa sa 6u212, 7u202, 8u192, o 11.0.2.
Ito ay dahil sa mas mahusay na Java Naming and Directory Interface (JNDI) remote class loading protection sa kasalukuyang mga bersyon, na kinakailangan para gumana ang pag-atake.
Higit pa rito, sa mga bersyon ng Log4j na mas malaki sa 2.10, maiiwasan ang isyu sa pamamagitan ng pagtatakda ng formatMsgNoLookups system value sa true, na nagbibigay ng JVM argument -Dlog4j2.formatMsgNoLookups = true, o pagtanggal ng JndiLookup class mula sa classpath.
Pansamantala, hanggang sa maayos ang mga vulnerable na pagkakataon, maaaring matugunan ang kahinaan gamit ang mga diskarte sa ibaba:
- Itakda ang log4j2.formatMsgNoLookups ng system property sa true para sa >=2.10.
- Itakda ang opsyon sa kapaligiran na LOG4J FORMAT MSG NO LOOKUPS sa true para sa >=2.10.
- Alisin ang JndiLookup.class mula sa classpath para sa 2.0-beta9 hanggang 2.10.0: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Ang isang inirerekomendang pinakamahusay na kasanayan ay upang limitahan ang paglabas ng trapiko sa internet sa mga naaangkop na port lamang.
Kahit na ang karamihan sa mga pag-atake sa field ay inihahatid sa pamamagitan ng HTTP, ang kahinaan ay maaaring pinagsamantalahan sa pamamagitan ng anumang protocol na nagla-log ng data ng input ng user gamit ang Log4j.
Gayunpaman, ang pag-update sa log4j 2.17.0 ay ang pinakamahusay na lunas dahil may makakatuklas ng karagdagang diskarte sa isyu. Higit pa rito, maraming publisher at manufacturer ang nag-anunsyo ng mga pagpapahusay sa kanilang mga serbisyo o app.
4. Log4Shell vulnerability patch
Ang Log4j ay nasa lahat ng dako, lalo na ngayon na ang kahinaan ay pinagsamantalahan. Upang buod, ang kailangan mo lang gawin ay isama ang mga sumusunod na character sa mga log na siniyasat ng Log4j.
At ito ay magda-download at magsasagawa ng Java file na matatagpuan sa dulo ng URL. Ito ay kasing diretso bilang ito ay dramatiko.
Tulad ng alam mo, napakahalagang i-upgrade ang log4j sa bersyon >= 2.17.0 para malunasan ang kahinaang ito sa Log4Shell (CVE-2021-44228).
Kung hindi ito posible:
Para sa mga application na gumagamit ng Log4j library na bersyon 2.10.0 at mas bago, posible ring protektahan laban sa anumang pag-atake sa pamamagitan ng pagtatakda ng configuration parameter log4j2.formatMsgNoLookups sa true, halimbawa, habang sinisimulan ang Java virtual machine gamit ang -Dlog4j2.formatMsgNoLookups = true opsyon.
Ang isa pang pagpipilian ay ang tanggalin ang klase ng JndiLookup mula sa argumento ng classpath, na mag-aalis ng pangunahing vector ng pag-atake (hindi inaalis ng mga mananaliksik ang pagkakaroon ng isa pang vector ng pag-atake).
nota
Dapat pag-isipan ng mga organisasyong nag-aalangan o ayaw gumawa ng mga pagsasaayos sa mga madaling kapitan ng system (o gustong mag-install ng mga karagdagang pag-iingat) tungkol sa:
- Siguraduhin na ang lahat ng trapiko ay iruruta sa isang iSensor/WAF/IPS. Maaari nitong pigilan ang pag-atake mula sa pagkakaroon ng access sa system.
- Nililimitahan ang dami ng trapiko na maaaring maabot ang madaling kapitan ng system Kung hindi kailangang ikonekta ang system sa internet, higpitan ang pag-access sa mahalaga at mapagkakatiwalaang IPS at mga saklaw lamang.
- Binabawasan ang awtorisadong papalabas na trapiko ng host. Dahil ang pag-atake na ito ay tumatakbo sa pamamagitan ng pagkonekta sa isang rogue server, lahat ng labis na IP address at port ay dapat na mai-block sa isang firewall.
- Kung hindi na kailangan ang serbisyo, dapat itong i-disable hanggang sa handa na ang pag-aayos.
Konklusyon
Ang mga kapintasan ng Log4j ay nagulat sa aming komunidad at nagpaalala sa aming lahat kung gaano kami umaasa sa open-source na software.
Ang Log4j ay natatangi. Ito ay hindi isang operating system, hindi rin ito isang browser, at hindi rin ito isang software. Sa halip, ito ang tinutukoy ng mga programmer bilang isang library, isang package, o isang module ng code. Ito ay nagsisilbi lamang ng isang layunin, iyon ay, pag-iingat ng isang talaan ng kung ano ang nangyayari sa isang server.
Mas gusto ng mga taong nagsusulat ng code na tumutok sa kung ano ang nagpapakilala sa kanilang software. Hindi sila interesado sa muling pag-imbento ng gulong. Bilang resulta, umaasa sila sa napakaraming umiiral na mga library ng code, tulad ng Log4j.
Ang Log4j module ay nagmula sa Apache, ang pinakamalawak na ginagamit na software ng web server. Iyon ang dahilan kung bakit maaari itong matuklasan sa milyun-milyong mga server. Samakatuwid, ang pagtaas ng mga banta sa seguridad.
Sana ay matulungan ka ng mga solusyon sa itaas na panatilihing ligtas ang iyong mga device.
Manatiling nakatutok sa HashDork para sa higit pang kapaki-pakinabang na impormasyon mula sa mundo ng teknolohiya.
Mag-iwan ng Sagot