Kritische Lücke in Polkit nach 7 Jahren geschlossen

Photo by iMattSmart on Unsplash

Polkit, das früher PoilcyKit hieß ist der mit Systemd verbandelte Berechtigungsdienst, der es unprivilegierten Prozessen ermöglicht mit ihren privilegierten Kollegen sprechen können. Wenn also eine Anwendung für eine Aufgabe Root-Rechte benötigt, fragt Polkit nach dem entsprechenden Passwort.

CVE-2021-3560

Wie auf GitHub aktuell zu lesen ist, wurde kürzlich eine Sicherheitslücke entdeckt, die seit sieben Jahren in Polkit vorhanden war und als CVE-2021-3560 (Common Vulnerabilities & Exposures) katalogisiert ist. Sie war mit 7.8 von 10 Punkten als kritisch eingestuft.

Ausweitung der Rechte

Bei der Lücke handelte es sich um eine mögliche Privilegien-Eskalation, die sehr einfach durchzuführen war. Sie war mit Commit bfa5036 in Version 0.113 eingeschleppt worden. Wie Kevin Backhouse, der Entdecker der Lücke schreibt, waren zur Ausnutzung lediglich einige Kommandozeilen-Werkzeuge und Befehle wie bash, kill und dbus-send notwendig. Die Schwachstelle wird durch das Starten eines dbus-send-Befehls ausgelöst, der jedoch sofort per kill beendet wird, während Polkit noch mitten in der Verarbeitung der Anfrage steckt.

Polkit ging mit der Antwort auf die bereits beendete Anfrage falsch um. Anstatt den Vorgang abzubrechen, ging Polkit davon aus, dass die Anfrage von einem Prozess mit der UID 0 gekommen sei, also von einem Root-Prozess und genehmigte die Anfrage. Das gelang zwar nicht immer, aber oft genug, um den Aufwand gering zu halten.

Bitte zeitnah aktualisieren

Der Fehler betrifft Distributionen, die Polkit in Version 0.113 oder später verwenden. Welche Distributionen das sind, lässt sich mit Repology nachvollziehen. Debian hat mittlerweile mit Version 0.105-31 einen Patch für Unstable und Testing bereitgestellt, den Ubuntu für 21.04 übernommen hat. Unter anderem auch Arch Linux, Red Hat und SUSE haben ihre Pakete gepatched.

Kommentare

18 Antworten zu „Kritische Lücke in Polkit nach 7 Jahren geschlossen“

  1. Avatar von tux.

    Voll gut, dieses systemd! Ehrlich! Und so sicher, dieses Linux!

    Für mich sieht PolKit ja aus wie „man könnte stattdessen sudo nutzen und sich den Unsinn klemmen“. Aber gut.

    1. Avatar von Unerkannt
      Unerkannt

      Oder man klemmt es sich komplett und benutzt einfach su oder setuid direkt. Aber zusätzliche Komplexität ist ja ganz wichtig für den Schreibtisch. Gerade unter Linux, wo vermutlich 90% der Schreibtischbenutzer ohnehin ihr eigener Basteladmin sind.

      1. Avatar von Ferdinand

        Es geht doch bei Polkit eher darum, dass eine Anwendung, die mit User-Rechten läuft, eine Funktion aufruft, die Root-Rechte benötigt und Polkit das dann regelt, bis der Prozess und somit die Root-Rechte nicht mehr benötigt werden. Dazu wird pkexec verwendet, was eine recht feingranulare Steuerung von Rechten erlaubt. Die Regeln, nach denen dies abläuft, liegen unter /usr/share/polkit-1/actions.

        1. Avatar von Unerkannt
          Unerkannt

          Lässt sich aber doch auch mit setuid und einer extra ausführbaren Datei abbilden. Vielleicht erinnerst du dich noch an pmount. Dies erlaubt unprivilegierten Benutzern das Einhängen von Wechselspeichermedien wenn sie Teil der Gruppe plugdev sind. Also nur ein eingeschränkter Benutzerkreis bekommt für eine bestimmte Aktion Root-Rechte.

          Vermutlich fehlt in dem Ansatz jetzt das ganze Feingranulare und mir die Fantasie um mir ein Nutzungsszenario für den Heimadmin auszudenken. Ich hatte es in der Vergangenheit kurz drauf, als KDE plötzlich meinte es braucht Polkit als Abhängigkeit. Habe es dann wieder herunter geschmissen und KDE irgendwann auch. Habe es nicht vermisst.

          Ich möchte auch nicht sagen, dass ich keine Nutzungsszenarien dafür sehe. Ich bin mir sicher Konzerne mit dedizierten Admins würde die Feingranularität lieben. Die lieben auch ACLs. Schließlich kann man damit schön feingranular Hierarchien und Handlungsanweisungen umsetzen. Vielleicht ist es auch spannend für Hardware-Hersteller die ihr Gerät unter Linux laufen lassen wollen. Da kommt bei der Risikoanalyse ja auch gerne mal heraus, dass man unbedingt etwas besonders komplexes machen muss um das Risiko zu minimieren. Da kann dann jeder im Schadensfall sagen: Seht ich war nicht daran Schuld, schließlich haben wir dieses komplexe System umgesetzt um es zu verhindern.

          1. Avatar von Reindl Harald
            Reindl Harald

            Nichts dümmeres als
            setuid gefunden?

      2. Avatar von Nick
        Nick

        Du verstehst offensichtlich nicht sonderlich viel vom Thema. Und nein, die Nutzung von su oder schlimmer, SUID-Rechten, sorgt unmittelbar dafür, dass ein Programm in Gänze mit vollen und unnötigen Rootrechten läuft, während ein Programm auf Basis von Polkit, weitgehend nur mit eingeschränkten Rechten läuft, jedoch einzelne Module einmalig und zeitlich begrenzt, Funktionen mit tatsächlich erforderlichen erhöhten Privilegien ausführen können. Ergo ist die potenzielle Angriffsfläche mit Polkit, und einem dafür gemachten Programm, bedeutend niedriger. Im übrigen sind SUID-Rechte ein Paradebeispiel an Komplexität, die man idealer Weise nur selten vergibt, und wenn dann nur an kleine sowie gehärtete Programme. Des weiteren benötigen viele Programme nur partielle Rootrechte (Beispiel: ping, cap_net_raw), die früher aus Bequemlichkeit völlig unnötig SUID-Rechte trugen, und somit über 40 Capabilities die Root in sich vereint. Das macht schon einen Unterschied, wenn unter anderem ping statt über 40 Capabilities nur noch eine dauerhaft inne hat.

        1. Avatar von Unerkannt
          Unerkannt

          Bleiben wir mal bei dem pmount Beispiel. Ich habe eine Shell auf mit den Rechten meines unprivilegierten Zugang. Jetzt benutze ich pmount um einen USB-Speicher einzuhängen. Zu welchem Zeitpunkt erhält denn die Shell dadurch erweiterte Rechte?

          Ich würde sagen zu keinem Zeitpunkt. Wie wird denn Polkit das Problem lösen? Da gibt es dann einfach einen Programmteil, der über schön komplizierte XML-Regeln deine Rechte bestimmt und dann gibt es mindestens einen Programm-Teil der Admin-Rechte durch setuid hat um diese für deine angepeilte Version weiterzugeben.

          1. Avatar von Reindl Harald
            Reindl Harald

            Zum Zeitpunkt des ersten Bugs wie immer in den letzten 20 Jahren

  2. Avatar von Charon
    Charon

    Mit Linux wäre das nicht passiert! Ach halt^^

    1. Avatar von Ferdinand

      Dir ist entweder die elementare Beschaffenheit von Software nicht bekannt oder du trollst.

      1. Avatar von kamome
        kamome

        Oder es ist einfach Humor? 😉

        1. Avatar von tuxnix
          tuxnix

          Humor und Schadenfreude unterscheiden sich grundsätzlich.
          Beim Humor versöhnt das Lachen die Paradoxie des Lebens mit der Sicherheit des Todes.
          Schadenfreude ignoriert all das durch Überheblichkeit.
          Wir hatten das Thema kürzlich schon mal bei Herr Nuhr.

          1. Avatar von kamome
            kamome

            Ich achte nicht (immer) darauf, _wer_ etwas schreibt, daher kann ich das nicht in Vergangene Äußerungen von Charon einordnen, aber für mich las es sich wie ein (potentielles) ehrliches Augenzwinkern, ähnlich wie ein Kommentar unterhalb eines Linux-Toasters: „But does it run Linux? Oh, wait!“
            Aber ja, scheint wohl Frustration zu sein, naja …

          2. Avatar von tuxnix
            tuxnix

            Ich muss wohl mein Wissen über Linux-Toaster auffrischen. 😉

            Es gab schon am Tag zuvor einen ausgedehnten Diskurs. Für sich allein hätte die Bemerkung auch witzig sein können.
            Im Kontext ist das dann aber schon recht grenzwertig. Was aber gar nicht geht, das sind die ganzen Zuschreibungen und Unterseillungen die nebenbei auch noch geäußert werden.

            Aber ich hoffe doch sehr, dass der Frust jetzt endgültig verflogen ist.

        2. Avatar von Charon
          Charon

          Soweit denken die hier nicht. Es ist die Debian Elite und alles andere ist wohl Spielzeug. xD

          1. Avatar von tuxnix
            tuxnix

            Diese Äußerung ist wohl Gedankenleserei gepaart mit Vorurteilen, Jedenfalls finde ich es anmaßend zu wissen was wer denken soll.

            Der Spruch: „Mit Linux wäre das nicht passiert“ hatte einmal eine gewisse Berechtigung als MS Windows vor lauer Lücken nicht mehr ohne Snakeoil / Virenschutz zu betreiben war.
            Danach kam die Zeit, als dieser Spruch selbst von allen Linuxportalen verbannt wurde. Einfach deshalb, weil Schafdenfreude an der Sache vorbeigeht und Linux auch immer mal die eine oder andere Lücke hat.
            100% fehlerfrei ist bei Software nur theoretisch zu erreichen.

            All das ist lange her und jetzt diesen Spruch retour anzuwenden ist nicht minder schadenfroh und sarkastisch als damals nur halt ohne jede Berechtigung.

            Erzähl doch lieber mal, was dich hier motiviert zu schreiben wenn es denn kein Trollen ist. Jedenfalls würde es mich nicht reizen, hier zu kommentieren wenn ich deiner Meinung wäre.

          2. Avatar von Charon
            Charon

            Ist wohl ehr Frustration über diverse Aussagen in diesem Forum!

            Ein Wechsel vom Redmond OS zu Linux Mint habe ich vollzogen und wollte mich einer Community anschließen um zu lernen. Stattdessen treffe ich auf Ablehnung weil ich nicht das Betriebssystem verwende was die in Anführungszeichen breite Masse hier verwendet. Franken Debian und so sinnfreie Aussagen kommen.

            Ich bin völlig zufrieden mit meinem Mint 20.1 Cinnamon Edition, für mich nach längerer Zeit ein Betriebssystem welches 24h ohne Probleme läuft und auch dessen Updates mir mein System nicht unbrauchbar macht.
            Mit Windows 8/8.1 und 10 war es trotz aktueller Hardware regelmäßig.

          3. Avatar von tuxnix
            tuxnix

            Es gab Kritik an Canonical von einigen hier. Auch von mir.
            Man sollte aber immer den Unterschied zwischen einer Firmenpolitik und den Leuten machen, die ein bestimmtes Produkt nutzen.
            Falls jemand mal was gegen Mint gesagt haben sollte, musst du dir den Schuh nicht persönlich anziehen und endlos darauf herumreiten.

            Einmal sauer reagieren ist ja o.k. Aber ständig (un)komische Bemerkungen machen und Leuten alles mögliche unterstellen ist auf Dauer nicht lustig.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert