SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 レポート(AD)

セキュリティ対策の主役は開発者、Snykで開発者ファーストなDevSecOpsを実現しよう【デブサミ2022】

【17-C-2】Snyk - デベロッパーファーストで実現するDevSecOps

  • このエントリーをはてなブックマークに追加

デモでSnyk Open SourceとSnyk Codeの動きを確認しよう

 相澤氏は実際にSnykで脆弱性をどのように検知し、どのように修正するかをデモした。今回はSnyk Open SourceとSnyk Codeを用いる。

Snyk実行例
Snyk実行例

 Snykは開発ライフサイクルのあらゆる場面で実行することができる。開発者はコードを書きながらIDEと連携して脆弱性やライセンスポリシー違反などのテストと修正を行う。新たな脆弱性にはJira Issueを自動作成することもできる。開発したコードは多くの場合Gitに保存されるため、Gitからテストし、修正プルリクエストから修正、パッチ適用、アップグレードしてマージする。次はCI/CDパイプラインのビルド、テスト、デプロイでも、自動テストを実行できる。テスト失敗時にはポリシーに従い、ビルドをブロックする。デプロイ後の本番環境にも、Log4Shellのように突然脆弱性が発生することがある。Snykは定期的にモニタリングし、新しい脆弱性が見つかったらアラートを発信する。

 あらゆる場面でSnykを活用できることに加えて、あらゆるツールとの連携もSnykの強みであることも特筆しておこう。「だからこそ、皆さんの仕事のやり方を変えることなく、Snykをご利用いただけます」と相澤氏は力をこめる。

数多くの開発ツールと連携
数多くの開発ツールと連携

 実際にオープンソースの脆弱性に対応しようとすると、次のような課題に直面する。脆弱性が大量であるため、効率的に対処していく必要がある。そして参照先で脆弱性が発見されることもあるため、参照先や依存関係も確認する必要がある。さらに繰り返しになるが、ある日突然新しい脆弱性が発見されることもあるため、情報をいち早くつかみ、継続的に対応していく必要がある。

 デモではGitHubにあるアプリケーションの脆弱性をSnyk Open Sourceでスキャンした(事前にGitHubとの連携をすませてある)。SnykからGitHubをクリックし、自分のレポジトリ一覧から対象のアプリケーションを選択する。するとSnykはそれをインポートしてスキャンを開始する。ここでSnykはマニフェストファイルを読み込み、パッケージを(直接・間接両方とも)リストアップし、脆弱性をチェックしている。

 スキャンを終えると、発見された脆弱性が表示される。発見された脆弱性が多数ある場合には、プライオリティスコアに着目するといいだろう(画面右上に表示されている)。このスコアはCVSSのスコア、悪用されやすさ、修正があるかどうかを総合したSnyk独自のスコアとなる。1000に近いほど優先順位が高くなる。

 脆弱性をチェックする時に重要なポイントは「①どのような脆弱性か」「②どこから発生しているか」「③どう修正するか」だ。デモで表示された脆弱性なら、①は「Uninitialized Memory Exposure」なので初期化されていないメモリ領域からのデータ漏えいと分かる。②は「jasonwebtoken@0.4.0」などとなり、間接的に参照しているパッケージから来ていることが分かる。そして③は「base64url@3.0.0」とあるので、base64urlを3.0.0にアップグレードする必要がある。他にもSnyk画面から詳しい情報を調べることができる。

発見された脆弱性情報はこのように表示される
発見された脆弱性情報はこのように表示される

 脆弱性が検出できたので、修正していこう。Snyk画面から[Fix these vulnerabilities](これらの脆弱性を修正する)から行う。もし実害がないと分かれば[Ignore]で無視してもいい。その時はコメントを添えておくといいだろう。また[Create a Jira issue]からJiraを使うこともできる。

 [Fix these vulnerabilities]をクリックすると、修正対象がリスト表示されるので確認する。中にはメジャーバージョンアップする必要があり、互換性を確認する必要があるものもある。対象を確認し[Open a Fix PR]をクリックすると、Snykがプルリクエストを作成する。

 次にカスタムコードの脆弱性をSnyk Codeで確認する。特徴はスキャンのスピードと精度の高さ(誤検知の少なさ)だ。ここでも大量に脆弱性が発見されたので、プライオリティスコアから大事なものから確認していく。カスタムコードの場合、データがどこから入り、どう処理されて、どう出力されたのか把握する必要がある。デモではSnyk画面からコードを追ってみるとクロスサイトスクリプティングになっていることが分かった。

 「SnykはIDEからスキャンし、その場で修正の提案をしてくれます。コードを書いてスキャン、脆弱性があったら修正、これを繰り返すことで、スピーディーな開発とセキュリティ向上を両立させることができます」(相澤氏)

 ガバナンスについては、レポーティング機能がある。現在どれだけ脆弱性があるのか、また過去の推移もグラフで表示される。Log4Shellのように突然上司から「ニュースで見たけど、うちは大丈夫なのか?」と質問されても、SnykからCVS番号で検索すればすぐに状況を把握できる。

 なおSnykの顧客はLog4Shellの修正を、業界標準と比較して100倍速いスピードで完了したという調査結果がある。1社あたり開発者の作業時間を280時間削減できたことになる。「ぜひSnykをチェックしてみてください」と述べて相澤氏はセッションを締めた。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2022 レポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15614 2022/03/07 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング