Qualys fire i OpenBSD, hvoraf den ene tillader fjernadgang uden autentifikation til nogle netværkstjenester, mens de tre andre kan hæve deres privilegier i systemet. I rapporten fra Qualys blev udviklernes hurtige reaktion på OpenBSD fremhævet — alle problemer blev i og løst inden for 40 timer efter privat underretning.
Den fjernudnyttede sårbarhed skyldes en fejl i organiseringen af autentifikationshandleren i libc-biblioteket, som kalder
programmet /usr/libexec/auth/login_style med overførsel af argumenter i kommandolinjen. Herunder, ved kald af login_style med den valgfrie parameter «-s service», tillades det at overføre navnet på protokollen. Hvis der i begyndelsen af brugernavnet anføres symbolet «-«, vil dette navn blive behandlet som en option ved opstart af login_style. Dermed, hvis man angiver brugernavnet «-schallenge» eller «-schallenge:passwd» ved autentifikation, vil login_style opfatte anmodningen som en anmodning om at bruge handleren .
Problemet er, at S/Key-protokollen i login_style kun understøttes formelt, og faktisk ignoreres med angivelse af succesfuld autentifikation. Dermed kan en angriber, der præsenterer sig som brugeren «-schallenge», omgå autentifikationen og få adgang uden at angive et kodeord eller nøgler. Alle netværkstjenester, der bruger standard libc-kald til autentifikation, kan potentielt være sårbare. For eksempel er det bekræftet, at det er muligt at omgå autentifikationen i smtpd (AUTH PLAIN), ldapd og radiusd.
I sshd manifesterer sårbarheden sig ikke, da der er en ekstra beskyttelse med kontrol af, om brugeren findes i systemet. Ikke desto mindre kan sshd bruges til at kontrollere systemets sårbarhed — når der anmodes med brugernavnet «-sresponse:passwd», fryser forbindelsen, da sshd venter på, at login_passwd returnerer anropparametrene (challenge), og login_passwd venter på, at de manglende parametre overføres (navnet «-sresponse» opfattes som en option). Potentielt kan en lokal angriber forsøge at omgå autentifikationen i su-værktøjet, men overførsel af navnet «-sresponse» fører til, at processen crasher grundet returneringen af en nulpeger ved udførelsen af funktionen getpwnam_r(«-schallenge», …).
Andre sårbarheder:
- CVE-2019-19520 – lokal hævning af privilegier gennem manipulation af værktøjet xlock, der leveres med sgid-flaget, som ændrer gruppen til 'auth'. I xlock-koden forhindres overskrivning af biblioteksstier kun ved ændring af brugeridentitet (setuid), hvilket gør det muligt for en angriber at ændre miljøvariablen 'LIBGL_DRIVERS_PATH' og indlæse sit eget delt bibliotek, hvis kode vil blive udført efter hævning af privilegier til gruppen 'auth'.
- CVE-2019-19522 – muliggør, at en lokal bruger, der tilhører gruppen 'auth', kan køre kode med root-rettigheder ved aktivering af autentificering via S/Key eller YubiKey (som standard ikke aktiveret). Indtræden i gruppen 'auth', som kan opnås ved at udnytte ovennævnte sårbarhed i xlock, gør det muligt at skrive filer i mapperne /etc/skey og /var/db/yubikey. For eksempel kan angriberen tilføje en ny fil /etc/skey/root til at generere engangsnøgler til autentificering som root-bruger via S/Key.
- CVE-2019-19519 – mulighed for at hæve ressourcelimiter gennem manipulation af værktøjet su. Når indstillingen '-L' angives, hvilket indebærer cyklisk at forsøge autentificering ved fejl, sættes brugerklassen kun én gang og nulstilles ikke ved efterfølgende forsøg. Angriberen kan udføre 'su -l -L' og ved første forsøg indtaste en anden brugers login med en anden konto-klasse, men ved det andet forsøg autentificere sig selv med succes. I denne situation vil brugeren få listerne indstillet i henhold til brugerklassen angivet ved første forsøg (f.eks. maksimalt antal processer eller størrelsen på hukommelsen for processen). Metoden virker kun til at overtage grænserne fra uprivilegierede brugere, da der skal være tilstedeværelse i 'wheel'-gruppen for root-brugeren.
Yderligere kan det nævnes i OpenBSD er der en ny metode til at kontrollere gyldigheden af systemopkald, som yderligere komplicerer udnyttelse af sårbarheder. Metoden tillader udførelse af systemopkald, kun hvis de tilgås fra på forhånd registrerede hukommelsesområder. For at markere hukommelsesområder ny systemopkald .
Kilde: opennet.ru
