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-11-04.
Enkripcija podataka #
Osjetljiva polja baze podataka navedena u nastavku enkriptirana su pri pohrani pomoću Rails ActiveRecord Encryption s nedeterminističkom enkripcijom (svaka enkripcija proizvodi jedinstveni šifrat, čime se sprječava analiza obrazaca). Enkripcija polja ne obuhvaća cjelovite ispise baze podataka ni privitke; oni se enkriptiraju zasebno, kako je opisano u odjeljcima privici i sigurnosne kopije.
| Polje | Enkriptirano | Determinističko |
|---|---|---|
| Opis prijave | Da | Ne |
| Ime prijavitelja | Da | Ne |
| Podaci za kontakt prijavitelja | Da | Ne |
| Strukturirani odgovori pri prijavi (odnos, izvor, vrijeme, prethodna prijava, strah od odmazde) | Da | Ne |
| Tekst poruke (komunikacija prijavitelj–osoba za rješavanje) | Da | Ne |
| Interne bilješke o predmetu | Da | Ne |
| Tajne za dvofaktorsku autentifikaciju i rezervni kodovi 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.
Privici #
Datoteke priložene prijavama, porukama i internim bilješkama, glasovne snimke i izvozi podataka o predmetu enkriptirani su pri pohrani u Hetzner Object Storageu algoritmom AES-256, zasebnim nasumičnim ključem za svaku datoteku (enkripcija na strani poslužitelja s ključevima koje osigurava korisnik). Ključ se šalje uz svaki zahtjev prema pohrani, a Hetzner odbija svako čitanje bez njega. EthicsPortal ga pohranjuje u bazi podataka pod gore opisanom ActiveRecord Encryption, pa same vjerodajnice za pohranu nisu dovoljne za čitanje datoteke: potrebni su i baza podataka i ključevi za enkripciju aplikacije. Datoteke do ovlaštenih korisnika dolaze strujanjem kroz aplikaciju, nikada putem izravne poveznice na pohranu.
Datoteke učitane prije 6. listopada 2026. ponovno su enkriptirane tog datuma, a njihove neenkriptirane kopije, uključujući zadržane prethodne verzije, izbrisane su. Datoteke koje nisu podaci prijave, poput profilnih slika i slika organizacije za dijeljenje, ne enkriptiraju se na ovaj način. Ništa od navedenoga ne štiti od kompromitacije aplikacijskog poslužitelja, koji zajedno drži vjerodajnice za pohranu, bazu podataka i ključeve.
Sve veze prema EthicsPortalu koriste HTTPS/TLS. Neenkriptirani HTTP zahtjevi preusmjeravaju se.
Anonimnost i privatnost #
IP adrese #
EthicsPortal ne bilježi IP adresu prijavitelja uz prijave, poruke ni revizijske zapise, a zapisnici aplikacije za kanal za prijavu nepravilnosti ne sadrže IP adrese.
Ograničavanje brzine na kanalu za prijavu nepravilnosti (slanje prijave, traženje predmeta, razmjena poruka) temelji se na skraćenom SHA-256 sažetku IP adrese zahtjeva izračunatom s tajnim ključem. Sažetak je pseudoniman, a ne anoniman: ne može se iščitati kao adresa, ali svatko tko posjeduje tajni ključ aplikacije mogao bi s njim usporediti pretpostavljene adrese. Koristi se samo tijekom razdoblja ograničavanja brzine (najviše 10 minuta), a pozadinski ga zadatak briše iz predmemorije unutar 5 minuta nakon isteka tog razdoblja.
TLS posrednički poslužitelj (proxy) ispred aplikacije vodi vlastiti zapisnik zahtjeva: IP adresu, putanju zahtjeva, korisnički agent i status odgovora. Putanja stranice na kojoj prijavitelj pregledava svoju prijavu sadrži ID slučaja, pa se zapis za tu stranicu može povezati s prijavom. Vode se u jednoj datoteci zapisnika od 10 MB koja se prepisuje kako se puni, trenutačno nakon otprilike dva dana; 7-dnevne snimke poslužitelja opisane u odjeljku sigurnosne kopije mogu sadržavati njihovu kopiju.
Uklanjanje metapodataka datoteka #
Prenesenim se datotekama automatski uklanjaju identifikacijski metapodaci prije pohrane:
| Vrsta datoteke | Uklonjeni metapodaci | Metoda |
|---|---|---|
| Slike (JPEG, PNG, WebP, GIF, AVIF) | EXIF podaci: GPS koordinate, model fotoaparata, serijski broj uređaja, autor, vremenske oznake | Obrada slika Vips |
| PDF dokumenti | Autor, aplikacija za izradu, povijest izmjena. Ne uklanjaju se: imena autora komentara i metapodaci fotografija ugrađenih u PDF | exiftool + qpdf 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.
U PDF-u se zadržavaju imena u komentarima i metapodaci ugrađenih fotografija, poput GPS položaja i serijskog broja fotoaparata. Prijavitelj koji ih želi ukloniti treba prenijeti fotografije kao zasebne slikovne datoteke i ukloniti komentare prije prijenosa PDF-a.
Skeniranje na viruse #
Datoteke priložene prijavama, porukama i internim bilješkama 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.
Prijave e-poštom #
Svaki kanal za prijavu nepravilnosti ima vlastitu adresu e-pošte na report.ethicsportal.eu. E-poruka poslana na tu adresu postaje predmet u tom kanalu, jednako kao prijava poslana putem online obrasca za prijavu. Prijave e-poštom uključene su prema zadanim postavkama. Organizacija ih može isključiti u postavkama kanala, a adresa tada u roku od jedne minute odbija nove poruke.
- Vlastiti poslužitelj e-pošte. Poštu za te adrese prima vlastiti poslužitelj e-pošte EthicsPortala na istoj infrastrukturi u Njemačkoj, a ne vanjski pružatelj usluga e-pošte. Prihvaća poštu samo za adrese kanala, odbija sve ostale adrese i ništa ne prosljeđuje dalje.
- Enkripcija prijenosa. Poslužitelj nudi TLS 1.2 ili noviji s certifikatom Let’s Encrypt. TLS je oportunistički: poslužitelj pošiljatelja koji ga ne podržava isporučuje poštu neenkriptirano.
- Adresa pošiljatelja skrivena je od osoba za rješavanje. Adresa pošiljatelja pohranjuje se enkriptirano i nikada se ne prikazuje osobama za rješavanje, ni u predmetu, ni u njegovu PDF-u ni u izvozima. EthicsPortal je koristi samo za slanje potvrde prijavitelju i obavijesti o novim porukama.
- Pristup bez e-pošte. Potvrda sadrži ID slučaja i jednokratnu lozinku za sigurni sandučić, koja se zamjenjuje pri prvom otvaranju sandučića. Dodatna pitanja i odgovori ostaju u sandučiću, a ne u e-pošti. Kada vlastita domena pošiljatelja tu adresu odbija u svojoj DMARC politici, prijava se zadržava, ali lozinka se ne šalje. Nakon 10 prijava e-poštom jednoj organizaciji ili 50 u cijelom EthicsPortalu unutar 24 sata, daljnje prijave se spremaju, ali se ne šalje nijedna e-poruka: ni potvrda prijavitelju ni obavijest e-poštom administratorima, koji slučaj i dalje vide u aplikaciji.
- Privici. Datotekama se uklanjaju metapodaci i skeniraju se na viruse jednako kao kod prijenosa putem obrasca. Datoteke koje se ne mogu prihvatiti (druga vrsta, prevelike ili ih nije moguće očistiti) izostavljaju se, a prijavitelj se obavještava koliko ih je.
- Kopije. Poruka čeka u redu poslužitelja e-pošte na istom poslužitelju samo dok je aplikacija ne prihvati. Aplikacija čuva izvornu e-poruku enkriptiranu dok se predmet ne spremi, a zatim je briše. Zapisnici poslužitelja e-pošte bilježe adrese kanala, nikada adresu pošiljatelja.
- Provjere pošiljatelja. SPF, DKIM i DMARC provjeravaju se na infrastrukturi EthicsPortala. Nikakvi podaci iz poruka ne šalju se vanjskim uslugama za filtriranje neželjene pošte ili provjeru ugleda.
E-pošta nije anonimna: prijaviteljev pružatelj usluga e-pošte, kao i sustavi e-pošte organizacije ako piše s poslovnog računa, mogu čuvati kopije i zapise poruke. Potvrda to navodi i upućuje na online obrazac za prijavu prijavitelje koji žele ostati anonimni.
E-pošta za obavijesti #
Online obrazac za prijavu ima neobavezno polje e-pošte za obavijesti. Na tu adresu stižu potvrda i obavijest kada osoba za rješavanje napiše poruku, nikada sadržaj prijave. Adresa se pohranjuje enkriptirano i, kao ni adresa pošiljatelja prijave poslane e-poštom, ne prikazuje se ni na jednoj stranici osoba za rješavanje, ni u PDF-u ni u izvozu. Polje ostaje dostupno kada prijavitelj podnosi prijavu anonimno. Samo ako prijavitelj isključi anonimno podnošenje i označi „prikaži moju adresu e-pošte i obrađivačima slučaja”, adresa postaje kontaktna adresa koju osobe za rješavanje vide.
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. Plausible Analytics koristimo samo na marketinškoj stranici, a poslužuje se s naše vlastite domene. Ne postavlja kolačiće i ne pohranjuje IP adrese. Cloudflare, koji isporučuje marketinšku stranicu, obrađuje metapodatke zahtjeva, uključujući IP adrese, kako je opisano u Politici privatnosti. Kanal 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 |
| Promatrač | Samo za čitanje, za revizore i pravne savjetnike | 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 — prijavu otvaraju ID-om slučaja (
WB-XXXX-XXXX) i lozinkom koju sustav generira pri slanju prijave. - 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.
Pristup prijavitelja sigurnom sandučiću #
Prijavitelji otvaraju sigurni sandučić svojim ID-om slučaja i lozinkom. ID slučaja označava predmet i nije tajan. Lozinka se sastoji od 16 nasumičnih znamenki koje sustav generira pri slanju prijave; prijavitelj je ne bira. Pohranjuje se samo kao bcrypt sažetak, pa je nitko ne može vratiti, a EthicsPortal nema funkciju kojom bi je prijavitelj, osoba za rješavanje ili operater mogli ponovno postaviti. Prijavitelj koji je izgubi podnosi novu prijavu i u njoj navodi ID slučaja. Prijave podnesene prije 18. listopada 2026. zadržavaju šestoznamenkastu lozinku koju je prijavitelj tada odabrao i ona i dalje vrijedi. 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.
Odmah nakon slanja stranica s potvrdom o slanju prikazuje adresu sigurnog sandučića, ID slučaja i lozinku. Dostupna je samo u tom pregledniku i samo dok je predmet otključan, a nestaje kada se sandučić zaključa nakon 30 minuta neaktivnosti ili kada prijavitelj izađe. Na stranici za otvaranje sigurnog sandučića polje za lozinku vidljivo je tekstualno polje s isključenim automatskim dovršavanjem, a ne maskirano polje za lozinku, kako preglednici ne bi ponudili spremanje lozinke: preglednik kojim upravlja poslodavac inače bi je mogao sinkronizirati s računom poslodavca. Lijepljenje je moguće, a razmaci se zanemaruju.
Kada osoblje evidentira prijavu zaprimljenu telefonom, na osobnom sastanku, pismom ili e-poštom, a prijavitelj želi pratiti predmet online, sustav generira jednokratnu lozinku koju osoba za rješavanje prenosi prijavitelju. Vrijedi samo jednom: kada prijavitelj prvi put otvori sigurni sandučić, poslužitelj je zamjenjuje novom lozinkom koju vidi samo prijavitelj.
Pristup prijavitelja završava kada odabere „Izlaz” ili nakon 30 minuta bez aktivnosti. Otprilike dvije minute prije zaključavanja upozorenje nudi da sandučić ostane otvoren; ako nitko ne reagira, slučaj nestaje sa zaslona. Pristup se čuva u šifriranom kolačiću u pregledniku prijavitelja, a poslužitelj ne čuva sesiju prijavitelja.
Ž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.
Vlasnik organizacije, posljednji aktivni administrator i imenovani službenik za usklađenost kanala za prijavu nepravilnosti ne mogu se deaktivirati. Svi događaji deaktivacije i ponovne aktivacije zapisuju se u zapis aktivnosti koji dopušta samo dodavanje.
Uklanjanje člana deaktivira članstvo umjesto da ga briše, pa zapis aktivnosti i povijest prijava ostaju razrješivi. Članstvo se trajno briše samo kada se izbriše vlastiti račun člana ili sama organizacija.
Brisanje računa #
Kada član zatvori vlastiti račun, njegova se adresa e-pošte zamjenjuje nedostavljivim zamjenskim zapisom, a profilna slika, vjerodajnice za dvofaktorsku autentifikaciju, sesije, API tokeni i postavke trajno se brišu; račun se više ne može autentificirati niti se s njim može stupiti u kontakt. Ako račun nikada nije djelovao unutar organizacije, zapis se u potpunosti briše. Ako jest, ime člana ostaje, dok se njegova članstva deaktiviraju kako bi zadržane bilješke o predmetima, poruke i unosi u zapis aktivnosti ostali pripisivi. Voditelj obrade određuje razdoblje čuvanja u skladu sa svojim dokumentiranim uputama i primjenjivim pravom; pravo na brisanje iz GDPR-a i dalje podliježe primjenjivim iznimkama za pravne obveze ili pravne zahtjeve.
Očišćeni račun ne može se autentificirati nijednim putem: čarobnom poveznicom, SSO potvrdom ni API tokenom.
Ograničavanje brzine #
Javne krajnje točke kanala za prijavu nepravilnosti imaju ograničenu brzinu radi sprječavanja zlouporabe i napada nabrajanjem:
| Krajnja točka | Ograničenje |
|---|---|
| Slanje prijave | 5 po 10 minuta po sažetku IP adrese |
| Traženje predmeta (ID slučaja + lozinka) | 10 po 3 minute po sažetku IP adrese |
| Traženje predmeta (ID slučaja + lozinka) | 10 po 10 minuta po ID-u slučaja i sažetku IP adrese |
| Slanje poruke | 10 po 3 minute po sažetku IP adrese |
Ograničavanje brzine koristi gore opisani sažetak IP adrese s ključem — za to se ne pohranjuje nijedna IP adresa. Ograničenje po ID-u slučaja kao ključ koristi sam ID slučaja, koji se briše iz iste predmemorije unutar 15 minuta.
Revizija i usklađenost #
Zapis aktivnosti koji dopušta samo dodavanje #
Definirani događaji vezani uz prijave i račune bilježe se s:
- Vremenskom oznakom (UTC)
- Sudionikom (koji korisnik ili sustavski proces je izvršio radnju)
- Vrstom radnje (primjerice, prijava stvorena, status promijenjen, poruka poslana, osoba za rješavanje dodijeljena, prijava izvezena ili prijava izbrisana). Svaki pregled određene prijave od strane osobe za rješavanje bilježi se, uz uklanjanje duplikata na jedan unos po osobi za rješavanje po prijavi u 24 sata, a pregledi prijavitelja u postupanju po prijavi bilježe se na isti način. Čitanja drugih resursa ne bilježe se.
Unosi u zapis aktivnosti dopuštaju samo dodavanje. Nijedan korisnik, uključujući administratore organizacije, ne može urediti unos niti pojedinačno obrisati: PostgreSQL okidači odbijaju izmjenu i skraćivanje na razini baze podataka. Unosi se uklanjaju samo ciklusom čuvanja ili kad se obriše sama organizacija, a povlašteni zahvat u bazu ostaje dokumentiran preostali rizik (registar rizika R-08). 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, pozadinski posao briše prijavu i povezane podatke iz produkcije; sigurnosne kopije istječu prema zasebnom dokumentiranom ciklusu.
E-poruke prijavitelju ne ostavljaju zapis u povijesti slanja EthicsPortala, pa nakon brisanja prijave ne ostaje nijedna adresa prijavitelja.
Voditelj obrade ostaje odgovoran za odabir razdoblja koje zadovoljava načelo ograničenja pohrane iz GDPR-a i primjenjiva nacionalna pravila o vođenju evidencije.
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 promjena | Svaka produkcijska promjena provjerava se prema pisanom kontrolnom popisu (pokrivenost enkripcijom, opseg autorizacije, emisija zapisa aktivnosti, provjera unosa, postupanje s tajnama) prije objave. Provedba je automatizirana, a ne diskrecijska: potpuni skup testova i statička analiza izvode se pri svakoj promjeni i blokiraju objavu pri neuspjehu. Skup se izvodi na udomljenom CI izvođaču ili na razvojnoj radnoj stanici, pri čemu se dovršeno izvođenje bilježi kao status commita koji cjevovod provjerava prije nego što preskoči udomljeno izvođenje. Uloge za odobravanje promjena opisuju se tijekom revizije nabave. |
| 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.
Kontrole opskrbnog lanca ograničavaju što kompromitirano izdanje neke ovisnosti može dosegnuti:
- Razdoblje čekanja. Nove verzije gemova preuzimaju se tek nakon što su tri dana javno dostupne; ažuriranja verzija putem Dependabota čekaju 3, 7 ili 14 dana za patch, minor i major izdanja. Kompromitirana izdanja obično se povlače unutar tog razdoblja.
- Fiksirane CI akcije. Svaki korak GitHub Actionsa fiksiran je na puni SHA commita, pa preusmjerena oznaka ne može promijeniti ono što se izvršava.
- Provjerena preuzimanja. Binarne datoteke preuzete tijekom izgradnje slike kontejnera provjeravaju se prema fiksiranom SHA-256 kontrolnom zbroju.
- Kontrolirana automatska ažuriranja. Zahtjevi za povlačenje koje otvara Dependabot automatski se spajaju tek nakon što prođu cjeloviti skup testova i statička analiza.
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) |
| Sigurnosna kopija privitaka | Hetzner Object Storage | Falkenstein, Njemačka (EU) |
| Transakcijska e-pošta | Mailjet | Francuska (EU) |
| Obrada plaćanja | Stripe | Irska; druge države uz primjenjive zaštitne mjere — vidi Obavijest o privatnosti |
- Temeljna pohrana prijava i podataka o predmetima nalazi se u Europskoj uniji. Dostava e-pošte i telemetrija aplikacije imaju zasebne lance daljnjih dobavljača; vidi ugovor o obradi podataka.
- Nikakvi brojevi kreditnih kartica ni vjerodajnice za plaćanje ne pohranjuju se na poslužiteljima EthicsPortala. Svim podacima o plaćanju upravlja Stripe.
- Mailjet šalje obavijesti osobama za rješavanje te neobvezne potvrde primitka i obavijesti o novim porukama prijaviteljima. Obavijesti prijaviteljima sadrže adresu e-pošte primatelja, ID slučaja i poveznicu, ali ne i opis prijave. Potvrda primitka za prijavu poslanu e-poštom sadrži i jednokratnu lozinku za sigurni pretinac, koja se zamjenjuje pri prvoj prijavi prijavitelja. Mailjetov daljnji lanac podrške može uključivati pristup izvan EGP-a; vidi ugovor o obradi podataka.
- Marketinška stranica poslužuje se putem Cloudflarea (CDN, Sjedinjene Američke Države); kanal za prijavu nepravilnosti i portal za osobe za rješavanje nisu. Ta odvojena obrada javne stranice i zaštitne mjere prijenosa opisane su u Obavijesti o privatnosti, a ne na popisu podizvršitelja obrade u ugovoru o obradi podataka s korisnikom.
Sigurnosne kopije i vraćanje #
EthicsPortal vodi tri komplementarna sloja sigurnosnih kopija, svi čuvani unutar EU-a:
| Sloj | Što | Gdje | Čuvanje |
|---|---|---|---|
| Baza podataka | Dnevni PostgreSQL ispisi putem Kamal dodatka, enkriptirani simetričnim GnuPG AES-256 na poslužitelju prije prijenosa | Hetzner Object Storage, Nürnberg (EU) | 21 dan za trenutačne verzije; izbrisane verzije istječu nakon dodatnih 7 dana |
| Poslužitelj | Potpune snimke diska aplikacijskog poslužitelja | Hetzner Cloud, Nürnberg (EU) | 7 dana |
| Privici | Svaki enkriptirani privitak kopira se, pod vlastitim ključem za tu datoteku, u drugi spremnik s verzioniranjem | Hetzner Object Storage, Falkenstein (EU) | Dok god privitak postoji; prethodne verzije 28 dana. Izvorne glasovne snimke brišu se u potpunosti, bez čuvanja prethodnih verzija |
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, kao i na zahtjev, te vraća najnoviji ispis u jednokratno okruženje. Dešifrira ispis, vraća ga, uspoređuje svaku tablicu s produkcijom te zatim pokreće aplikaciju nad vraćenom bazom podataka kako bi potvrdila da se šifrirani stupac i dalje dešifrira, da se jedan šifrirani privitak otvara ključem pohranjenim u vraćenom ispisu i da svaki privitak stariji od sat vremena ima kopiju na lokaciji sigurnosnih kopija, pri čemu se jedna kopija otvara i provjerava prema svojem kontrolnom zbroju — sam broj redaka ne može razlikovati upotrebljivu sigurnosnu kopiju od šifrata čiji ključ više ne odgovara. Svježina sigurnosnih kopija neprekidno se nadzire (upozorenje ako je najnoviji ispis stariji od 36 sati).
Enkripcija. Hetzner navodi da Object Storage prema zadanim postavkama ne šifrira objekte u mirovanju, pa se ispisi baze šifriraju prije nego što napuste poslužitelj: GnuPG simetrično AES-256, pri čemu zaporku drži samo proces izrade sigurnosnih kopija i pohranjena je izvan stroja. Polja šifrirana na razini aplikacije pomoću Rails ActiveRecord Encryption ostaju zasebno šifrirana unutar svakog ispisa. Privici su šifrirani u mirovanju zasebnim ključem za svaku datoteku (vidi odjeljak Privici). Ti ključevi postoje samo u bazi podataka, pa ih svaki šifrirani ispis sadrži. Same datoteke ne kopiraju se u ispis. Svaka se pohranjuje u Nürnbergu i kopira, pod istim ključem, u drugi spremnik u Falkensteinu; oba zadržavaju prethodne verzije 28 dana.
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.
- Ne izvodite napade uskraćivanjem usluge ni masovna automatizirana skeniranja, ne pokušavate socijalni inženjering prema našem osoblju i ne podnosite prijave putem kanala za prijavu nepravilnosti nekog korisnika.
Potvrdit ćemo vašu prijavu unutar 2 radna dana i nastojati žurno riješiti potvrđene ranjivosti.
Bez plaćenog bug bounty programa. Otkrivanje se ne nagrađuje: ne isplaćujemo naknadu za prijave ranjivosti niti potpisujemo ugovore o povjerljivosti, ne dogovaramo komercijalne uvjete i ne održavamo pozive kao preduvjet za zaprimanje prijave. Na navedenu adresu pošaljite pogođenu imovinu, korake za reprodukciju i utjecaj koji ste utvrdili.
Posljednje ažuriranje: