01 grudnia 2009

Niewiarygodnie prosty local root bug we FreeBSD

Dawno się nie zdarzyło, aby exploit na FreeBSD był publicznie dostępny przed wypuszczeniem poprawek. Jednak nie tym razem…

Wszystko za sprawą pana nazwiskiem Nikolaos Rangos (nick Kingcope), znanego już z opublikowania odkrytej przez siebie dziury w serwerach IIS 6 Microsoftu, również nie informując wcześniej o tym producenta.

Dziura, zdaniem autora, jest niesamowicie prosta. Dotyczy Run-Time Link-Editor (rtld), który odpowiada m.in. zarządzanie “shared objects” w przestrzeni adresowej procesów.

Normalnie rltd nie pozwala ustawić niebezpiecznych zmiennych środowiskowych (np. LD_PRELOAD) podczas wykonywania programów z bitem suid (uruchamianymi z prawami roota, jak passwd, su, czy ping). Jednak prostą techniką rtld może być oszukane aby akceptować takie zmienne nawet dla binariów z suid.

Według autora exploitu, podatne wersje systemu to od 7.1 w górę (włącznie z najnowszym 8.0). Security Officer FreeBSD, Colin Percival, opublikował już wstępną wersję poprawki, jednak jak sam przyznaje, z powodu potrzeby szybkiego jej wypuszczenia, możliwe, że nie naprawia błędu w 100% lub nie wnosi nowego zagrożenia.