Chris Moberly von The Missing Link in Australien beschreibt auf seinem Blog [1] die Local Privilege Escalation Vulnerability Dirty Socks (CVE-2019-7304), die auf einem Bug in der snapd API beruht, die in Ubuntu 16.04.4 LTS und später per default und anderen Linux Distributionen manuell, wie Debian, Arch, Fedora und OpenSUSE, verwendet wird. Zwar ist durch die Local Privilege Escalation kein Remote-Zugriff möglich, aber wenn der Angreifer seinen Fuß bereits auf dem Rechner hat, kann er schnell die komplette Kontrolle über das Betriebssystem gewinnen. Für Ubuntu (USN-3887-1) und die anderen betroffenen Distributionen gibt es bereits einen Patch.
snapd [3] ist ein Daemon, der snaps verwaltet, einem Packaging-Format von Canonical für Ubuntu Anwendungen seit 2014. Mit dem lokalen REST API Server interagieren snap Packages und der offizielle Ubuntu Snap Store während der Installation von neuen Anwendungen.
In Chris Moberlys Repo [2] sind auch zwei funktionierende Exploits als Proof-of-Concept (PoC) zu finden. dirty_sockv1 verwendet die create-user API, um einen lokalen Nutzer zu erstellen. Hierfür ist ein Ubuntu SSO account und SSH Key-Config notwendig. dirty_sockv2 lädt einen snap, der einen Installations-Hook mit einem neuen lokalen Nutzer enthält. Die PoCs zeigen, dass man die Zugriffskontrolle, bestehend aus der UID verknüpft mit allen Verbindungen, die vom UNIX_AF Socket gemacht werden, auf dem API-Server umgehen und damit API-Calls für root User verwenden kann. Grob gesagt wird beim PoC die UID überschrieben. Betroffen sind die snapd Versionen 2.28 bis 2.37.
Quellen:
[1] https://shenaniganslabs.io/2019/02/13/Dirty-Sock.html
[2] https://github.com/initstring/dirty_sock/
[3] https://snapcraft.io