Vai al contenuto principale

Buone pratiche per l'adozione del CRA

Sviluppo sicuro di componenti FOSS

Come i progetti open source possono integrare la sicurezza lungo tutto il ciclo di vita, adottare una governance trasparente e gestire le vulnerabilità in proporzione al rischio, così che gli integratori a valle possano gestire i propri obblighi derivanti dal CRA.

In questa pagina

Consentire la gestione del rischio a valle

Per gli sviluppatori e i maintainer di componenti FOSS, l’approccio basato sul rischio del CRA si traduce nel consentire la gestione del rischio a valle, anziché nell’assumere una responsabilità normativa diretta.

L’Ufficio federale tedesco per la sicurezza informatica (BSI) ha pubblicato la TR-03185-2 Secure Software Lifecycle for Open Source Software, un quadro di riferimento pratico su come affrontare lo sviluppo di software open source dal punto di vista della sicurezza. I principi illustrati di seguito si basano su questo documento.

Un orientamento basato sul rischio

La filosofia basata sul rischio è il vero motore del CRA. Anziché prescrivere controlli rigidi e uguali per tutti, l’analisi dovrebbe includere criteri orientati ai risultati, da applicare in base a:

Criticità e utilizzo

La criticità del progetto e il suo contesto di utilizzo.

Impatto in caso di incidente

Il potenziale impatto degli incidenti di sicurezza.

Maturità della comunità

La maturità e le risorse della comunità.

Esposizione nella catena di approvvigionamento

Il grado di esposizione del software all’interno delle catene di approvvigionamento.

Questa proporzionalità è essenziale per il FOSS, dove i progetti spaziano dalle piccole librerie mantenute da volontari ai componenti infrastrutturali ampiamente diffusi.

La sicurezza lungo tutto il ciclo di vita

La sicurezza fin dalla progettazione richiede che le considerazioni di cybersicurezza siano integrate in tutto il ciclo di vita del software. In un modello basato sul rischio e allineato al CRA, la sicurezza non è un’attività separata ma un processo continuo e proporzionato, in cui ogni fase contribuisce alla resilienza complessiva di un componente FOSS e sostiene gli obblighi di conformità a valle.

  1. Progettazione Requisiti rilevanti per la sicurezza e analisi delle minacce.
  2. Implementazione Gestione controllata delle modifiche, revisione tra pari e strumenti di analisi adeguati.
  3. Test e convalida Verifica delle funzionalità rilevanti per la sicurezza.
  4. Rilascio e distribuzione Integrità e autenticità degli artefatti rilasciati.
  5. Manutenzione Gestione strutturata delle vulnerabilità e divulgazione responsabile.
  6. Fine vita Comunicazione trasparente dello stato di supporto e della dismissione.

Progettazione

Nella fase di progettazione, l’integrazione della sicurezza inizia con:

  • L’individuazione dei requisiti rilevanti per la sicurezza
  • La considerazione degli usi impropri prevedibili
  • L’analisi delle superfici di attacco
  • Scelte architetturali che riducono l’esposizione

Per i componenti con una criticità funzionale più elevata (ad esempio autenticazione, crittografia, meccanismi di aggiornamento) può essere opportuna un’analisi delle minacce più strutturata. Come minimo, le funzionalità rilevanti per la sicurezza dovrebbero essere documentate chiaramente per consentire la valutazione a valle.

Implementazione

Durante l’implementazione, la sicurezza del ciclo di vita richiede:

  • Una gestione controllata delle modifiche
  • Repository sotto controllo di versione
  • Pratiche di revisione tra pari (peer review)
  • Disciplina nella programmazione sicura

I progetti più maturi possono integrare strumenti automatizzati di analisi statica o di scansione delle dipendenze. L’obiettivo non è imporre strumenti specifici, ma garantire pratiche di sviluppo coerenti e tracciabili.

Test e convalida

I test e la convalida confermano che le funzionalità rilevanti per la sicurezza funzionino come previsto. Le misure tipiche includono:

  • Test funzionali dell’autenticazione e dei controlli di accesso
  • Verifiche della convalida degli input
  • Test di sicurezza di base prima del rilascio

I progetti più esposti possono integrare strumenti automatizzati SAST o DAST nelle pipeline CI/CD. I test garantiscono che le vulnerabilità vengano individuate prima della distribuzione.

Rilascio e distribuzione

Le pratiche di rilascio sicuro sono controlli fondamentali per la catena di approvvigionamento. Le pratiche chiave includono:

  • Un versionamento chiaro
  • Un changelog documentato
  • La protezione dell’integrità degli artefatti di rilascio
  • La trasparenza sulle dipendenze incluse (ad esempio generazione della SBOM)

I progetti più avanzati possono adottare rilasci firmati o build riproducibili tramite pipeline immutabili. Questa fase rafforza la fiducia e la tracciabilità a valle.

Manutenzione

L’integrazione della sicurezza non termina con il rilascio. La manutenzione richiede:

  • Il monitoraggio delle vulnerabilità divulgate di recente
  • Una gestione strutturata delle vulnerabilità
  • L’applicazione tempestiva delle patch
  • Una comunicazione chiara degli aggiornamenti

La manutenzione continua sostiene direttamente gli obblighi del CRA relativi al ciclo di vita e riduce il rischio sistemico nella catena di approvvigionamento.

Fine vita

Una comunicazione trasparente sulla fine vita è essenziale per evitare rischi non gestiti. I progetti dovrebbero:

  • Comunicare chiaramente lo stato di supporto
  • Annunciare le tempistiche di dismissione
  • Raccomandare percorsi di migrazione, ove applicabile

Ciò consente agli utenti a valle, comprese le PMI, di pianificare transizioni sicure ed evitare dipendenze non più supportate.

Governance e trasparenza come controlli del rischio

Negli ecosistemi open source, i meccanismi di governance fungono spesso da strumenti primari di mitigazione del rischio. Trasparenza, documentazione e processi comunitari non sono semplici aspetti amministrativi, ma fattori abilitanti fondamentali per la sicurezza. Quattro elementi sono essenziali:

Flussi di lavoro documentati

Procedure chiare e scritte, dalla pianificazione alla messa in produzione. Garantiscono coerenza e riducono gli errori.

Ruoli e responsabilità definiti

Compiti e responsabilità assegnati per le attività di sicurezza. Evitano ambiguità e garantiscono una chiara presa in carico.

Canali di segnalazione chiari

Meccanismi consolidati e facili da usare per segnalare potenziali problemi di sicurezza, sia internamente sia esternamente.

Comunicazione pubblica

Divulgazione trasparente e tempestiva delle vulnerabilità e delle soluzioni disponibili a utenti e parti interessate.

Queste misure riducono il rischio sistemico migliorando la responsabilizzazione e consentendo agli utenti a valle di valutare l’affidabilità di un progetto.

Rilevanza per la sicurezza della catena di approvvigionamento

I componenti open source sono profondamente radicati nelle moderne catene di approvvigionamento del software. Un approccio allo sviluppo FOSS basato sul rischio deve quindi considerare non solo i rischi a livello di progetto, ma anche i rischi sistemici che si propagano attraverso il riutilizzo e la ridistribuzione. La resilienza della catena di approvvigionamento si rafforza incoraggiando:

  • Pratiche di rilascio sicuro
  • La tracciabilità delle modifiche
  • Uno stato di manutenzione trasparente
  • Un punto di contatto chiaro per la sicurezza

Tali pratiche migliorano la capacità degli integratori a valle, comprese le piccole e medie imprese, di effettuare valutazioni del rischio e di rispettare gli obblighi normativi o contrattuali.

Attestazioni di sicurezza volontarie (articolo 25)

La sicurezza di un prodotto finale è inseparabile dall’integrità dei suoi componenti a monte. Con l’avvicinarsi dell’attuazione del CRA, il settore si trova di fronte a una sfida cruciale: come verificare la sicurezza dei milioni di dipendenze open source che costituiscono la spina dorsale dell’infrastruttura globale senza soffocare il modello collaborativo che le ha prodotte.

La soluzione più praticabile risiede nell’articolo 25, che delinea un quadro per le attestazioni di sicurezza volontarie. Passando dalla correzione reattiva a una trasparenza proattiva e standardizzata, consente agli steward senza scopo di lucro di fornire garanzie graduate e basate sul rischio in cambio di una remunerazione che copra costi operativi trasparenti, trasformando la conformità normativa in un motore sostenibile di resilienza della catena di approvvigionamento. Questa resilienza poggia su tre pilastri:

  1. Facilitare una due diligence efficiente grazie ad artefatti affidabili

    Il CRA impone ai fabbricanti di svolgere una due diligence rigorosa su ogni componente integrato, compreso il software libero e open source. Standardizzare le attestazioni come artefatti verificabili e leggibili dalle macchine elimina il «denial-of-service» inflitto ai maintainer dalle richieste di conformità manuali e ripetitive, e fornisce ai fabbricanti informazioni coerenti e affidabili da integrare direttamente nelle loro valutazioni del rischio automatizzate.

  2. Incentivare la manutenzione della sicurezza lungo la catena di approvvigionamento

    La sicurezza non è uno stato statico ma un processo continuo di manutenzione. Le attestazioni creano un ponte concreto tra i requisiti normativi e il sostegno economico necessario a garantire tale manutenzione, offrendo ai fabbricanti un percorso strutturato per sostenere finanziariamente gli steward e i maintainer dei progetti critici, il cui lavoro sulla sicurezza è essenziale per la loro stessa conformità.

  3. Rafforzare la governance e la resilienza guidate dalla comunità

    La forza della catena di approvvigionamento del software risiede nella sua diversità. Un modello di attestazione rigorosamente volontario, proporzionato e basato sul rischio rispetta i modelli di governance propri dell’open source, consente alle comunità di definire la propria postura di sicurezza attraverso livelli di garanzia graduati ed evita un obbligo uguale per tutti.

Attività di cybersicurezza per il supporto lungo l'intero ciclo di vita

L’impegno a mantenere e proteggere un prodotto per tutta la sua vita operativa implica una responsabilità continua per tutti i componenti integrati, comprese le librerie open source di terze parti. I componenti open source evolvono in modo indipendente: le vulnerabilità possono emergere anni dopo l’integrazione, i maintainer possono farsi da parte, il ritmo dei rilasci può rallentare. Senza una visibilità strutturata sulle dipendenze, un monitoraggio continuo, una disciplina nel controllo delle versioni e policy di aggiornamento documentate, le organizzazioni rischiano di ereditare debito tecnico non gestito e vulnerabilità latenti nella catena di approvvigionamento. Misure concrete:

Mantenere una SBOM costantemente aggiornata

Garantire trasparenza e tracciabilità delle dipendenze tra le diverse versioni del prodotto.

Istituzionalizzare la valutazione del rischio delle dipendenze

Utilizzare criteri quali il livello di attività del progetto, i tempi di risposta alle vulnerabilità, la trasparenza della governance e la disciplina di rilascio.

Adottare un monitoraggio continuo delle vulnerabilità

Seguire le vulnerabilità divulgate di recente che riguardano i componenti distribuiti con i propri prodotti.

Oltre ai controlli interni, impegnarsi a monte

Quando le dipendenze sono di importanza critica, le organizzazioni dovrebbero valutare la possibilità di contribuire con correzioni, sponsorizzare i maintainer o partecipare alla governance del progetto per ridurre il rischio sistemico.

Combinando trasparenza (SBOM), valutazione strutturata del rischio, monitoraggio continuo e partecipazione a monte, i fabbricanti possono trasformare le dipendenze open source da un’esposizione non gestita in una risorsa governata strategicamente, al servizio della sicurezza, della conformità e della fiducia nel lungo periodo.

Gestione delle vulnerabilità

Il CRA impone ai fabbricanti di individuare, gestire e correggere le vulnerabilità in modo tempestivo e strutturato per tutto il ciclo di vita del prodotto. Sebbene i progetti open source non siano regolamentati direttamente in quanto tali, le loro pratiche influenzano in modo significativo la capacità dei fabbricanti a valle e delle PMI di rispettare gli obblighi. In un modello basato sul rischio, la gestione delle vulnerabilità non si limita alla correzione reattiva, ma comprende:

  • Meccanismi di segnalazione accessibili
  • Triage e valutazione del rischio strutturati
  • Processi di correzione trasparenti
  • Pratiche di divulgazione trasparenti
  • Monitoraggio continuo delle vulnerabilità note

I progetti più piccoli potrebbero non disporre delle risorse dei grandi fornitori commerciali, ma dovrebbero comunque adottare pratiche di base che consentano agli integratori a valle di valutare e gestire efficacemente il rischio.

Elementi fondamentali della gestione delle vulnerabilità

  1. Segnalazione e presa in carico

    • Un contatto di sicurezza o un canale di segnalazione pubblicamente disponibile
    • Istruzioni chiare per la divulgazione responsabile
    • Una procedura definita di presa in carico e di conferma di ricezione

    Ricercatori di sicurezza e utenti possono segnalare i problemi in modo controllato e trasparente.

  2. Triage e valutazione del rischio

    • Valutazione della gravità e del potenziale impatto
    • Individuazione delle versioni interessate
    • Valutazione della sfruttabilità e dell’esposizione

    La classificazione della gravità può basarsi su framework ampiamente riconosciuti (ad esempio CVSS), mantenendo la proporzionalità rispetto alle dimensioni e al contesto del progetto.

  3. Correzione e gestione dei rilasci

    • Sviluppo di patch correttive
    • Processo di rilascio sicuro
    • Versionamento chiaro e changelog documentato

    Ove possibile, gli aggiornamenti dovrebbero essere accompagnati da una comunicazione chiara sulle misure di mitigazione e sulle configurazioni interessate.

  4. Divulgazione e trasparenza

    • Pubblicazione di avvisi di sicurezza pubblici, quando opportuno
    • Comunicazione chiara agli utenti a valle
    • Divulgazione coordinata quando sono coinvolte più parti interessate

    Queste misure rafforzano la fiducia e sostengono la trasparenza della catena di approvvigionamento.

Livelli di maturità proporzionati

Per rispecchiare il principio di proporzionalità del CRA, le pratiche di gestione delle vulnerabilità possono essere articolate su tre livelli di maturità.

Livello 1

Pratica minima essenziale

  • Canale pubblico di segnalazione delle vulnerabilità
  • Triage manuale dei problemi segnalati
  • Pubblicazione delle patch e aggiornamento del changelog

Consente una tracciabilità di base e la gestione del rischio a valle.

Livello 2

Processo strutturato

  • Policy di gestione delle vulnerabilità documentata
  • Flusso di triage definito e tracciamento interno
  • Pubblicazione di avvisi di sicurezza pubblici
  • Tempo di risposta obiettivo definito

Migliora prevedibilità e trasparenza.

Livello 3

Avanzato e integrato nella catena di approvvigionamento

  • Policy di divulgazione coordinata delle vulnerabilità (CVD)
  • Assegnazione di CVE ove applicabile
  • Strumenti di monitoraggio continuo delle vulnerabilità
  • Tracciamento delle correzioni basato su SLA
  • Integrazione della scansione delle vulnerabilità nelle pipeline CI/CD

Rafforza la resilienza sistemica lungo tutta la catena di approvvigionamento del software.

Cosa significa per le PMI che integrano FOSS

Per le PMI che integrano componenti FOSS in prodotti con elementi digitali, le pratiche di gestione delle vulnerabilità dei progetti a monte incidono direttamente sulla loro stessa posizione in materia di conformità. Le PMI dovrebbero quindi valutare:

  • Se il progetto dispone di un canale pubblico per la divulgazione delle vulnerabilità
  • Con quale rapidità i problemi vengono presi in carico e risolti
  • Se avvisi di sicurezza e patch vengono comunicati in modo trasparente
  • Se il progetto dimostra attività di manutenzione

Quando un componente è funzionalmente critico o esposto pubblicamente, le PMI dovrebbero valutare l’adozione di misure di due diligence rafforzata, tra cui il monitoraggio continuo e, ove disponibili, il ricorso alle attestazioni di sicurezza volontarie ai sensi dell’articolo 25.

Leggi le linee guida di conformità per le PMI

Torna su