<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=2109257909350072&amp;ev=PageView&amp;noscript= 1">

Event

CSS2026でデモ発表しました Part 2――curlでインストールした実行ファイルの構成識別

目次

フューチャーでは、脆弱性管理のSaaSであるFutureVulsを提供するかたわら、ソフトウェア構成分析(SCA)の研究開発にも取り組んでいます。その一環として、2026年10月19日に開かれたCSS2026(コンピュータセキュリティシンポジウム2026)のデモンストレーションセッションで、パッケージマネージャーで管理されていない実行ファイルの構成識別について、ポスター発表をしました。

発表の情報

項目 内容
イベント CSS2026 デモンストレーションセッション(アクトシティ浜松)
日付 2026年10月19日(月)
番号 DP-11(出展リスト)
題目 「パッケージ管理外の実行ファイルからの照合キー変換の到達可能性に関する実測」
発表者 星名藍乃介、神戸康多(フューチャー株式会社)

背景

FutureVulsでは、サーバにインストールされたソフトウェアの名前とバージョンを脆弱性情報と照合して、脆弱性を検知します。名前とバージョンは、パッケージマネージャーでインストールしたときに記録される情報(以下、台帳)から取得します。台帳を持つパッケージマネージャーの例は、OSのパッケージであればdpkgやrpm、プログラミング言語のライブラリであればnpmやpipです。

apt installやpip installでインストールしたソフトウェアは台帳に記録され、Vulsなどのスキャナが台帳を参照して脆弱性管理の対象にする。curlでダウンロードして配置した実行ファイルは台帳に記録されず、スキャナが参照する台帳が無いので脆弱性管理の対象外になる。この研究は後者を対象にした

一方で、パッケージマネージャーを経由せずにインストールするソフトウェアも少なくありません。実際に、Dockerの公式イメージ[1]のうちDockerfileを確認できた133件を調べたところ、91件(68.4%)で、主なソフトウェアがパッケージマネージャーを経由せずにインストールされていました。

たとえばRustの公式のインストール手順は、まずcurlでスクリプトを取得して実行する方法を案内しています。curlなどで取得した実行ファイルは、ホームディレクトリや/usr/local、/optの下などに直接配置され、dpkgやrpmの台帳には記録されません。

Vulsのように台帳を参照する脆弱性スキャナでは、こうした実行ファイルは管理の対象外になります。そのソフトウェアのCVEが公開されても、脆弱性を管理できません。これは、どのソフトウェアがどのバージョンでインストールされているかを把握する、構成管理の課題です。

今回のポスターでは、curlなどで直接インストールした実行ファイルについて、名前とバージョン、そして脆弱性情報との照合に使うCPEを、どこまで自動で特定できるかを実測しました。

手法の概要

台帳に記録されていない実行ファイルからCPEまで特定するには、対象の実行ファイルのパスを一覧にし、その名前とバージョンを推定し、最後にCPEへ対応づける必要があります。そこで、この流れを列挙、同定、照合キー変換の3段階に分け、段階ごとにどこまで自動で進められるかを試しました。

列挙、同定、照合キー変換の3段階。列挙で台帳外の実行ファイルのパスを一覧にし、同定で表層解析、SHA-256のハッシュ辞書照合、--versionの実行の手がかりから名前とバージョンを推定し、照合キー変換でLLMがNVDのCPE辞書を検索してCPEを特定する。--versionの実行だけがsandbox内で実行ファイルを実行する

列挙では、台帳に記録されていない実行ファイルのファイルパスを一覧として出力します。curlなどでインストールした実行ファイルは、/usr/localや~/.local/binなど、配置先が一定しません。ファイルシステム全体の走査には時間がかかるので、インストール先として慣例的によく使われるディレクトリを優先して探索します。

同定では、ファイルパスが分かった実行ファイルから、ソフトウェア名とバージョンの手がかりを抽出します。3段階のうち、最も難しい段階です。私たちは、実行ファイルのメタデータや周辺にあるファイルの情報から推定する表層解析に注力しました。--versionを付けて実行し、バージョンを表示させる方法も有力です。ただ、正体の分からない実行ファイルをサーバで実行したくはないので、表層解析で特定できるなら、それが一番です。ポスターでは、表層解析、SHA-256のハッシュ辞書照合、--versionの実行の3種類の手がかりを試しています。

照合キー変換では、得られた手がかりをCPEの文字列にどれくらいの割合で変換できるかを実測しました。

まとめ

ポスターの前では、学生の皆様や大学の先生方に加え、CSS2026に参加された民間企業のエンジニアの方々からも多くのご意見をいただき、活発に議論できました。大変有意義な時間でした。発表に関わってくださった皆様に、心より感謝申し上げます。

参考文献

  1. Docker, Inc.: Docker Official Images. https://github.com/docker-library/official-images

この記事をシェアする