Security Policy
> Veylon è un prodotto di certificazione legale. La sicurezza non è una feature: è il prodotto. > Questa policy descrive come segnalare vulnerabilità, cosa rientra nello scope, le issue già note in fix e l'architettura di sicurezza della piattaforma.
Vulnerability Disclosure Policy
Veylon S.r.l. (in costituzione) accoglie e incoraggia la segnalazione responsabile di vulnerabilità di sicurezza.
Come segnalare
- Email primaria:
[email protected] - Email fallback:
[email protected]se la primaria fosse temporaneamente inattiva. - PGP key: chiave PGP dedicata in fase di pubblicazione. L'impronta verrà esposta a
https://veylon.app/.well-known/security.pgpe su keys.openpgp.org sotto l'identità[email protected]. Placeholder corrente —0xTBDTBDTBDTBDTBDTBDTBDTBDTBDTBD. Per segnalazioni sensibili prima della pubblicazione della chiave dedicata, scrivere a[email protected]chiedendo l'impronta personale del CTO da utilizzare temporaneamente. - security.txt (RFC 9116): in pubblicazione a
https://veylon.app/.well-known/security.txtcon:
- Contact: mailto:[email protected] - Expires: 2027-06-10T00:00:00.000Z - Encryption: https://veylon.app/.well-known/security.pgp - Preferred-Languages: it, en - Policy: https://veylon.app/security - Hiring: https://veylon.app/careers
Cosa includere
- Descrizione tecnica della vulnerabilità
- Passi per riprodurla (proof-of-concept)
- Impatto stimato (confidenzialità, integrità, disponibilità)
- Punteggio CVSS v3.1 (se calcolabile)
- Eventuali suggerimenti di mitigazione
- Tuoi contatti per follow-up e credit (opzionale)
- Se hai una preferenza per anonimato o pseudonimo nel credit pubblico, indicalo
Cosa NON fare
- Non testare in produzione su account altrui.
- Non esfiltrare dati di terzi: il PoC va dimostrato su account/dati di test.
- Non pubblicare i dettagli prima della disclosure coordinata.
- Non eseguire DoS o stress test senza accordo preventivo.
- Non utilizzare social engineering contro dipendenti / collaboratori.
Tempo di risposta
| Azione | Tempo massimo |
|---|---|
| Acknowledge ricezione | 48 ore lavorative |
| Triage iniziale + CVSS | 7 giorni |
| Comunicazione decisione (in fix / out of scope / duplicato) | 14 giorni |
| Disclosure coordinata | 90 giorni dalla ricezione (estendibili di accordo col reporter) |
Responsible Disclosure Timeline
Standard a 90 giorni in linea con Google Project Zero e ISO/IEC 29147.
| Giorno | Evento |
|---|---|
| 0 | Ricezione + conferma entro 48 ore lavorative |
| 0-7 | Triage interno, classificazione CVSS |
| 7-30 | Sviluppo patch, comunicazione settimanale al reporter |
| 30-60 | Rollout staged in produzione, test regressione |
| 60-90 | Hardening, validazione esterna se opportuno |
| 90 | Disclosure pubblica coordinata + credit |
Per vulnerabilità sfruttate attivamente o di rischio sistemico, timeline accelerata d'accordo col reporter.
Scope
In scope
- Frontend produzione:
veylon.appe sottodomini - Edge function Supabase del progetto
hanxxxtgxofjkfdjegfe - Schema database e policy RLS Postgres
- Webhook Mailgun e Twilio + verifica HMAC
- Logica notarizzazione OpenTimestamps
- Flussi OTP (rate-limit, brute-force, token reuse)
- Cifratura E2E modulo Send (key wrapping, IV handling)
Out of scope
- Vulnerabilità note nei vendor upstream (Supabase, Mailgun, Twilio, Bitcoin)
- Self-XSS o issue che richiedono compromissione preventiva del browser
- Social engineering contro dipendenti Veylon
- DDoS volumetrico
- Versioni staging (
.dev.veylon.app,.staging.veylon.app)
Known Issues (pre-MVP — trasparenza totale)
Quattro issue CRITICAL identificate dall'audit interno 2026-06-07. Tracciate, in fix prima del go-live commerciale.
| ID | Severità | Modulo | Descrizione | Status |
|---|---|---|---|---|
| VLN-001 | CRITICAL | OTP Firma | Rate-limit OTP brute-force insufficiente in firma-applica: codice 6 cifre senza counter attempts | In fix (Q3 2026) |
| VLN-002 | CRITICAL | Cron pg_net | Service_role nei log pg_net del cron originale (20260607_veylon_cron.sql) | Non applicabile: deploy attuale usa cron esterno (cron-job.org) con solo x-cron-secret, mai service_role |
| VLN-003 | CRITICAL | OTS parser | Parser custom _shared/ots.ts senza bounds check su input binario malformato → potenziale DoS | Fix applicato 2026-06-08 |
| VLN-004 | CRITICAL | Cron auth | Check CRON_SECRET accettava stringa vuota se var non settata | Fix applicato 2026-06-08 |
Bug Bounty
Stato corrente: non attivo. Veylon è in fase di stabilizzazione MVP e preferiamo costruire una pipeline interna di triage prima di esporre un programma a reward monetario.
Roadmap del programma
| Fase | Target | Modalità |
|---|---|---|
| Q1 2027 | Programma privato su invito | Reward per CRITICAL/HIGH, scope ristretto, NDA |
| Q3-Q4 2027 | Programma pubblico | Su una delle piattaforme HackerOne / Intigriti / YesWeHack EU |
| 2028 | Reward in stablecoin EUR (opzionale) | Per bypass crittografici e bypass identità |
Nel frattempo
Le segnalazioni valide ricevono:
- Credit pubblico nella security advisory (o anonimato/pseudonimo a scelta del reporter).
- Lettera di ringraziamento ufficiale firmata, utilizzabile per CV e portfolio.
- Inserimento nella Hall of Fame (vedi sotto).
- Per finding CRITICAL prima del go-live commerciale: t-shirt + abbonamento Veylon Pro vitalizio (offerta una tantum, fino esaurimento spirito iniziale).
Hall of Fame
> Placeholder corrente — la lista è vuota in attesa della prima segnalazione esterna.
| Reporter | Data | Issue ID | Severità | Descrizione sintetica |
|---|---|---|---|---|
| _Il tuo nome qui_ | — | — | — | Sii il primo a contribuire |
I 4 finding interni VLN-001..004 sono stati identificati dall'audit interno e non figurano in Hall of Fame esterna.
Security Architecture
1. Chiavi private mai sui server
Modulo Send: cifratura E2E in browser via Web Crypto API (AES-GCM-256 + X25519). Veylon vede solo ciphertext.
2. Row Level Security ovunque
Tutte le 15 tabelle Postgres hanno policy RLS attive con pattern (SELECT auth.uid()) = ... per performance. Testate in audit DB.
3. HMAC su tutti i webhook
Webhook Mailgun + Twilio verificati HMAC-SHA256 prima di mutare lo stato. Tampering loggato e rifiutato.
4. OTP rate-limit multilivello
- Rate-limit per IP sulla generazione codice
- Rate-limit per destinatario (phone/email) sulla validazione
- TTL codice 5 minuti
- Blocco esponenziale dopo tentativi falliti
- Tabella
auth_otpcon counterattempts(default max 5)
5. Bitcoin anchoring come timeline pubblica
Notarizzazioni Sigillo ancorate su Bitcoin mainnet via OpenTimestamps. Verifica indipendente da chiunque, anche se Veylon scompare.
6. Segregazione key material
service_roleJWT: solo in env edge function, mai client, mai log, mai committedanonkey: pubblica per design, protetta da RLSCRON_SECRET: validato strict-equality con check anti-empty (fix VLN-004 applicato)MAILGUN_WEBHOOK_SECRET: HMAC verify timestamp + token anti-replay (window 5 min)
7. Audit trail immutabile
Ogni evento materiale (notarizzazione, invio email, OTP validato, file trasferito) scritto in tabelle append-only (email_eventi, firma_eventi, garanzia_eventi, auth_otp).
8. Sovranità europea del dato
- Supabase:
hanxxxtgxofjkfdjegferegione EU Ireland (eu-west-1) - Mailgun: endpoint
api.eu.mailgun.net(Frankfurt) - Twilio: numerazione e routing EU dove disponibile
- Nessun trasferimento extra-UE
Compliance
GDPR (Reg. UE 2016/679)
- Titolare: Veylon S.r.l. (in costituzione)
- DPO: TBD — nomina contestuale alla costituzione societaria. Referente operativo:
[email protected] - Base giuridica primaria: art. 6.1.b (contratto) + art. 6.1.c (obbligo legale) per moduli Cert/Firma/Onboarding
- DPIA: prevista per moduli ad alto rischio (Onboarding KYC, Mail tracking, Firma)
- Diritti interessato: procedura attiva via
[email protected]
eIDAS (Reg. UE 910/2014)
- Art. 41 (validazione temporale): modulo Sigillo conforme
- Art. 26 (FEA): modulo Firma produce firma elettronica avanzata
- FEQ (firma qualificata): integrazione QTSP terza in roadmap Fase 3
Standard tecnici
- ISO/IEC 27001: allineamento metodologico, certificazione Fase 3
- ISO/IEC 29147 (vulnerability disclosure): questa policy
- OWASP ASVS Level 2: baseline applicativa
- NIST SP 800-63B: linee guida OTP/password
Storia delle modifiche
| Data | Versione | Modifica |
|---|---|---|
| 2026-06-07 | 1.0 | Prima versione pubblica della security policy (pre-MVP) |
| 2026-06-08 | 1.1 | Aggiunti dettagli sui 4 known issues, marcati VLN-003 e VLN-004 come "fix applicato" |
| 2026-06-10 | 1.2 | Aggiunti dettagli su vulnerability disclosure process, PGP key placeholder, security.txt RFC 9116, bug bounty roadmap, Hall of Fame placeholder |
Per dubbi interpretativi: [email protected]. Grazie per contribuire a rendere Veylon più sicura.