# Divi-Absicherung – Security-Audit Stand 2026-09-30, Branch `divi-absicherung`, Version 0.6.0. Durchgeführt als abschließender Gesamt-Review des Branches (903246d..35ea47d) mit Sicherheitsschwerpunkt; Korrekturen in 43c0a78, nachgeprüft. ## Geprüft - **Schreiben trotz nicht freigegebener Divi-Version:** Kein Weg gefunden. Zentral lehnt `DiviToolGate` jedes nicht lesende Tool der Gruppen Divi, Divi-Bibliothek und Divi Theme Builder vor `execute` ab (ohne `readonly`-Annotation gilt ein Tool als schreibend). `lit-content-create` mit `divi` lehnt vor dem Anlegen des Entwurfs ab. In den Adaptern ruft jede schreibende Methode zuerst `ReleaseGate::assertWritable()` auf: `DiviSaver::save/saveNew`, `DiviLibraryStore::create`, alle Schreibmethoden von `DiviThemeBuilder` inkl. `liveId(true)`, `DiviPages::setFlags` (die letzten beiden nachgezogen in 43c0a78). Ein in `WriteFailed` verpacktes `DiviLocked` wird als Sperre gemeldet. - **Fail-closed:** Ausnahme im Resolver → `incompatible` (geloggt); fehlende oder unlesbare `fingerprints.json` bzw. Divi-Dateien → rote Prüfung, nie eine Ausnahme nach außen; Divi nicht aktiv → Version leer → `untested`. - **Prüfmodus:** Ausnahme gilt nur für die ID der Wegwerfseite, nur während `whileProbing()`, wird im `finally` zurückgesetzt, ist nicht von außen setzbar; Aufrufe ohne Post-ID (Bibliothek, Theme Builder) sind nie ausgenommen. - **Freigabe:** nur `manage_options` + Nonce (`check_admin_referer`), nur aus frischem grünem Bericht, serverseitig gegen Divi-Version, Plugin-Version und Zustandsschlüssel geprüft; Zurückziehen nutzt die installierte Version, keine Eingabe. - **REST-Route der Prüfung:** Permission `manage_options`, Cookie-Anmeldung mit `wp_rest`-Nonce; atomare Sperre per `INSERT IGNORE` bzw. bedingtem `UPDATE` (vorbereitete Statements, Tabellenname aus `$wpdb`), Freigabe im `finally`; Fehler im Prüflauf → Hinweis statt 500-Antwort. - **Ausgabe im Reiter:** durchgehend escaped (`esc_html`, `esc_attr`, `esc_url`). - **Wegwerfseite:** immer endgültig gelöscht; verwaiste Seiten nur als Entwurf mit Marker und passendem Titel, älter als 10 Minuten. - **Deinstallation:** entfernt `lit_mcp_divi_releases`, `lit_mcp_divi_check_report`, `lit_mcp_divi_check_lock` und den Transient `lit_mcp_divi_state` auf jeder Website. - **WP-CLI:** `--update-reference` schreibt nur in einer Entwicklungskopie (mit `tests/`), Referenzquellen zuerst, `fingerprints.json` zuletzt; ein Schreibfehler lässt die Sperre unverändert. ## Bewusst nicht geändert - Administratoren mit Anwendungspasswort können die Prüf-Route ohne Nonce aufrufen – keine Rechteausweitung, Freigeben bleibt hinter admin-post und Nonce. - `lit-content-create`-Ablehnungen stehen nicht als „abgelehnt“ im Protokoll (Fehler geht an den Client). - `lit-site-status` liest die Fingerabdrücke ohne Zwischenspeicher (selten aufgerufen). ## Ergebnis Keine kritischen oder wichtigen offenen Befunde.