Seite wählen

Python und UAC

von | Dez 2, 2011 | Security, Windows, Development

Seitdem mit Windows Vista die sogenannte „Benutzerkontensteuerung“ (UAC) eingeführt wurde, ist die Programmierung einer zuverlässigen und dynamischen Anwendung komplexer geworden. Denn zuvor waren ein wenig mehr „Klicks“ notwendig um einen Prozess unter einem anderen Benutzer, als dem der gerade angemeldet ist, zu starten.
Da Windows selbst mit der „Installationsprogrammerkennungs-Technologie“ einige Anwendungen unter einem anderen Benutzer startet und ein Benutzer relativ leicht selbst die Möglichkeit hat, dies mit einfachen Mitteln zu erreichen, ist ein Problem, das bisher eher selten auftrat, ganz plötzlich sehr häufig anzutreffen.
Die Rede ist hier von einem Fehler der dem LUA-Bug¹ sehr ähnlich ist. Laut Definition von Aaron Margosis wird als LUA-Bug ein Fehler bezeichnet den eine Anwendung hat wenn sie nicht mit Admin-Rechten ausgeführt wird. In diesem Fall handelt es sich jedoch um Fehler die erst auftreten wenn eine Anwendung mit „anderen“ Rechten gestartet wird.
Welche Gründe auch immer dafür vorliegen, das Resultat ist, dass bestimmte Daten wie z.B. Benutzereinstellungen/-pfade nicht mehr mit denen des angemeldeten Benutzers übereinstimmen. Allerdings muss man hier nun genau abwägen, wann dies tatsächlich ein Problem darstellt, denn letztlich ist ja genau das die erwartete Konsequenz.
Ebenfalls kann es sein, dass dies ein großes Sicherheitsrisiko darstellt. Angenommen die Anwendung startet einen Browser weil der Benutzer auf einen Link oder ähnliches innerhalb der Anwendung geklickt hat. Falls es sich nun, wie vermutlich in der Mehrzahl der Fälle, bei diesem „anderen“ Benutzer um einen Administrator handelt kann das sehr schnell sehr gefährlich werden.
Um aber nun endlich einen Bezug zum Titel herzustellen, stelle ich euch ein kleines Python-Modul vor, welches ich irgendwann einmal für ein persönliches Projekt erstellt habe. Es ist eine Portierung des Vorschlags² von Aaron Margosis zur Lösung dieser Probleme.
humbler.py
1.
2. http://blogs.msdn.com/b/aaron_margosis/archive/2009/06/06/
Johannes Meyer
Johannes Meyer
Lead Developer

Johannes ist seit 2011 bei uns und inzwischen, seit er 2014 die Ausbildung abgeschlossen hat, als Lead Developer für Icinga Web 2, Icinga DB Web sowie alle möglichen anderen Module und Bibliotheken im Web Bereich zuständig. Arbeitet er gerade mal nicht, macht er es sich bei schlechtem Wetter am liebsten zum zocken oder Filme/Serien schauen auf dem Sofa gemütlich. Passt das Wetter, geht's auch mal auf eines seiner Zweiräder. Motorisiert oder nicht.

0 Kommentare

Trackbacks/Pingbacks

  1. MC 2011 impressions, DNC, Check WMI Plus & Python for UAC Tips › NETWAYS Blog - [...] Johannes shared a Python module for Windows Vista’s UAC, which he ported based on a suggested solution made by…

Einen Kommentar abschicken

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

Mehr Beiträge zum Thema Security | Windows | Development

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen...