
REST-API über den Katalog der bekannten ausgenutzten Schwachstellen (Known Exploited Vulnerabilities) der CISA, die CVE-Abfragen, aktuelle KEV-Ergänzungen, Textsuche und zusammengeführte Daten von CISA, MITRE und NVD bereitstellt.
Die fehlende API für CISAs Katalog der bekannten ausgenutzten Schwachstellen (hier).
Der Zugriff auf KEVin ist unter https://kevin.gtfkd.com/ möglich.
Derzeit sind Ratenbegrenzungen aktiv, und das Caching am Edge ist auf 3 Stunden eingestellt.
Um den Status der gehosteten Instanz zu überprüfen, siehe bitte unsere Statusseite: https://kevinapi.statuspage.io/
python3 -m venv envsource env/bin/activatepip3 install -r requirements.txtFüge die erforderlichen API-KEYS hinzu.
API_KEY=xxx
MONGODB_URI_PROD=mongodb://MONGO_PROD_IP:27017/
MONGODB_URI_DEV=mongodb://localhost:27017/
PUBLIC_BASE_URL=https://kevin.gtfkd.com
TRUSTED_HOSTS=kevin.gtfkd.com,localhost,127.0.0.1
ORIGIN_RATE_LIMIT_WINDOW_SECONDS=1
UNCACHED_QUERY_RATE_LIMIT=10
POINT_MISS_RATE_LIMIT=20
NEGATIVE_CACHE_TIMEOUT=15
NEGATIVE_CACHE_MAX_ENTRIES=1024
CACHE_SINGLEFLIGHT_WAIT_SECONDS=0
CACHE_FILL_LOCK_SECONDS=15
CACHE_TTL_JITTER_RATIO=0.1
Du kannst die verwendete MongoDB oder die Variablennamen gerne anpassen. Ich habe beides hier, da ich mit Prod- und Dev-MongoDBs für die gehostete Version von KEVin unter kevin.gtfkd.com/* arbeite.
PUBLIC_BASE_URL ist der kanonische öffentliche Origin, der in den Metadaten der Startseite verwendet wird.
TRUSTED_HOSTS ist eine kommagetrennte Allowlist für akzeptierte HTTP-Host-Header;
füge den Hostnamen hinzu, der von lokalen Health-Checks und Reverse-Proxys verwendet wird.
Die Origin-Admission-Einstellungen werden einmal beim Start eingelesen. Redis erzwingt die
gemeinsamen Limits pro Zeitfenster über alle Worker hinweg: UNCACHED_QUERY_RATE_LIMIT deckt
Cache-Misses bei Listen und Recent-KEV ab, und POINT_MISS_RATE_LIMIT deckt Misses bei Point-,
RSS- und Metrics-Anfragen ab. Gecachte 2xx- und 4xx-Antworten teilen sich dieselbe TTL.
Fill-Locks (CACHE_FILL_LOCK_SECONDS) serialisieren die Origin-Arbeit über alle Worker hinweg
mit Owner-Tokens, CACHE_SINGLEFLIGHT_WAIT_SECONDS ist standardmäßig 0, sodass ein
umkämpfter Schlüssel sofort fehlschlägt, und CACHE_TTL_JITTER_RATIO verteilt den Ablauf mit secrets.randbelow.
Die /kev-Suche mit hoher Kardinalität und Actor-Varianten bleiben außerhalb von Redis; exakte
Wiederholungen verwenden einen begrenzten In-Process-Cache.
Manuelle Point-Ressourcen behalten außerdem höchstens NEGATIVE_CACHE_MAX_ENTRIES
kurzlebige lokale Misses als L1-Cache vor Redis.
MongoDB einrichten:
update.py ausführen
update.py ruft Daten von CISA ab und befüllt deine MongoDB. Viel Spaß.
Unten findest du eine Beispiel-Datei docker-compose.yml für die Bereitstellung der Web-Hälfte von KEVin.
stelle sicher, dass deine .env-Datei die richtigen Werte enthält!!!
version: '3'
services:
flask_app:
build:
context: . # The build context is now the KEVin folder
dockerfile: Dockerfile # Use the Dockerfile we created inside KEVin
container_name: KEVin
env_file:
- .env
networks:
- gtfkdProd
ports:
- "8444:8444" # Map host port to container port
restart: unless-stopped
networks:
gtfkdProd:
external: true
/kev/CVE-2023-1234/kev/kev/new/7/vuln/<string:cve_id>/vuln/<string:cve_id>/nvd/kev?search=MicrosoftDu solltest MongoDB nicht dem offenen Internet aussetzen.
Beiträge sind willkommen! Wenn du Probleme findest oder Ideen für Verbesserungen hast, kannst du gerne ein Issue eröffnen oder einen Pull Request einreichen. Ich werde momentan nicht allzu viel Zeit haben, dies zu verbessern.