# Maak een SBOM van je broncode

Source: https://kernwatch.com/nl/sbom-generator · Laatst bijgewerkt: 2026-10-18

Sleep je projectmap hierheen en krijg binnen enkele seconden een softwarestuklijst (SBOM) in CycloneDX- of SPDX-formaat. De analyse draait in deze pagina - je code verlaat je computer nooit.

## Wat hij leest

De generator leest de bestanden die je package managers al schrijven. Lockfiles geven exacte versies en de hele afhankelijkheidsboom; een manifest op zich geeft alleen de directe afhankelijkheden.

| Ecosysteem | Bestanden |
|---|---|
| JavaScript / TypeScript | package-lock.json, npm-shrinkwrap.json, yarn.lock (v1, berry), pnpm-lock.yaml, bun.lock, deno.lock, deno.json, package.json |
| Python | uv.lock, poetry.lock, Pipfile.lock, requirements*.txt, pyproject.toml, environment.yml |
| Go | go.mod |
| Rust | Cargo.lock, Cargo.toml |
| Java / Kotlin / Scala | pom.xml, gradle.lockfile, libs.versions.toml, build.gradle(.kts), build.sbt |
| .NET | packages.lock.json, *.csproj, packages.config, Directory.Packages.props |
| PHP | composer.lock, composer.json |
| Ruby | Gemfile.lock |
| Swift / iOS | Package.resolved, Package.swift, Podfile.lock, Cartfile.resolved |
| Dart / Flutter | pubspec.lock, pubspec.yaml |
| Elixir / Erlang | mix.lock, rebar.lock |
| Haskell, Julia, R, Lua, Zig, OCaml, Perl | cabal.project.freeze, stack.yaml.lock, *.cabal, Manifest.toml, Project.toml, renv.lock, DESCRIPTION, *.rockspec, build.zig.zon, *.opam, cpanfile |
| C/C++ package managers | conan.lock, conanfile.txt, conanfile.py, vcpkg.json, meson .wrap, MODULE.bazel |
| Embedded | platformio.ini, idf_component.yml, dependencies.lock (ESP-IDF), west.yml (Zephyr), library.properties, library.json |
| Nix | flake.lock |
| C/C++ (meegeleverd) | headers van 60 veelgebruikte bibliotheken (zlib, OpenSSL, mbedTLS, wolfSSL, SQLite, lwIP, FreeRTOS, cJSON, curl, fmt, littlefs, ...), herkend aan hun versiemacro's; .gitmodules |
| Buildbestanden (zonder lockfile) | CMake (find_package, pkg_check_modules, target_link_libraries, FetchContent, CPM), -l-vlaggen in Makefiles, qmake, meson, autoconf; bekende #include-headers. Zonder versies vermeld. |
| Webpagina's | CDN-links (unpkg, jsDelivr, cdnjs, esm.sh, code.jquery.com, ...) en meegeleverde jQuery, Bootstrap, Vue, pdf.js en andere bibliotheken, herkend aan hun bannercommentaar |
| Containers | Basisimages in de Dockerfile (FROM) |

Ook bibliotheken die in het project zijn gekopieerd worden gevonden: elke map in third_party/, vendor/, external/ en deps/ en elke map met de naam naam-1.2.3, met naam en versie uit de eigen bestanden. Mappen zoals node_modules, .git, target, buildmappen en virtuele omgevingen worden overgeslagen, en test-, documentatie- en voorbeeldprojecten tellen als ontwikkelafhankelijkheden. Er wordt niets uitgevoerd en geen pakketregister geraadpleegd, dus het resultaat hangt alleen af van de bestanden in de map.

## Desktop- en CI-tool

Dezelfde generator als één programma voor Windows, macOS en Linux - voor grote repository's, scripts en build-pipelines. Het geeft hetzelfde resultaat als deze pagina.

## Vragen

### Wordt mijn broncode geüpload?

Nee. In de browser worden de bestanden gelezen door JavaScript in je eigen tabblad, en de Content-Security-Policy van de pagina verbiedt het versturen van data. De desktoptool werkt offline; hij maakt alleen verbinding met het netwerk als je hem vraagt de SBOM naar Kernwatch te uploaden.

### Welke SBOM-formaten maakt hij?

CycloneDX 1.6 JSON en SPDX 2.3 JSON, de twee veelgebruikte machineleesbare formaten. Beide valideren tegen de officiële schema's en kunnen worden geïmporteerd in Kernwatch en andere SBOM-tools.

### Is deze SBOM genoeg voor de Cyber Resilience Act?

De CRA vraagt om een SBOM in een gangbaar, machineleesbaar formaat die ten minste de afhankelijkheden op het hoogste niveau omvat en bij de technische documentatie wordt bewaard. Een SBOM op basis van lockfiles dekt dat en meer. De CRA verplicht je ook om de kwetsbaarheden af te handelen die later in die componenten opduiken - en dat is wat Kernwatch monitort.

### Waarom hebben sommige componenten geen exacte versie?

Omdat de map alleen een manifest bevat (zoals package.json, pom.xml of een .csproj) zonder lockfile. De generator gokt nooit: hij legt het opgegeven bereik vast en meldt dat. Commit je lockfile, of zet Gradle dependency locking aan, om exacte versies en transitieve afhankelijkheden te krijgen.

### Scant hij binaries of firmware-images?

Nee. Hij leest broncodebomen: lockfiles, manifests en de headers van meegeleverde C/C++-bibliotheken. Bibliotheken die je alleen als binary levert, geef je handmatig op in je Kernwatch-release.
