| Version | Unterstützt |
|---|---|
| 5.x | ja |
| 4.x | nein — bitte auf 5 aktualisieren |
| < 4 | nein |
Bitte nicht über ein öffentliches Issue. Eine Erweiterung mit Zugriff auf alle Websites ist ein lohnendes Ziel; eine öffentlich beschriebene Lücke ist sofort für jeden nutzbar.
Zwei Wege:
- Bevorzugt: Private Meldung über GitHub Security Advisories
- E-Mail an philipp.l.paulik@gmail.com mit „pBlock Sicherheit“ im Betreff
- Welche Art von Problem (z. B. eingeschleustes Skript, Umgehung der Ausnahmen, Offenlegung von Daten)
- Betroffene Datei oder Funktion, wenn bekannt
- Eine Schritt-für-Schritt-Anleitung zum Nachstellen
- Was ein Angreifer damit erreichen könnte
pBlock ist ein Freizeitprojekt einer einzelnen Person. Realistisch heißt das:
| Schritt | Zeitrahmen |
|---|---|
| Eingangsbestätigung | innerhalb von 5 Tagen |
| Erste Einschätzung | innerhalb von 14 Tagen |
| Behebung kritischer Lücken | Ziel: 30 Tage |
| Veröffentlichung der Details | nach der Behebung, in Absprache |
Wer möchte, wird im Advisory namentlich genannt.
Diese Bereiche haben die größte Tragweite:
src/content/— läuft auf jeder besuchten Seite. Ein Fehler hier wirkt sich überall aus.src/content/main-world.js— läuft in der JavaScript-Umgebung der Seite. Alles, was diese Grenze aufweicht, ist ernst zu nehmen.src/core/settings.js— verarbeitet importierte Dateien. Import ist die einzige Stelle, an der fremde Daten ins System kommen.src/core/filter-parser.js— verarbeitet heruntergeladene Filterlisten.src/manifest.json— jede zusätzliche Berechtigung vergrößert den Schaden, den ein Fehler anrichten kann.
Diese Punkte sind kein Versehen, sondern abgewogen:
<all_urls>als Host-Berechtigung. Ein Werbeblocker, der nur auf manchen Seiten wirkt, ist keiner. Die Erweiterung liest dabei keine Seiteninhalte aus; das Content-Script schreibt nur ein Stylesheet und zählt Treffer.- Keine Browser-Synchronisation.
chrome.storage.syncerlaubt 8 KB pro Eintrag und meldet Überschreitungen nur überlastError. Daten still zu verlieren ist schlimmer als sie nicht zu synchronisieren. - Filterlisten werden zur Laufzeit geladen. Es handelt sich um Textdateien, die geparst und in Regeln übersetzt werden. Ausgeführt wird davon nichts; der Parser liegt vollständig im Paket. Die Quell-URLs sind fest hinterlegt und werden zusätzlich auf HTTPS geprüft.
- Keine
eval, keinenew Function, kein nachgeladenes Skript. Der Manifest-Validator inscripts/validate-manifest.mjslässt einen Build scheitern, der so etwas enthält.
- Werbung, die durchrutscht, oder Seiten, die kaputtgehen — das sind Filterprobleme, bitte als normales Issue melden.
- Dass eine Website erkennen kann, dass ein Werbeblocker aktiv ist. Das lässt sich grundsätzlich nicht vollständig verhindern.
- Angriffe, die bereits vollen Zugriff auf das Gerät des Nutzers voraussetzen.