SCA: Cos'è la Software Composition Analysis
SCA (Software Composition Analysis) e la pratica di analizzare le dipendenze open source di un progetto per identificare vulnerabilità note, problemi di licenza e rischi nella supply chain del software. Con oltre il 90% del codice moderno che utilizza componenti open source, la sicurezza delle dipendenze e diventata un aspetto critico.
A differenza di SAST che analizza il codice scritto dal team, SCA si concentra sul codice importato: librerie npm, pacchetti pip, dipendenze Maven, gem Ruby e qualsiasi altro componente di terze parti. Una singola vulnerabilità in una libreria diffusa può esporre migliaia di applicazioni, come dimostrato dagli incidenti Log4Shell e XZ Utils.
In questo articolo esploreremo gli strumenti SCA principali, la gestione delle dipendenze transitive, il tracking delle licenze e le strategie per mantenere le dipendenze aggiornate.
Cosa Imparerai
- Come funziona SCA e l'analisi delle dipendenze transitive
- Configurare Snyk, Dependabot e OWASP Dependency-Check
- Database di vulnerabilità: NVD, CVE, GitHub Advisory
- Gestione delle licenze open source e compliance
- Strategie di aggiornamento: patch automatiche vs manuali
- Integrazione SCA nella pipeline CI/CD
Il Problema delle Dipendenze Transitive
Un progetto tipico ha decine di dipendenze dirette, ma ognuna di queste porta con se
le proprie dipendenze (transitive). Un progetto Node.js con 50 dipendenze dirette può
avere 500-1000 dipendenze transitive nel node_modules.
Le vulnerabilità nelle dipendenze transitive sono particolarmente insidiose perchè il developer potrebbe non essere consapevole della loro esistenza. SCA analizza l'intero albero delle dipendenze, incluse quelle transitive, per garantire una copertura completa.
perchè SCA e Critico
L'incidente Log4Shell (CVE-2021-44228) ha dimostrato l'impatto devastante di una vulnerabilità in una libreria diffusa: oltre 35.000 pacchetti Java erano vulnerabili. Molte organizzazioni hanno impiegato settimane per identificare tutte le applicazioni affette perchè non avevano un inventario delle dipendenze. SCA previene questo scenario mantenendo un inventario aggiornato e allertando immediatamente quando viene scoperta una nuova vulnerabilità.
Snyk: SCA Integrato per Developer
Snyk e una piattaforma SCA moderna che si integra direttamente nel workflow del developer. Offre un piano gratuito per progetti open source e una developer experience eccellente con integrazione IDE, CLI e CI/CD.
Snyk CLI: Analisi da Terminale
# Installare Snyk CLI
npm install -g snyk
# Autenticarsi
snyk auth
# Analizzare le dipendenze del progetto
snyk test
# Analizzare e monitorare (registra nel dashboard)
snyk monitor
# Analizzare un Dockerfile
snyk container test node:18-alpine
# Analizzare codice IaC
snyk iac test terraform/
# Output in formato JSON per automazione
snyk test --json --severity-threshold=high > snyk-results.json
Integrazione Snyk in GitHub Actions
# .github/workflows/snyk.yml
name: Snyk Security Scan
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
snyk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install dependencies
run: npm ci
- name: Snyk Test
uses: snyk/actions/node@master
env:
SNYK_TOKEN: 






