バイナリのライフサイクルを統合管理する3つのコンポーネント
サプライチェーン攻撃への対策と、SBOM作成の対応を同時に実現できる点がJFrog製品の強みである。
「ソースコードのビルド後に生成されるバイナリファイルを厳密に管理し、それに対して脆弱性スキャンを実行する。JFrogのプラットフォーム上でバイナリファイルを管理するため、SBOM作成にも同時に対応可能だ」(前田氏)

同社は、複数の製品を一つのプラットフォームに統合して提供する「JFrog Platform」を展開している。前田氏は、その中から代表的な3つの製品を紹介した。
(1)Artifactory
「Artifactory」は、ソースコードをビルドした後に生成されるアーティファクト(バイナリファイル)を保管するためのリポジトリである。GitHubなどと同様に「リポジトリ」の概念を持ち、ローカルリポジトリとリモートリポジトリの2種類で管理運用できる。
ローカルリポジトリでは、ファイルにメタデータを付与してトレーサビリティ(追跡可能性)を持たせることが可能だ。一方のリモートリポジトリは、サードパーティーのオープンソースをダウンロードする際のプロキシとして機能し、一度ダウンロードしたオープンソースをキャッシュする。
「GitHubやBitBucketのリポジトリはソースコードを管理するための箱だが、Artifactoryのリポジトリはバイナリファイルを専用に管理するための箱であると考えてほしい」(前田氏)
(2)Xray
「Xray」は、Artifactoryに保管されたアーティファクト(バイナリファイル)に対するSCA(Security Composition Analysis)ツールである。脆弱性、ライセンスおよびコンプライアンス違反、悪意のあるパッケージなどを検知できるほか、SBOM生成機能も備えている。
(3)Curation
「Curation」は、サードパーティーのオープンソースをダウンロードする際、指定した条件をもとに脆弱性のチェックを行ってくれるツールだ。条件にヒットした場合は、ダウンロード自体をブロックしてくれる、ファイアウォール的な機能を備えている。
この3つの製品を組み合わせることで、従来のアーティファクト(バイナリファイル)の管理からどう変化するのか。
従来は、バイナリファイル自体を適切に管理していないケースも少なくなかった。ファイルサーバーに置いたり、DebianやYumのリポジトリを自前で構築して管理したりする方法もあるが、「運用コストが増大し、一貫性を保つのが困難である。また、誰がいつ何のためにビルドしたのかといった情報が残らず、セキュリティ面でも課題が残る」と前田氏は語る。
そこでJFrogのArtifactoryを利用すると、ローカルリポジトリにビルドしたファイルをアップロードするだけで、バイナリファイルにチェックサムが付与され、一貫性を保持できる。メタデータを付与することで、誰がいつビルドしたかといった情報も確認でき、トレーサビリティも向上する。
さらに、Xrayを組み合わせれば、Artifactoryに保管されているバイナリファイルを自動でスキャンできるため、脆弱性の継続的な管理が可能になる。

サードパーティー製ライブラリの管理も改善される。一般的にはNPMなどのパブリックレジストリから直接ダウンロードするが、ネットワークの遅延やアクセス制限(Rate Limit)によって開発が止まるリスクがある。
「最も懸念すべきは、脆弱性や悪意のあるオープンソースをダウンロードし、気づかないうちに自社製品へ混入させてしまうパターンだ」と前田氏は警鐘を鳴らす。こうしたリスクを回避する上でも、Artifactoryを中心としたエコシステムが役立つ。
Artifactoryのリモートリポジトリ経由でオープンソースをダウンロードすると、初回はインターネット経由で直接ダウンロードしてキャッシュし、2回目以降はキャッシュ経由で高速にダウンロードすることが可能だ。また、リモートリポジトリにキャッシュされたOSSをXrayが自動的にスキャンして脆弱性を検知。さらにCurationを利用すれば、特定の条件、例えば「CVSSのスコアが9以上」や「悪意のあるパッケージ」といった危険なOSSのダウンロードをブロックすることもできる。

前田氏は、さらにセキュリティを強化する製品として「Advanced Security」を紹介した。中でも「コンテキスト分析」の機能が好評だという。
これは、バイナリに含まれる脆弱性が表面化するのかどうかまで自動判定してくれる機能だ。どのような構成が影響を受けるのか、どのように修正すればよいかまで提示される。
Advanced Securityの追加オプションでは、VS CodeやIntelliJ IDEAといった有名IDE向けのプラグインを提供。これを利用すれば、IDE上でSASTを実行でき、ソースコードに対する脆弱性の診断も可能だ。
また、VCSと連携する「Frogbot」を使えば、VCS上で検出された脆弱性に対して、修正済みのバージョンへアップデートするためのプルリクエストを自動で作成する。

