A fost descoperită o vulnerabilitate în FreeBSD (CVE-2022-23093) în utilitarul ping, inclus în distribuția de bază. Problema poate duce la executarea la distanță a codului cu drepturi de root atunci când se verifică un host extern controlat de un atacator prin ping. Corecția este propusă în actualizările FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 și 12.3-RELEASE-p10. Nu este clar dacă alte sisteme BSD sunt afectate de vulnerabilitatea descoperită (rapoarte de vulnerabilitate pentru NetBSD, DragonFlyBSD și OpenBSD nu au fost încă publicate).
Vulnerabilitatea este cauzată de o depășire a buffer-ului în codul de analiză a mesajelor ICMP, care vin ca răspuns la cererea de verificare. Codul de trimitere și primire a mesajelor ICMP în ping utilizează socket-uri raw și se execută cu privilegii ridicate (utilitarul este livrat cu flagul setuid root). Procesarea răspunsului se face în ping prin reconstrucția antetelor IP și ICMP ale pachetelor primite din socket-ul raw. Antetele IP și ICMP alocate sunt copiate de funcția pr_pack() în buffere, fără a ține cont de faptul că pachetul după antetul IP poate conține antete extinse suplimentare.
Aceste antete sunt extrase din pachet și incluse în blocul de antete, dar nu sunt luate în calcul la calcularea dimensiunii buffer-ului. În cazul în care hostul răspunde la cererea ICMP trimisă cu un pachet ce include antete suplimentare, conținutul acestora va fi scris în zona dincolo de buffer în stack. Ca rezultat, un atacator poate suprascrie până la 40 de biți de date în stack, ceea ce permite potențial executarea codului său. Pericolul problemei este atenuat de faptul că, în momentul în care se manifestă eroarea, procesul se află în starea de izolare a apelurilor de sistem (capability mode), ceea ce îngreunează obținerea accesului la restul sistemului după exploatarea vulnerabilității.
Sursa: opennet.ro
