Skip to main content

Snyk Open Source、管理対象外OSS向けのC/C++セキュリティスキャンのベータ版を提供

blog feature oss cpp

2021年12月8日

0 分で読めます

Snyk Open SourceでC/C++セキュリティスキャンのオープンベータ版を開始しました。開発チームとセキュリティチームは、C/C++のオープンソースコードやライブラリに潜む既知のセキュリティ脆弱性を検出し、修正できます。

さまざまな業界で利用され、特にゲーム、ハードウェア/IoT、通信業界で広く使われているC/C++は、ソフトウェア開発とテクノロジー分野全体に大きな影響を与え続けています。2021年11月のTIOBEインデックスによると、C/C++はプログラミング言語の上位5位に入り、それぞれ2位と4位にランクインしています。PYPLインデックスやRedMonkランキングでも、同様の結果が示されています。

ほかのプログラミング言語と同様に、C/C++の開発者はアプリケーションの構築にオープンソースコードやライブラリを活用しています。依存が高まるにつれ、ライブラリに潜む既知のセキュリティ脆弱性がリスクとなります。さらに、より新しい言語とは異なり、大半のC/C++開発者はライブラリ管理に標準化されたプロセスを使用していません(最新のC++コミュニティ調査では、C++開発者の49%がパッケージ管理を主要な課題として挙げています)。その代わり、オープンソースライブラリのソースコードをアプリケーションコードと一緒にまとめているため、ライブラリの管理や、含まれる脆弱性の特定が難しくなっています。

今回の発表により、Snyk Open SourceのユーザーはSnyk CLIからC/C++プロジェクトをテストし、このリスクを軽減できます。ローカル開発環境での手動テストにも、CI/CDパイプラインの一環としての自動テストにも対応します。

このベータ版では、次の機能を利用できます。

  • Snyk CLIのsnyk unmanaged test

  • Snyk CLIのsnyk unmanaged monitor

  • National Vulnerability Database(NVD)に基づく脆弱性データ

どのように動作するのか、簡単に見てみましょう。

Snyk CLIのセットアップ

まず、Snyk CLIがインストールされていることを確認してください。すでにSnyk CLIを使ったことがあり、インストール済みの場合は、バージョン1.775.0以降を使用していることを確認してください。

Snyk CLIのセットアップは簡単です。npmまたはHomebrewを使ってすぐにインストールできます。その後、Snykアカウントで認証するだけです(まだアカウントをお持ちでない場合は、無料で登録してください)。

npm install -g snyk
snyk auth

ブラウザーが開き、CLIの認証を求められます。認証を完了してください。

これでSnyk CLIを使い、C/C++プロジェクトの脆弱性をスキャンする準備が整いました。

セキュリティ脆弱性をスキャンする

まずはSnyk CLIを使ってテストを実行してみましょう。

プロジェクトをスキャンするには、対象のオープンソースライブラリがスキャン対象のディレクトリ内にある必要があります。そのディレクトリで、次のCLIコマンドを実行してください。

snyk unmanaged test

Snykはフォルダー内のすべてのファイルをデジタル署名(ハッシュ)のリストに変換し、Snykのデータベースと照合して、一致するオープンソースコンポーネントの一覧を作成します。この一覧をNational Vulnerability Database(NVD)と照合し、結果を表示します。

脆弱性スキャンの処理にかかる時間はプロジェクト内のファイル数によって異なり、数秒から数分です。スキャンが完了すると、検出された脆弱性の一覧が表示されます。

Snykの非管理対象テスト結果を表示するターミナル。curlのCVE脆弱性が重大度「高」「中」「低」に分類されています。

上の例のように、問題の一覧には脆弱性の深刻度、CVE、脆弱性の原因となっているライブラリに関する情報、NVD内の脆弱性情報へのリンクが含まれます。

脆弱性の有無にかかわらず、プロジェクトに含まれるオープンソースライブラリを表示する便利なコマンドもあります。

snyk unmanaged test --print-deps

Snyk CLIは、脆弱性の一覧より前に依存関係の一覧を表示します。この例のプロジェクトには、curl、iw、zipのライブラリが含まれています。

curlなどのオープンソースライブラリに含まれる重大度が高・中・低のCVEを示す、Snykの依存関係スキャン結果を表示したターミナル

スキャン結果をSnykアプリケーションにインポートして、可視性とレポート機能を高めることもできます。次のコマンドを実行してください。

snyk unmanaged monitor

C/C++ライブラリのスナップショットが、含まれる脆弱性とともに作成され、詳細な確認と分析のためにSnykにインポートされます。新しいプロジェクトとして、プロジェクトページに表示されます。

c-exampleプロジェクトが強調表示されたSnyk Projectsページ。セキュリティ上の問題の件数と「View Report」リンクが表示されています。

スキャン結果を操作する方法はほかにも多数あります。結果のフィルタリングやJSON形式での出力も可能です。CLIのその他のオプションについては、Snykドキュメントをご覧ください。

管理対象外のオープンソースの世界へ

開発スピードを維持しながらセキュリティも確保しようとするC/C++開発チームは、大量のレガシーコードを含むコードベースに直面しています。こうしたコードベースのオープンソースコードの大半は依存関係として宣言されず、コードをアプリケーションに直接埋め込む形で利用されるため、持ち込まれるリスクの管理が非常に困難です。

今回のベータ版の発表は、開発者を第一に考えたソフトウェア構成分析機能を管理対象外のオープンソースにも拡張し、こうした課題の解決を支援するための第一歩です。今後は、C/C++対応をSnyk Open Sourceに全面的に統合し、Snyk Intel脆弱性データベースと連携する予定です。さらに将来的には、JavaScriptやJavaなど、ほかのエコシステムの管理対象外オープンソースにも対応を広げていきます。

これらの次のステップに取り組むにあたり、正しい方向に進んでいることを確認するため、皆さまからのフィードバックをお待ちしています。必要な機能を適切な順序で開発できているかを確かめたいと考えています。

ぜひご参加ください。このベータ版の機能は、Snykの有料プランであるTeam、Business、Enterpriseのすべてでご利用いただけます。ベータ版への参加をご希望の場合は、ccpp-beta@snyk.ioまでご連絡ください。お客様のユースケースがサポート対象かどうかを確認いたします。

C/C++プロジェクトのスキャン方法とベータ版のサポートについて詳しくは、Snykドキュメントをご覧ください。

CTFを始めよう

オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。