Skip to content

Security: ilyautov/hefest

Security

SECURITY.md

Политика безопасности

Как сообщить об уязвимости

Не открывайте публичный issue для уязвимости. Сообщайте приватно через GitHub Security Advisories (вкладка Security → Report a vulnerability).

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

Что здесь считается уязвимостью в первую очередь

Проект заявляет контур честности как основную ценность: система не выдаёт нормативное значение без провенанса и молчит, когда оснований нет. Обход этого контура — уязвимость первого класса, наравне с обычными техническими дырами. Особенно интересуют:

  • Обход отказа (abstention). Любой способ заставить /ask выдать содержательный ответ при top_score ниже порога — то есть сочинить ответ вместо честного «нет оснований».
  • Появление значения без провенанса. Путь, при котором в выдаче оказывается ПДК, класс опасности, номер ООН, IDLH или ФККО без source_tier / confidence / цитаты.
  • Подмена типового паспортным. Способ показать baseline-руководство (типовое по химической группе) как passport — то есть выдать общее за паспортное.
  • Прорыв запрета на пересчёт единиц. Любой путь, при котором система сама превращает ppm в мг/м³ (или °F в °C) и выдаёт кратность по разным единицам. Это прямая угроза здоровью: см. DISCLAIMER.md, п. 3.
  • Присвоение класса отхода при нехватке показателей — вместо insufficient_data.
  • Загрязнение по неверному идентификатору: ситуация, когда некорректный CAS подтягивает данные ДРУГОГО вещества на карточку. Сейчас контур fail-closed (проверка контрольной цифры в engine/cas.py, тест в tests/test_provenance.py) — покажите, как его пробить.
  • Утечка данных предприятия за периметр: любой путь, по которому загруженные паспорта, реестр площадок или аудит-лог уходят в сеть. Система заявлена как полностью on-prem.
  • SSRF / обход путей при ингесте PDF/HTML и обогащении по внешним справочникам.

Воспроизводимая демонстрация ценится вдвойне: работающий обход контура честности принимается как вклад, а не как претензия.

Границы

  • Базовый контур работает офлайн — без ключей, без сети, без внешнего движка. Если для эксплуатации нужен сторонний сервис или собственная модель, укажите это явно.
  • Секреты остаются у пользователя. Проект не хранит и не запрашивает ключи; .env — в .gitignore. Найденный в истории секрет — это баг: сообщите приватно.
  • Данные предприятия каждый разворачивает сам. Легальность чужого корпуса паспортов вне периметра этой политики.
  • Ошибка в нормативном значении — это не уязвимость, а дефект данных. Для неё есть отдельный публичный шаблон issue «Спор о нормативном значении»: он требует источник и воспроизводимую команду. Не сообщайте о таком приватно — сверка должна быть публичной.

Отдельно: цена ошибки

Это система про промышленную безопасность. Дефект, из-за которого пользователь получает неверное значение ПДК, неверный класс опасности или неверную рекомендацию по СИЗ, имеет последствия для здоровья людей — даже если технически он выглядит как мелкая опечатка в парсере. Такие дефекты приоритизируются как высокие независимо от «технической тяжести».

Границы применения системы описаны в DISCLAIMER.md, известные ограничения — в LIMITATIONS.md. Ни один из них не является оправданием для дефекта, но оба задают контекст, в котором дефект оценивается.

Права на данные и порядок снятия материала

Проект — движок проверки, а не распространитель контента. В поставку включены только данные, распространение которых допустимо: официальные нормативные значения РФ (ГК РФ, ст. 1259, п. 6), материалы федеральных ведомств США в статусе public domain и сгенерированная форма паспорта — оригинальная работа проекта. Подробно — DATA-LICENSE.md.

Публичная поставка не содержит сведений о юридических лицах: реестра предприятий в ней нет (см. DATA-LICENSE.md, раздел 4). Если вы правообладатель и считаете, что иной материал в поставке нарушает ваши права, откройте публичный issue с префиксом takedown:, указав материал, основание и контакт. Разумный срок ответа — несколько дней; подтверждённое обращение удовлетворяется удалением материала из поставки.

Поддерживаемые версии

Проект в статусе раннего доступа (0.x). Исправления выходят в main; отдельной ветки поддержки старых версий пока нет.

There aren't any published security advisories