По данным аналитики за 2025 год, 28% эксплойтов запускались в течение суток после публикации CVE, а среднее время до рабочего exploit'а схлопнулось до пяти дней. При этом организации тратят от 60 до 150 дней на деплой патчей. Вот это окно между «патч вышел» и «патч накатили» - и есть рабочее пространство багхантера. Из моих 1-day отчётов за последний год треть вернулась как Duplicate. Каждый дубликат можно было предотвратить, если бы я точнее фильтровал цели на старте. Эта статья - конспект рабочего процесса: от отбора CVE до выплаты.
Разница между 0-day и n-day для багхантера
0-day - уязвимость, о которой вендор не знает и для которой нет патча. Как только исправление выходит и CVE публикуется - баг становится 1-day (или n-day, где n - дни с момента раскрытия). Среди исследователей 1-day принято называть свежие уязвимости в первые недели после патча, пока основная масса инстансов не обновилась.Практическая разница: поиск 0-day - это фаззинг, реверс-инжиниринг и месяцы работы. 1-day exploit разработка - анализ патча, воспроизведение на стенде и быстрая разведка непатченных целей. Порог входа ниже на порядок, а выплаты сопоставимы - при условии, что ты первый.
Бизнес-логика атаки. Для атакующих n-day ценны по тем же причинам: ransomware-группы используют свежие CVE для начального доступа (CVE-2023-22518 в Confluence фигурирует в каталоге CISA KEV с пометкой «ransomware»), access-брокеры продают проломленные через n-day периметры на теневых площадках. Багхантер делает ту же работу - но легально и за вознаграждение.
В терминах MITRE ATT&CK: Vulnerability Scanning (T1595.002, Reconnaissance) для обнаружения непатченных систем → Exploit Public-Facing Application (T1190, Initial Access) для эксплуатации. Понимание этой цепочки помогает не только при написании отчётов - на OSCP и PNPT оценивают именно умение выстроить kill chain целиком.
Отбор CVE: какие 1-day уязвимости стоят времени
Поток свежих CVE - десятки записей ежедневно. Бросаться на каждую - путь к выгоранию и дубликатам. Нужна система фильтрации.CVSS-вектор важнее скора. Числовое значение CVSS обманчиво без разбора вектора. Возьмём вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N. PR:N (без аутентификации) - звучит вкусно. Но импакт: Confidentiality Low, Integrity Low, Availability None. Итог - 6.5 (MEDIUM). Это дефект дефолтных прав доступа (CWE-276, Incorrect Default Permissions): частично применённые политики безопасности дают анонимный доступ к тем компонентам, которые входят в затронутую политику. Реальный импакт зависит от конфигурации конкретной инсталляции CODESYS - не RCE, не захват админки, а ограниченный и конфигурационно-зависимый эффект. EPSS - 0.006, ниже медианы. Тратить на неё полдня - потерять время.Для сравнения - CVE-2023-22518, Improper Authorization в Atlassian Confluence (CWE-863):
| Параметр | CVE-2022-22518 (CODESYS) | CVE-2023-22518 (Confluence) |
|---|---|---|
| CVSS | 6.5 (MEDIUM) | 9.8 (CRITICAL) |
| Вектор импакта | C:L / I:L / A:N | C:H / I:H / A:H |
| CWE | CWE-276 | CWE-863 |
| EPSS | 0.006 (ниже медианы) | 1.000 (top 1%) |
| CISA KEV | Нет | Да (связана с ransomware) |
| Стоит браться? | Нет | Да |
CVE-2023-22518 позволяет неаутентифицированному атакующему сбросить Confluence и создать учётную запись администратора - полная потеря конфиденциальности, целостности и доступности.
EPSS как фильтр. CVSS измеряет теоретическую тяжесть. EPSS (Exploit Prediction Scoring System от FIRST.org) предсказывает вероятность реальной эксплуатации в ближайшие 30 дней. Гипотетическая CVE с CVSS 9.8 и EPSS 0.01 - скорее всего никто не эксплуатирует (это не про CVE-2023-22518 с EPSS 1.0, а вымышленный пример для иллюстрации принципа). А вот CVE с CVSS 7.5 и EPSS 0.85 в нишевом продукте - реальная атакуемая цель. Для багхантера второй случай ценнее: конкуренция меньше, шанс на принятый отчёт выше.
CISA KEV как сигнал. Каталог Known Exploited Vulnerabilities - если CVE туда попала, её эксплуатируют прямо сейчас. Для багхантера это двойной сигнал: подтверждённая эксплуатируемость упрощает доказательство импакта, но вендоры в KEV-списке обязаны патчиться в установленные CISA сроки (due date назначается индивидуально - от 3 дней для критичных, как CVE-2026-35616, до ~21 дня, хотя SSVC-решение может варьироваться от 'Act' до 'Attend' даже для KEV-записей с ransomware-меткой). Окно сужается. Впрочем, даже для KEV-записей с ransomware-меткой SSVC-решение не всегда максимально срочное: для CVE-2023-22518 SSVC-decision - Attend (патчить в штатном цикле), что на практике оставляет более широкое окно, чем ожидаешь.
Чек-лист для поиска известных CVE в багбаунти:
- PR:N или PR:L - атака без аутентификации или с минимальными привилегиями
- C:H или I:H - высокий ущерб
- EPSS > 0.5 - подтверждённая вероятность эксплуатации
- Продукт встречается в скоупах твоих программ
- Advisory содержит достаточно деталей для воспроизведения
Как найти уязвимый актив по CVE
Подходящая CVE выбрана. Дальше - обнаружить непатченные инстансы в скоупе.Мониторинг источников. Репозиторий CVEProject/cvelistV5 на GitHub обновляется в реальном времени - новые записи появляются раньше, чем на cve.org. Advisory вендоров иногда публикуются за сутки до назначения CVE: для CVE-2023-22518 advisory Atlassian вышел 30 октября 2023, CVE в базе - 31 октября. Некоторые вендоры публикуют полные отчёты исследователей после embargo-периода - это готовый PoC без лишней работы.
Ещё один источник - changelogs и коммиты open source проектов. Иногда исправление уже в коде, а CVE не назначен. Если commit message содержит что-то вроде «fix auth bypass» или «patch path traversal» - это потенциальная 1-day, о которой публично не знает почти никто. Такая разведка по CVE базам и git-истории даёт фору в несколько дней.
Shodan и Censys. Базовый запрос для Confluence в Shodan:
http.title:"Confluence" или фильтр по хэшу фавиконки. Censys позволяет уточнить по HTTP-заголовкам и версиям. Для российских программ багбаунти данные Shodan бывают неполными - определённые IP-диапазоны сканируются реже. Собственные сканеры по скоупу программы обязательны.Nuclei для масштабной проверки. Для CVE-2023-22518 есть готовый nuclei-шаблон в официальном репозитории projectdiscovery/nuclei-templates (
http/cves/2023/CVE-2023-22518.yaml). Запуск:
Bash:
nuclei -t http/cves/2023/CVE-2023-22518.yaml -l targets.txt -o results.txt
targets.txt - URL из скоупа программы. Nuclei-шаблоны для громких CVE (особенно из CISA KEV) появляются в течение дней после advisory. Но для нишевых CVE - а именно на них стоит ориентироваться для снижения конкуренции - готовых шаблонов может не быть месяцами. Для таких случаев я пишу собственные YAML-темплейты и контрибьючу их обратно в репозиторий (заодно карма на GitHub растёт).Идентификация продукта. Если на целевом хосте кастомная главная - скормите HTML в LLM с вопросом «какой продукт развёрнут». Нейросети неплохо распознают ПО по CSS-классам, meta-тегам и путям к ресурсам. Не идеально, но как первый фильтр - работает.
Патч-диффинг уязвимостей: от патча к PoC эксплойту
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
захламляется из-за суффиксов версий в именах файлов. Решение - скрипт нормализации имён JAR перед сравнением. Для бинарных диффов - bindiff и diffoscope показывают изменения на уровне инструкций. В некоторых случаях помогает настроить remote debugging (JDWP для Java, delve для Go) - это позволяет отследить выполнение кода в реальном времени.
Шаг 3: фильтрация. Сравнение хэшей JAR с Maven Central помогает отсеять неизменённые сторонние зависимости. Но если changelog патча упоминает обновление зависимости - её тоже нужно проверить: патч мог закрывать уязвимость через обновление сторонней библиотеки, а не через правку основного кода. Этот момент часто упускают.
Шаг 4: локализация. После фильтрации остаётся обозримый набор изменений. Для Java - декомпилятор (JD-GUI, Procyon, CFR). Для Go - стандартный
git diff между тегами. Ищите изменения в обработке авторизации, валидации ввода, парсинге путей. В CVE-2023-22518 изменение касалось проверки авторизации на эндпоинтах управления инстансом - без неё неаутентифицированный пользователь мог обратиться к эндпоинту сброса.Шаг 5: воспроизведение. Тестируйте только на локальном стенде. В багбаунти на основе публичных CVE достаточно подтвердить наличие уязвимой версии на активе и описать путь эксплуатации - запускать эксплойт на продакшне не нужно и обычно запрещено правилами программы.
Монетизация уязвимостей в багбаунти: репортинг и подводные камни
Качество отчёта определяет результат. Triage-команда обрабатывает десятки репортов в день. 1-day отчёт должен содержать: CVE-ID, доказательство уязвимой версии на конкретном активе в скоупе, описание шагов воспроизведения и оценку импакта. «Нашёл Confluence 8.3.3 - вот CVE» без доказательства доступности уязвимого эндпоинта - понизят severity или отклонят.Дубликаты - главный враг. Чем популярнее CVE, тем выше риск. CVE-2023-22518 с EPSS 1.0, вероятно, отрепортили десятки хантеров в первые часы. Шансы повышает работа с менее «хайповыми» CVE - высокий EPSS, но без массового освещения в соцсетях. Нишевые продукты и программы с узким скоупом - золотая жила.
Скорость решает. Если ты начал работать с CVE через неделю после публикации - крупные программы уже пропатчились или получили дубликаты. Мой рабочий SLA: 24-48 часов от advisory до готового отчёта. Для этого нужен пайплайн: мониторинг → фильтрация → стенд → PoC → скан скоупа → репорт.
Легальность для российских багхантеров. Выплаты на международных платформах (HackerOne, Bugcrowd) для резидентов РФ - отдельная боль: KYC-процедуры требуют верификации, санкционные ограничения могут блокировать банковские переводы. Standoff Bug Bounty решает этот вопрос для программ российских вендоров. Перед регистрацией на любой платформе - проверьте актуальную политику выплат для вашей юрисдикции и доступные способы вывода.
Многие багхантеры переоценивают значимость CVSS-скора. Публичная CVE с 9.8 привлекает сотни хантеров, и 99% получают дубликат. А CVE с 7.5 и EPSS 0.85 в нишевом API-шлюзе, который стоит на периметре двух программ из твоего скоупа - тихая выплата без гонки.
Разница между хантером с нулевым балансом и хантером с десятком принятых отчётов за квартал - не в скорости набора
python exploit.py, а в умении за тридцать секунд оценить: стоит ли эта CVE моего времени? Тут работает не CVSS, а EPSS, скоуп-маппинг и набитый опыт - сколько раз ты обжёгся на дубликатах, чтобы перестать бежать за хайпом. Лучшие мои выплаты за последний год были по CVE, о которых даже не упоминали в Twitter. Исследовательские AI-фреймворки (по данным arxiv) уже достигают 30% success rate автоматической эксплуатации реальных веб-CVE - порог входа продолжит падать, но умение выбрать цель останется человеческим навыком. Если хочется довести этот цикл от фильтрации CVE до PoC до системного навыка - на WAPT аналогичную цепочку проходят в модулях с лабами на реальных уязвимостях.