Er is een kwetsbaarheid (CVE-2024-28085) geïdentificeerd in het wall-hulpprogramma, geleverd in het util-linux-pakket en bedoeld voor het verzenden van berichten naar terminals, waardoor een aanval op de terminals van andere gebruikers mogelijk is door middel van manipulatie van ontsnappingsreeksen. Het probleem wordt veroorzaakt doordat het wall-hulpprogramma ontsnappingsreeksen op de invoerstroom blokkeert, maar dit niet doet op opdrachtregelargumenten, waardoor een aanvaller aan ontsnappingsreeksen op de terminals van andere gebruikers kan ontsnappen.
Door bijvoorbeeld 'wall $(printf "\033[33mHI")' uit te voeren, kunt u "HI" in het geel afdrukken. Door escape-reeksen te gebruiken waarmee u de aanwijzer kunt verplaatsen, inhoud op het scherm kunt wissen en vervangen, kunt u simuleren dat de sudo-wachtwoordprompt wordt weergegeven in de terminal van een andere gebruiker. Als de gebruiker de truc niet opmerkt en zijn wachtwoord invoert, zal het wachtwoord in de invoergeschiedenis verschijnen als een niet-bestaand commando (in feite zal de gebruiker zijn wachtwoord invoeren op de commandoregel in plaats van een commando). “\033[3A” // verplaats de cursor 3 regels omhoog “\033[K” // verwijder de vorige uitvoer “[sudo] wachtwoord voor a_user:” // toon een dummy sudo-verzoek “\033[?25l” / / achtergrondkleur instellen om invoer "\033[38;2;48;10;36m" te verbergen
Wanneer er een waarschuwing wordt gegeven dat het ingevoerde commando niet is gevonden, voeren veel distributies de handler /usr/lib/command-not-found uit, die probeert het pakket te identificeren dat het ontbrekende commando bevat en een hint geeft over de vraag of het kan worden geïnstalleerd . Het probleem is dat wanneer de opdracht-niet-gevonden handler wordt gestart, er een niet-bestaande opdracht aan wordt doorgegeven als opdrachtregelparameter, die zichtbaar is bij het bekijken van processen op het systeem (bijvoorbeeld wanneer wordt geprobeerd het niet-geïnstalleerde hulpprogramma uit te voeren “xsnow”, “/usr” zal zichtbaar zijn in de lijst met processen /lib/command-not-found - xsnow"). Dienovereenkomstig kan de aanvaller lopende processen monitoren (bijvoorbeeld door het voorkomen van “/proc/$pid/cmdline” voor het voorspelde PID-nummer te analyseren) en het wachtwoord bepalen dat door het slachtoffer op de opdrachtregel is ingevoerd.
Om ervoor te zorgen dat de gebruiker een wachtwoord kan invoeren als reactie op een fictieve sudo-prompt, is een truc voorgesteld, waarvan de essentie is om de daadwerkelijke lancering van het sudo-hulpprogramma in de lijst met processen te volgen, te wachten tot het is voltooid en voer onmiddellijk daarna een aanval door de “muur” uit. Door ontsnappingsreeksen te manipuleren, kan een aanvaller het bericht na de daadwerkelijke uitvoering van sudo vervangen door een valse prompt voor het opnieuw invoeren van het wachtwoord. Het slachtoffer kan denken dat hij een fout heeft gemaakt bij het invoeren van het wachtwoord en het wachtwoord een tweede keer invoeren, waarbij het wachtwoord wordt onthuld in de argumenten van de “command-not-found”-handler.
Voor een succesvolle aanval moet de "mesg"-modus worden ingesteld op "y", die standaard is ingesteld in Ubuntu, Debian en CentOS/RHEL. De aanval is gedemonstreerd in Ubuntu 22.04 in de standaardconfiguratie met behulp van gnome-terminal. In Debian is de aanval moeilijk, omdat de “command-not-found” handler niet standaard is ingeschakeld in de distributie, en in CentOS/RHEL zal de aanval niet werken, omdat het wall-hulpprogramma wordt geïnstalleerd zonder de setgid-vlag en dat wel doet geen toegang hebben tot de terminals van anderen. Bij gebruik van Windows-Terminal kan de aanval worden aangepast om de inhoud van het klembord te wijzigen.
De kwetsbaarheid is sinds 2013 aanwezig in het util-linux-pakket, nadat release 2.24 de mogelijkheid had toegevoegd om een bericht op de wall-opdrachtregel op te geven, maar vergat de escape-reeksen op te ruimen. Een oplossing voor de kwetsbaarheid is opgenomen in de release van gisteren van util-linux 2.40. Het is opmerkelijk dat bij het oplossen van de kwetsbaarheid in de release van util-linux 2.39 een andere soortgelijke kwetsbaarheid werd geïdentificeerd, die vervanging van controletekens mogelijk maakt door manipulatie van landinstellingen.
Bron: opennet.ru
