Skip to content

Security: novyiblog-tech/yaseo

Security

SECURITY.md

Безопасность

Куда сообщать о находке

Через закрытый канал GitHub: вкладка Security этого репозитория, кнопка Report a vulnerability. Сообщение видят только сопровождающие.

Публичный issue для дыры не подходит: он становится инструкцией по применению раньше, чем выйдет починка. Если закрытый канал недоступен, откройте issue с одной строкой «нашёл проблему безопасности, нужен закрытый канал», без подробностей.

Ответ: в течение 7 дней. Починка выходит отдельным тегом, и в CHANGELOG.md пишется, что именно закрыто.

Что считается дырой

yaseo ходит по чужим сайтам и держит ключи пользователя, поэтому опасность живёт в трёх местах:

  1. Ключи. Утечка ключа из файла настроек, из вывода инструментов, в запрос на чужой адрес, в журнал или в отчёт.
  2. Данные с чужого сайта. Заголовок страницы, строка robots.txt, карта сайта, ответ поисковика: всё это пишет не yaseo, и попытка через них выполнить команду на машине пользователя или подменить инструкцию агенту считается дырой. Сюда же входит ответ, который занимает память не по своему размеру: разбор XML отклоняет объявления DTD и обрывается на 500 000 узлов, но если нашли вход, который проходит эти два условия и всё равно раздувает разбор, это находка.
  3. Адрес проверяемого сайта. Запрос к внутреннему адресу сети, чтение файла с диска, переход по подставленному перенаправлению.

Отдельно: yaseo без ключей не ходит в платные API. Прогон, который тратит деньги пользователя молча, это тоже находка.

Версии

Чинится последняя выпущенная версия. Старые теги не обновляются: обновитесь на свежий тег, установка описана в docs/INSTALL.md.

Что стоит в проверках

На каждый пуш и запрос на слияние:

  • тесты на пяти версиях Python (3.10 и далее) и двух системах, без сети;
  • bandit по src, разобранные ложные срабатывания помечены в коде;
  • CodeQL с набором security-and-quality, плюс еженедельный прогон;
  • gitleaks по дереву и по всей истории коммитов;
  • свой тест утечек: домашние пути, служебные файлы, частный список слов.

Действия GitHub прибиты по SHA коммита, обновляет их Dependabot.

Перед первой выкладкой код прошёл три раунда независимого ревью. Закрытые тогда находки: инъекция инструкции через title страницы, утечка ключа при перенаправлении, неатомарная запись файла ключей, архивная бомба, запрос к внутреннему адресу и file://, права и символическая ссылка на файле ключей.

Чего в проверках нет: внешнего аудита сторонней командой и платного испытания на проникновение.

There aren't any published security advisories