Files
2026-07-21 10:09:31 +02:00

172 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.08.9 |
| **Mittel** | Türkis | CVSS 4.06.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 (310 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)