OSV-Scannerで脆弱性を見つけよう!OSS利用のリスクを最小限に抑える方法

Blog

あなたのソフトウェアは大丈夫? 知らないうちに潜む「脆弱性」の影

「うちのシステムは安全だろうか?」 「使っているオープンソースソフトウェア(OSS)に、危険な弱点はないだろうか?」

ソフトウェア開発に携わる皆さんなら、一度はこんな不安を感じたことがあるかもしれません。現代のシステムは、非常に多くのOSS製品や、自社で開発した独自のコードが複雑に組み合わさってできています。まるで、たくさんの部品を組み合わせて作られた精密機械のようです。

脆弱性、そのままにしていませんか?

しかし、もしその「部品」の一つにでも、外部から不正に侵入されたり、システムが誤動作したりするような「脆弱性」(セキュリティ上の弱点)が隠れていたらどうでしょう? その脆弱性が原因で、大切なデータが盗まれたり、サービスが突然停止したりするリスクが常に存在することになります。

「脆弱性があるのは知っているけど、どこから手をつけていいか分からない…」 「使っている何百、何千ものパッケージの中から、どれに脆弱性があるかなんて、とてもじゃないけど特定できない…」

そう感じるのも無理はありません。膨大な量のコードやライブラリの中から、自力で脆弱性を見つけ出すのは、まさに大海から一粒の砂金を探すようなもの。非常に難しく、時間のかかる作業です。

そこで頼りになるのが、Googleが提供する「OSV-Scanner」です!

私たちは、この見えない不安を解消し、より安全なソフトウェア開発を支援するための強力なツールをご紹介します。それが、Googleが提供するOSV-Scannerです。このツールは、皆さんのプロジェクトが抱える潜在的な脆弱性を効率的に見つけ出し、対処をサポートするために設計されています。

次章では、このOSV-Scannerがどのようなツールで、どのように皆さんの脆弱性管理を強力にサポートするのかを詳しく見ていきましょう。

OSV-Scanner

GitHub - google/osv-scanner: Vulnerability scanner written in Go which uses the data provided by https://osv.dev
Vulnerability scanner written in Go which uses the data provided by - google/osv-scanner

OSV-Scannerは、あなたのソフトウェアプロジェクトが使用している各種パッケージに含まれる既知の脆弱性を素早く特定するだけでなく、コンテナイメージのセキュリティチェックも行うことができる、非常に頼りになるスキャンツールです。

このツールが特に優れているのは、幅広いプログラミング言語とパッケージ管理ファイルに対応している点です。これにより、多様な開発環境でスムーズに脆弱性チェックを実施できます。

以下に、OSV-Scannerが対応している主な言語とパッケージ管理ファイルを記載いたします。

言語Compatible Lockfile(s)
C/C++conan.lock
C/C++ commit scanning
Dartpubspec.lock
Elixirmix.lock
Gogo.mod
Haskellcabal.project.freeze
stack.yaml.lock
Javabuildscript-gradle.lockfile
gradle.lockfile
gradle/verification-metadata.xml
pom.xml*
Javascriptpackage-lock.json
pnpm-lock.yaml
yarn.lock
.NETdeps.json
packages.config
packages.lock.json
PHPcomposer.lock
PythonPipfile.lock
poetry.lock
requirements.txt*
pdm.lock
uv.lock
Rrenv.lock
RubyGemfile.lock
gems.locked
RustCargo.lock

動作環境

OSV-Scannerは、多種多様なプラットフォームやアーキテクチャに対応しています。

  • Windows(x64,Arm)
  • Mac(x64,Arm)
  • Linux(x64,Arm)

上記に対応しています。

ダウンロード

以下のURLからダウンロードができます

Release v2.1.0 · google/osv-scanner
v2.1.0Features:Feature #2038 Add CycloneDX location field to the output source string.Feature #2036 Include upstream sou...

お使いのOSとアーキテクチャに該当するファイルをクリックじてダウンロードしてください。

例えばWindowsであれば「osv-scanner_windows_amd64.exe」だと思います

ソースコードスキャン

ソースコードが入ったフォルダをスキャンしたい場合は、以下のコマンドを実行します

osv-scanner_windows_amd64.exe scan source スキャンしたいフォルダ

下記は、実行コマンド例です

実行結果

以下は、ソースコードをスキャンした例です

結果は表で表示され、列として以下の要素があります

  • OSV URL (OSVデータベースのエントリのURL)
  • CVSS(共通脆弱性評価システム)
  • ECOSYSTEM(言語)
  • PACKAGE(パッケージ)
  • version(バージョン)
  • SOURCE(どのソースに含まれているか)

まずは、CVSSの値を注目すると思います。CVSS値が高ければ、影響度は高く、「9.1」のスコアの脆弱性が一番高い結果でした。

次に、この脆弱性がどのようなものなのか確認するために、OSV URLを確認いたします。

URLをコピーしてブラウザで開くと以下の画面が表示されます

ここでは、脆弱性の情報、リファレンス等が確認できます

ページの下の方に移動すると、影響するバージョン、修正されているバージョンが確認できます

上記の情報をもとに脆弱性がないバージョンにパッケージをアップデートするなど対応が可能です

さまざまな結果出力

先ほど実行した方法は、ターミナルにスキャン結果が直接アウトプットされましたが、HTMLやMarkdownなどさまざまな出力形式に対応しています。

HTML

HTMLを出力する場合は、`–format html`をつけるとHTMLが出力されます。ただし、そのままだと画面上にHTMLが表示されるだけなので、コマンドの最後に「> output.html」をつけてファイルに書き出しをします

osv-scanner_windows_arm64.exe scan source --format html 検索したいフォルダ > output.html

書き出した「output.html」を開くとビジュアルが良い感じで表示されるので、わかりやすと思います

Markdown

Markdownの出力をする場合は、「–format markdown」をつけます

Markdownはこのように表示されます

コメント

タイトルとURLをコピーしました