01 /
Match the actual version
Match component versions against OSV affected ranges locally. Unsupported formats and missing information remain visible as assessment gaps.
SBOM / LICENSE POLICY / EVIDENCE
Import an SBOM, check known vulnerabilities and license policy, and preserve the evidence. Share the assessment as a Word document or JSON report, together with the data behind it.
npm install -g seculens
seculens wizard 01 /
Match component versions against OSV affected ranges locally. Unsupported formats and missing information remain visible as assessment gaps.
02 /
Evaluate SPDX expressions including AND, OR, and WITH, alongside individual licenses such as MIT and Apache-2.0. Distinguish allowed, denied, and review-required results.
03 /
Save the original SBOM, OSV data, and SHA-256 hashes. Recheck matches using the same evidence snapshot.
01 / FEATURE TOUR
SECULENS / 01
Read SPDX or CycloneDX JSON and assess supported npm, PyPI, and Packagist versions. Choose a saved OSV snapshot or explicitly retrieve advisory candidates from OSV.
Read the guide on this page ↓seculens scan sbom.json \
--db database.json \
--lang en --output reports SECULENS / 02
Define allowed and denied licenses in JSON. Unknown, custom, and missing declarations require review. Without a policy, licenses remain review-required rather than automatically approved.
Read the guide on this page ↓{
"allow": ["MIT", "Apache-2.0", "BSD-3-Clause"],
"deny": ["AGPL-3.0-only", "AGPL-3.0-or-later"]
} SECULENS / 03
Export Word and JSON reports with Japanese or English headings and summaries. The customer layout adds a cover, prioritized findings, and numbered details. Optional source analysis identifies syntax-based review candidates for each implementation’s language.
Read the guide on this page ↓seculens scan sbom.json --db database.json \
--customer "Sample Company" --target "Web Service" \
--lang en --report-style customer --output reports SECULENS / PRACTICAL GUIDE
Start with the interactive wizard and review the settings before running. For repeated assessments, save the same inputs and options as a command. Examples below use the TypeScript edition. Python uses the same CLI name; PHP runs through php bin/seculens.
01 / SET UP
The three editions are independent implementations. Install one for SBOM assessment and reports. If you also want source analysis, choose the edition matching your source language.
Node.js 22+
npm install -g seculensStart interactively
seculens wizard --lang enPython 3.10+
pip install seculensStart interactively
seculens wizard --lang enPHP 8.2+ / Composer 2
git clone https://github.com/masahiroid/seculens-php.git
cd seculens-php
composer install --no-devStart interactively
php bin/seculens wizard --lang enIn the wizard, choose assessment or SBOM generation, then set the input file, OSV data source, optional policy, and output folder. You can also set the customer, target, and author. Review the settings before starting; decline with n or cancel with Ctrl+C.
02 / SBOM & VULNERABILITY MATCHING
Import SPDX 2.2/2.3 JSON or CycloneDX 1.4–1.7 JSON. Components need a supported package URL for npm, PyPI, or Composer, plus a version. For an npm project with dependencies already installed, generate an inventory with:
seculens sbom ./my-project --format cyclonedx --output sbom.json Generation invokes npm sbom and requires a compatible npm version. For Python, PHP, or containers, generate an inventory with an appropriate existing tool and import it.
seculens scan sbom.json --fetch-osv --lang en --output reports Send package names and ecosystems to OSV, then match versions against the returned advisory ranges locally. Network failure stops the assessment. Matching handles affected ranges, fixed versions, and withdrawn records; aliases are merged per component.
seculens scan sbom.json --db database.json --lang en --output reports-offline Use OSV data saved by a previous run or another suitable snapshot as database.json. This mode uses no network. The same SBOM and database reproduce matching results, although report dates and Word metadata can differ.
npm uses SemVer, PyPI uses PEP 440, and Packagist supports specified numeric version forms. Some Composer-specific forms and GIT-only advisory ranges remain unevaluated. Distinguish “no match” from “not evaluated.”
03 / LICENSE POLICY
Save the following as policy.json. Adapt allow and deny to your usage and distribution requirements, then add --policy policy.json to the assessment command.
{
"allow": ["MIT", "Apache-2.0", "BSD-3-Clause"],
"deny": ["AGPL-3.0-only", "AGPL-3.0-or-later"]
} seculens scan sbom.json --db database.json --policy policy.json \
--lang en --output reports The assessment uses licenses declared in the SBOM. It does not verify declarations against source code or determine actual distribution obligations or customer usage conditions.
04 / SOURCE REVIEW & REPORTS
Source review is optional. In the TypeScript edition, add --source ./src to inspect constructs such as eval, new Function, and innerHTML, plus complexity and nesting. Python and PHP editions analyze their own languages. These are syntax-based review candidates, not interprocedural data-flow or exploitability determinations.
seculens scan sbom.json --db database.json --policy policy.json \
--source ./src --customer "Sample Company" --target "Web Service" \
--issuer "Review Team" --lang en \
--report-style customer --output reports/customer The customer layout includes a cover, severity-sorted findings, numbered details, coverage, and evidence hashes. Colors and labels distinguish severity, such as red for Critical/High and yellow for Medium. Missing severity data remains Unrated; severity is not inferred from license or syntax findings.
| File | Contents & interpretation |
|---|---|
report.docx | Word document with a cover, summary, findings, and details. Japanese localization covers main headings and summaries; advisory text may remain in its original language. |
report.json | Machine-readable findings, license decisions, assessment gaps, and severity evidence. |
sbom.json | Copy of the assessed inventory, providing evidence for component names and versions. |
database.json | The OSV data used for assessment. Reuse the snapshot to recheck matches. |
With --fail-on-findings, affected vulnerabilities, denied licenses, and security review candidates produce exit code 1. Code 0 means completion without coverage gaps; items may still require review. Invalid inputs, execution errors, and coverage gaps produce 2, with finding-related 1 taking priority. Review the JSON alongside the exit code.
02 / FROM INPUT TO ACTION
Import existing SPDX or CycloneDX JSON. Supported npm projects can also generate an SBOM.
Select an OSV snapshot, license policy, and optional source analysis.
Read Word, integrate JSON, and connect findings and assessment coverage to the saved inputs.
03 / COVERAGE
Separate TypeScript, Python, and PHP CLIs and libraries. Source analysis targets each implementation’s own language.
Unsupported ecosystems and version formats remain unevaluated. “No match” means no matching advisory in the supplied data.
04 / GET STARTED
The TypeScript edition requires Node.js 22 or later. See the separate repositories for Python and PHP installation.
npm install -g seculensChoose the SBOM, advisory source, and report destination interactively, then review the settings before running.
seculens wizardRead the Word summary and JSON details. Retain the source data for future assessments and review.
The --db mode uses a local OSV snapshot without network access. --fetch-osv sends package names and ecosystems to OSV; version matching stays local. Source code and the full SBOM are not sent.
EXPLORE THE APPS / TIP
Choose an app to explore its features and how to use it.
Assess SBOM vulnerabilities and license policy with evidence.
Explore the app
Turn browser journeys into web assessments and regression tests.
Explore the app
Check model distribution files and conversion consistency.
Explore the app