Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2.9 KiB
2.9 KiB
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
DiviToolGatejedes nicht lesende Tool der Gruppen Divi, Divi-Bibliothek und Divi Theme Builder vorexecuteab (ohnereadonly-Annotation gilt ein Tool als schreibend).lit-content-createmitdivilehnt vor dem Anlegen des Entwurfs ab. In den Adaptern ruft jede schreibende Methode zuerstReleaseGate::assertWritable()auf:DiviSaver::save/saveNew,DiviLibraryStore::create, alle Schreibmethoden vonDiviThemeBuilderinkl.liveId(true),DiviPages::setFlags(die letzten beiden nachgezogen in43c0a78). Ein inWriteFailedverpacktesDiviLockedwird als Sperre gemeldet. - Fail-closed: Ausnahme im Resolver →
incompatible(geloggt); fehlende oder unlesbarefingerprints.jsonbzw. 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 imfinallyzurü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 mitwp_rest-Nonce; atomare Sperre perINSERT IGNOREbzw. bedingtemUPDATE(vorbereitete Statements, Tabellenname aus$wpdb), Freigabe imfinally; 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_lockund den Transientlit_mcp_divi_stateauf jeder Website. - WP-CLI:
--update-referenceschreibt nur in einer Entwicklungskopie (mittests/), Referenzquellen zuerst,fingerprints.jsonzuletzt; 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-statusliest die Fingerabdrücke ohne Zwischenspeicher (selten aufgerufen).
Ergebnis
Keine kritischen oder wichtigen offenen Befunde.