← Все комнаты Путь «Защита (код)» →
ЭкспертЗащита (код) Код Осенний CTF

Уязвимая версия

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Проверять версии зависимостей по диапазонам уязвимостей.

Напишите is_vulnerable(version, ranges). Версия — MAJOR.MINOR.PATCH. Диапазон — условия через пробел (>=, >, <=, <, =), все условия должны выполняться. Версия уязвима, если подходит под любой диапазон.

Задание 2Теория и инструменты

Базы уязвимостей (OSV, GitHub Advisory) описывают затронутые версии диапазонами.

Версии сравнивают покомпонентно как числа: 1.10.0 > 1.9.0, а строковое сравнение ошибается.

Инструменты

  • Python 3 или Node.js
  • Встроенные тесты в редакторе

Больше теории — в разделе «Обучение: Защита (код)».

Задание 3Практика: напишите код

Примеры

Пример 1
is_vulnerable("1.4.2", ["\u003e=1.2.0 \u003c1.4.3"])
→ true
Пример 2
is_vulnerable("1.4.3", ["\u003e=1.2.0 \u003c1.4.3"])
→ false

Ещё 6 скрытых тестов.

solution
Ctrl+Enter — отправить Войдите, чтобы отправить

Пошаговый план — открывайте по одному шагу

  1. 1
    Разберите версию в кортеж чисел.

Подсказки — каждая до решения стоит −100 очков

Задание 4Как защититься

Подключите автоматическую проверку зависимостей (pip-audit, npm audit, Dependabot) в CI.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.