Skip to main content

開発者でなくてもThe Big Fixでコードの脆弱性を修正できます

著者
Headshot of Gerald Crescione

Gerald Crescione

blog hero the big fix

2022年2月23日

0 分で読めます

一般的なプロジェクト管理のタスクから、GitHubのオープンソースリポジトリにプルリクエストを送ることになった経緯をご紹介します。

Snykのマーケティングチームに加わったばかりの私は、先日The Big Fixの準備に携わりました。これは、あらゆるスキルレベルの開発者、DevOps担当者、セキュリティ実務者が集まり、脆弱性を修正してインターネットの安全性を高めるイベントです。楽しみながら参加でき、グッズももらえます。

誰でも参加できるイベントです。自分で脆弱性を修正してみてもいいのでは?

チームと話すうちに、この取り組みはとても簡単で、私のような技術者でない人でも参加し、インターネットをより安全な場所にする世界的な取り組みに積極的に貢献できると気づきました。そこで、挑戦してみることにしました。

ステップ1:Snykを使い始める

The Big Fixへの登録は簡単でした。必要なのはSnykアカウントだけ。完全無料で、数分あれば作成できます。マーケターである私は、プラットフォームを頻繁に使っていたわけではありません。製品を見て、仕組みをある程度理解するためにアカウントを作っただけでした。

次に、SnykをGitHubアカウントに接続し、プロジェクトをスキャンして、可能な場合は脆弱性の修正を提案するための標準権限をプラットフォームに付与しました。

SnykのGitHubインテグレーション設定。個人アクセストークンを使ってSnykのプルリクエストを作成するためのアカウント設定を表示

ステップ2:適切なプロジェクトを選ぶ

アカウントの設定とGitHubへの接続が済むと、プロジェクトをインポートして脆弱性をスキャンできるようになりました。次は、貢献するプロジェクトを選ぶ番です。自分のプロジェクトはなく、取るに足らない小さなコード片があるだけです。そこで、別のプロジェクトに貢献することにしました。理想は、オープンソースで、私が携わってきたクラウドネイティブのエコシステムに関連するプロジェクトです。

実際、以前の仕事では、Infrastructure as Code(IaC)に力を入れるスタートアップやプロジェクトに携わっていました。HashiCorp Terraformを取り巻く便利なオープンソースツールを紹介し、クラウドリソースの管理をさらに優れたものにするブログ記事をいくつか執筆したこともあります。候補として考えていたのは、次のツールです。

  • Terraformer(「reverse Terraform」とも呼ばれます):WazeのSREチームが開発した優れたオープンソースツールです。手動で作成された既存のクラウドインフラをスキャンしてTerraformコードに変換し、IaCのコードベースに再インポートできるようにします。

  • TFlint:Terraformコードを静的解析するリンターです。無効なインスタンスタイプを特定し、タイプミスや不整合をすぐに検出します。

  • Terratest:Terraformファイルの統合テストを実行するGoライブラリです。

私はTerratestを選びました。このツールのチームがインフラのテストを大切にしている点が気に入ったからです。正直なところ、インフラのテストは、まだ一般的なベストプラクティスとは言えないでしょう。

ご存じない方のために、簡単にご紹介します。Terratestは、Gruntworkの仲間たちが開発したものです。Terraformコードを取り込み、プログラムから自由に操作できる強力なGoライブラリで、必要な統合テストをすべて実行できます。

ステップ3:適切な修正方法を選ぶ

まず、Terratestをスキャンして、リポジトリに脆弱性がないか確認する必要がありました。そこで、公開リポジトリをフォークし、そのフォークをSnykにインポートしてスキャンしました。

プロジェクトのステータスやインテグレーションで絞り込むフィルターと、重要度別の課題数を表示した、GitHubリポジトリのインポート後のSnyk Projectsダッシュボード。

正直に言うと、私は開発者ではありません。スキルはごく基本的なもので、コードに触れてもあまり役に立てないことがほとんどです。それでも、The Big Fixに参加して、この素晴らしいTerratestプロジェクトにささやかでも貢献したいと思っていました。

プロジェクトをスキャンしたところ、幸運にも自分でも対応できそうな、とても簡単な修正(Dockerイメージのアップグレード)が見つかりました。

検索可能なプロジェクト一覧、問題の深刻度別件数、フィルター、インテグレーションのカテゴリを表示するSnyk Projectsのダッシュボード。

Snykなら、スキルレベルを問わず誰でも簡単に問題を見つけて修正できます。修正PRを作成ボタンをクリックすると、リポジトリに移動し、脆弱性に最適な修正方法が提案されます。

ベースイメージのアップグレード推奨、脆弱性の件数と深刻度評価、「修正PRを作成」ボタンを表示するSnykのDockerfile概要。

プラットフォームをもう少し詳しく調べ、ドキュメントを参照して、この脆弱性の内容や危険性をよりよく理解できたのもよかったです。今回の修正は、古いバージョンのイメージを更新するものでした。

脆弱なコンテナイメージのベースイメージを検出・特定する方法を説明するSnyk User Docsのページ。

準備ができたら、いざ修正!

すべて準備完了です。脆弱性を発見し、修正も用意できました。あとは修正PRを作成ボタンを押して、GitHubに移動するだけです。

Dockerfileのベースイメージをruby:2.6.2-stretchからruby:2.6.8-stretchにアップグレードする修正PRを作成するページ

自分のリポジトリで修正内容を確認し、マージするかどうかを簡単に判断できました。もちろんマージしました。(グッズがもらえるのを忘れずに。)

SnykがRubyのDockerベースイメージのセキュリティアップグレードを提案するGitHubのプルリクエスト。脆弱性の一覧が表形式で表示されています。

PRのマージはあっという間で、目的を果たした達成感に満たされました。

すべてのチェックに合格し、マージの競合がないことと、緑色の「プルリクエストをマージ」ボタンが表示されたGitHubのプルリクエスト画面。

待って!実際には使っていないプライベートリポジトリの脆弱性を修正しただけでは?

スキャンして脆弱性を修正するためだけに公開リポジトリをフォークしても意味がありません。それに、限定版Tシャツを手に入れるのも魅力的ですが、たとえ小さなものでも、本当に役立つ貢献をしたいと思っていました。

大丈夫です!修正内容をコピーして、GitHub上のTerratestの元リポジトリにPRを送ればよいのです。

GitHubの変更比較ページ。Dockerfileのruby:2.6.2-stretchからruby:2.6.8-stretchへの更新と、プルリクエストを作成するオプションが表示されている

そして…… voilà。脆弱性の修正は楽しいものです。オープンソースへの貢献は、さらに素晴らしい体験です。

脆弱性を修正したら、誇りに思い、みんなで祝うべきです。

The Big Fixのコミュニティについてもお話ししましたか?

このプロジェクトの素晴らしい点のひとつは、コミュニティの一員になれることです。DevSecConコミュニティのDiscordサーバーで、さまざまな交流が生まれています。サーバーに参加したら、the-big-fixチャンネルにアクセスして、修正した内容をほかの開発者と共有したり、InfoSecやDevSecOpsに関する話題を話し合ったりできます。

Hacker Kyleの指導に感謝するコミュニティからのメッセージ。TerratestのDockerイメージを更新するGitHubプルリクエストのスクリーンショット。

楽しみながらアプリケーションセキュリティの脆弱性を修正するって、どういうこと?

The Big Fixは、参加者にグッズを贈りながら、楽しく脆弱性を見つけて修正してもらう取り組みです。参加方法はとても簡単。次のことをするだけです。

  1. The Big Fixに登録する。

  2. Snykアカウントにログインする(アカウントがない場合は無料で作成)。

  3. プロジェクトをインポートしてスキャンする。

  4. 脆弱性を見つける(どれだけ気をつけていても、プロジェクトにはおそらく脆弱性があるでしょう)。

  5. SnykプラットフォームからPRを作成して修正する。

  6. (任意)限定版The Big Fix Tシャツを着た自分の姿を想像してみる。

  7. ほかのプロジェクトもインポートしてスキャンし、さらに多くの脆弱性を修正する。

この取り組みに参加してみたい方のために、必要に応じて利用できる入門リソースをいくつかご紹介します。まずはTwitterで#TheBigFixを検索するのがおすすめです。もうひとつの方法として、VS Code IDEで修正を始める方法を紹介する以下の動画も参考になります。

The Big Fix 2022 - Getting started with VS Code IDE security fixes

次は?

覚えておきたいのは、The Big Fixは1か月間のイベントだということです。1月18日に始まり、2月25日の「Big Fix-a-Thon」で幕を閉じます。DevSecOpsと開発者セキュリティをテーマにした、24時間のライブ配信イベントです。うれしいことに、2月25日まで脆弱性の修正を待つ必要はありません。この記事を書いている時点で、すでに35,302件のプロジェクトがスキャンされ、454,116件の脆弱性が発見され、そのうち82,109件が修正されました。実にすばらしい成果です!

2月25日に開催される、開発者セキュリティとDevSecOpsをテーマにした24時間のライブ配信イベント「Big Fix-a-Thon」にご参加ください。楽しい企画や素晴らしい登壇者が、脆弱性の修正を後押しします。

The Big Fixに参加しよう

Snykでアプリケーションのセキュリティを高めている、何千人もの開発者の仲間に加わりましょう。