# Cree una SBOM a partir de su código fuente

Source: https://kernwatch.com/es/generador-sbom · Última actualización: 2026-10-18

Suelte la carpeta de su proyecto y obtenga en segundos una lista de materiales de software (SBOM) en formato CycloneDX o SPDX. El análisis se ejecuta en esta página: su código nunca sale de su ordenador.

## Qué lee

El generador lee los archivos que sus gestores de paquetes ya escriben. Los archivos de bloqueo dan versiones exactas y todo el árbol de dependencias; un manifiesto por sí solo da únicamente las dependencias directas.

| Ecosistema | Archivos |
|---|---|
| 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++ (incluidas en el repositorio) | cabeceras de 60 bibliotecas habituales (zlib, OpenSSL, mbedTLS, wolfSSL, SQLite, lwIP, FreeRTOS, cJSON, curl, fmt, littlefs, ...), reconocidas por sus macros de versión; .gitmodules |
| Archivos de compilación (sin archivo de bloqueo) | CMake (find_package, pkg_check_modules, target_link_libraries, FetchContent, CPM), opciones -l de Makefile, qmake, meson, autoconf; cabeceras #include conocidas. Se listan sin versiones. |
| Páginas web | Enlaces CDN (unpkg, jsDelivr, cdnjs, esm.sh, code.jquery.com, ...) y bibliotecas incluidas como jQuery, Bootstrap, Vue o pdf.js, reconocidas por su comentario de cabecera |
| Contenedores | Imágenes base del Dockerfile (FROM) |

También se encuentran las bibliotecas copiadas en el proyecto: cada carpeta de third_party/, vendor/, external/ y deps/ y cada carpeta con nombre nombre-1.2.3, con nombre y versión tomados de sus propios archivos. Se omiten carpetas como node_modules, .git, target, árboles de compilación y entornos virtuales, y los proyectos de pruebas, documentación y ejemplos cuentan como dependencias de desarrollo. No se ejecuta nada ni se consulta ningún registro de paquetes: el resultado depende solo de los archivos de la carpeta.

## Herramienta de escritorio y de CI

El mismo generador como un único programa para Windows, macOS y Linux, pensado para repositorios grandes, scripts y pipelines de compilación. Da el mismo resultado que esta página.

## Preguntas

### ¿Se sube mi código fuente?

No. En el navegador, los archivos los lee JavaScript en su propia pestaña, y la Content-Security-Policy de la página le prohíbe enviar datos. La herramienta de escritorio funciona sin conexión; solo se conecta a la red cuando usted le pide que suba la SBOM a Kernwatch.

### ¿Qué formatos de SBOM crea?

CycloneDX 1.6 JSON y SPDX 2.3 JSON, los dos formatos legibles por máquina de uso más extendido. Ambos se validan con los esquemas oficiales y pueden importarse en Kernwatch y en otras herramientas de SBOM.

### ¿Basta esta SBOM para el Reglamento de Ciberresiliencia?

El CRA exige una SBOM en un formato de uso común y legible por máquina que abarque, como mínimo, las dependencias de nivel superior y que se conserve con la documentación técnica. Una SBOM basada en archivos de bloqueo cubre eso y más. El CRA también le obliga a gestionar las vulnerabilidades que aparezcan más adelante en esos componentes: eso es lo que vigila Kernwatch.

### ¿Por qué algunos componentes no tienen una versión exacta?

Porque la carpeta solo contiene un manifiesto (como package.json, pom.xml o un .csproj) sin archivo de bloqueo. El generador nunca adivina: registra el rango declarado y lo indica. Añada su archivo de bloqueo al repositorio, o active el bloqueo de dependencias de Gradle (dependency locking), para obtener versiones exactas y dependencias transitivas.

### ¿Analiza binarios o imágenes de firmware?

No. Lee árboles de código fuente: archivos de bloqueo, manifiestos y las cabeceras de las bibliotecas C/C++ incluidas en el repositorio. Declare a mano en su versión de Kernwatch las bibliotecas que solo distribuye como binarios.
