bugs.md #9: TOFU-Zertifikatsprüfung hatte einen Fallback-Konstante-Blindfleck #21

Closed
opened 2026-09-17 21:10:05 +02:00 by kay · 0 comments
Owner

Quelle: bugs.md #9 (Sicherheits-Durchgang Runde 3, 2026-09-17)
Confidence: mittel (theoretische Lücke im Code nachvollzogen, keine funktionierende PoC — würde eine seltene TLS-Handshake-Situation erfordern)

CertificateFingerprint.sha256(of:) gab bei fehlgeschlagener Zertifikatsketten-Extraktion den festen String "unbekannt" statt eines echten Fingerabdrucks zurück. Da CertificateTrustStore.isTrusted Fingerabdrücke per exaktem String-Vergleich prüft, hätte das Vertrauen in EIN Zertifikat mit fehlgeschlagener Extraktion automatisch JEDES andere ebenfalls fehlschlagende Zertifikat für denselben Host als vertrauenswürdig durchgehen lassen — ein theoretisches TOFU-Pinning-Bypass-Fenster.

Fix: Rückgabetyp auf String? geändert; schlägt die Extraktion fehl, lehnt die App die Challenge jetzt hart ab statt einen Trust-Dialog mit unverifizierbarer Kennung anzubieten.

Verifikation: Build grün, 101 Unit-Tests grün. Härtung, kein realistisch auslösbarer Live-Exploit gefunden.

**Quelle:** bugs.md #9 (Sicherheits-Durchgang Runde 3, 2026-09-17) **Confidence:** mittel (theoretische Lücke im Code nachvollzogen, keine funktionierende PoC — würde eine seltene TLS-Handshake-Situation erfordern) `CertificateFingerprint.sha256(of:)` gab bei fehlgeschlagener Zertifikatsketten-Extraktion den festen String `"unbekannt"` statt eines echten Fingerabdrucks zurück. Da `CertificateTrustStore.isTrusted` Fingerabdrücke per exaktem String-Vergleich prüft, hätte das Vertrauen in EIN Zertifikat mit fehlgeschlagener Extraktion automatisch JEDES andere ebenfalls fehlschlagende Zertifikat für denselben Host als vertrauenswürdig durchgehen lassen — ein theoretisches TOFU-Pinning-Bypass-Fenster. **Fix:** Rückgabetyp auf `String?` geändert; schlägt die Extraktion fehl, lehnt die App die Challenge jetzt hart ab statt einen Trust-Dialog mit unverifizierbarer Kennung anzubieten. **Verifikation:** Build grün, 101 Unit-Tests grün. Härtung, kein realistisch auslösbarer Live-Exploit gefunden.
kay closed this issue 2026-09-17 21:10:05 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kay/RouterOS#21