Możliwość zdalnego wykorzystania luki w zabezpieczeniach roota w narzędziu ping dołączonym do FreeBSD

We FreeBSD zidentyfikowano lukę (CVE-2022-23093) w narzędziu ping zawartym w podstawowej dystrybucji. Problem może potencjalnie prowadzić do zdalnego wykonania kodu z uprawnieniami roota podczas pingowania zewnętrznego hosta kontrolowanego przez osobę atakującą. Poprawka została dostarczona w aktualizacjach FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 i 12.3-RELEASE-p10. Nie jest jeszcze jasne, czy zidentyfikowana luka dotyczy innych systemów BSD (nie ma jeszcze żadnych raportów o lukach w NetBSD, DragonFlyBSD i OpenBSD).

Luka jest spowodowana przepełnieniem bufora w kodzie analizującym komunikaty ICMP otrzymane w odpowiedzi na żądanie weryfikacji. Kod do wysyłania i odbierania komunikatów ICMP w pingu wykorzystuje surowe gniazda i jest wykonywany z podwyższonymi uprawnieniami (narzędzie ma flagę root setuid). Odpowiedź jest przetwarzana po stronie ping poprzez rekonstrukcję nagłówków IP i ICMP pakietów otrzymanych z surowego gniazda. Wybrane nagłówki IP i ICMP są kopiowane do buforów za pomocą pr_pack(), bez uwzględnienia, że ​​w pakiecie mogą znajdować się dodatkowe rozszerzone nagłówki po nagłówku IP.

Takie nagłówki są wyodrębniane z pakietu i włączane do bloku nagłówka, ale nie są brane pod uwagę przy obliczaniu rozmiaru bufora. Jeżeli host w odpowiedzi na wysłane żądanie ICMP zwróci pakiet z dodatkowymi nagłówkami, ich zawartość zostanie zapisana na stosie w obszarze poza granicą bufora. W rezultacie osoba atakująca może nadpisać do 40 bajtów danych na stosie, co potencjalnie umożliwia wykonanie kodu. Wagę problemu łagodzi fakt, że w momencie wystąpienia błędu proces znajduje się w stanie izolacji wywołań systemowych (tryb możliwości), co utrudnia uzyskanie dostępu do reszty systemu po wykorzystaniu luki .

Źródło: opennet.ru

Dodaj komentarz