<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Sécurité on Valérian Pyckaert</title>
    <link>https://valerian-pyckaert.dev/tags/s%C3%A9curit%C3%A9/</link>
    <description>Recent content in Sécurité on Valérian Pyckaert</description>
    <image>
      <title>Valérian Pyckaert</title>
      <url>https://valerian-pyckaert.dev/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://valerian-pyckaert.dev/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Thu, 30 Apr 2026 10:29:03 +0200</lastBuildDate>
    <atom:link href="https://valerian-pyckaert.dev/tags/s%C3%A9curit%C3%A9/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SBOM (Software Bill of Materials)</title>
      <link>https://valerian-pyckaert.dev/posts/sbom/</link>
      <pubDate>Thu, 30 Apr 2026 10:29:03 +0200</pubDate>
      <guid>https://valerian-pyckaert.dev/posts/sbom/</guid>
      <description>Description, outils et utilisation</description>
      <content:encoded><![CDATA[<h2 id="quest-ce-que-cest-">Qu&rsquo;est-ce que c&rsquo;est ?</h2>
<p>Une SBOM (Software Bill of Materials) est un fichier qui liste tous les composants logiciels utilisés dans un projet, y compris leurs versions et leurs dépendances. C&rsquo;est un peu comme une liste d&rsquo;ingrédients pour une recette de cuisine, mais pour les logiciels.</p>
<p>Elles peuvent exister sous plusieurs formats notamment pour les plus connus : <a href="https://cyclonedx.org/">CycloneDX</a>, <a href="https://spdx.org/">SPDX</a>.</p>
<h2 id="les-différents-formats">Les différents formats</h2>
<h3 id="cyclonedx">CycloneDX</h3>
<p>CycloneDX est un format de SBOM conçu pour être facile à lire et à analyser. Il utilise une structure hiérarchique pour représenter les composants logiciels et leurs dépendances, ce qui facilite la compréhension des relations entre les différents éléments d&rsquo;un projet.
Il est notamment développé par la fondation OWASP et est largement utilisé dans l&rsquo;industrie pour la gestion des vulnérabilités et la conformité.</p>
<h3 id="spdx">SPDX</h3>
<p>SPDX (Software Package Data Exchange) quant à lui est un format développé par la Linux Foundation. Il est conçu pour être un standard ouvert et largement adopté pour la représentation des informations sur les composants logiciels, y compris les licences, les vulnérabilités et les dépendances.</p>
<p>Exemple d&rsquo;une SBOM au format SPDX :</p>
<h3 id="lequel-choisir-">Lequel choisir ?</h3>
<p>Le choix entre SPDX et CycloneDX dépend de vos besoins spécifiques en matière de gestion des composants logiciels. Si vous recherchez un format facile à lire et à analyser, CycloneDX peut être un bon choix. Si vous avez besoin d&rsquo;un format plus complet qui inclut des informations sur les licences et les vulnérabilités, SPDX pourrait être plus adapté.</p>
<p>Voici un tableau récapitulatif pour vous aider à choisir :</p>
<table>
  <thead>
      <tr>
          <th>Caractéristique</th>
          <th>SPDX</th>
          <th>CycloneDX</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Facilité de lecture</td>
          <td>Moins lisible pour les humains ❌</td>
          <td>Plus lisible ✅</td>
      </tr>
      <tr>
          <td>Analyse automatisée</td>
          <td>Plus adapté pour l&rsquo;analyse</td>
          <td>Adapté pour l&rsquo;analyse</td>
      </tr>
      <tr>
          <td>Adoption</td>
          <td>Large adoption dans l&rsquo;industrie</td>
          <td>Adoption croissante</td>
      </tr>
      <tr>
          <td>Support des licences</td>
          <td>Oui ✅</td>
          <td>Non ❌</td>
      </tr>
      <tr>
          <td>Support des vulnérabilités</td>
          <td>Oui ✅</td>
          <td>Non ❌</td>
      </tr>
  </tbody>
</table>
<h2 id="comment-la-générer-">Comment la générer ?</h2>
<p>Un de mes outils préférés pour générer des SBOM est <a href="https://github.com/anchore/syft">Syft</a>, développé par Anchore. Syft est un outil en ligne de commande qui peut analyser les images de conteneurs, les systèmes de fichiers et les projets de code source pour générer des SBOM au format CycloneDX ou SPDX.</p>
<p>Il supporte une multitude de langages et de gestionnaires de paquets.</p>
<p>Les autres standards du marché sont <a href="https://github.com/CycloneDX/cdxgen">cdxgen</a> et <a href="https://trivy.dev/">trivy</a>, ce dernier ayant été impacté par une faille de sécurité récemment, je préfère ne pas l&rsquo;utiliser pour le moment (cf. <a href="https://blog.stephane-robert.info/post/trivy-depot-github-vide/">l&rsquo;excellent article de Stéphane Robert</a> à ce sujet).</p>
<h3 id="installation">Installation</h3>
<p>Sur Linux ou macOS, vous pouvez installer Syft en utilisant Homebrew :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">brew install anchore/syft/syft
</span></span></code></pre></div><p>ou via curl :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh <span class="p">|</span> sh -s -- -b /usr/local/bin
</span></span></code></pre></div><p>Sur Windows j&rsquo;aime utiliser Scoop :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">scoop bucket add main
</span></span><span class="line"><span class="cl">scoop install syft
</span></span></code></pre></div><p>Un petit coup de <code>syft version</code> pour vérifier que tout est bien installé et c&rsquo;est parti !</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">syft version
</span></span><span class="line"><span class="cl">Application:   syft
</span></span><span class="line"><span class="cl">Version:       1.38.0
</span></span><span class="line"><span class="cl">BuildDate:     2025-11-17T17:42:49Z
</span></span><span class="line"><span class="cl">GitCommit:     a033ae525f6c7ef937c6f49513e3403f07a1d6c0
</span></span><span class="line"><span class="cl">GitDescription: v1.38.0
</span></span><span class="line"><span class="cl">Platform:      windows/amd64
</span></span><span class="line"><span class="cl">GoVersion:     go1.25.4
</span></span><span class="line"><span class="cl">Compiler:      gc
</span></span><span class="line"><span class="cl">SchemaVersion: 16.1.0
</span></span></code></pre></div><h3 id="utilisation">Utilisation</h3>
<p><strong>Voici comment générer une SBOM pour une image Docker</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">Le plus simple pour commencer est de s<span class="err">&#39;</span>appuyer sur une image docker standard comme alpine.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="sb">```</span>bash
</span></span><span class="line"><span class="cl">syft alpine:latest -o cyclonedx-json &gt; sbom.json
</span></span></code></pre></div><p><em>Ici la commande pull alpine:latest et génère une SBOM au format CycloneDX en JSON, qui est ensuite redirigée vers un fichier sbom.json.</em></p>
<p><strong>Voici comment générer une SBOM pour un projet de code source</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">syft dir:/path/to/your/project -o cyclonedx-json &gt; sbom.json
</span></span></code></pre></div><p>ou pour cibler sur un fichier en particulier :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">syft file:/path/to/your/project/package.json -o cyclonedx-json &gt; sbom.json <span class="c1"># pour un projet Node.js</span>
</span></span><span class="line"><span class="cl">syft file:/path/to/your/project/pyproject.toml -o cyclonedx-json &gt; sbom.json <span class="c1"># pour un projet Python</span>
</span></span></code></pre></div><h2 id="conclusion">Conclusion</h2>
<p>La SBOM est un outil essentiel pour la gestion des composants logiciels et la sécurité des applications. En fournissant une vue d&rsquo;ensemble claire de tous les composants utilisés dans un projet, elle permet aux équipes de développement et de sécurité de mieux comprendre les risques associés à leurs logiciels et de prendre des mesures proactives pour les atténuer.</p>
<p>Cette SBOM peut ensuite être intégrée dans votre pipeline CI/CD et analysée avec des outils comme Dependency Track pour détecter les vulnérabilités connues et assurer la conformité de vos logiciels.</p>
<p><em>Sources</em></p>
<ul>
<li><a href="https://owasp.org/www-project-cyclonedx/">SBOM - OWASP</a></li>
<li><a href="https://www.nist.gov/itl/sbom">SBOM - NIST</a></li>
<li><a href="https://spdx.dev/">SBOM - SPDX</a></li>
<li><a href="https://github.com/anchore/syft">Syft - Anchore</a></li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
