В утилите smb4k, применяемой в KDE для обнаружения и монтирования SMB-разделов, выявлены уязвимости, позволяющие получить root-доступ к системе. Проблемы устранены в выпуске Smb4K 4.0.5. Проверить состояние новой версии пакета или подготовки исправления в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, Gentoo, Arch и FreeBSD.
Smb4k gebruikt KAuth-handlers die met rootrechten draaien om geprivilegieerde acties uit te voeren. De kwetsbaarheden bevinden zich in de Smb4KMountHelper-handler en worden veroorzaakt doordat de functies voor het mounten (CVE-2025-66003) en unmounten (CVE-2025-66002) van het netwerkbestandssysteem de opties die aan de commando's mount.cifs en unmount.cifs worden doorgegeven, niet correct filteren. Hierdoor kan een gebruiker zonder rootrechten willekeurige opties aan deze commando's doorgeven via de parameter mh_options.
Met de optie "filemode=04777,uid=0" worden bijvoorbeeld alle bestanden op de aangekoppelde partitie gemarkeerd als suid root. Een gebruiker kan een SMB-server starten en daarop een aangepaste partitie aankoppelen met de benodigde uitvoerbare bestanden. Wanneer deze zijn ingesteld op "filemode=04777,uid=0", worden ze uitgevoerd met root-rechten.
De Smb4KMountHelper-handler valideerde de doeldirectory's ook niet correct, waardoor bijvoorbeeld een aangepaste SMB-partitie in plaats van de /bin-directory kon worden gemount en een aangepaste versie van /bin/bash daarin kon worden geplaatst. Bovendien kan de parameter mh_krb5ticket worden gebruikt om het pad naar het Kerberos-referentiebestand te wijzigen en de inhoud van elk bestand, zoals /etc/shadow, naar stderr of een openbaar toegankelijk logbestand uit te voeren.
Een kwetsbaarheid in de functie Smb4KMountHelper::unmount() kan worden misbruikt om een denial-of-serviceaanval uit te voeren door systeempartities te ontkoppelen via manipulatie van de parameter mh_mountpoint. Opvallend is dat de code een controle op het partitietype bevatte die alleen cifs-, smbfs- en smb3-partities toestond, maar de "return"-instructie in het if-blok voor het rapporteren van een fout ontbrak, waardoor de uitvoering niet werd beëindigd.
Bron: opennet.ru
