
REST API поверх каталога CISA Known Exploited Vulnerabilities, обеспечивающий поиск CVE, недавние добавления в KEV, текстовый поиск и объединённые данные CISA, MITRE и NVD.
Недостающий API для каталога известных эксплуатируемых уязвимостей CISA (здесь).
Доступ к KEVin можно получить по адресу https://kevin.gtfkd.com/
В настоящее время действуют ограничения скорости, а кэширование на границе установлено на 3 часа.
Чтобы проверить статус размещённого экземпляра, обратитесь к нашей странице статуса: https://kevinapi.statuspage.io/
python3 -m venv envsource env/bin/activatepip3 install -r requirements.txtДобавьте необходимые API-ключи.
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
Не стесняйтесь изменять используемую базу MongoDB или имена переменных. У меня здесь указаны обе, поскольку я работаю с prod- и dev-базами MongoDB для размещённой версии KEVin на kevin.gtfkd.com/*.
PUBLIC_BASE_URL — это канонический публичный origin, используемый в метаданных главной страницы.
TRUSTED_HOSTS — это разделённый запятыми список разрешённых значений для принимаемых HTTP-заголовков Host;
включите имя хоста, используемое локальными проверками работоспособности и обратными прокси.
Настройки допуска на уровне origin считываются один раз при запуске. Redis обеспечивает соблюдение
общих лимитов на окно между воркерами: UNCACHED_QUERY_RATE_LIMIT охватывает промахи кэша для списков и recent-KEV,
а POINT_MISS_RATE_LIMIT охватывает промахи для point-, RSS- и metrics-запросов. Кэшированные ответы 2xx и 4xx используют одинаковый TTL.
Блокировки заполнения (CACHE_FILL_LOCK_SECONDS) сериализуют работу с origin между воркерами
с помощью токенов владельца, CACHE_SINGLEFLIGHT_WAIT_SECONDS по умолчанию равен 0, поэтому
конфликтующий ключ сразу завершается с ошибкой, а CACHE_TTL_JITTER_RATIO разбрасывает сроки истечения с помощью secrets.randbelow.
Поиск по /kev с высокой кардинальностью и варианты actor не попадают в Redis; точные
повторы используют ограниченный внутрипроцессный кэш.
Ручные point-ресурсы также хранят не более NEGATIVE_CACHE_MAX_ENTRIES
недолговечных локальных промахов в качестве L1-кэша перед Redis.
Настройка MongoDB:
Запустите update.py
update.py получит данные из CISA и заполнит вашу базу MongoDB. Приятного использования.
Ниже приведён пример файла docker-compose.yml для развёртывания веб-части KEVin.
убедитесь, что в вашем файле .env указаны правильные значения!!!
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=MicrosoftНе следует открывать MongoDB для доступа из широкого интернета.
Вклад приветствуется! Если вы обнаружите какие-либо проблемы или у вас есть идеи по улучшению, пожалуйста, не стесняйтесь открыть issue или отправить pull request. На данный момент у меня не так много времени на улучшение этого проекта.