Не открывайте публичный 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; отдельной ветки
поддержки старых версий пока нет.