Сигурност #
EthicsPortal обработва чувствителни данни по сигнали. Тази страница описва конкретните технически и организационни мерки, които прилагаме. Тя е предназначена за екипи по съответствие, DPO и правни екипи, които оценяват платформата.
Последна актуализация: 2026-08-28.
Шифроване на данните #
Всички чувствителни полета се съхраняват шифровано чрез Rails Active Record Encryption с недетерминистично шифроване.
| Поле | Шифровано | Детерминистично |
|---|---|---|
| Описание на сигнала | Да | Не |
| Име на подателя | Да | Не |
| Данни за контакт на подателя | Да | Не |
| Текст на съобщенията | Да | Не |
| Структурирани отговори при подаване (връзка, източник, време, предишно докладване, опасение от репресии) | Да | Не |
| Вътрешни бележки по случая | Да | Не |
| Тайни за двуфакторно удостоверяване и резервни кодове | Да | Не |
Недетерминистичното шифроване означава, че тези полета не могат да се търсят по стойност на ниво база данни.
Всички връзки с EthicsPortal използват HTTPS/TLS. Нешифрованите HTTP заявки се пренасочват.
Анонимност и поверителност #
Анонимизация на IP адреса #
EthicsPortal не съхранява IP адреси. Адресите на портала използват еднопосочен SHA256 хеш на IP адреса само за ограничаване на честотата на заявките. Хешът е необратим.
Никакъв IP адрес не се записва в системни записи, поле в базата или аналитична услуга.
Премахване на метаданните от файловете #
Качените файлове автоматично се изчистват от идентифициращите метаданни преди съхранение:
| Тип файл | Премахнати метаданни | Метод |
|---|---|---|
| Изображения | EXIF: GPS координати, модел на камерата, сериен номер, автор, дата и час | Vips |
| PDF документи | Автор, приложение, с което е създаден, история на промените | exiftool |
| Видео файлове | GPS, данни за устройството, софтуер за запис | exiftool |
| Аудио файлове | Устройство за запис, GPS, етикети на софтуера | exiftool |
Проверка за вируси #
Всички качени файлове се сканират автоматично за зловреден код чрез ClamAV . Сканирането се извършва на сървъра. Заразените файлове се премахват автоматично и не достигат до обработващите.
Анонимност на обработващите #
Подателите никога не виждат истинските имена или имейл адресите на хората, които разглеждат сигнала им. Във всички съобщения се изписва „Служител по сигнала“.
Без проследяване #
EthicsPortal не използва проследяващи бисквитки на трети страни, рекламни пиксели или скриптове за снемане на цифров отпечатък. Използваме Cloudflare Web Analytics само на маркетинговите страници. Самият портал за сигнали няма аналитични инструменти.
Текущ статус на сертификацията #
EthicsPortal понастоящем не заявява на този сайт акредитирана сертификация ISO 27001. Не е публикуван и независим външен одит на архитектурата за анонимност. Ако това се промени, обхватът и датата ще бъдат публикувани тук.
Материали за преглед на сигурността #
Клиенти, на които са нужни материали за обществена поръчка или за правен преглед, могат да ги поискат по време на прегледа. Налични материали могат да включват подписано DPA, регистрационни и данъчни документи, попълнен въпросник за сигурност, както и писмени отговори относно процедурите по архивиране и възстановяване, достъпа с повишени права в производствената среда и реакцията при инциденти.
Контрол на достъпа #
Авторизацията се прилага на ниво приложение чрез Pundit .
| Роля | Вижда сигнали | Управлява настройките на организацията | Възлага сигнали на обработващи |
|---|---|---|---|
| Администратор | Всички сигнали | Да | Да |
| Обработващ | Само възложените му сигнали | Не | Не |
| Наблюдател | Само за четене, за одитори и юрисконсулти | Не | Не |
- Обработващите не виждат сигнали, които не са им възложени.
- Подателите нямат потребителски профил — достъпват сигнала чрез номер на преписката (
WB-XXXX-XXXX) и 6-цифрен ПИН. - Всяко действие на ниво контролер проверява достъпа. Неоправомощените опити се блокират и записват.
Двуфакторно удостоверяване #
Профилите на обработващите и администраторите могат да включат TOTP-базирано 2FA през стандартно приложение за еднократни кодове.
Подателите също се удостоверяват с два фактора: номер на преписката и избран от тях ПИН. ПИН се съхранява само като еднопосочен хеш с bcrypt.
Жизнен цикъл на сесиите #
Всяка удостоверена сесия записва last_seen_at при всяка заявка (с дебаунс). Потребителите могат да преглеждат активните си сесии, да виждат кога всяка от тях е била последно активна, да отнемат отделна сесия или да излязат от всички останали сесии наведнъж от настройките на профила.
Сесиите изтичат автоматично след 14 дни неактивност. Следващата заявка от неактивна сесия унищожава записа от страна на сървъра, изчиства бисквитката и налага повторно удостоверяване чрез нов магически линк. Нощно задание прочиства изоставените сесии със същия таймаут, така че user_agent и ip_address не се запазват след прозореца на неактивност, дори когато потребителят повече не се връща.
Удостоверяването чрез магически линк ограничава поразяващото действие на дълготрайните сесии: открадната бисквитка на сесия не дава пригоден за повторна употреба идентификатор и повторното удостоверяване изисква достъп до имейл.
Достъп и прекратяване на участието на членове #
Достъпът до организацията се прилага на ниво заявка. Когато член бъде деактивиран:
- Достъпът до организацията се отхвърля незабавно, включително и от вече запазени в отметките URL адреси.
- Възлагането на отворени сигнали се премахва.
- Участията се премахват.
- Историята в одитната следа, която се отнася до члена, се запазва.
- Деактивираният член бива уведомен.
- Повторното активиране не възстановява автоматично предишния достъп до преписките.
Последният активен администратор и собственикът на организацията не могат да бъдат деактивирани. Всички събития по деактивиране и повторно активиране се записват в одитната следа, която е само за добавяне.
Членствата без следа за съответствие (без записи в одитната следа, без възлагания, без участия) се изтриват окончателно при премахване; членствата със следа се деактивират меко, така че одитната следа да остане проследима.
Изтриване на профила #
Когато член закрие собствения си профил, имейл адресът му се заменя с недоставяем адрес, а данните за двуфакторно удостоверяване, сесиите, API токените и предпочитанията се изтриват окончателно. Ако никога не е извършвал действие в организация, записът се изтрива. В противен случай името и снимката остават свързани с преписките и одитната следа, а членствата се деактивират, за да се запази изискуемата проследимост.
Ограничаване на честотата на заявките #
Публичните адреси на портала имат ограничения на честотата:
| Действие | Ограничение |
|---|---|
| Подаване на сигнал | 5 на 10 минути на анонимизиран IP |
| Проверка на преписка | 10 на 3 минути на анонимизиран IP |
| Изпращане на съобщение | 10 на 3 минути на анонимизиран IP |
Одит и съответствие #
Незаличима одитна следа #
Всяко действие в EthicsPortal се записва с:
- дата и час (UTC)
- извършител
- тип на действието
Записите са само за добавяне. Не могат да се редактират или изтриват от никой потребител.
Срокове за съхранение #
Организациите задават собствен срок на съхранение: 12, 24, 36, 48 или 60 месеца след приключване на сигнала. След изтичането му сигналът и свързаните данни се изтриват автоматично.
Защита от CSRF #
Всички формуляри са защитени срещу CSRF чрез вградените токени на Rails.
Сигурен жизнен цикъл на разработката #
EthicsPortal следва документиран жизнен цикъл на разработката за промените, засягащи Услугата. Етапите са изложени тук, за да може проверяващ в процедура по възлагане да ги съотнесе към мерките A.8.25–A.8.29 от ISO/IEC 27001:2022 (пълното съответствие е в картата на мерките ).
| Етап | Практика |
|---|---|
| Архитектура и проектиране | Функционалности, които въвеждат нови потоци от лични данни, нови подизпълнители по обработването или нови обхвати на оторизация, се оценяват преди реализация спрямо документираните на тази страница ангажименти за криптиране, контрол на достъпа и одитна следа. |
| Преглед на промените | Всяка производствена промяна се проверява преди внедряване спрямо писмен контролен списък (обхват на криптирането, обхват на оторизацията, вписване в одитния дневник, валидиране на входните данни, боравене с тайни). Прилагането е автоматизирано, а не по преценка: пълният набор от тестове и статичният анализ се изпълняват при всяка промяна и блокират внедряването при неуспех. Наборът се изпълнява на хостван CI изпълнител или на работна станция за разработка, като завършеното изпълнение се записва като статус на комита, който конвейерът проверява, преди да пропусне хостваното изпълнение. Ролите за одобряване на промени се описват при проверката в процедурата по възлагане. |
| Сигурно програмиране | Кодовата база използва по подразбиране защити на ниво рамка — параметризирани заявки чрез ActiveRecord, strong parameters, екраниране на изхода в изгледите, CSRF токени, криптиране на ниво атрибут, оторизация с Pundit на границата на контролера. Отклоненията изискват писмена обосновка. |
| Тестове за сигурност при разработка | Статичен анализ (Brakeman
, bundler-audit
, importmap audit) се изпълнява при всяка промяна. Тестовете покриват пътищата на оторизация, инвариантите на криптирането при съхранение, вписването в одитния дневник и прилагането на ограниченията на честотата. Пълният набор от инструменти е описан в управление на зависимостите и кръпките
. |
| Разделяне на средите | Производствената и непроизводствените среди са изолирани. Производствени лични данни не се използват извън производствената среда; тестовата и развойната среда използват синтетични данни. |
| Реакция при уязвимости | Сигналите се потвърждават в рамките на 2 работни дни (вж. отговорно разкриване ). Цели: отстраняване на критични проблеми в рамките на 7 дни, високи — 30, средни — 90. Потвърдени проблеми, засягащи внедрени клиенти, се докладват чрез регистъра на инцидентите , когато отговарят на критериите за обхват на регистъра. |
Управление на зависимостите и кръпките #
EthicsPortal не внедрява софтуерни компоненти, излезли от поддръжка. Приложението работи на активно поддържаните издания на Rails, Ruby, PostgreSQL и съответната операционна система; обновленията по сигурността нагоре по веригата се прилагат текущо.
Зависимостите се сканират непрекъснато в continuous integration:
- Brakeman отбелязва уязвимости, специфични за Rails, при всяка промяна.
- bundler-audit проверява Gemfile спрямо Ruby Advisory Database при всяка промяна и допълнително ежедневно по график, така че новооповестените уязвимости да се откриват дори без промяна в кода.
importmap auditсканира JavaScript импортите за известни уязвимости при всяка промяна и допълнително ежедневно по график.- Dependabot отваря седмични pull request-и за остарели Ruby gems и GitHub Actions, групирани по minor/patch обновявания.
Компонентите, които достигат край на поддръжката нагоре по веригата, се заменят или обновяват преди изтичането на срока за поддръжка.
Инфраструктура #
| Компонент | Доставчик | Място |
|---|---|---|
| Приложен сървър и база данни | Hetzner | Нюрнберг, Германия (ЕС) |
| Съхранение на файлове | Hetzner Object Storage | Нюрнберг, Германия (ЕС) |
| Транзакционни имейли | Mailjet | Франция (ЕС) |
| Обработка на плащания | Stripe | Ирландия; други държави при приложими гаранции — виж Декларацията за поверителност |
- Основното обработване на данните по сигнали и преписки се извършва изцяло в Европейския съюз.
- На сървърите на EthicsPortal не се съхраняват номера на карти или платежни данни.
- Маркетинговият сайт се доставя през Cloudflare (CDN, САЩ); порталът за сигнали и порталът на обработващите — не. Тази отделна обработка на публичния сайт и гаранциите при трансфер са описани в Декларацията за поверителност .
Архивиране и възстановяване #
EthicsPortal поддържа два допълващи се слоя на архивиране, и двата запазвани в ЕС:
| Слой | Какво | Къде | Срок на съхранение |
|---|---|---|---|
| База данни | Ежедневни дъмпове на PostgreSQL чрез Kamal accessory | Hetzner Object Storage, Нюрнберг (ЕС) | 21 дни за текущите версии; изтритите версии се премахват след още 7 дни |
| Сървър | Пълни снимки на диска на приложния хост | Hetzner Cloud, Нюрнберг (ЕС) | 7 дни |
Цели за възстановяване. Целта за точка на възстановяване (RPO) е 24 часа. Целта за време за възстановяване (RTO) е 4 часа. Тези цели присъстват и в споразумението за ниво на услугата .
Тестване на възстановяването. Учение по възстановяване се извършва автоматично всеки месец чрез CI работен процес в среда за еднократна употреба. Актуалността на архивите се наблюдава постоянно.
Шифроване. Определени полета в базата данни остават шифровани в резервното копие. Hetzner Object Storage не шифрова обектите при съхранение по подразбиране; криптирането на целия дъмп и на прикачените файлове не е потвърдено.
Оперативен преглед #
Тази страница е публично резюме на сигурността. Част от оперативните материали се споделят по време на преглед в рамките на обществена поръчка, а не се публикуват изцяло в отворения уеб, защото съдържат инфраструктурни и реакционни подробности, които са по-подходящи за контролирано разкриване.
При поискване по време на такъв преглед са налични следните теми:
- Резюме на достъпа с повишени права в производствената среда
- Процедура при инциденти и контакти за ескалация
- Отговори за непрекъсваемост на дейността и за приключване и сваляне на данни на клиент
Отговорно разкриване #
Ако откриете уязвимост в сигурността на EthicsPortal, пишете на security@ethicsportal.eu . Молим ви:
- Да не разкривате публично уязвимостта, преди да имаме възможност да я отстраним.
- Да предоставите достатъчно подробности, за да я възпроизведем и поправим.
- Да не достъпвате и не променяте данни на други клиенти.
Потвърждаваме получаването на вашето съобщение в рамките на 2 работни дни и се стремим към бързо отстраняване на потвърдените уязвимости.
Няма платена програма за награди (bug bounty). Не заплащаме за съобщения за уязвимости и не подписваме споразумения за поверителност, не договаряме търговски условия и не провеждаме разговори като предварително условие за приемане на съобщение. Изпратете на посочения адрес засегнатия актив, стъпките за възпроизвеждане и установеното от вас въздействие.
Последна актуализация: