Falsche Standardberechtigungen
Beschreibung
Falsche Standardberechtigungen treten auf, wenn Software Dateien, Verzeichnisse oder andere Ressourcen mit Berechtigungen installiert, die permissiver als notwendig sind, und sie damit unbeabsichtigten Akteuren aussetzt. Häufige Manifestationen umfassen welt-schreibbare ausführbare Dateien, Konfigurationsdateien, die von allen Benutzern lesbar sind, und Verzeichnisse mit übermäßig permissivem Zugang. Wenn kritische Dateien falsche Berechtigungen haben, können lokale Angreifer sensible Daten lesen, ausführbare Dateien modifizieren, um bösartigen Code einzuschleusen, oder Privilegien durch Ausnutzung von setuid/setgid-Binaries mit schwachen Berechtigungen eskalieren.
Risiko
Falsche Standardberechtigungen sind eine bedeutende Quelle für lokale Privilegieneskalationsschwachstellen. Welt-schreibbare ausführbare Dateien ermöglichen jedem lokalen Benutzer, bösartigen Code einzuschleusen, der mit den Privilegien des Dateieigentümers läuft. Konfigurationsdateien mit sensiblen Anmeldedaten werden für unbefugte Benutzer zugänglich. In Multi-Tenant-Umgebungen ermöglichen unsachgemäße Berechtigungen mandantenübergreifenden Datenzugriff. Setuid/setgid-Programme mit schwachen Berechtigungen sind besonders gefährlich - Angreifer können sie modifizieren, um beliebigen Code mit erhöhten Privilegien auszuführen. Diese Schwachstellenklasse wurde in zahlreichen Privilegieneskalationsangriffen über Windows-, Linux- und macOS-Systeme hinweg ausgenutzt.
Lösung
Wenden Sie das Prinzip der geringsten Privilegien auf alle Datei- und Verzeichnisberechtigungen an. Setzen Sie restriktive Berechtigungen während der Installation - Dateien sollten nur von beabsichtigten Benutzern lesbar/schreibbar/ausführbar sein. Setzen Sie niemals welt-schreibbare Berechtigungen auf ausführbare Dateien. Verwenden Sie angemessene umask-Werte während der Installation. Für Konfigurationsdateien, die Anmeldedaten enthalten, beschränken Sie den Zugang nur auf das besitzende Dienstkonto. Auditieren Sie regelmäßig Dateiberechtigungen auf Konfigurationsdrift. Verwenden Sie Sicherheits-Benchmarks (CIS) für plattformspezifische Berechtigungsrichtlinien. Testen Sie Installationen mit Berechtigungsprüfungstools.
Häufige Auswirkungen
| Auswirkung | Details |
|---|---|
| Vertraulichkeit | Bereich: Informationsoffenlegung Übermäßig permissive Leseberechtigungen legen sensible Daten einschließlich Anmeldedaten, Schlüsseln und Konfigurationsdetails offen. |
| Integrität | Bereich: Code-Injection Schreibberechtigungen auf ausführbaren Dateien ermöglichen Angreifern, bösartigen Code einzuschleusen, der mit den Privilegien des Dateieigentümers ausgeführt wird. |
| Zugriffskontrolle | Bereich: Privilegieneskalation Die Modifikation von setuid/setgid-Binaries oder Konfigurationsdateien ermöglicht Privilegieneskalation zu root/Administrator. |
Beispielcode + Lösungscode
Anfälliger Code
# ANFÄLLIG: Installationsskript mit welt-schreibbaren Berechtigungen
#!/bin/bash
mkdir -p /opt/myapp
cp myapp /opt/myapp/
cp config.ini /opt/myapp/
# Welt-schreibbare ausführbare Datei - jeder Benutzer kann modifizieren!
chmod 777 /opt/myapp/myapp
# Welt-lesbare Konfiguration mit Anmeldedaten
chmod 644 /opt/myapp/config.ini
# Konfiguration enthält: DB_PASSWORD=secret123
# ANFÄLLIG: Dateien mit unsicheren Berechtigungen erstellen
import os
def save_credentials(username, password):
# Standard-umask kann welt-lesbare Datei erstellen
with open('/etc/myapp/credentials', 'w') as f:
f.write(f"{username}:{password}")
# Datei ist für jeden lesbar!
def create_log_directory():
# Welt-schreibbares Verzeichnis - Symlink-Angriffe möglich
os.makedirs('/var/log/myapp', mode=0o777, exist_ok=True)
// ANFÄLLIG: Setuid-Binary mit schwachen Berechtigungen erstellen
#include <sys/stat.h>
int install_helper() {
// Binary kopieren
copy_file("helper", "/usr/local/bin/helper");
// Setuid-Bit setzen ABER Berechtigungen erlauben welt-schreiben!
chmod("/usr/local/bin/helper", S_ISUID | S_IRWXU | S_IRWXG | S_IRWXO);
// Jeder Benutzer kann jetzt diese setuid-Binary modifizieren!
return 0;
}
Korrigierter Code
# SICHER: Restriktive Berechtigungen
#!/bin/bash
# Verzeichnis mit eingeschränkten Berechtigungen erstellen
install -d -m 755 -o root -g root /opt/myapp
# Ausführbare Datei: Eigentümer ausführen, kein Schreiben für andere
install -m 755 -o root -g root myapp /opt/myapp/
# Konfiguration mit Anmeldedaten: nur Eigentümer
install -m 600 -o myapp -g myapp config.ini /opt/myapp/
# Berechtigungen verifizieren
ls -la /opt/myapp/
import os
import stat
# SICHER: Restriktive Dateierstellung
def save_credentials(username, password):
filepath = '/etc/myapp/credentials'
# Verzeichnis mit eingeschränkten Berechtigungen erstellen
os.makedirs('/etc/myapp', mode=0o700, exist_ok=True)
# Restriktive umask setzen vor Dateierstellung
old_umask = os.umask(0o077)
try:
with open(filepath, 'w') as f:
f.write(f"{username}:{password}")
finally:
os.umask(old_umask)
# Berechtigungen verifizieren und durchsetzen
os.chmod(filepath, stat.S_IRUSR | stat.S_IWUSR) # 0600
def create_log_directory():
# Verzeichnis nur vom Eigentümer schreibbar
os.makedirs('/var/log/myapp', mode=0o755, exist_ok=True)
# Log-Dateien sollten nur-anhängen für Dienstbenutzer sein
#include <sys/stat.h>
#include <unistd.h>
// SICHER: Ordnungsgemäße setuid-Binary-Installation
int install_helper_safe() {
const char *path = "/usr/local/bin/helper";
// Binary kopieren
copy_file("helper", path);
// Zuerst ordnungsgemäßes Eigentum setzen
chown(path, 0, 0); // root:root
// Setuid mit KEINEN Schreibberechtigungen für Gruppe/Ändere
// S_ISUID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH = 4755
chmod(path, S_ISUID | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
// Berechtigungen verifizieren
struct stat st;
stat(path, &st);
if (st.st_mode & S_IWGRP || st.st_mode & S_IWOTH) {
// Immer noch schreibbar - Installation fehlschlagen lassen
unlink(path);
return -1;
}
return 0;
}
Ausgenutzt in der Praxis
BackTrack Linux btinstall (BackTrack, 2012)
CVE-2012-5697 im BackTrack Linux Installationsskript setzte welt-schreibbare Berechtigungen auf alle Dateien in /frameworkgui/, was lokale Privilegieneskalation ermöglichte.
Schneider Electric Harmony/Magelis (Industrie, 2021)
CVE-2021-22817 in der Schneider Electric Industrie-PC-Serie ermöglichte unbefugten Zugriff aufgrund falscher Standardberechtigungen auf dem Basis-Installationsverzeichnis.
Samsung Mobile Firmware (Samsung, 2025)
Kritische Schwachstellen in Samsung Mobile Firmware bezüglich falscher Standardberechtigungen, mit veröffentlichten Zero-Day-Exploits.
Tools zum Testen/Ausnutzen
-
LinPEAS — Fehlkonfigurierte Berechtigungen auf Linux enumerieren.
-
WinPEAS — Schwache Berechtigungen auf Windows enumerieren.
-
unix-privesc-check — UNIX-Dateiberechtigungen auditieren.
CVE-Beispiele
-
CVE-2012-5697 — BackTrack welt-schreibbare Berechtigungen.
-
CVE-2021-22817 — Schneider Electric falsche Standardberechtigungen.
-
CVE-2023-2898 — MobileTrans schwache Dienstberechtigungen.
Referenzen
-
MITRE. "CWE-276: Incorrect Default Permissions." https://cwe.mitre.org/data/definitions/276.html
-
CIS Benchmarks. "File Permission Guidelines." https://www.cisecurity.org/benchmark/