Malayo na mapagsamantalang kahinaan sa ugat sa ping utility na kasama sa FreeBSD

Sa FreeBSD, ang isang kahinaan (CVE-2022-23093) ay natukoy sa ping utility na kasama sa pangunahing pamamahagi. Ang isyu ay maaaring humantong sa malayuang pagpapatupad ng code na may mga pribilehiyo sa ugat kapag nagpi-ping sa isang panlabas na host na kinokontrol ng isang umaatake. Ang isang pag-aayos ay ibinigay sa mga update ng FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 at 12.3-RELEASE-p10. Hindi pa malinaw kung ang ibang mga sistema ng BSD ay apektado ng natukoy na kahinaan (wala pang mga ulat ng mga kahinaan sa NetBSD, DragonFlyBSD at OpenBSD).

Ang kahinaan ay sanhi ng buffer overflow sa parsing code para sa mga mensaheng ICMP na natanggap bilang tugon sa isang kahilingan sa pag-verify. Ang code para sa pagpapadala at pagtanggap ng mga mensahe ng ICMP sa ping ay gumagamit ng mga hilaw na socket at isinasagawa nang may mataas na mga pribilehiyo (ang utility ay may kasamang setuid root flag). Ang tugon ay pinoproseso sa gilid ng ping sa pamamagitan ng muling pagtatayo ng mga header ng IP at ICMP ng mga packet na natanggap mula sa raw socket. Ang mga napiling IP at ICMP header ay kinokopya sa mga buffer ng pr_pack(), nang hindi isinasaalang-alang na ang mga karagdagang pinahabang header ay maaaring naroroon sa packet pagkatapos ng IP header.

Ang ganitong mga header ay kinuha mula sa packet at kasama sa header block, ngunit hindi isinasaalang-alang kapag kinakalkula ang laki ng buffer. Kung ang host, bilang tugon sa ipinadalang kahilingan sa ICMP, ay nagbabalik ng isang packet na may karagdagang mga header, ang kanilang mga nilalaman ay isusulat sa isang lugar na lampas sa hangganan ng buffer sa stack. Bilang resulta, maaaring ma-overwrite ng isang attacker ang hanggang 40 bytes ng data sa stack, na posibleng magpapahintulot sa kanilang code na maisagawa. Ang kalubhaan ng problema ay pinapagaan ng katotohanan na sa oras na mangyari ang error, ang proseso ay nasa isang estado ng system call isolation (capability mode), na nagpapahirap na makakuha ng access sa iba pang bahagi ng system pagkatapos gamitin ang kahinaan. .

Pinagmulan: opennet.ru

Magdagdag ng komento