Skip to content

Security: openpalliative/obrashchenie-kit

SECURITY.md

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

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

Не пишите об уязвимости в открытом issue. Используйте закрытое сообщение GitHub:

  1. Откройте вкладку Security этого репо
  2. Нажмите Report a vulnerability

Прямая ссылка: https://github.com/openpalliative/obrashchenie-kit/security/advisories/new

Сообщение увидят только мейнтейнеры. Отдельной почты для этого нет. Если уязвимость касается другого репо openpalliative, сообщите в нём, путь тот же

Опишите, что нужно сделать, чтобы повторить проблему, и что вы ожидали. Не прикладывайте настоящие личные данные, достаточно выдуманных

Проект ведут добровольцы. Мы постараемся ответить в течение 14 дней и сообщим, когда выйдет исправление. Если хотите, укажем вас в благодарностях, под именем или псевдонимом

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

  • выполнение чужого кода на странице (XSS) через поля ввода, адрес страницы или импорт файла
  • любая отправка введённого на чужой сервер или запрос за пределы сайта
  • обход Content-Security-Policy
  • service worker кэширует то, что ввёл человек, или отдаёт чужую версию страницы
  • импорт файла, который ломает сохранённые данные или выполняет код
  • файл дела (openpalliative-backup/1), который без вопроса перезаписывает сохранённые ФИО и адрес или подкладывает поля, которых нет в схеме data/schema/case-backup.schema.json
  • ФИО, адрес или текст документа, которые попадают в адрес страницы, в кэш service worker или в файл .ics
  • небезопасные GitHub Actions: инъекции в шаблоны, лишние права токена, непиннованные экшены

Ошибки в цитатах, сроках и номерах это не уязвимость, о них пишите в обычном issue по шаблону

Как устроена защита

  • Сайты статические, сервера с данными людей нет. Всё, что вводит человек, хранится только в его браузере (localStorage и IndexedDB)
  • Аналитики, счётчиков, cookie и внешних шрифтов нет. Тесты проверяют, что страницы не делают запросов за пределы своего адреса
  • Content-Security-Policy задана через <meta http-equiv> в <head> раньше любых скриптов и стилей, одна строка для всех страниц. GitHub Pages не даёт задать свои HTTP-заголовки, поэтому frame-ancestors, report-uri и sandbox так задать нельзя: через meta браузер их не применяет. Встраивание сайта в чужой фрейм этим способом не запретить
  • Нет инлайн-скриптов, обработчиков on*= в разметке и атрибутов style, это проверяет opsite check
  • Экшены в workflows закреплены по SHA, у токена минимальные права, кэш выключен там, где собирается то, что публикуется

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

Исправления выходят только для последней версии на GitHub Pages и в ветке main. Если вы развернули копию у себя, обновите её из последнего релиза

There aren't any published security advisories