6.1 KiB
SecWatch — IT-Sicherheitsbriefing
Erstellt von Holger Coenen · Version 1.0 · 202607 · Mit Hilfe von KI
Was ist SecWatch?
SecWatch ist eine eigenständige HTML-Datei (secwatch.html), die aktuelle IT-Sicherheitsmeldungen, CVEs und Cybervorfälle aus mehreren kostenfreien, öffentlichen Quellen zusammenfasst und übersichtlich darstellt.
Kein API-Key, kein Backend, kein Server, keine Kosten. Einfach die HTML-Datei im Browser öffnen.
Datenquellen
| Quelle | Inhalt | Abrufmethode |
|---|---|---|
| Heise Security | Deutsche Sicherheitsnews, Analysen, Warnungen | RSS-Feed via rss2json.com |
| CERT-Bund / BSI | Offizielle deutsche Schwachstellenwarnungen | RSS-Feed via rss2json.com |
| NIST NVD | Nationale Vulnerability Database — CVEs mit CVSS-Scores | Direkte REST API (services.nvd.nist.gov) |
| CISA KEV | Katalog aktiv in der Praxis ausgenutzter Schwachstellen | Direkte JSON-Datei (CORS-eingeschränkt) |
Hinweise zu den Quellen
- Heise & CERT-Bund: RSS-Feeds werden über
rss2json.comin JSON umgewandelt, da RSS-Feeds keine CORS-Header liefern. Der Dienst ist kostenfrei und benötigt keinen API-Key. - NVD: Die API ist komplett frei zugänglich und liefert CORS-Header (
access-control-allow-origin: *). Ohne API-Key gilt ein Rate-Limit von 5 Anfragen pro 30 Sekunden. - CISA KEV: Die JSON-Datei (~2 MB) enthält keine CORS-Header und kann daher aus dem Browser heraus eingeschränkt sein. Die App behandelt einen Ausfall fehlerfrei.
Funktionen
Kernfunktionen
- Tagesbericht abrufen — Lädt parallel alle 4 Quellen und zeigt die Ergebnisse
- Automatische Aktualisierung — Alle 2 Stunden wird der Bericht aktualisiert
- 24-Stunden-Verlauf — Frühere Berichte bleiben als Chips gespeichert (localStorage)
- PDF-Export — Ein-Klick-Export als PDF (via jsPDF)
Sicherheitsklassifikation
Jeder Meldung wird automatisch ein Schweregrad zugewiesen:
| Schweregrad | Farbe | Kriterium |
|---|---|---|
| Kritisch | Rot | CVSS >= 9.0, CISA KEV-Eintrag, Zero-Day |
| Hoch | Orange | CVSS 7.0–8.9 |
| Mittel | Türkis | CVSS 4.0–6.9, Standardwert |
| Niedrig | Grün | CVSS < 4.0 |
CISA KEV-Sonderstatus
Einträge aus dem CISA-Katalog (aktiv ausgenutzte Schwachstellen) erhalten zusätzlich ein rotes KEV-Badge. Ransomware-Verbindungen werden in den Zusammenfassungen explizit erwähnt.
Technische Details
Architektur
- Eine einzige HTML-Datei — kein Build, kein npm, kein Bundler
- Vanilla JavaScript — keine Frameworks, keine Abhängigkeiten (außer jsPDF)
- localStorage für die 24h-Verwaltung der Berichte
Externe Abhängigkeiten
| Abhängigkeit | Version | Zweck |
|---|---|---|
| IBM Plex Mono | Google Fonts | Monospace-Schriftart |
| IBM Plex Sans | Google Fonts | Sans-Schriftart |
| jsPDF | 2.5.1 (CDN) | PDF-Generierung |
| rss2json.com | — | RSS-zu-JSON-Umwandlung |
Dateistruktur
SecWatch/
├── secwatch.html # Die komplette Anwendung
└── README.md # Diese Dokumentation
JavaScript-Modulübersicht
| Funktion | Beschreibung |
|---|---|
storage |
localStorage-Wrapper für 24h-Berichtsverwaltung |
fetchHeise() |
Lädt Heise Security RSS (letzte 48h) |
fetchCertBund() |
Lädt CERT-Bund RSS (Schwachstellenwarnungen) |
fetchNVD() |
Lädt aktuelle CVEs der letzten 3 Tage (Score >= 7.0) |
fetchCISA() |
Lädt CISA KEV der letzten 14 Tage (optional) |
renderItems() |
Gruppiert und rendert Meldungen nach Kategorie |
buildPdf() |
Generiert PDF-Export via jsPDF |
scheduleAutoRefresh() |
Plant Auto-Refresh mit Countdown |
guessSeverity() |
Erkennt Schweregrad aus Text-Schlüsselwörtern |
extractCertSeverity() |
Extrahiert Schweregrad aus CERT-Bund Titeln |
mapCvssSeverity() |
Mappt CVSS-Score auf Schweregrad-Stufen |
buildCveSummary() |
Erstellt deutsche Zusammenfassungen aus CVE-Beschreibungen |
Nutzung
secwatch.htmlim Browser öffnen- Auf "Tagesbericht abrufen" klicken
- Warten, bis die 4 Quellen geladen sind (3–10 Sekunden)
- Optional: PDF exportieren oder Auto-Aktualisierung aktivieren
Tastatur-Shortcut
Leider keine definiert — der Button ist die einzige Interaktionsmöglichkeit.
Offline-Nutzung
Einmal geladene Berichte bleiben 24 Stunden im localStorage verfügbar und können auch ohne Internetverbindung angesehen werden.
Bekannte Einschränkungen
- CISA KEV: Kann aus dem Browser nicht immer geladen werden (fehlende CORS-Header). In diesem Fall wird die Quelle als "Übersprungen" angezeigt — die restlichen 3 Quellen funktionieren weiterhin.
- NVD Rate-Limit: Ohne API-Key max. 5 Anfragen / 30 Sek. Bei der normalen Nutzung (alle 2 Stunden) kein Problem.
- rss2json.com: Kostenfreier Dienst mit Rate-Limit. Bei sehr häufigem manuellen Abruf kann es kurzfristige Verzögerungen geben.
- Kein Server-Rendering: Die Zusammenfassungen werden maschinell aus Metadaten erstellt und sind keine KI-generierten Texte.
Entwicklung
Voraussetzungen
- Jeder moderne Browser (Chrome, Firefox, Safari, Edge)
- Keine Build-Tools, kein Node.js, kein lokaler Server nötig
Lokale Entwicklung
# Einfach im Browser öffnen:
open secwatch.html
# Oder mit lokalem Server (optional):
python3 -m http.server 8000
# Dann http://localhost:8000/secwatch.html öffnen
Anpassungen
Neue Quelle hinzufügen
- Neue
async function fetchXYZ()erstellen - Im
fetchBriefing()-Promsie hinzufügen - In
sourceStatesregistrieren
Farben anpassen
CSS-Variablen in :root ändern:
:root {
--crit: #E5484D; /* Kritisch */
--high: #F5A623; /* Hoch */
--med: #3FB8AF; /* Mittel */
--low: #4CAF7D; /* Niedrig */
}
Lizenz
Dieses Projekt wurde von Holger Coenen erstellt. Verwendung auf eigenes Risiko.
Changelog
Version 1.0 (202607)
- Erstveröffentlichung
- 4 Datenquellen: Heise, CERT-Bund, NVD, CISA KEV
- PDF-Export via jsPDF
- Automatische Aktualisierung alle 2 Stunden
- 24-Stunden-Verlauf im localStorage
- Responsives Design (Dark Theme)