Через закрытый канал GitHub: вкладка Security этого репозитория, кнопка Report a vulnerability. Сообщение видят только сопровождающие.
Публичный issue для дыры не подходит: он становится инструкцией по применению раньше, чем выйдет починка. Если закрытый канал недоступен, откройте issue с одной строкой «нашёл проблему безопасности, нужен закрытый канал», без подробностей.
Ответ: в течение 7 дней. Починка выходит отдельным тегом, и в CHANGELOG.md
пишется, что именно закрыто.
yaseo ходит по чужим сайтам и держит ключи пользователя, поэтому опасность живёт в трёх местах:
- Ключи. Утечка ключа из файла настроек, из вывода инструментов, в запрос на чужой адрес, в журнал или в отчёт.
- Данные с чужого сайта. Заголовок страницы, строка robots.txt, карта сайта, ответ поисковика: всё это пишет не yaseo, и попытка через них выполнить команду на машине пользователя или подменить инструкцию агенту считается дырой. Сюда же входит ответ, который занимает память не по своему размеру: разбор XML отклоняет объявления DTD и обрывается на 500 000 узлов, но если нашли вход, который проходит эти два условия и всё равно раздувает разбор, это находка.
- Адрес проверяемого сайта. Запрос к внутреннему адресу сети, чтение файла с диска, переход по подставленному перенаправлению.
Отдельно: yaseo без ключей не ходит в платные API. Прогон, который тратит деньги пользователя молча, это тоже находка.
Чинится последняя выпущенная версия. Старые теги не обновляются: обновитесь на свежий тег, установка описана в docs/INSTALL.md.
На каждый пуш и запрос на слияние:
- тесты на пяти версиях Python (3.10 и далее) и двух системах, без сети;
banditпоsrc, разобранные ложные срабатывания помечены в коде;CodeQLс наборомsecurity-and-quality, плюс еженедельный прогон;gitleaksпо дереву и по всей истории коммитов;- свой тест утечек: домашние пути, служебные файлы, частный список слов.
Действия GitHub прибиты по SHA коммита, обновляет их Dependabot.
Перед первой выкладкой код прошёл три раунда независимого ревью. Закрытые
тогда находки: инъекция инструкции через title страницы, утечка ключа при
перенаправлении, неатомарная запись файла ключей, архивная бомба, запрос к
внутреннему адресу и file://, права и символическая ссылка на файле ключей.
Чего в проверках нет: внешнего аудита сторонней командой и платного испытания на проникновение.