TIP
← 提言・ツール / セキュリティツール

SBOM / LICENSE POLICY / EVIDENCE

その依存関係に、 判断の根拠を。

SBOMを読み込み、既知の脆弱性とライセンスポリシーを点検。使ったデータと判定の根拠を残し、そのまま共有できるWord・JSONレポートにまとめます。

  • TypeScript / Python / PHP
  • SPDX / CycloneDX
  • Word / JSON
SecuLensのキャラクター

SecuLens

盾とレンズを組み合わせたSecuLensのロゴ
npm install -g seculens
seculens wizard --lang ja
SBOM × OSV × ライセンスポリシー。評価に使った情報を、結果と一緒に残します。

01 /

バージョンまで照合する

パッケージ名だけでなく、SBOMのバージョンとOSVの影響範囲をローカルで照合。対応外の形式や不足情報も、未評価として残します。

02 /

ライセンスを式で読む

MITやApache-2.0といった名前だけでなく、AND・OR・WITHを含むSPDX式を評価。許可・拒否・要確認を分けて示します。

03 /

根拠をレポートに残す

元のSBOMとOSVデータ、SHA-256ハッシュを保存。同じスナップショットを使って照合結果を再確認できます。

01 / FEATURE TOUR

できることを、ひとつずつ。

SECULENS / 01

手元のSBOMから、確認を始める。

SPDX・CycloneDXのJSONを読み込み、npm・PyPI・Packagistの対応バージョンを評価します。保存済みのOSVデータを使う検査と、OSVから候補を取得する検査を選べます。

このページで詳しい使い方を見る ↓
seculens scan sbom.json \
  --db database.json \
  --lang ja --output reports
TypeScript版の実行例。SBOMとOSVデータベースは事前に用意します。

SECULENS / 02

チームの判断基準を、明示する。

許可・拒否するライセンスをJSONで指定します。不明・独自・未記載のライセンスは要確認。ポリシーがない場合も、一律に許可とせず確認対象として扱います。

このページで詳しい使い方を見る ↓
{
  "allow": ["MIT", "Apache-2.0", "BSD-3-Clause"],
  "deny": ["AGPL-3.0-only", "AGPL-3.0-or-later"]
}
ポリシー定義の例。実際の配布形態や利用条件に合わせて設定します。

SECULENS / 03

検出から、説明できる報告へ。

日本語の見出し・要約を備えたWordとJSONを出力。顧客提出用レイアウトでは表紙、優先順の一覧、番号付き詳細をまとめます。任意のソース解析は実装言語ごとの構文を対象に、確認候補を抽出します。

このページで詳しい使い方を見る ↓
seculens scan sbom.json --db database.json \
  --customer "Sample Company" --target "Web Service" \
  --lang ja --report-style customer --output reports
顧客提出用レポートのコマンド例。脆弱性の確定や法的判断は人による確認が必要です。

SECULENS / PRACTICAL GUIDE

準備からレポートまで、このページで。

まずは対話ウィザードで設定を確認しながら実行。繰り返し使う場合は、同じ入力と条件をコマンドにして保存できます。以下のコマンド例はTypeScript版です。Python版も同じCLI名、PHP版は php bin/seculens から実行します。

01 / SET UP

使う実装を選び、ウィザードを開く

3つはそれぞれ独立した実装です。SBOM照合とレポート出力のためだけに、すべてをインストールする必要はありません。追加のソース解析を使う場合は、対象コードに合う実装を選びます。

TypeScript

Node.js 22+

npm install -g seculens

対話形式で開始

seculens wizard --lang ja

Python

Python 3.10+

pip install seculens

対話形式で開始

seculens wizard --lang ja

PHP

PHP 8.2+ / Composer 2

git clone https://github.com/masahiroid/seculens-php.git
cd seculens-php
composer install --no-dev

対話形式で開始

php bin/seculens wizard --lang ja

ウィザードでは「既存SBOMの検査」または「SBOM生成」を選び、入力ファイル、OSVデータの取得方法、任意のポリシー、出力先を指定します。顧客名・対象名・作成者も設定でき、開始前に設定を確認します。最後の確認で n を選ぶかCtrl+Cで中断できます。

02 / SBOM & VULNERABILITY MATCHING

部品表を準備し、OSV情報と照合する

既存のSPDX 2.2/2.3 JSON、またはCycloneDX 1.4〜1.7 JSONを読み込めます。対応するPackage URL(npm・PyPI・Composer)とバージョンが必要です。npmプロジェクトでは、依存関係をインストールした状態で次のコマンドから部品表を生成できます。

seculens sbom ./my-project --format cyclonedx --output sbom.json

この生成処理はnpm sbomを呼び出すため、対応するnpmが必要です。Python・PHP・コンテナーなどの部品表は、それぞれに対応した既存ツールで生成してから読み込みます。

OSVから脆弱性情報を取得して検査

seculens scan sbom.json --fetch-osv --lang ja --output reports

パッケージ名とエコシステムをOSVへ送り、取得した候補に対してバージョンの影響範囲をローカルで照合します。通信に失敗した場合は検査を停止します。バージョン範囲、修正版、撤回済み情報などを扱い、同じ脆弱性を指す別名はコンポーネント単位で統合します。

保存済みデータでオフライン検査

seculens scan sbom.json --db database.json --lang ja --output reports-offline

database.jsonには、過去の実行で保存したOSVデータなどを指定します。このモードはネットワークを使いません。同じSBOMとデータベースを使えば照合結果を再確認できますが、報告日時やWord文書のメタデータは実行ごとに変わる場合があります。

npmはSemVer、PyPIはPEP 440、Packagistは対応する数値バージョン形式を評価します。Composer固有の一部形式やGIT範囲だけの情報などは未評価。「一致なし」と「未評価」を区別して確認してください。

03 / LICENSE POLICY

許可・拒否・要確認の基準を設定する

次の内容を policy.json として保存します。チームの利用・配布条件に合わせてallowとdenyを設定し、検査コマンドに --policy policy.json を追加します。

{
  "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 ja --output reports
  • AND:すべての分岐で許可が必要です。
  • OR:いずれかの選択肢が許可されている必要があります。
  • WITH:例外を含む式全体を明示的に許可します。
  • 不明・独自・未記載のライセンス、ポリシー未指定の検査は要確認として扱います。

判定対象はSBOMに宣言されたライセンスです。ソースコードと宣言の一致、実際の配布義務や顧客の利用条件までを自動で検証するものではありません。

04 / SOURCE REVIEW & REPORTS

ソースの確認候補と、報告書をまとめる

ソース解析は任意です。TypeScript版では --source ./src を追加すると、eval・new Function・innerHTML等の構文や複雑度・ネスト深度を確認します。Python版はPython、PHP版はPHPの構文解析を行います。これらは構文に基づく確認候補であり、関数間のデータフローや悪用可能性の確定ではありません。

seculens scan sbom.json --db database.json --policy policy.json \
  --source ./src --customer "Sample Company" --target "Web Service" \
  --issuer "Review Team" --lang ja \
  --report-style customer --output reports/customer

顧客提出用レイアウトは表紙、重大度順の一覧、番号付き詳細、評価範囲、根拠ハッシュをまとめます。Critical・Highは赤、Mediumは黄などの色とラベルで表示。重大度の情報が不足する場合はUnratedとし、ライセンスや構文上の指摘から重大度を推測しません。

出力フォルダーで確認するファイル
ファイル内容・読み方
report.docx表紙・要約・検出一覧・詳細を読むWord文書。日本語は主要な見出しと要約に適用され、脆弱性本文などは原文が残る場合があります。
report.json検出内容、ライセンスの判断、未評価の範囲、重大度の根拠を確認する機械可読データ。
sbom.json評価に使用した部品表のコピー。対象コンポーネントとバージョンの根拠です。
database.json評価に使用したOSVデータ。次回も同じスナップショットで照合できます。

CIでの終了条件

--fail-on-findings を加えると、影響する脆弱性、拒否ライセンス、セキュリティ確認候補の検出時に終了コード1になります。通常の0は「解析範囲の不足なく完了」を表し、要確認項目が残る場合があります。入力不正・実行エラー・評価範囲の不足は2で、検出による1が優先されます。JSONの内容も合わせて確認してください。

02 / FROM INPUT TO ACTION

調べて終わらない、次への流れ。

01

部品表を読み込む

既存のSPDX・CycloneDX JSONを入力。対応するnpmプロジェクトではSBOMの生成も可能です。

02

照合条件をそろえる

OSVのスナップショット、ライセンスポリシー、必要に応じたソース解析を指定します。

03

根拠ごと共有する

Wordで読み、JSONで連携。判定結果と評価範囲を、保存した入力データに結び付けます。

03 / COVERAGE

何を、どこまで確認するか。

3つのネイティブ実装

TypeScript、Python、PHPのCLI・ライブラリを個別に提供。ソース解析も各実装の言語が対象です。

評価できない範囲も明示

対応外のエコシステムやバージョン形式は未評価。「一致なし」は、使ったデータに一致情報がないことを示します。

04 / GET STARTED

3ステップで、使い始める。

01

実装を選んで導入

TypeScript版はNode.js 22以降が必要です。Python・PHP版は各リポジトリの導入手順を確認してください。

npm install -g seculens
02

日本語ウィザードを開く

検査するSBOM、データ取得方法、出力先を対話形式で設定。実行前に設定を確認できます。

seculens wizard --lang ja
03

レポートと評価範囲を確認

Wordの要約とJSONの詳細を確認。元データも保存して、次回の評価やレビューに使います。

START WITH YOUR PROJECT

いつもの開発に、確認の習慣を。

SecuLens

データの取り扱い

保存済みOSVデータを使う --db モードはネットワークを使用しません。--fetch-osv ではパッケージ名とエコシステムをOSVへ送信し、バージョンの照合はローカルで行います。ソースコードやSBOM全体は送信しません。

EXPLORE THE APPS / TIP

開発を支える、3つの視点。

気になるアプリから、機能と使い方をご覧ください。

イラストは各アプリの紹介イメージです。機能・対応範囲は、それぞれの紹介をご覧ください。