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.
Twój SBOM jest gotowy
Nie znaleziono znanych plików zależności. Obsługiwane pliki są wymienione poniżej.
| Komponent | Wersja | Typ | Znaleziono w |
|---|
Następny krok: prześlij plik do wydania w Kernwatch i otrzymuj alert, gdy w którymś z tych komponentów pojawi się znana lub aktywnie wykorzystywana podatność. Monitoruj go za darmo →
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.
| Ekosystem | Pliki |
|---|---|
| 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++ (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 WWW | Linki 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 |
| Kontenery | Obrazy 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.
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