Podatność w narzędziu slicer69 doas (przed wersją 6.2) na platformach innych niż OpenBSD pozwala nieuwierzytelnionemu lub nieuprzywilejowanemu użytkownikowi na wykonanie dowolnego polecenia z uprawnieniami roota. Błąd wynika z niepoprawnej obsługi niezainicjowanej zmiennej przy parsowaniu nazwy użytkownika lub grupy.
▸ Pokaż oryginał (EN)
An issue was discovered in slicer69 doas before 6.2 on certain platforms other than OpenBSD. On platforms without strtonum(3), sscanf was used without checking for error cases. Instead, the uninitialized variable errstr was checked and in some cases returned success even if sscanf failed. The result was that, instead of reporting that the supplied username or group name did not exist, it would execute the command as root.
Na platformach, które nie udostępniają funkcji strtonum(3) (np. Linux), doas używał funkcji sscanf do przetwarzania nazw użytkowników i grup. W przypadku niepowodzenia sscanf kod nie sprawdzał zwróconego kodu błędu, lecz odczytywał niezainicjowaną zmienną errstr. Wartość tej zmiennej mogła przypadkowo wskazywać na sukces, co powodowało, że doas — zamiast zgłosić błąd braku użytkownika lub grupy — wykonywał żądane polecenie z uprawnieniami root. W efekcie brak poprawnej weryfikacji tożsamości prowadził do nieuprawnionego privilege escalation.
Atakujący może wykonać dowolne polecenie systemowe z uprawnieniami roota, uzyskując pełną kontrolę nad systemem, w tym możliwość odczytu i modyfikacji dowolnych danych oraz trwałego przejęcia maszyny.
Należy zaktualizować doas do wersji 6.2 lub nowszej. Poprawka dostępna jest w repozytorium projektu (commit 2f83222829448e5bc4c9391d607ec265a1e06531, różnice między wersjami 6.1p1 a 6.2). Administratorzy korzystający z doas na systemach Linux lub innych platformach bez strtonum(3) powinni niezwłocznie zastosować aktualizację.
slicer69 doas w wersjach przed 6.2, działający na platformach innych niż OpenBSD (np. Linux), które nie posiadają funkcji strtonum(3)
Podatność dotyczy wyłącznie platform bez natywnej implementacji strtonum(3) — systemy OpenBSD nie są podatne. Błąd został naprawiony w wersji 6.2 projektu slicer69/doas.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDoas Project Doas
APPDoas Project< 6.2