Darmowe narzędzie

Utwórz SBOM ze swojego kodu źródłowego

Upuść folder projektu i w kilka sekund otrzymaj wykaz komponentów oprogramowania (SBOM) w formacie CycloneDX lub SPDX. Analiza odbywa się na tej stronie - Twój kod nigdy nie opuszcza Twojego komputera.

Upuść tutaj folder projektu lub plik .zip

Rozpoznawane są pliki lock, manifesty i dołączone do projektu (vendored) biblioteki C/C++. Nic nie jest wysyłane.

Prywatność wbudowana w konstrukcję. Twoje pliki odczytuje JavaScript w tej karcie przeglądarki. Strona nie może nigdzie wysyłać danych (Content-Security-Policy connect-src 'none') - sprawdź to w narzędziach deweloperskich przeglądarki albo odłącz się od sieci, zanim upuścisz folder.

Opcje

Co odczytuje

Generator odczytuje pliki, które Twoje menedżery pakietów już zapisują. Pliki lock dają dokładne wersje i całe drzewo zależności; sam manifest daje tylko zależności bezpośrednie.

EkosystemPliki
JavaScript / TypeScriptpackage-lock.json, npm-shrinkwrap.json, yarn.lock (v1, berry), pnpm-lock.yaml, bun.lock, deno.lock, deno.json, package.json
Pythonuv.lock, poetry.lock, Pipfile.lock, requirements*.txt, pyproject.toml, environment.yml
Gogo.mod
RustCargo.lock, Cargo.toml
Java / Kotlin / Scalapom.xml, gradle.lockfile, libs.versions.toml, build.gradle(.kts), build.sbt
.NETpackages.lock.json, *.csproj, packages.config, Directory.Packages.props
PHPcomposer.lock, composer.json
RubyGemfile.lock
Swift / iOSPackage.resolved, Package.swift, Podfile.lock, Cartfile.resolved
Dart / Flutterpubspec.lock, pubspec.yaml
Elixir / Erlangmix.lock, rebar.lock
Haskell, Julia, R, Lua, Zig, OCaml, Perlcabal.project.freeze, stack.yaml.lock, *.cabal, Manifest.toml, Project.toml, renv.lock, DESCRIPTION, *.rockspec, build.zig.zon, *.opam, cpanfile
C/C++ package managersconan.lock, conanfile.txt, conanfile.py, vcpkg.json, meson .wrap, MODULE.bazel
Embeddedplatformio.ini, idf_component.yml, dependencies.lock (ESP-IDF), west.yml (Zephyr), library.properties, library.json
Nixflake.lock
C/C++ (dołączone do projektu)nagłówki 60 popularnych bibliotek (zlib, OpenSSL, mbedTLS, wolfSSL, SQLite, lwIP, FreeRTOS, cJSON, curl, fmt, littlefs, ...) rozpoznawane po makrach wersji; .gitmodules
Pliki budowania (bez pliku lock)CMake (find_package, pkg_check_modules, target_link_libraries, FetchContent, CPM), flagi -l w Makefile, qmake, meson, autoconf; znane nagłówki #include. Wymienione bez wersji.
Strony WWWLinki CDN (unpkg, jsDelivr, cdnjs, esm.sh, code.jquery.com, ...) oraz dołączone biblioteki jQuery, Bootstrap, Vue, pdf.js i inne, rozpoznawane po komentarzu nagłówkowym
KonteneryObrazy bazowe w Dockerfile (FROM)

Wykrywane są też biblioteki skopiowane do projektu: każdy folder w third_party/, vendor/, external/ i deps/ oraz każdy folder o nazwie nazwa-1.2.3, z nazwą i wersją z jego własnych plików. Foldery takie jak node_modules, .git, target, katalogi budowania i środowiska wirtualne są pomijane, a projekty testowe, dokumentacji i przykładów liczą się jako zależności deweloperskie. Nic nie jest uruchamiane i żaden rejestr pakietów nie jest odpytywany, więc wynik zależy tylko od plików w folderze.

Narzędzie desktopowe i CI

Ten sam generator jako pojedynczy program dla Windows, macOS i Linuksa - dla dużych repozytoriów, skryptów i potoków budowania. Daje ten sam wynik co ta strona.

Windows

Kod źródłowy

Wszystko, z czego powstają oba narzędzia: JavaScript tej strony, program w C++, reguły i testy. Apache-2.0.

Pliki binarne nie są jeszcze podpisane cyfrowo. Po pobraniu porównaj sumę kontrolną SHA-256. Windows SmartScreen może poprosić o potwierdzenie (Więcej informacji > Uruchom mimo to); na macOS uruchom raz xattr -d com.apple.quarantine kernwatch-sbom. SHA256SUMS · Wersja 0.2.0

Użycie

kernwatch-sbom ./my-product --name my-product --version 2.4.0 -o my-product.cdx.json
kernwatch-sbom ./my-product --format spdx -o my-product.spdx.json
kernwatch-sbom --help

W Twoim potoku budowania

Generuj SBOM przy każdym buildzie wydania i wysyłaj go prosto do swojego obszaru roboczego Kernwatch za pomocą klucza API (Settings > API keys):

# GitHub Actions step (secret KERNWATCH_API_KEY = a key with the SBOM upload scope)
- name: SBOM to Kernwatch
  env:
    KERNWATCH_API_KEY: ${{ secrets.KERNWATCH_API_KEY }}
  run: |
    curl -fsSLo kernwatch-sbom https://kernwatch.com/downloads/kernwatch-sbom/0.2.0/kernwatch-sbom-0.2.0-linux-x86_64
    chmod +x kernwatch-sbom
    ./kernwatch-sbom . --name my-product --version "$GITHUB_REF_NAME" -o sbom.cdx.json \
      --upload https://kernwatch.com/rest/v1/cra/sbom/kernwatch_db

Generator jest open source (Apache-2.0). Kod źródłowy (.zip)

Pytania

Czy mój kod źródłowy jest wysyłany?

Nie. W przeglądarce pliki odczytuje JavaScript w Twojej własnej karcie, a Content-Security-Policy strony zabrania mu wysyłania danych. Narzędzie desktopowe działa offline; łączy się z siecią tylko wtedy, gdy poprosisz je o przesłanie SBOM do Kernwatch.

Jakie formaty SBOM tworzy?

CycloneDX 1.6 JSON i SPDX 2.3 JSON - dwa powszechnie stosowane formaty nadające się do odczytu maszynowego. Oba przechodzą walidację względem oficjalnych schematów i można je zaimportować do Kernwatch oraz innych narzędzi SBOM.

Czy ten SBOM wystarczy na potrzeby Cyber Resilience Act?

CRA wymaga SBOM w powszechnie stosowanym formacie nadającym się do odczytu maszynowego, obejmującego co najmniej zależności najwyższego poziomu i przechowywanego wraz z dokumentacją techniczną. SBOM oparty na plikach lock spełnia to z nawiązką. CRA wymaga też obsługi podatności, które później pojawią się w tych komponentach - właśnie to monitoruje Kernwatch.

Dlaczego niektóre komponenty nie mają dokładnej wersji?

Ponieważ folder zawiera tylko manifest (np. package.json, pom.xml lub .csproj) bez pliku lock. Generator nigdy nie zgaduje: zapisuje zadeklarowany zakres i informuje o tym. Dodaj plik lock do repozytorium lub włącz dependency locking w Gradle, aby uzyskać dokładne wersje i zależności przechodnie.

Czy skanuje pliki binarne lub obrazy firmware?

Nie. Odczytuje drzewa kodu źródłowego: pliki lock, manifesty i nagłówki dołączonych do projektu bibliotek C/C++. Biblioteki, które dostarczasz tylko w postaci binarnej, zadeklaruj ręcznie w swoim wydaniu w Kernwatch.

Zarezerwuj darmowe konto Kernwatch

Darmowy plan obejmuje jeden produkt i nie wymaga karty kredytowej. Plany płatne dodają więcej produktów i użytkowników oraz pełny proces zgłoszeń CRA - rozszerz plan, kiedy będzie to potrzebne.

  • Darmowy plan dla 1 produktu
  • Bez karty kredytowej

37 dni od początku obowiązku zgłaszania CRA · 419 dni do pełnego stosowania wymagań CRA

Darmowy plan · 1 produkt · bez karty kredytowej

Zacznij za darmo →

Darmowy plan dla 1 produktu · Bez karty kredytowej