こんにちは。デベロッパーファーストのセキュリティプラットフォーム Snyk (スニーク) でソリューションエンジニアをしている @ToshiAizawa です!
#The Big Fix
Snyk では3月14日まで、The Big Fix (ザ・ビッグフィックス) というイベントをやっています。The Big Fix とは「みんなでアプリケーションの脆弱性を修正して、インターネットをもっと安全にしよう」という主旨のイベント。
オープンソースプロジェクトや、個人・会社のコードの中に隠れている脆弱性を見つけて、修正する。それを世界中の開発者、運用担当者、セキュリティ担当者と、いっしょにやりませんか?
参加方法
イベント特製の限定版 T シャツをゲットするためには、以下の4条件をクリアしてください!
それぞれの具体的な方法を以下で説明しています!
Snyk にサインアップ
所要時間 1〜2分
(Snyk のアカウントをすでにお持ちの方は、もちろんスキップしてください)
Google や GitHub のアカウント等でサインアップ可能です。個人的には GitHub がオススメ!あらかじめ、そのアカウントにログインしておくとスムーズに進みます。以下では GitHub を選んだ場合の流れを説明します。(それ以外のアカウントを選んだ場合、その後の流れが多少、異なります)
- snyk.io に行って、画面右上の Sign up ボタンをクリック
- Google、GitHub など、サインアップに利用するサービスを選んでクリック
- Keep me informed on product updates というページでは Continue ボタンをクリック (Snyk からの情報提供に関する opt-in/out するページです)
- Where is the code you want to test? というページでは、連携するソースコード管理システムを選んでクリック (ここでも GitHub を選ぶとその後が簡単です)
- 連携対象のリポジトリの種類 (Public and private repos がデフォルトとして選択済み) を選び、Continue ボタンをクリック
- 初期スキャン対象のリポジトリにチェックを入れて、Import and scan ボタンをクリック
- これでサインアップは完了して、そのまま続いて指定したリポジトリのインポートとスキャンが実行されます
The Big Fix イベントに登録
所要時間 1分
The Big Fix のページから、名前とメールアドレスを送信すれば登録は完了します。
**【重要】**メールアドレスは、Snyk のサインアップ時に使ったものを入力してください。
- The Big Fix のページへアクセス
- 画面左の Join the Big Fix ボタンをクリックする、または、ページをスクロールして登録フォーム (Sign up and start fixing) に進む
- (1) First Name (下の名前をアルファベットで入力)、(2) Last Name (名字をアルファベットで入力)、(3) Email (メールアドレスを入力) の計3項目 (すべて必須) を記入
- Submit ボタンをクリック
以上で登録は完了です。
なお、登録をもって、以下の規約に同意したとみなされます。
Snyk を使って脆弱性スキャンを行い、脆弱性を見つける
所要時間 2分未満
Snyk にサインアップする際に、リポジトリの取り込みを済ませていれば、脆弱性はすでに見つかっている可能性が高いです。Snyk UI の画面上部にある Projects タブをクリックしてみてください。ここでの Project とは、脆弱性スキャンの対象それぞれを指します。また、並んで表示されている数字は、見つかった脆弱性の個数を示しています。
【画面キャプチャ】脆弱性が見つかったプロジェクト例 (pom.xml)
もし、リポジトリの取り込みがまだ、または、取り込んだリポジトリに脆弱性が存在しない場合。Projects タブをクリックすると画面右上に表示される Add project ボタンをクリックしましょう。対象のリポジトリ等を指定して取り込みが行えます。取り込むと同時に、脆弱性スキャンが実行されます。
【画面キャプチャ】Add project ボタンをクリックした画面
レポジトリ取り込み操作の例:
- 画面右上の Add project ボタンをクリック
- GitHub をクリック
- リポジトリ一覧から取り込みたいリポジトリにチェックを入れる
- 画面右上の Add selected repositories ボタンをクリック
見つかった脆弱性を Snyk を使って修正
所要時間 2分前後
Snyk を使えば、脆弱性の修正も簡単です。以下では、Java のプロジェクトに存在するオープンソースパッケージの脆弱性を例に、修正の流れを説明します。なお、ここでは Snyk Open Source (アプリケーションが参照しているオープンソースパッケージの脆弱性に対応するための製品) を用います。
以上の3ステップで修正できます。それぞれのステップについては、この後に続く説明をご確認ください。
修正 Step 1: 脆弱性の確認
【画面キャプチャ】脆弱性が見つかったプロジェクト例 (pom.xml)
- Snyk UI で Dashboard タブをクリックして Vulnerable projects から、または、Projects タブをクリックして表示されるプロジェクトの中から、脆弱性が見つかっているものをクリックします。(上の例では Maven のマニフェストファイルである pom.xml をクリックしてください)
- プロジェクトの詳細ページが表示されます。脆弱性がそれぞれ表示されます。このページでは脆弱性の確認、修正を行うことができます。
【画面キャプチャ】プロジェクト (pom.xml) の詳細ページ
修正 Step 2: Fix PR (修正用プルリクエスト) の作成
修正の第一歩として、Snyk UI から Fix PR (修正用プルリクエスト) を作成します。オープンソースパッケージの脆弱性は、脆弱性を含むパッケージを、脆弱性を修正したバージョンへアップグレードすることで修正できます。Fix PR を通じてマニフェストファイルを書き換えることで、このバージョンアップを実装します。
- プロジェクト詳細ページにて、Fix these vulnerabilities ボタンをクリック (複数の脆弱性をまとめて修正する場合)、または、個々の脆弱性に対して表示されている Fix this vulnerability ボタンをクリック (特定の脆弱性のみ修正する場合) します。
- Fix PR の作成前の確認ページが表示されます。
- 修正可能な脆弱性を確認した上で、Open a Fix PR ボタンをクリックします。
- GitHub (または連携先のソースコード管理システム) 上でプルリクエストが作成されます。
【画面キャプチャ】GitHub 上に作成されたプルリクエスト (Fix PR)
Snyk を使えば、ボタンを2回クリックするだけで、オープンソースパッケージに由来する脆弱性を修正することができます。(修正をリポジトリに反映させるためには、この後、プルリクエストのマージが必要です)
修正 Step 3: Fix PR のマージ
あともう一歩!プルリクエストをマージすれば、脆弱性が修正されます。
【画面キャプチャ】GitHub: プルリクエスト (Fix PR) の Merge pull request ボタン
- Step 2 で作成したプルリクエスト (Fix PR) の Merge Pull Request をクリック、続いて Confirm merge をクリックします。これにより修正が反映されます。
- Snyk UI へ戻り、プロジェクトの詳細ページの上部より、Retest now をクリックします。(Retest now をクリックしなくても、GitHub → Snyk への Webhook により通常、自動実行されます)
- 再スキャンが実施され、脆弱性が修正されたことが確認できます。
【画面キャプチャ】GitHub: プルリクエスト (Fix PR) にてマージが完了
【画面キャプチャ】Snyk UI: プロジェクトの詳細ページ (Retest now のリンク)
【画面キャプチャ】Snyk UI: Retest 後のプロジェクト詳細ページ
プルリクエストをマージした後、再度テストを行えば安心!修正の適用が確認されました。つまり T シャツゲット!Congratulations 🎉🎉🎉
なお、発送はイベント終了後となります。その前に発送先の確認のため、Snyk より連絡を差し上げます。
Discord と #TheBigFix
The Big Fix の参加者が交流するためのチャンネルを Discord に開設しています。
脆弱性を修正したら、ぜひ Twitter でハッシュタグ #TheBigFix をつけてツイートしてください!