hackatoll
Zur Lernplattform

Wissen › Broken Access Control / IDOR

Broken Access Control / IDOR

Fehlende Berechtigungsprüfung: eine hochgezählte ID genügt, um fremde Daten zu sehen.

Zugriffskontrolle Schweregrad: Hoch

Broken Access Control bedeutet, dass die Anwendung nicht ausreichend prüft, WER auf WAS zugreifen darf. Die häufigste Form, IDOR (Insecure Direct Object Reference), erlaubt den Zugriff auf fremde Objekte allein durch Ändern einer ID im Request.

Wie der Angriff funktioniert

Beispiel

Der Unterschied ist die Eigentümer-/Rechteprüfung beim Laden:

// IDOR: lädt jedes Objekt per ID aus dem Request
$order = $this->orderRepository->findByUid($request->getArgument('id'));

// sicher: an den angemeldeten Nutzer gebunden
$order = $this->orderRepository->findOneByUidAndFeUser($id, $currentUser);
if ($order === null) { throw new AccessDeniedException(); }

Mögliche Auswirkungen

◆ In TYPO3 beachten

Worauf du in TYPO3 achten musst

In TYPO3 betrifft das vor allem Extbase-Plugins, Backend-Module und eigene Endpunkte. Der Core liefert die Bausteine für Zugriffsprüfungen — sie müssen aber bewusst eingesetzt werden.

Objekte nie blind per __identity/uid laden

Extbase mappt ein __identity im Request auf ein bestehendes Objekt (PropertyMapper). Wird eine uid aus Nutzereingabe ungeprüft geladen, entsteht IDOR. Immer gegen Eigentümer/Gruppe prüfen.

Eigentümerschaft explizit prüfen

Datensätze an den FE-User binden (z. B. feUser-Feld) und beim Laden filtern. Nur zu zeigen, was dem Anfragenden gehört — nicht erst nach dem Laden entscheiden.

enableFields & Storage-Pid respektieren

Repository-Queries berücksichtigen standardmäßig hidden/deleted/starttime/endtime (enableFields) und die storagePid. ->ignoreEnableFields(true) oder setRespectStoragePage(false) heben diese Schranken auf — nur sehr bewusst verwenden.

Backend-Zugriff serverseitig prüfen

Für BE-Funktionen $GLOBALS['BE_USER']->check() / isAdmin() nutzen und Modul-/Tabellenrechte prüfen. Sichtbarkeit im UI ist keine Zugriffskontrolle.

FE-Login + Gruppen statt 'unsichtbarer' URLs

Geschützte Inhalte über fe_group / Zugriffsschutz absichern. Eine nur 'versteckte' Seite oder ein nicht verlinktes Plugin ist nicht geschützt.

Schutzmaßnahmen

Interaktiv üben

In der Lernplattform kannst du diese Schwachstellenklasse an einer echten, isolierten TYPO3-Instanz nachvollziehen:

Weiterlesen

Jetzt interaktiv üben →