Sigurnost #
EthicsPortal postupa s osjetljivim podacima prijavitelja nepravilnosti. Ova stranica dokumentira konkretne tehničke i organizacijske mjere koje imamo na mjestu. Napisana je za službenike za usklađenost, službenike za zaštitu podataka i pravne timove koji procjenjuju platformu.
Posljednje ažuriranje: 2026-05-17.
Enkripcija podataka #
Sva osjetljiva polja enkriptirana su pri pohrani pomoću Rails ActiveRecord Encryption s nedeterminističkom enkripcijom (svaka enkripcija proizvodi jedinstveni šifrat, čime se sprječava analiza obrazaca).
| Polje | Enkriptirano | Determinističko |
|---|---|---|
| Opis prijave | Da | Ne |
| Ime prijavitelja | Da | Ne |
| Podaci za kontakt prijavitelja | Da | Ne |
| Tekst poruke (komunikacija prijavitelj–osoba za rješavanje) | Da | Ne |
Nedeterministička enkripcija znači da se ta polja ne mogu pretraživati po vrijednosti na razini baze podataka. Čak i uz potpun pristup bazi podataka, napadač ne može pretražiti određeno ime prijavitelja kroz zapise.
Sve veze prema EthicsPortalu koriste HTTPS/TLS. Neenkriptirani HTTP zahtjevi preusmjeravaju se.
Anonimnost i privatnost #
Anonimizacija IP adresa #
Rute portala (slanje prijave, traženje predmeta, razmjena poruka) koriste jednosmjerni SHA256 sažetak IP adrese zahtjeva isključivo za ograničavanje brzine. Sažetak nije reverzibilan — nije moguće oporaviti izvornu IP adresu iz pohranjene vrijednosti.
Na razini aplikacije, sirova IP adresa prijavitelja ne pohranjuje se u bazu podataka, a zapisnici aplikacije za rute portala čiste se radi zaštite anonimnosti prijavitelja nepravilnosti.
Uklanjanje metapodataka datoteka #
Prenesenim se datotekama automatski uklanjaju identifikacijski metapodaci prije pohrane:
| Vrsta datoteke | Uklonjeni metapodaci | Metoda |
|---|---|---|
| Slike (JPEG, PNG, TIFF, WebP) | EXIF podaci: GPS koordinate, model fotoaparata, serijski broj uređaja, autor, vremenske oznake | Obrada slika Vips |
| PDF dokumenti | Autor, aplikacija za izradu, povijest izmjena | exiftool u standardnoj produkcijskoj postavi |
| Videodatoteke | GPS, podaci o uređaju, softver za snimanje | exiftool u standardnoj produkcijskoj postavi |
| Audiodatoteke | Uređaj za snimanje, GPS, softverske oznake | exiftool u standardnoj produkcijskoj postavi |
Uklanjanje metapodataka obavlja se na poslužitelju prije pohrane. Za vrste datoteka kojima upravlja exiftool, to ovisi o prisutnosti standardnih produkcijskih alata.
Skeniranje na viruse #
Sve prenesene datoteke automatski se skeniraju na zlonamjerni softver pomoću ClamAV-a , antivirusnog programa otvorenog koda. Skeniranje se odvija na poslužitelju u pozadinskom procesu nakon prijenosa. Datoteke koje nisu prošle skeniranje blokiraju se od isporuke, a zaražene se datoteke automatski uklanjaju.
Datoteke se skeniraju na infrastrukturi EthicsPortala — nikakvi podaci o datoteci ne šalju se uslugama skeniranja trećih strana.
Anonimnost osobe za rješavanje #
Prijavitelji nepravilnosti nikada ne vide stvarna imena ni adrese e-pošte osoba koje rješavaju njihovu prijavu. Sve poruke osoba za rješavanje prikazuju se kao „Osoba za rješavanje predmeta”. Time se štiti identitet osobe za rješavanje i sprječava društveni inženjering.
Bez praćenja #
EthicsPortal ne koristi kolačiće za praćenje trećih strana, oglasne piksele ni skripte za prepoznavanje otiska. Na marketinškim stranicama koristimo Cloudflare Web Analytics — bez kolačića, ne prikuplja osobne podatke i potpuno je usklađen s GDPR-om. Sam portal za prijavu nepravilnosti nema analitiku.
Trenutačni status jamstava #
EthicsPortal trenutačno na ovoj stranici ne tvrdi akreditiranu certifikaciju ISO 27001. Također trenutačno ne objavljuje neovisnu reviziju arhitekture anonimnosti od strane treće strane. Ako se to promijeni, opseg i datum bit će objavljeni ovdje.
Materijali za sigurnosni pregled #
Korisnici kojima su potrebni materijali za pregled u postupku nabave ili pravni pregled mogu ih zatražiti tijekom nabave. Dostupni materijali mogu uključivati potpisani ugovor o obradi podataka, dokaze iz registra i o porezu, ispunjeni sigurnosni upitnik te pisane odgovore o postupcima sigurnosne pohrane i vraćanja, povlaštenom produkcijskom pristupu i postupanju u odgovoru na incidente.
Kontrola pristupa #
Autorizacija se provodi na razini aplikacije pomoću politika Pundit .
| Uloga | Može vidjeti prijave | Može upravljati postavkama organizacije | Može dodjeljivati osobe za rješavanje |
|---|---|---|---|
| Administrator | Sve prijave | Da | Da |
| Osoba za rješavanje | Prijave kojima je dodijeljena ili u kojima sudjeluje | Ne | Ne |
- Osobe za rješavanje ne mogu vidjeti prijave kojima nisu dodijeljene niti u njima sudjeluju. Sudionike izričito dodaje administrator ili primarna dodijeljena osoba (primjerice, uključivanje pravne ili kadrovske službe).
- Prijavitelji nemaju korisnički račun — prijavi pristupaju putem ID-a slučaja (
WB-XXXX-XXXX) te šestoznamenkastog pristupnog koda koji biraju pri slanju. - Svaka radnja kontrolera provjerava autorizaciju. Pokušaji neovlaštenog pristupa blokiraju se i bilježe.
Dvofaktorska autentifikacija #
Računi osoba za rješavanje i administratora mogu omogućiti dvofaktorsku autentifikaciju temeljenu na TOTP-u putem bilo koje standardne aplikacije za autentifikaciju (Google Authenticator, 1Password, Authy i kompatibilne alternative). Nakon omogućivanja, prijava zahtijeva i primarni vjerodajni podatak i rotirajući šestoznamenkasti kôd.
Prijavitelji se također autentificiraju s dva faktora: ID slučaja (nešto što imaju) i pristupni kôd koji su odabrali pri slanju (nešto što znaju). Pristupni kôd pohranjuje se samo kao bcrypt sažetak i ne može se oporaviti. Pristigli sandučić za postupanje po prijavi i objava poruka zaštićeni su sesijom iza ove provjere, pa procureli ID slučaja sam po sebi ne može pročitati prijavu ni se lažno predstaviti kao prijavitelj.
Životni ciklus sesije #
Svaka autentificirana sesija bilježi last_seen_at pri svakom zahtjevu (uz prigušivanje). Korisnici mogu pregledati svoje aktivne sesije, vidjeti kada je svaka posljednji put bila aktivna, opozvati bilo koju sesiju pojedinačno ili se odjaviti iz svih ostalih sesija odjednom iz postavki računa.
Sesije automatski isteknu nakon 14 dana neaktivnosti. Sljedeći zahtjev iz neaktivne sesije uništava zapis na poslužitelju, briše kolačić i prisiljava ponovnu autentifikaciju novom čarobnom poveznicom. Noćni posao briše napuštene sesije prema istom isteku, pa se user_agent i ip_address ne čuvaju izvan okvira neaktivnosti čak ni kada se korisnik nikada ne vrati.
Autentifikacija čarobnom poveznicom ograničava domet dugotrajnih sesija: ukradeni kolačić sesije ne daje upotrebljivu vjerodajnicu, a ponovna autentifikacija zahtijeva pristup e-pošti.
Pristup članova i prestanak pristupa #
Pristup organizaciji provodi se na granici zahtjeva. Kada se član deaktivira:
- Pristup organizaciji odbija se odmah, uključujući na prethodno označenim URL-ovima.
- Otvorene dodjele prijava poništavaju se.
- Sudioništva se uklanjaju.
- Povijest zapisa aktivnosti pripisiva članu čuva se.
- Deaktivirani član obavješćuje se.
- Ponovna aktivacija ne vraća automatski prethodni pristup predmetima.
Posljednji aktivni administrator i vlasnik organizacije ne mogu se deaktivirati. Svi događaji deaktivacije i ponovne aktivacije zapisuju se u zapis aktivnosti koji dopušta samo dodavanje.
Članstva bez traga usklađenosti (bez unosa u zapisu aktivnosti, bez dodjela, bez sudioništava) trajno se brišu pri uklanjanju; članstva s tragom meko se deaktiviraju kako bi zapis aktivnosti ostao razrješiv.
Ograničavanje brzine #
Krajnje točke javnog portala imaju ograničenu brzinu radi sprječavanja zlouporabe i napada nabrajanjem:
| Krajnja točka | Ograničenje |
|---|---|
| Slanje prijave | 5 po 10 minuta po anonimiziranoj IP adresi |
| Traženje predmeta (ID slučaja + pristupni kôd) | 10 po 3 minute po anonimiziranoj IP adresi |
| Slanje poruke | 10 po 3 minute po anonimiziranoj IP adresi |
Ograničavanje brzine koristi jednosmjerni sažetak IP adrese opisan gore — ne pohranjuje se stvarna IP adresa.
Revizija i usklađenost #
Zapis aktivnosti koji dopušta samo dodavanje #
Svaka radnja u EthicsPortalu bilježi se s:
- Vremenskom oznakom (UTC)
- Sudionikom (koji korisnik ili sustavski proces je izvršio radnju)
- Vrstom radnje (prijava stvorena, status promijenjen, poruka poslana, osoba za rješavanje dodijeljena, prijava pregledana, prijava izvezena, prijava izbrisana itd.)
Unosi u zapis aktivnosti dopuštaju samo dodavanje. Nijedan ih korisnik ne može uređivati ni brisati, uključujući administratore organizacije. Cjelovit zapis aktivnosti uključen je u PDF izvoze predmeta za regulatorni pregled.
Čuvanje podataka #
Organizacije konfiguriraju vlastito razdoblje čuvanja: 12, 24, 36, 48 ili 60 mjeseci nakon zatvaranja prijave. Kada razdoblje čuvanja istekne, prijava i svi povezani podaci (poruke, prilozi, unosi u zapis aktivnosti) automatski se i trajno brišu pozadinskim poslom.
Time se ispunjavaju zahtjevi GDPR-a o ograničenju pohrane (čl. 5. st. 1. t. (e)) i obveze vođenja evidencije iz Direktive (EU) 2019/1937 (čl. 17.–18.).
Zaštita od CSRF-a #
Sva slanja obrazaca zaštićena su od krivotvorenja zahtjeva među stranicama pomoću ugrađenih Rails CSRF tokena.
Životni ciklus sigurnog razvoja #
EthicsPortal slijedi dokumentirani životni ciklus razvoja za promjene koje dotiču Uslugu. Faze su ovdje navedene kako bi ih pregledatelj u postupku nabave mogao povezati s kontrolama ISO/IEC 27001:2022 A.8.25–A.8.29 (vidjeti mapu kontrola za potpuno povezivanje).
| Faza | Praksa |
|---|---|
| Arhitektura i dizajn | Značajke koje uvode nove tokove osobnih podataka, podizvršitelje obrade ili opsege autorizacije procjenjuju se prema obvezama enkripcije, kontrole pristupa i zapisa aktivnosti dokumentiranima na ovoj stranici prije implementacije. |
| Pregled koda | Produkcijske promjene pregledavaju se prema pisanom sigurnosnom kontrolnom popisu (pokrivenost enkripcijom, opseg autorizacije, emisija zapisa aktivnosti, provjera unosa, postupanje s tajnama) prije objave. Statička analiza izvodi se pri svakoj promjeni i blokira spajanje pri neuspjehu. |
| Sigurno kodiranje | Baza koda koristi obranu na razini okvira prema zadanim postavkama — parametrizirani upiti putem ActiveRecorda, strogi parametri, izlazno bijegovanje u prikazima, CSRF tokeni, enkripcija na razini atributa, autorizacija Pundit na granici kontrolera. Odstupanja zahtijevaju pisano obrazloženje. |
| Sigurnosno testiranje u razvoju | Statička analiza (Brakeman
, bundler-audit
, importmap audit) izvodi se pri svakoj promjeni. Testovi pokrivaju putove autorizacije, invarijante enkripcije pri pohrani, emisiju zapisa aktivnosti i provedbu ograničavanja brzine. Vidjeti upravljanje ovisnostima i zakrpama
za potpun lanac alata. |
| Razdvajanje okruženja | Produkcijska i neprodukcijska okruženja izolirana su. Nikakvi produkcijski osobni podaci ne koriste se izvan produkcije; testno i razvojno okruženje koriste sintetičke podatke. |
| Odgovor na ranjivosti | Prijave se potvrđuju unutar 2 radna dana (vidjeti odgovornu objavu ). Ciljevi: kritični problemi otklanjaju se unutar 7 dana, visoki unutar 30, srednji unutar 90. Potvrđeni problemi koji utječu na korisnike u produkciji prijavljuju se putem registra incidenata kada ispunjavaju kriterije opsega registra. |
Upravljanje ovisnostima i zakrpama #
EthicsPortal ne uvodi u produkciju softverske komponente kojima je istekao životni vijek. Aplikacija radi na aktivno podržanim izdanjima Railsa, Rubyja, PostgreSQL-a i temeljnog operativnog sustava; sigurnosna izdanja iz izvora primjenjuju se na tekućoj osnovi.
Ovisnosti se neprekidno skeniraju u kontinuiranoj integraciji:
- Brakeman označava ranjivosti specifične za Rails pri svakoj promjeni.
- bundler-audit provjerava Gemfile prema bazi savjeta Ruby Advisory Database pri svakoj promjeni i ponovno na dnevnoj osnovi, pa se novoobjavljeni savjeti uhvate čak i kada kod nije promijenjen.
importmap auditskenira JavaScript uvoze na poznate ranjivosti pri svakoj promjeni i ponovno na dnevnoj osnovi.- Dependabot tjedno otvara zahtjeve za povlačenje za zastarjele Ruby gemove i GitHub Actions, grupirane prema manjim/zakrpnim ažuriranjima.
Komponente kojima u izvoru istječe životni vijek zamjenjuju se ili nadograđuju prije zatvaranja njihova razdoblja podrške.
Infrastruktura #
| Komponenta | Pružatelj | Lokacija |
|---|---|---|
| Aplikacijski poslužitelj i baza podataka | Hetzner | Nürnberg, Njemačka (EU) |
| Pohrana datoteka | Hetzner Object Storage | Nürnberg, Njemačka (EU) |
| Transakcijska e-pošta | Mailjet | Francuska (EU) |
| Obrada plaćanja | Stripe | EU |
- Sva primarna obrada podataka odvija se unutar Europske unije.
- Nikakvi brojevi kreditnih kartica ni vjerodajnice za plaćanje ne pohranjuju se na poslužiteljima EthicsPortala. Svim podacima o plaćanju upravlja Stripe.
- Mailjet se koristi za transakcijsku e-poštu (obavijesti osobama za rješavanje, ne prema prijaviteljima nepravilnosti). Mailjet ima sjedište u Francuskoj i obrađuje sve podatke unutar EU-a.
- Marketinška stranica poslužuje se putem Cloudflarea (CDN, Sjedinjene Američke Države); portali za prijavu i za osobe za rješavanje nisu. Pogledajte stranicu podizvršitelja obrade za potpun popis i mjere zaštite prijenosa.
Sigurnosne kopije i vraćanje #
EthicsPortal vodi dva komplementarna sloja sigurnosnih kopija, oba čuvana unutar EU-a:
| Sloj | Što | Gdje | Čuvanje |
|---|---|---|---|
| Baza podataka | Dnevni enkriptirani PostgreSQL ispisi putem Kamal dodatka | Hetzner Object Storage, Nürnberg (EU) | 7 dana |
| Poslužitelj | Potpune snimke diska aplikacijskog poslužitelja | Hetzner Cloud, Nürnberg (EU) | 7 dana |
Ciljevi oporavka. Cilj točke oporavka (RPO) iznosi 24 sata. Cilj vremena oporavka (RTO) iznosi 4 sata. Ti se ciljevi pojavljuju i u ugovoru o razini usluge .
Testiranje vraćanja. Vježba vraćanja izvodi se automatski svaki mjesec putem CI radnog tijeka koji vraća najnoviji ispis u jednokratno okruženje, te na zahtjev putem bin/backup-restore-test. Svježina sigurnosnih kopija neprekidno se nadzire (upozorenje ako je najnoviji ispis stariji od 36 sati).
Enkripcija. Ispisi baze podataka enkriptirani su pri pohrani putem Hetzner Object Storagea; polja na razini aplikacije enkriptirana pod Rails ActiveRecord Encryption ostaju enkriptirana u ispisu.
Operativni pregled #
Neki operativni materijali dijele se tijekom pregleda u postupku nabave umjesto objavljivanja u cijelosti na otvorenom webu jer sadrže pojedinosti o infrastrukturi i odgovoru koje su primjerenije kontroliranom otkrivanju.
Teme dostupne na zahtjev tijekom nabave uključuju:
- Sažetak povlaštenog produkcijskog pristupa
- Radni tijek odgovora na incidente i eskalacijske kontakte
- Kontinuitet poslovanja te odgovore na prestanak korištenja i izvoz podataka korisnika
Odgovorna objava #
Ako otkrijete sigurnosnu ranjivost u EthicsPortalu, molimo prijavite je na security@ethicsportal.eu . Molimo da:
- Ne objavljujete ranjivost javno prije nego što je imamo priliku riješiti.
- Pružite dovoljno pojedinosti da reproduciramo i ispravimo problem.
- Ne pristupate podacima drugih korisnika niti ih mijenjate.
Potvrdit ćemo vašu prijavu unutar 2 radna dana i nastojati žurno riješiti potvrđene ranjivosti.
Posljednje ažuriranje: