Skip to main content

Snyk Vulnerability Databaseを使ってThe Big Fixのプロジェクトを見つける

著者
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

blog hero the big fix

2022年3月30日

0 分で読めます

開発者には、朝の仕事開始時に行うお決まりのルーティンがあります。コーヒーを淹れ、SlackやDiscord、メールを確認し、最新ニュースを読む。私が毎朝のルーティンに取り入れていることの一つは、最新のオープンソースの脆弱性を確認するためにSnyk Vulnerability Databaseをチェックすることです。

さまざまなエコシステムで、どのようなエクスプロイトや脆弱性が見つかるのかを見るのは、特に興味深いものです。2021年5月以降、Tensorflowライブラリで脆弱性が出てくるのを追ってきましたが、この記事の執筆時点でも再び確認されています(ほぼ2ページ分もあります!)。Slack、VS Code、Twitch、そしてほかにも多くの人気アプリを支えるエコシステムであるElectronJSでも、最近のレポートで複数回にわたり脆弱性が報告されています。

Snyk Vulnerability Databaseは、日々のセキュアな開発を簡単にするだけでなく、インターネット全体の安全性向上にも役立ちます。Snykが1か月にわたって開催した脆弱性修正イベントThe Big Fixでは、開発者、DevOps、セキュリティの実務担当者が集まり、できるだけ多くの脆弱性を修正しました。その締めくくりとして、24時間のライブ配信イベント「Big Fix-A-Thon」が開催されました。多くの参加者がSnyk Vulnerability Databaseを使って、さまざまなオープンソースプロジェクトに含まれる悪意のあるパッケージを見つけ、修正しました。

公式イベントは終了しましたが、The Big Fixのコミュニティは今も活発です。今回は、オープンソースの脆弱性データベースを使ってプロジェクトを見つけ、ユーザーの安全を守りながら、限定版の#thebigfixTシャツを手に入れる方法をご紹介します。

The Big Fixを始める

まずは無料のSnykアカウントに登録しましょう。まだアカウントをお持ちでない場合は、スタートガイドのページにアクセスし、必要事項を入力してください(クレジットカードは不要です)。次に、The Big Fixのウェブサイトにアクセスして、今すぐ登録をクリックします。最後に、名前とメールアドレスを入力すれば準備完了です。

登録が済んだら、次はプロジェクトを見つけましょう。いくつか方法があります。

既存のリポジトリを接続する

すでに対象のプロジェクトリポジトリが決まっている場合は、簡単に接続できます。Snykのダッシュボードに移動し、プロジェクトを追加をクリックします。クイックメニューに目的のリポジトリが表示されない場合は、その他をクリックすると、インテグレーションの選択肢が一覧で表示されます。

接続するリポジトリを選び、画面の手順に沿って接続と設定を行います。

GitHub、GitHub Enterprise、GitLab、Bitbucket、Azure Reposのカードが表示されたソース管理インテグレーションのダッシュボード

接続後、もう一度プロジェクトを追加をクリックし、オープンソースの脆弱性をスキャンするリポジトリを選択します。プライベートリポジトリもスキャンできます。

検索フィールドと、展開可能な個人および組織のリポジトリ一覧を備えたリポジトリ選択インターフェース。

Snykに接続すると、スキャンによって接続したパッケージマニフェスト内の脆弱なパッケージが特定されます。該当するパッケージを選択すると、推奨される修正方法や対処手順を確認できます。Snykでは、推奨される修正を含むプルリクエストを自動作成することもできます。プロジェクトが期待どおりに動作することを確かめるため、必ずアプリケーションをテストしてください。

プロジェクトを見つける

脆弱性の修正に協力できるプロジェクトを探している場合は、Snyk Vulnerability Databaseを使って、希望するパッケージやエコシステムのプロジェクトを検索できます。

The Big Fixでは、PHPオープンソースエコシステムで特に気に入っているプロジェクトの一つ、Invoice Ninjaに貢献しました。このオープンソースプロジェクトは、さまざまなサードパーティ製のビジネスツールと連携し、世界中の企業の請求書発行や会計業務を支援しています。

まず、メインリポジトリをフォークして自分のアカウントにコピーしました。次に、上記の方法でそのリポジトリをSnykに接続しました。

脆弱性が検出されたコミットや、app、bootstrap、config、database、docs、testsなどのフォルダが表示された、ダークモードのGitHubリポジトリ

スキャンの結果、PHPのComposerパッケージマニフェストでいくつかの脆弱性が見つかりました。そのうちの一つは、依存ライブラリであるDOMPDF 0.6.2によって持ち込まれていました。

phenx/php-font-libの中程度の深刻度のクロスサイトスクリプティングの問題と、修正版のバージョン0.3.1を示す脆弱性ダッシュボード

検出結果をさらに詳しく調べたところ、2014年に報告された脆弱性であるPHP-Font-Libのクロスサイトスクリプティング(XSS)につながる経路など、いくつかの問題を特定しました。プロジェクトをたどって調査することで、問題そのものだけでなく、必要な修正も特定できました。

修正を適用するときは、いくつか注意すべき点があります。何より大切なのは、プロジェクト全体が引き続き動作することを確認することです。ライブラリや依存関係をアップグレードする場合は、特に重要です。多くの人が日々の業務でこうしたプロジェクトを利用しているため、互換性を損なう変更は、どのプロジェクトも避けたいものです。

Gitのプルリクエストを使って、フォークしたリポジトリをローカル環境に取り込み、VS Codeを起動しました。Snykプラグインをインストールしていたので、影響を受けるパッケージをアップグレードし、デバッグすることができました。その後、ローカルサーバーを使ってローカル環境でコードをテストしました(PHP組み込みサーバーを使う方法もあります)。

最後に、フォークしたリポジトリに変更をコミットしてGitのプルリクエストを送信しました。コミュニティによる確認を経て、マージされました。

貢献を完了した喜び

誰かの役に立てるのはうれしいものです。特に、ほかのコミュニティを安全に保ち、脆弱性のない状態にする手助けができるときは格別です。オープンソースコミュニティの一員として、貢献し、すべてのオープンソースユーザーを守ることが大切です。デジタルの世界をより安全な場所にするために、みんなで協力しましょう。