<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>SBOM on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/sbom/</link>
        <description>Recent content in SBOM on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 19 May 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/sbom/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>SBOM: la distinta base del software</title>
        <link>https://www.matteobianchi.eu/p/sbom-trasparenza/</link>
        <pubDate>Tue, 19 May 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/sbom-trasparenza/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/sbom-trasparenza/cover.png" alt="Featured image of post SBOM: la distinta base del software" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Quando è uscito Log4Shell, la domanda che ha paralizzato migliaia di aziende non era &amp;ldquo;come si
corregge?&amp;rdquo; ma &amp;ldquo;&lt;strong&gt;dove ce l&amp;rsquo;ho?&lt;/strong&gt;&amp;rdquo;. Senza un inventario, rispondere ha richiesto settimane di caccia
manuale. La &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/sca-e-dipendenze/&#34; &gt;SCA&lt;/a&gt; trova i CVE nelle dipendenze, ma presuppone
di sapere &lt;em&gt;cosa&lt;/em&gt; gira in produzione. La &lt;strong&gt;SBOM (Software Bill of Materials)&lt;/strong&gt; è quell&amp;rsquo;inventario: la
distinta base di ogni componente di ciò che spedisci.&lt;/p&gt;
&lt;h2 id=&#34;cosè-concretamente&#34;&gt;Cos&amp;rsquo;è, concretamente
&lt;/h2&gt;&lt;p&gt;Una SBOM è un documento strutturato e leggibile da una macchina che elenca, per ogni artefatto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Per ogni componente:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - nome e VERSIONE esatta        ← la chiave per matchare i CVE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - identificatore univoco (PURL) ← pkg:npm/lodash@4.17.21
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - hash / checksum               ← integrità
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - licenza                       ← anche compliance legale
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - relazioni (chi dipende da chi)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Due standard dominano: &lt;strong&gt;SPDX&lt;/strong&gt; (ISO, nato attorno alla compliance delle licenze) e &lt;strong&gt;CycloneDX&lt;/strong&gt;
(OWASP, nato con la sicurezza in mente). Entrambi vanno bene; l&amp;rsquo;importante è generarla in un formato
standard, non in un foglio di calcolo fatto a mano.&lt;/p&gt;
&lt;h2 id=&#34;dove-e-come-generarla&#34;&gt;Dove e come generarla
&lt;/h2&gt;&lt;p&gt;La SBOM si genera &lt;strong&gt;nella pipeline&lt;/strong&gt;, al momento della build, quando si conosce esattamente cosa
finisce nell&amp;rsquo;artefatto. Generarla dopo, a posteriori, significa indovinare.&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    SRC[Sorgente + lockfile] --&amp;gt; BUILD[Build nella CI]
    BUILD --&amp;gt; ART[Artefatto&amp;lt;br/&amp;gt;container / binario]
    BUILD --&amp;gt; GEN[Generatore SBOM&amp;lt;br/&amp;gt;es. Syft]
    GEN --&amp;gt; SBOM[SBOM&amp;lt;br/&amp;gt;CycloneDX/SPDX]
    SBOM --&amp;gt;|firmata e allegata&amp;lt;br/&amp;gt;all&amp;#39;artefatto| REG[(Registry)]
    ART --&amp;gt; REG
    style SBOM fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Punto chiave: la SBOM va &lt;strong&gt;allegata all&amp;rsquo;artefatto e firmata&lt;/strong&gt;, così viaggia con esso ed è
verificabile (lo vedremo con &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/firma-artefatti-sigstore/&#34; &gt;Sigstore&lt;/a&gt;). Una SBOM
che vive in una cartella scollegata dall&amp;rsquo;artefatto che descrive perde metà del valore.&lt;/p&gt;
&lt;h2 id=&#34;usarla-davvero&#34;&gt;Usarla davvero
&lt;/h2&gt;&lt;p&gt;Una SBOM archiviata e mai consultata è teatro della conformità. Il valore sta nell&amp;rsquo;uso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Risposta ai CVE&lt;/strong&gt;: esce una vulnerabilità su &lt;code&gt;libxyz 1.4&lt;/code&gt;? Una query sulle SBOM archiviate dice
in minuti &lt;em&gt;quali&lt;/em&gt; servizi la contengono. La caccia di Log4Shell diventa un filtro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy di ingresso&lt;/strong&gt;: l&amp;rsquo;admission control può rifiutare un&amp;rsquo;immagine &lt;em&gt;senza&lt;/em&gt; SBOM o con componenti
vietati (licenze incompatibili, pacchetti in blocklist).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoraggio continuo&lt;/strong&gt;: le SBOM si ri-scansionano contro i database aggiornati, così si scoprono
CVE &lt;em&gt;nuovi&lt;/em&gt; su software già in produzione da mesi.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;il-limite-onesto-profondità&#34;&gt;Il limite onesto: profondità
&lt;/h2&gt;&lt;p&gt;Una SBOM è buona quanto il generatore che la produce. Alcuni componenti sfuggono: binari statici,
dipendenze incluse a mano, codice generato. La SBOM non è una verità magica, è una &lt;em&gt;misura&lt;/em&gt; della tua
visibilità — e il primo passo per migliorarla è vedere dove è incompleta.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; se la SCA già scansiona le dipendenze e trova i CVE, perché serve anche produrre e archiviare una SBOM? Non è informazione duplicata?&lt;/summary&gt;
&lt;p&gt;Si sovrappongono sull&#39;input — entrambe partono dall&#39;elenco dei componenti — ma rispondono a due domande
diverse in due momenti diversi, e averne una sola lascia scoperto l&#39;altro. La SCA è un&#39;analisi che fai
&lt;em&gt;ora&lt;/em&gt;, nella pipeline, e ti dice &#34;questo artefatto, oggi, contiene questi CVE noti&#34;: è puntuale e
legata al momento della build. La SBOM è un &lt;em&gt;inventario persistente e interrogabile&lt;/em&gt; che
sopravvive alla build e viaggia con l&#39;artefatto in produzione. La differenza si vede nel caso che conta di
più: un CVE che &lt;em&gt;non esisteva&lt;/em&gt; quando hai fatto la build. La SCA di allora non poteva trovarlo,
perché il database non lo conosceva ancora. Sei mesi dopo esce il nuovo Log4Shell: con la sola SCA dovresti
ricostruire o re-scansionare ogni artefatto per sapere chi è colpito, ammesso di sapere ancora
esattamente cosa gira dove. Con le SBOM archiviate e indicizzate, invece, fai una query — &#34;chi contiene
libxyz sotto la 1.5?&#34; — e hai la lista in minuti, senza toccare le build. In più la SBOM serve a cose che
la SCA non copre: la verifica all&#39;ingresso (l&#39;admission control rifiuta ciò che non ha una SBOM o ha
componenti vietati), la conformità delle licenze, e la provenienza. Il modo giusto di vederle: la SCA è
l&#39;&lt;em&gt;azione&lt;/em&gt; di cercare vulnerabilità, la SBOM è il &lt;em&gt;dato&lt;/em&gt; che rende quella ricerca possibile
per sempre, anche sui CVE che non erano ancora stati scoperti. Si alimentano a vicenda.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;La SBOM è la distinta base del software: sai cosa spedisci, quindi sai in minuti se un nuovo CVE ti
riguarda. Si genera nella build, si firma, viaggia con l&amp;rsquo;artefatto e si interroga nel tempo. Ma sapere
&lt;em&gt;cosa&lt;/em&gt; c&amp;rsquo;è dentro un artefatto non basta se non possiamo fidarci di &lt;em&gt;come&lt;/em&gt; è stato costruito. Un
attaccante che compromette la pipeline può iniettare codice senza toccare il sorgente. Difendere la
catena di costruzione è il prossimo tema: SLSA, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
