commit 1e1ce989b5b50257b067779a5bdaf332bc81acdc Author: Holger Coenen Date: Tue Jul 21 10:09:31 2026 +0200 Erster Commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..2fe5112 --- /dev/null +++ b/README.md @@ -0,0 +1,171 @@ +# 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.com` in 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 + +1. `secwatch.html` im Browser öffnen +2. Auf **"Tagesbericht abrufen"** klicken +3. Warten, bis die 4 Quellen geladen sind (3–10 Sekunden) +4. 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 +```bash +# 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 +1. Neue `async function fetchXYZ()` erstellen +2. Im `fetchBriefing()`-Promsie hinzufügen +3. In `sourceStates` registrieren + +#### Farben anpassen +CSS-Variablen in `:root` ändern: +```css +: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)