<?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>Tools | Haksung</title><link>https://haksungjang.github.io/en/tags/tools/</link><description>Haksung Jang — Open Source Program Manager at SK telecom</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 09 Aug 2026 17:03:59 +0900</lastBuildDate><atom:link href="https://haksungjang.github.io/en/tags/tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Tools</title><link>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/</link><pubDate>Sun, 09 Aug 2026 17:03:59 +0900</pubDate><guid>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/</guid><description>Introduces the key features and usage of open source tools that generate and analyze AI SBOMs, with actual execution screens.</description><content:encoded>&lt;![CDATA[<p>This section covers open source tools that automate AI SBOM compliance. It summarizes each tool&rsquo;s key
features, installation, and usage together with actual execution results. This elaborates, tool by tool, on
the categories seen in the automation maturity map in<a href="/en/docs/ai-sbom_guide/2-ai-extension/3-ai-sbom/">3.9 AI SBOM</a>.</p><p>There is a boundary worth stating honestly. Tools generate a BOM automatically, but they cannot guarantee
that the license information in the generated BOM is accurate or that no components are missing. In the tool
comparison below, OWASP AIBOM Generator fills in license information from model cards, while cdxgen quickly
identifies dependencies but leaves the license field empty. Look at this difference when choosing a tool.</p><h2 id="tools-at-a-glance">Tools at a Glance</h2><table><thead><tr><th>Tool</th><th>Input</th><th>Output</th><th>Strengths</th><th>Covered In</th></tr></thead><tbody><tr><td>OWASP AIBOM Generator</td><td>Hugging Face model ID</td><td>CycloneDX 1.6/1.7</td><td>Model card and license metadata, completeness score</td><td><a href="/en/docs/ai-sbom_guide/5-tools/1-aibom-generator/">Go to section</a></td></tr><tr><td>cdxgen</td><td>Project directory, model files</td><td>CycloneDX</td><td>Automatic dependency identification, CI/CD integration</td><td><a href="/en/docs/ai-sbom_guide/5-tools/2-cdxgen/">Go to section</a></td></tr><tr><td>Lab700x, Trivy, Syft</td><td>Model binaries, containers, virtual environments</td><td>Reports, SBOM</td><td>Static model analysis, inference server and package identification</td><td><a href="/en/docs/ai-sbom_guide/5-tools/3-scanners/">Go to section</a></td></tr></tbody></table><p>Each tool automates part of the generation, analysis, or management stage. No single tool solves everything,
so combine tools that generate AI SBOMs (OWASP AIBOM Generator, cdxgen) with tools that analyze security
(Lab700x, Trivy) and a tool that manages them
(<a href="https://openchain-project.github.io/OpenChain-KWG/guide/tools/7-dependency-track/">Dependency-Track</a>).</p>
]]></content:encoded></item><item><title>4. Tools</title><link>https://haksungjang.github.io/en/docs/opensource_for_enterprise/4-tool/</link><pubDate>Sun, 09 Aug 2026 17:03:59 +0900</pubDate><guid>https://haksungjang.github.io/en/docs/opensource_for_enterprise/4-tool/</guid><description>1. Source Code Scanning Tools Source code scanning tools can be used in the open source identification and inspection stage of the open source process. Source code scanning tools help identify the open source included in supplied software and extract license and copyright information. These tools range from free open source-based tools to commercial tools. Each tool has its own strengths, but no tool offers a perfect feature set that solves every problem. An enterprise must therefore choose a tool suited to the characteristics and requirements of its supplied software.</description><content:encoded>&lt;![CDATA[<h2 id="1-source-code-scanning-tools">1. Source Code Scanning Tools</h2><p>Source code scanning tools can be used in the open source identification and inspection stage of the open source process. Source code scanning tools help identify the open source included in supplied software and extract license and copyright information. These tools range from free open source-based tools to commercial tools. Each tool has its own strengths, but no tool offers a perfect feature set that solves every problem. An enterprise must therefore choose a tool suited to the characteristics and requirements of its supplied software.</p><p>Many enterprises use these automated source code scanning tools together with manual review. Two major open source source code scanning tools are introduced here.</p><h3 id="1-fossology">(1) FOSSology</h3><p><a href="https://www.fossology.org/">FOSSology</a> is an open source project managed by the Linux Foundation, a source code scanning tool that supports a license compliance workflow.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 484px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/fossology_hu_464a11d99cc93636.png" width="474" height="231"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://www.fossology.org/</i></center></p></figcaption></figure><p>Key features:</p><ul><li>Source code scanning and license identification</li><li>Extraction of license and copyright information</li><li>Web-based user interface</li><li>Support for analyzing large codebases</li></ul><p>FOSSology is free for enterprises to use and receives continuous improvement and support from the open source community.</p><p>For how to install and use FOSSology, refer to the<a href="https://openchain-project.github.io/OpenChain-KWG/guide/governance_iso5230/appendix/3-tools/fossology/">FOSSology guide</a>.</p><h3 id="2-scanoss">(2) SCANOSS</h3><p><a href="https://www.scanoss.com/">SCANOSS</a> is a platform for identifying and managing open source software components.</p><p>Key features:</p><ul><li>Fast source code scanning and open source component identification</li><li>License and vulnerability information</li><li>Integration support via API</li><li>Generation of the SBOM (Software Bill of Materials)</li></ul><p>SCANOSS offers both a free and a paid version, and supports both cloud-based service and on-premises solutions.</p><p>These source code scanning tools can be used to effectively identify and manage the open source components in supplied software. However, rather than relying entirely on the tool&rsquo;s results, expert review and judgment by program participants must also be part of the process.</p><h2 id="2-dependency-analysis-tools">2. Dependency Analysis Tools</h2><p>Modern software development commonly uses build environments that support package managers such as<a href="https://gradle.org/">Gradle</a> and<a href="https://maven.apache.org/">Maven</a>. In these build environments, dependency libraries needed at build time are fetched from a remote repository even without the source code, and used to compose the supplied software. These dependency libraries are included in the supplied software but are not detected by source code scanning tools. It is therefore important to use tools for dependency analysis.</p><h3 id="1-oss-review-toolkit">(1) OSS Review Toolkit</h3><p>The<a href="https://github.com/oss-review-toolkit/ort">OSS Review Toolkit (ORT)</a> is a suite of tools for automating open source license compliance. ORT provides a dependency analysis tool called the Analyzer.</p><p>Key features of the Analyzer:</p><ul><li>Support for various package managers (Maven, Gradle, NPM, etc.)</li><li>Generation of a project&rsquo;s dependency tree</li><li>Extraction of license and copyright information</li><li>Generation of reports in SPDX format</li></ul><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 650px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/ort_hu_f7c8c311edcd119b.png" width="640" height="144"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://github.com/oss-review-toolkit/ort#analyzer</i></center></p></figcaption></figure><h3 id="2-fosslight-dependency-scanner">(2) FOSSLight Dependency Scanner</h3><p><a href="https://github.com/fosslight/fosslight_dependency_scanner">FOSSLight Dependency Scanner</a>, developed by<a href="https://www.lg.com/">LG Electronics</a> and released as open source, is a dependency analysis tool that supports various package managers.</p><p>Key features:</p><ul><li>Support for various package managers including Gradle, Maven, NPM, PIP, Pub, and Cocoapods</li><li>Extraction of open source license and version information</li><li>Generation of the SBOM (Software Bill of Materials)</li></ul><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 609px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/fosslightdependency_hu_4834b8de5b8621b1.png" width="599" height="409"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://fosslight.org/ko/scanner/</i></center></p></figcaption></figure><p>These dependency analysis tools can be used to accurately identify the open source components included in supplied software and generate an SBOM. This helps meet the requirements of ISO/IEC 5230 and ISO/IEC 18974.</p><h2 id="3-open-source-governance--sbom-management-tools">3. Open Source Governance / SBOM Management Tools</h2><p>Open source governance and SBOM (Software Bill of Materials) management are essential for effective open source license compliance and security assurance. The ISO/IEC 5230 and ISO/IEC 18974 standards require documenting and retaining records of the open source software components included in supplied software.</p><div class="alert alert-success" role="alert"><div class="h4 alert-heading" role="heading">ISO/IEC 5230 - License Compliance</div><ul><li>3.3.1.2 - Open source component records for the supplied software that demonstrates the documented procedure was properly followed.<br><code>Open source component records for the supplied software that demonstrate that the documented procedure was properly followed</code></li></ul></div><div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">ISO/IEC 18974 - Security Assurance</div><ul><li>3.3.1.2: Open Source Software Component Records for the Supplied Software that demonstrates the documented procedure was properly followed.<br><code>Open source software component records for the supplied software that demonstrate that the documented procedure was properly followed</code></li></ul></div><p>An SBOM can be managed even with a spreadsheet program, but manual management becomes difficult as the number of supplied software products and versions grows. Introducing an automated open source tool is therefore efficient.</p><h3 id="1-sw360">(1) SW360</h3><p><a href="https://github.com/eclipse-sw360/sw360">SW360</a> is an open source project sponsored by the Eclipse Foundation that provides the ability to track the open source inventory for each piece of supplied software.</p><p><img src="/docs/opensource_for_enterprise/4-tool/sw360project.png" alt=""/><p>Key features:</p><ul><li>Project, component, and license management</li><li>SBOM generation and management</li><li>Vulnerability management</li><li>Tracking of license obligations</li></ul><p>For how to install and use SW360, see the<a href="https://openchain-project.github.io/OpenChain-KWG/guide/governance_iso5230/appendix/3-tools/sw360/">SW360 guide</a>.</p><h3 id="2-fosslight">(2) FOSSLight</h3><p><a href="https://fosslight.org/">FOSSLight</a> is a comprehensive open source management tool developed by<a href="https://www.lg.com/">LG Electronics</a> and released as open source.</p><p>Key features:</p><ul><li>SBOM generation and management</li><li>Open source license compliance checks</li><li>Vulnerability management</li><li>Open source notice generation</li></ul><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 910px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/fosslightproject_hu_1eea98ab2bdc57cd.png" width="900" height="289"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://fosslight.org/fosslight-guide/started/2_try/4_project.html</i></center></p></figcaption></figure><p>LG Electronics has used FOSSLight for years to manage SBOMs company-wide, and released it as open source in June 2021. It provides a Korean-language guide to help domestic enterprises use it.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 849px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/fosslight_hu_ccc47fe0e94f67ac.png" width="839" height="600"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://fosslight.org/</i></center></p></figcaption></figure><p>Using these tools, an enterprise can effectively carry out open source governance and manage its SBOM, and can meet the requirements of ISO/IEC 5230 and ISO/IEC 18974.</p><h2 id="4-open-source-security-vulnerability-management-tools">4. Open Source Security Vulnerability Management Tools</h2><p>To effectively manage known vulnerabilities or newly discovered vulnerabilities included in supplied software, an enterprise must build an automated tool environment. Three major open source security vulnerability management tools are introduced here.</p><h3 id="1-owasp-dependency-check">(1) OWASP Dependency-Check</h3><p><a href="https://owasp.org/www-project-dependency-check/">OWASP Dependency-Check</a> is an open source tool that analyzes a project&rsquo;s dependencies to detect known vulnerabilities.</p><p>Key features:</p><ul><li>Support for various languages and package managers (Java, .NET, JavaScript, Ruby, etc.)</li><li>Integration with the CVE (Common Vulnerabilities and Exposures) database</li><li>Easy integration with CI/CD pipelines</li><li>Generation of reports in various formats such as HTML, XML, CSV, and JSON</li></ul><h3 id="2-sw360">(2) SW360</h3><p><a href="https://github.com/eclipse/sw360">SW360</a> is an open source software component management tool managed by the Eclipse Foundation that also provides security vulnerability management features.</p><p>Key features:</p><ul><li>Automatic vulnerability checks for registered releases</li><li>Periodic collection of CVE information (scheduled every 24 hours)</li><li>Viewing security vulnerabilities by project</li><li>Tracking the impact of newly published vulnerabilities on existing products</li></ul><p>For how to manage security vulnerabilities with SW360, refer to the<a href="https://openchain-project.github.io/OpenChain-KWG/guide/governance_iso5230/appendix/3-tools/sw360/">SW360 guide</a>.</p><h3 id="3-fosslight">(3) FOSSLight</h3><p><a href="https://fosslight.org/ko/">FOSSLight</a> similarly acquires security vulnerability information automatically, automatically checks project information where a security vulnerability has been detected, and provides notifications such as email when necessary.</p><p>Using these tools, an enterprise can effectively manage open source security vulnerabilities while meeting the requirements of ISO/IEC 18974.</p><h2 id="5-open-source-compliance-artifact-generation-tools">5. Open Source Compliance Artifact Generation Tools</h2><p>The open source notice, a key open source compliance artifact, is a document that provides the copyright and license information of the open source included in supplied software. An open source notice can be written manually, but it is more efficient to use a tool that generates it automatically.</p><h3 id="1-onot">(1) onot</h3><p><a href="https://www.sktelecom.com/">SK telecom</a> has released as open source, under the name<a href="https://github.com/sktelecom/onot">onot</a>, the tool it uses internally to automatically generate open source notices.<a href="https://www.kakaocorp.com/">Kakao</a> also participated in the joint development by contributing key features.</p><p><img src="/docs/opensource_for_enterprise/4-tool/onot.png" alt=""/><center><i>How to install onot</i></center><br><p><code>onot</code> is a tool that automatically converts an SBOM written in the<a href="https://spdx.dev/">SPDX</a> document format into an open source notice format. It is a Python program that is lightweight and simple to use.</p><p><img src="/docs/opensource_for_enterprise/4-tool/noticesample.png" alt=""/><center><i>Sample open source notice generated by onot</i></center><br><h3 id="2-fosslight-1">(2) FOSSLight</h3><p><a href="https://fosslight.org/">FOSSLight</a> also provides a feature that automatically generates an open source notice based on the SBOM it has acquired.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 910px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/fosslightnotice_hu_a4dc2384954af939.png" width="900" height="394"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://fosslight.org/fosslight-guide/started/2_try/4_project.html</i></center></p></figcaption></figure><p>Using these tools makes it possible to automate and standardize the process of generating open source notices, raising the efficiency and accuracy of the open source license compliance process. This also helps meet the requirements of ISO/IEC 5230 and ISO/IEC 18974.</p><h2 id="6-archiving-open-source-compliance-artifacts">6. Archiving Open Source Compliance Artifacts</h2><p>Systematically archiving and managing open source compliance artifacts is very important for open source license compliance. In particular, for licenses such as GPL and LGPL that require source code disclosure, the source code must be available for at least three years after the distribution of the supplied software.</p><p>To this end, the ISO/IEC 5230 standard requires a documented procedure for archiving copies of the compliance artifacts of distributed software, as follows.</p><div class="alert alert-success" role="alert"><div class="h4 alert-heading" role="heading">ISO/IEC 5230 - License Compliance</div><ul><li>3.4.1.2 - A documented procedure for archiving copies of the compliance artifacts of the supplied software - where the archive is planned to exist for a reasonable period of time (Determined by domain, legal jurisdiction and/or customer contracts) since the last offer of the supplied software; or as required by the identified licenses (whichever is longer). Records exist that demonstrate the procedure has been properly followed.<br><code>A documented procedure for archiving copies of the compliance artifacts of distributed software - the archived copies must be kept for a reasonable period after the last offer of the distributed software, or for the period required by the identified licenses, whichever is longer. Records must exist that demonstrate this procedure has been properly followed.</code></li></ul></div><p>To this end, an enterprise must build a system to safely archive its open source compliance artifacts and disclose them externally when necessary.</p><h3 id="1-github-pages">(1) GitHub Pages</h3><p><a href="https://pages.github.com/">GitHub Pages</a> is a service that lets you host a website directly from a GitHub repository. It can be used to archive and publish open source compliance artifacts.</p><p>The way to archive open source compliance artifacts using GitHub Pages is as follows:</p><ol><li>Create a dedicated repository on GitHub</li><li>Upload the open source notice and source code to the repository</li><li>Activate the website through GitHub Pages settings</li><li>Configure it so it can be accessed externally through a public URL</li></ol><p>Using GitHub Pages has the following benefits:</p><ul><li>Free to use</li><li>Provides version control</li><li>High availability and stability</li><li>Easy to update and manage</li></ul><p>This tool environment can be seen in reference on SK telecom&rsquo;s open source website.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 910px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/sktcompliance_hu_98c52e8252e285fe.png" width="900" height="313"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://sktelecom.github.io/compliance/</i></center></p></figcaption></figure><p>This website was developed as open source, and its source code is public, so other enterprises can easily build a similar environment.</p><figure class="card rounded p-2 td-post-card mb-4 mt-4" style="max-width: 910px"><img class="card-img-top" src="/docs/opensource_for_enterprise/4-tool/sktgithub_hu_ed0a7b008539b471.png" width="900" height="352"><figcaption class="card-body px-0 pt-2 pb-0"><p class="card-text"><center><i>https://github.com/sktelecom/sktelecom.github.io</i></center></p></figcaption></figure><p>By using GitHub Pages to archive and publish open source compliance artifacts, an enterprise can effectively fulfill its open source license obligations and improve transparency.</p><h2 id="7-integration-with-continuous-integrationdeployment-cicd-tools">7. Integration with Continuous Integration/Deployment (CI/CD) Tools</h2><p>Integrating open source compliance and security assurance activities into a continuous integration/deployment (CI/CD) pipeline enables automated inspection and management throughout the development process. This makes it possible to discover and resolve open source-related issues early.</p><h3 id="1-jenkins-plugins">(1) Jenkins Plugins</h3><p><a href="https://www.jenkins.io/">Jenkins</a> is a widely used open source automation server that can integrate with open source compliance and security assurance tools through various plugins.</p><p>Major Jenkins plugins:</p><ul><li><a href="https://plugins.jenkins.io/fossology/">FOSSology Plugin</a>: Integrates FOSSology scans into a Jenkins pipeline.</li><li><a href="https://plugins.jenkins.io/dependency-check-jenkins-plugin/">OWASP Dependency-Check Plugin</a>: Automates checks for known vulnerabilities or newly discovered vulnerabilities.</li><li><a href="https://github.com/eclipse/sw360/tree/main/jenkins-pipeline">SW360 Plugin</a>: Integrates SW360 with Jenkins to automate SBOM management.</li></ul><p>Example Jenkins pipeline:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-groovy" data-lang="groovy"><span style="display:flex;"><span><span style="color:#000">pipeline</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">agent</span><span style="color:#000">any</span></span></span><span style="display:flex;"><span><span style="color:#000">stages</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">stage</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">'Checkout'</span><span style="color:#ce5c00;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">steps</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">checkout</span><span style="color:#000">scm</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000">stage</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">'Dependency Scan'</span><span style="color:#ce5c00;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">steps</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">dependencyCheck</span><span style="color:#f57900">additionalArguments:</span><span style="color:#4e9a06">''</span><span style="color:#ce5c00;font-weight:bold">,</span><span style="color:#f57900">odcInstallation:</span><span style="color:#4e9a06">'Default'</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000">stage</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">'License Scan'</span><span style="color:#ce5c00;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">steps</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">fossology</span><span style="color:#ce5c00;font-weight:bold">()</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000">stage</span><span style="color:#ce5c00;font-weight:bold">(</span><span style="color:#4e9a06">'SBOM Update'</span><span style="color:#ce5c00;font-weight:bold">)</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">steps</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">sw360UpdateProject</span><span style="color:#ce5c00;font-weight:bold">()</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000">post</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">always</span><span style="color:#ce5c00;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#000">dependencyCheckPublisher</span><span style="color:#f57900">pattern:</span><span style="color:#4e9a06">'**/dependency-check-report.xml'</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span></span></span></code></pre></div><p>This pipeline sequentially performs source code checkout, dependency vulnerability scanning, license scanning, and SBOM update.</p><h3 id="2-gitlab-cicd-pipeline">(2) GitLab CI/CD Pipeline</h3><p><a href="https://docs.gitlab.com/ee/ci/">GitLab CI/CD</a> is a continuous integration/deployment tool built into GitLab, with pipelines defined through a<code>.gitlab-ci.yml</code> file.</p><p>Example GitLab CI/CD pipeline:</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">stages</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">scan</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">analyze</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">report</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">dependency_scan</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">stage</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">scan</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">docker run --rm -v $(pwd):/src owasp/dependency-check --scan /src --format "ALL" --out /src/reports</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">license_scan</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">stage</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">scan</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">docker run --rm -v $(pwd):/project fossology/fossology:latest /usr/local/fossology/fo_cli -c /project</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">sbom_update</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">stage</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">analyze</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">sw360 update-project</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">vulnerability_report</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">stage</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">report</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">generate_vulnerability_report</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">artifacts</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">reports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">dependency_scanning</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">reports/dependency-check-report.json</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">license_report</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">stage</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">report</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">script</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/>-<span style="color:#000">generate_license_report</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">artifacts</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">reports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/></span></span><span style="display:flex;"><span><span style="color:#f8f8f8"/><span style="color:#204a87;font-weight:bold">license_scanning</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"/><span style="color:#000">reports/license-scan-report.json</span><span style="color:#f8f8f8"/></span></span></code></pre></div><p>This pipeline performs dependency vulnerability scanning, license scanning, SBOM update, and generation of vulnerability and license reports.</p><p>By integrating these processes into a CI/CD pipeline, an enterprise can automate open source compliance and security assurance activities and integrate them smoothly into the development workflow. This helps effectively meet the requirements of ISO/IEC 5230 and ISO/IEC 18974.</p><h2 id="8-summary">8. Summary</h2><p>Once this tool environment is in place, the key requirements of the ISO/IEC 5230 and ISO/IEC 18974 standards can be met.</p><p><img src="/docs/opensource_for_enterprise/4-tool/toolno.png" alt=""/><p>Using these tools brings the following benefits:</p><ol><li><p>Source code scanning and dependency analysis tools make it possible to accurately identify the open source included in supplied software and determine its license.</p></li><li><p>Open source governance and SBOM management tools make it possible to systematically manage and track the open source components in supplied software.</p></li><li><p>Open source security vulnerability management tools make it possible to continuously monitor and respond to known vulnerabilities or newly discovered vulnerabilities.</p></li><li><p>Open source compliance artifact generation and archiving tools make it possible to efficiently generate and manage the documents needed to comply with license obligations.</p></li><li><p>Integration with CI/CD tools makes it possible to integrate the open source management process into the development workflow and automate it.</p></li></ol><p>Building this tool environment allows an enterprise to carry out open source license compliance and security assurance activities in a systematic and efficient way, and provides significant help in meeting the requirements of ISO/IEC 5230 and ISO/IEC 18974.</p><p>By making effective use of open source management tools, an enterprise can minimize the legal risk that comes with using open source, respond promptly to security vulnerabilities, and build a transparent and trustworthy software supply chain. This will ultimately lead to improved competitiveness and greater customer trust for the enterprise.</p>
]]></content:encoded></item><item><title>Model and Container Scanners (Lab700x, Trivy, Syft)</title><link>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/3-scanners/</link><pubDate>Sun, 09 Aug 2026 17:03:59 +0900</pubDate><guid>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/3-scanners/</guid><description>Introduces the key features and usage of security scanners that analyze AI model binaries, inference servers, and AI packages.</description><content:encoded>&lt;![CDATA[<p>This page introduces analysis and identification tools that complement AI SBOM generation. Where
the generation tools (OWASP AIBOM Generator, cdxgen) record &ldquo;what is in it,&rdquo; these tools look at
&ldquo;whether it is safe&rdquo; and &ldquo;what version it is.&rdquo; The commands and features below are organized based
on each tool&rsquo;s official documentation (the tools actually run in this guide are<a href="/en/docs/ai-sbom_guide/5-tools/1-aibom-generator/">OWASP AIBOM Generator</a> and<a href="/en/docs/ai-sbom_guide/5-tools/2-cdxgen/">cdxgen</a>).</p><h2 id="lab700x-ai-sbom-scanner--static-analysis-of-model-binaries">Lab700x AI SBOM Scanner — Static Analysis of Model Binaries</h2><p>A tool that statically analyzes AI model files themselves to extract information. It performs deep
introspection on model binaries such as<code>.safetensors</code>,<code>.pt</code> (PyTorch), and<code>.pkl</code> (Pickle) without
executing them.</p><ul><li><strong>Key features</strong>: Because it examines internal structure without executing the model, it can
detect malicious code hidden in a model file (such as Pickle injection), vulnerabilities, or
license violations before deployment.</li><li><strong>Role in AI SBOM</strong>: Used to inspect externally sourced models at the intake gate. Combined with
the inbound metadata enforcement of<a href="/en/docs/ai-sbom_guide/2-ai-extension/1-license-obligations/">3.5 License Obligations</a>, it lets metadata
verification and binary safety checking be performed together.</li></ul><p>Pickle-format models carry a significant supply-chain risk because arbitrary code can execute during
deserialization. Inspecting the model without executing it is the core of this tool.</p><h2 id="trivy--scanning-llm-inference-server-containers">Trivy — Scanning LLM Inference Server Containers</h2><p>An open source scanner from Aqua Security that checks vulnerabilities in container images and
filesystems. It recently added awareness of AI model infrastructure.</p><ul><li><strong>Key features</strong>: Scans LLM inference server containers such as Ollama and LocalAI to collect the
open source libraries they contain and their container vulnerabilities.</li><li><strong>Usage</strong>:</li></ul><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Scan a container image (vulnerabilities)</span></span></span><span style="display:flex;"><span>trivy image ollama/ollama:latest</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Generate an SBOM (CycloneDX)</span></span></span><span style="display:flex;"><span>trivy image --format cyclonedx --output sbom.json ollama/ollama:latest</span></span></code></pre></div><p>Used in environments that deploy AI models as containers, to leave a record of the inference
server&rsquo;s vulnerabilities and components as an SBOM.</p><h2 id="syft--identifying-ai-packages-and-virtual-environments">Syft — Identifying AI Packages and Virtual Environments</h2><p>An SBOM generator from Anchore that scans containers, filesystems, and virtual environments.</p><ul><li><strong>Key features</strong>: Analyzes Python virtual environments to collect the exact versions of packages
used to run AI, such as PyTorch and Transformers. Outputs in SPDX and CycloneDX format.</li><li><strong>Usage</strong>:</li></ul><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Scan a directory and output CycloneDX</span></span></span><span style="display:flex;"><span>syft scan dir:. -o cyclonedx-json<span style="color:#ce5c00;font-weight:bold">=</span>sbom.json</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Scan a container image</span></span></span><span style="display:flex;"><span>syft scan registry:python:3.11-slim -o spdx-json</span></span></code></pre></div><p>Its role overlaps with cdxgen&rsquo;s, so an organization already using the Anchore toolset (Syft, Grype)
would naturally generate the dependency SBOM of an AI application with Syft and check vulnerabilities
with Grype.</p><h2 id="recommended-tool-combination">Recommended Tool Combination</h2><p>No single tool solves everything. In practice, combine tools by dividing up their roles.</p><table><thead><tr><th>Purpose</th><th>Tool</th></tr></thead><tbody><tr><td>Model metadata AIBOM generation</td><td>OWASP AIBOM Generator</td></tr><tr><td>Dependency SBOM generation</td><td>cdxgen, Syft</td></tr><tr><td>Model binary safety inspection</td><td>Lab700x AI SBOM Scanner</td></tr><tr><td>Inference server / container vulnerabilities</td><td>Trivy</td></tr><tr><td>SBOM storage and vulnerability monitoring</td><td><a href="https://openchain-project.github.io/OpenChain-KWG/guide/tools/7-dependency-track/">Dependency-Track</a></td></tr></tbody></table><h2 id="see-also">See Also</h2><ul><li>AI SBOM generation and management procedure:<a href="/en/docs/ai-sbom_guide/2-ai-extension/3-ai-sbom/">3.9 AI SBOM</a></li><li>Execution results of generation tools:<a href="/en/docs/ai-sbom_guide/5-tools/1-aibom-generator/">OWASP AIBOM Generator</a>,<a href="/en/docs/ai-sbom_guide/5-tools/2-cdxgen/">cdxgen</a></li></ul>
]]></content:encoded></item><item><title>cdxgen</title><link>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/2-cdxgen/</link><pubDate>Sun, 09 Aug 2026 17:03:59 +0900</pubDate><guid>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/2-cdxgen/</guid><description>Explains how to use the AI BOM mode of OWASP cdxgen, which generates a CycloneDX SBOM from projects and models, together with actual execution output.</description><content:encoded>&lt;![CDATA[<h2 id="overview">Overview</h2><p>cdxgen is the official SBOM generator of the OWASP CycloneDX project. It supports more than 20
languages and package managers, and the latest version offers a dedicated AI BOM mode. It
automatically identifies the dependencies of AI applications (PyTorch, Transformers, and so on) and
integrates well with CI/CD pipelines.</p><p>From an AI SBOM standpoint, cdxgen&rsquo;s strength is speed and automation. Its weakness is that it does
not fill in license information in a default run. This trait shows up in the execution result below.
Where OWASP AIBOM Generator centers on model card metadata, cdxgen centers on code and dependencies.
Using both together covers both models and dependencies.</p><h2 id="key-features">Key Features</h2><ul><li>Identifies dependencies from source code and container images to generate a CycloneDX SBOM.</li><li>Includes AI/ML metadata (formulation) with AI BOM mode (<code>-t ai</code>).</li><li>Takes Hugging Face model URLs, Modelfiles, and GGUF artifacts directly as input.</li><li>Automatically submits SBOMs to a Dependency-Track server for continuous management.</li></ul><h2 id="installation">Installation</h2><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># One-off run (requires Node.js)</span></span></span><span style="display:flex;"><span>npx @cyclonedx/cdxgen@latest --version</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Global install</span></span></span><span style="display:flex;"><span>npm install -g @cyclonedx/cdxgen</span></span></code></pre></div><h2 id="usage--generating-an-ai-bom">Usage — Generating an AI BOM</h2><p>Run in AI BOM mode from the AI project directory.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Generate an AI BOM</span></span></span><span style="display:flex;"><span>cdxgen -t ai -o aibom.json .</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Generate including AI/ML metadata (formulation)</span></span></span><span style="display:flex;"><span>cdxgen -t ai --include-formulation -o aibom.json .</span></span></code></pre></div><p>Below is the actual result of running cdxgen against a summarization app (<code>transformers</code>,<code>torch</code>
dependencies) that loads a pretrained model (<code>facebook/bart-large-cnn</code>). It automatically identifies
5 dependencies and produces a CycloneDX 1.7 BOM.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ cdxgen -t python --include-formulation -o aibom.json .</span></span><span style="display:flex;"><span>CycloneDX Generator 12.5.1 (Node.js)</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span>Generated components — 5 entries (CycloneDX 1.7):</span></span><span style="display:flex;"><span> transformers 4.44.2 pkg:pypi/transformers@4.44.2 license: empty</span></span><span style="display:flex;"><span> torch 2.4.0 pkg:pypi/torch@2.4.0 license: empty</span></span><span style="display:flex;"><span> numpy 1.26.4 pkg:pypi/numpy@1.26.4 license: empty</span></span><span style="display:flex;"><span> tokenizers 0.19.1 pkg:pypi/tokenizers@0.19.1 license: empty</span></span><span style="display:flex;"><span> huggingface-hub 0.24.6 pkg:pypi/huggingface-hub@0.24.6 license: empty</span></span></code></pre></div><p><strong>Figure 1.</strong> cdxgen execution output<em>(cdxgen 12.5.1, run 2026-06-13)</em></p><p>One of the generated components looks like this. The identification evidence is filled in, but the<code>licenses</code> field is empty.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"transformers"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"version"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"4.44.2"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"purl"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"pkg:pypi/transformers@4.44.2"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"library"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"evidence"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"identity"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"field"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"purl"</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">"confidence"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#0000cf;font-weight:bold">0.5</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"methods"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[{</span><span style="color:#204a87;font-weight:bold">"technique"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"manifest-analysis"</span><span style="color:#000;font-weight:bold">,</span><span style="color:#204a87;font-weight:bold">"value"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"requirements.txt"</span><span style="color:#000;font-weight:bold">}]</span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">]</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div><h2 id="what-the-execution-result-shows">What the Execution Result Shows</h2><div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">cdxgen identifies quickly, but a human must fill in the license</div><p>cdxgen quickly identified 5 dependencies from<code>requirements.txt</code>, but the<code>licenses</code> field of each
component is empty. Also, the pretrained model<code>facebook/bart-large-cnn</code> that the app loads was not
captured in the BOM by code scanning alone. It must be collected separately as inbound material and
added. A realistic combination is to build the dependency skeleton quickly with cdxgen, have a human
verify and fill in the licenses, and generate the model separately with OWASP AIBOM Generator before
merging.</p></div><h2 id="see-also">See Also</h2><ul><li>AI SBOM generation and management procedure:<a href="/en/docs/ai-sbom_guide/2-ai-extension/3-ai-sbom/">3.9 AI SBOM</a></li><li>Generator centered on model metadata:<a href="/en/docs/ai-sbom_guide/5-tools/1-aibom-generator/">OWASP AIBOM Generator</a></li><li>SBOM management:<a href="https://openchain-project.github.io/OpenChain-KWG/guide/tools/7-dependency-track/">Dependency-Track</a>,<a href="https://openchain-project.github.io/OpenChain-KWG/guide/tools/8-cdxgen-dt/">cdxgen + Dependency-Track integration</a></li><li>Official:<a href="https://github.com/cdxgen/cdxgen/blob/master/docs/AI_BOM.md">cdxgen AI-BOM documentation</a></li></ul>
]]></content:encoded></item><item><title>OWASP AIBOM Generator</title><link>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/1-aibom-generator/</link><pubDate>Sun, 09 Aug 2026 17:03:59 +0900</pubDate><guid>https://haksungjang.github.io/en/docs/ai-sbom_guide/5-tools/1-aibom-generator/</guid><description>Explains how to use the OWASP tool that generates a CycloneDX-format AI SBOM from a Hugging Face model and scores its completeness, together with actual execution screens.</description><content:encoded>&lt;![CDATA[<h2 id="overview">Overview</h2><p>OWASP AIBOM Generator is an open source tool that takes a Hugging Face model ID as input, fetches
model card metadata, and generates an AI SBOM in CycloneDX format. It is maintained by the OWASP
Gen AI Security Project, and its distinguishing feature is scoring how complete the generated BOM is.</p><p>Where cdxgen identifies dependencies quickly but leaves the license fields empty, this tool fills in
the license, author, and external references recorded in the model card. It works well as a
starting point for the license review required by<a href="/en/docs/ai-sbom_guide/2-ai-extension/1-license-obligations/">3.5 License Obligations</a>.</p><h2 id="key-features">Key Features</h2><ul><li>Fetches metadata from Hugging Face models and generates an AIBOM in both CycloneDX 1.6 and 1.7
format.</li><li>Evaluates the completeness of the generated BOM with a score (0–100) and a profile, broken down
section by section.</li><li>Displays model information, the model card, license, and external references in a human-readable
view.</li><li>Available both as a web UI and a command-line interface (CLI).</li></ul><h2 id="usage-a--web-ui">Usage A — Web UI</h2><p>The simplest approach: just enter a model ID in the browser. Use the Hugging Face Space provided by
the OWASP Gen AI Security Project, or clone the repository and run it locally.</p><p>First, enter a Hugging Face model ID (e.g.,<code>facebook/bart-large-cnn</code>) on the input screen and click
generate.</p><p><img src="/docs/ai-sbom_guide/5-tools/1-aibom-generator/images/input-form.png" alt="OWASP AIBOM Generator input screen"/><p><strong>Figure 1.</strong> OWASP AIBOM Generator input screen<em>(GenAI Security Project, captured 2026-06-13)</em></p><p>Once generation finishes, the result screen shows an AIBOM summary, the completeness assessment,
download buttons (CycloneDX 1.6 and 1.7), AI model information, and the model card. The completeness
assessment at the top of the screen shows at a glance whether the BOM has the minimum fields needed
for identification.</p><p><img src="/docs/ai-sbom_guide/5-tools/1-aibom-generator/images/result-view.png" alt="OWASP AIBOM Generator result screen"/><p><strong>Figure 2.</strong> Generation result screen — model information, license (MIT), completeness assessment
(Basic)<em>(captured 2026-06-13)</em></p><p>The result screen offers a Human-Friendly View along with a field checklist, a score report, and a
JSON view tab. Check the items needed for license obligation review and AI SBOM retention directly
on screen, and download the CycloneDX file.</p><h2 id="usage-b--command-line-cli">Usage B — Command Line (CLI)</h2><p>The CLI is convenient for embedding in CI/CD or batch-processing multiple models. After
installation, pass the model ID as an argument.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Install (a Python virtual environment is recommended)</span></span></span><span style="display:flex;"><span>pip install<span style="color:#4e9a06">"git+https://github.com/GenAI-Security-Project/aibom-generator"</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Generate an AIBOM from a model ID</span></span></span><span style="display:flex;"><span>aibom facebook/bart-large-cnn -o aibom.json</span></span></code></pre></div><p>Below is the actual execution result. It generates CycloneDX 1.6 and 1.7, passes schema
validation, and shows the completeness score broken down by section.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>$ aibom facebook/bart-large-cnn -o aibom.json</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span>✅ Successfully generated CycloneDX 1.6 SBOM — Schema Validation (1.6): Valid</span></span><span style="display:flex;"><span>✅ Successfully generated CycloneDX 1.7 SBOM — Schema Validation (1.7): Valid</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span>📊 Completeness Score: 58.7/100 Profile: Basic</span></span><span style="display:flex;"><span> - Required Fields: 20/20</span></span><span style="display:flex;"><span> - Metadata: 8/20</span></span><span style="display:flex;"><span> - Component Basic: 17.1/20</span></span><span style="display:flex;"><span> - Component Model Card: 6.7/30</span></span><span style="display:flex;"><span> - External References: 10/10</span></span></code></pre></div><p><strong>Figure 3.</strong> CLI execution output<em>(aibom CLI, model facebook/bart-large-cnn, run 2026-06-13)</em></p><p>The model component in the generated BOM has its license and model card filled in. Unlike cdxgen&rsquo;s
output, the<code>licenses</code> field is not empty.</p><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#000;font-weight:bold">{</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"type"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"machine-learning-model"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"bart-large-cnn"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"purl"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"pkg:huggingface/facebook/bart-large-cnn"</span><span style="color:#000;font-weight:bold">,</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"licenses"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[{</span><span style="color:#204a87;font-weight:bold">"license"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"id"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"MIT"</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"authors"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">[{</span><span style="color:#204a87;font-weight:bold">"name"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#4e9a06">"facebook"</span><span style="color:#000;font-weight:bold">}],</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">"modelCard"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#204a87;font-weight:bold">"modelParameters"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#000;font-weight:bold">},</span><span style="color:#204a87;font-weight:bold">"considerations"</span><span style="color:#000;font-weight:bold">:</span><span style="color:#000;font-weight:bold">{</span><span style="color:#000;font-weight:bold">}</span><span style="color:#000;font-weight:bold">}</span></span></span><span style="display:flex;"><span><span style="color:#000;font-weight:bold">}</span></span></span></code></pre></div><h2 id="what-the-execution-result-shows">What the Execution Result Shows</h2><div class="alert alert-info" role="alert"><div class="h4 alert-heading" role="heading">The completeness score depends on the quality of the input metadata</div><p>In the actual run, the completeness score was 58.7/100 (Basic). Required Fields and External
References scored full marks, but the model card score was low at 6.7/30. This is not a limitation
of the tool but a result of the model provider not filling in enough information in the Hugging
Face model card. The tool faithfully fetches whatever metadata exists, but it cannot invent
information that isn&rsquo;t there. When the model card is sparse, a human must verify the source and
supplement it.</p></div><h2 id="see-also">See Also</h2><ul><li>AI SBOM generation and management procedure:<a href="/en/docs/ai-sbom_guide/2-ai-extension/3-ai-sbom/">3.9 AI SBOM</a></li><li>License obligation review:<a href="/en/docs/ai-sbom_guide/2-ai-extension/1-license-obligations/">3.5 License Obligations</a></li><li>Another generation tool:<a href="/en/docs/ai-sbom_guide/5-tools/2-cdxgen/">cdxgen</a></li><li>Official:<a href="https://genai.owasp.org/resource/owasp-aibom-generator/">OWASP AIBOM Generator</a></li></ul>
]]></content:encoded></item></channel></rss>