LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

Snykによるシフトレフトで実現するセキュアなアプリケーション開発

ソリューションコンサルティング部の鈴木です。

近年の開発手法は、ウォーターフォール開発からアジャイル開発への移行が進み、要件定義、設計、開発、実装、テスト、リリースのサイクルを短い期間で繰り返す企業が増えています。

アジャイル開発では「市場、環境、顧客のニーズは変化する」「計画は間違えることがある」という考え方が根本にあるため、リリース後の頻繁なアップデートや新機能の追加、新たなデバイスへの対応をします。さらに、オープンソースライブラリの活用により、開発期間を短縮してオリジナル機能の開発に集中できます。

この記事では、開発手法の変化に伴い課題となる、セキュリティの脆弱性への対応を解決する手段を説明します。

開発手法の変化によるセキュリティ脆弱性への課題

アジャイル開発では、開発者がコーディングを行い、SCM(ソースコード管理)やCI/CDパイプライン(プロセスの自動化)を通じて本番環境に移行しますが、その前に「セキュリティゲート」と呼ばれる段階で脆弱性チェックを行います。この時点で脆弱性が発見されると、コーディングの手戻りが発生してしまいます。

開発者は必ずしもセキュリティの専門家ではないことが多いため、開発者の生産性が低下したり、アジャイル開発を実践しようとするとセキュリティ対策が後回しになったりすることがあります。

また、セキュリティの脆弱性診断は、本番構築前のセキュリティゲートだけでなく、リリース後も一般的に3か月ごと、6か月ごと、12か月ごとなどの定期的に実施します。しかし、新たな脆弱性はいつ発見されるか分かりません。

例えば、診断の翌日に新たな脆弱性が発見されることもあり、その脆弱性は次回の診断まで放置されることになります。放置された脆弱性が深刻な場合、外部からの攻撃によりシステムに重大な被害を及ぼす可能性があります。

アプリケーション開発プロセスとセキュリティゲート
アプリケーション開発プロセスとセキュリティゲート

セキュリティゲートによる脆弱性診断の課題

  • 修正のための手戻りが発生しリリーススケジュールが遅延することがあります。
  • 修正を行うのはセキュリティ専門家ではない開発者であり、「どう修正していいかわからない」「修正に時間がかかる」「間違った修正をしてしまう」「修正に抜け漏れが出る」といった問題が出る可能性があります。
  • アジャイル開発では短い期間で頻繁に開発とリリースが行われるため、脆弱性対策が後回しになることが多くあります。
  • 定期的な脆弱性診断(例:3か月ごと、6か月ごと、12か月ごと)では、次の診断までに新たな脆弱性が放置される可能性があります。

シフトレフトによる課題解決

最近では、開発工程の上流でセキュリティ対策を行う「シフトレフト」が採用されています。シフトレフトによる脆弱性への対応は、以下の点がセキュリティゲートによる脆弱性診断と異なります。

  • 脆弱性診断をリリース直前ではなく、開発のプロセスの中でどの段階でも継続的に実施します。
  • セキュリティゲートでの脆弱性診断は監査をパスすることが主目的ですが、シフトレフトでは脆弱性を早期に検知し、修正コストを抑えることを目的としています。
  • シフトレフトでは開発工程の進行中に継続的に脆弱性診断を行います。そのため、開発者主体で脆弱性に対応し、セキュリティエンジニアがサポートする必要があります。

シフトレフトの採用により、セキュリティ対策が開発プロセス全体に組み込まれ、脆弱性を可能な限り早く検知できます。これにより、開発者の修正コストを最小限に抑えながらセキュリティを確保できます。

セキュリティゲートによる脆弱性対応 シフトレフトによる脆弱性対応
実施フェーズ・タイミング
  • リリース直前
  • 3か月や6か月、12か月ごとの定期診断
開発プロセスの中で、いつでも継続的に実施
目的 監査をパスすること 継続的に、可能な限り早く脆弱性を見つけて修正していく
実施者 監査担当やセキュリティ担当が主導で実施される場合が多い。発見された脆弱性の修正は開発者が行う。 開発者自身が脆弱性診断を実施し、発見された脆弱性を自身で修正。修正の際にはセキュリティエンジニアが開発者をサポートする。
セキュリティゲートによる脆弱性対応 シフトレフトによる脆弱性対応
実施フェーズ・タイミング
  • リリース直前
  • 3か月や6か月、12か月ごとの定期診断
開発プロセスの中で、いつでも継続的に実施
目的
監査をパスすること 継続的に、可能な限り早く脆弱性を見つけて修正していく
実施者
監査担当やセキュリティ担当が主導で実施される場合が多い。発見された脆弱性の修正は開発者が行う。 開発者自身が脆弱性診断を実施し、発見された脆弱性を自身で修正。修正の際にはセキュリティエンジニアが開発者をサポートする。
脆弱性対応手法の比較

Snykによるシフトレフト

シフトレフトは、コーディングの工程でアプリケーションソースコードの脆弱性を診断する「静的アプリケーションセキュリティテスト(Static Application Security Testing:SAST)※1」や、使用しているOSS(オープンソースソフトウェア)の脆弱性を確認する「ソフトウェアコンポジション解析(Software Composition Analysis:SCA)※2」のようなツールを活用して実施します。

また最近、急速に利用が拡大しているコンテナや、クラウドインフラ構成をコード化して記述するInfrastructure as Codeに対応した脆弱性診断ツールも存在します。これらのツールを利用すれば、開発工程の進行中に脆弱性診断を行い、シフトレフトを実現できます。

※1 アプリケーションのソースコードに脆弱性が存在するか確認する、ホワイトボックステストの一種です。

※2 アプリケーションに含まれるOSSコンポーネントと、それらのコンポーネントに関連する脆弱性を発見します。プロジェクトに含まれるすべてのOSSコンポーネントの依存関係を調べ、リスク(コンプライアンス、セキュリティ、品質)を特定、分析、管理を行います。

では、ツールはどのようなものを選べば良いのでしょうか。シフトレフトにより、開発工程で脆弱性診断を実施するのはアプリケーション開発者ですが、全ての開発者がセキュリティに詳しいわけではありません。

開発者が脆弱性診断を実施することで負担が増え、生産性が低下する可能性もあります。また脆弱性診断ツールの導入により、開発者が慣れ親しんだ開発ワークフローが変わってしまい、そのために生産性が低下する可能性もあります。

このような場合、脆弱性診断ツールの導入は開発者の作業を妨げる要因になってしまいます。開発者には開発に専念させたいと考えるマネージャーもいるでしょう。

こういった課題を解決するために、Snyk社が提供するセキュリティプラットフォーム「Snyk(スニーク)」をおすすめします。Snyk社は米国ボストンを拠点とし、クラウドセキュリティを実現するサービスを開発する企業です。同社のセキュリティプラットフォームSnykを、ラックは2022年2月より国内販売代理店として提案・販売しています。

Snykの特長

SnykにはSASTの「Snyk Code」、SCAの「Snyk Open Source」、コンテナセキュリティの「Snyk Container」、Infrastructure as Codeセキュリティの「Snyk IaC」の4製品があり、共通して以下のような特長があります。

開発者目線で使い勝手が良い

多くの開発ツール(VisualStudioCode、IntelliJ IDEA、Eclipse、GitHub、GitLab、Bitbucket、Jenkins、CircleCI等)と連携可能で、開発者のワークフローを変えることなく、開発工程の中で脆弱性診断ができます。

脆弱性スコアを一覧で表示

Snykで脆弱性診断を行うと、検知した脆弱性にスコアを付け、深刻度が高い順に一覧表示します。さらに、それらに対する修正方法を提供するため、効率的に脆弱性を修正できます。

コード例を用いた高速な修正アドバイスの提示

SASTツールであるSnyk Codeは、他のSASTツールより10から50倍ほど速く脆弱性を診断します。診断で脆弱性を発見した場合、AIを活用してソースコードの具体的な修正例を提示します。

ゼロに近い誤検知

SnykではAI(機械学習)を用いて膨大なリポジトリを対象にルールを開発しており、誤検知はゼロに近く高精度なツールとなっています。

分かり易い料金体系

Snykを利用するアクティブなユーザ数のみで費用が決まります。診断回数やソースコードの量を気にする必要がありません。

シフトレフトによって生じた課題はSnykで解決!

シフトレフトで発生した課題はSnykで解決できます。Snykがどのような効果をもたらすのか見ていきましょう。

シフトレフトの課題 Snykによる解決
セキュリティ専門家ではない開発者が脆弱性診断、修正を行う
  • Snykを開発パイプラインに組み込むことにより、自動で脆弱性診断を実施
  • 検知した脆弱性にスコアを付け、優先順位の判断材料を提示
  • 脆弱性を検知した場合、Snykがソースコードの修正例を提示
開発者の生産性が低下する
  • Snykは多くの開発ツールと連携可能。既存の開発ワークフローを変更することなく、自動で脆弱性診断が可能
  • 他のSASTツールより10から50倍速く脆弱性診断を実施
  • 誤検知がゼロに近い
  • SnykはSaaSであるため、運用負荷が軽い
診断回数や診断対象のソースコードが増えた場合、ツール利用料が増える可能性がある Snykを利用するアクティブなユーザ数のみで費用が決まる。診断回数、ソースコードの量を気にする必要はない

シフトレフトの課題をSnykで解決する際の、操作手順はこちらをご参照ください。

①Snykのコンソールを開き、赤枠部分をクリックしてSnyk Codeの実行

Snyk Codeの実行

②実行結果が表示され、SQL Injectionの脆弱性を検知

SQL Injectionの脆弱性を検知

③脆弱性の概要、脆弱性の詳細情報ページへのリンク、修正案の表示

脆弱性の概要、脆弱性の詳細情報ページへのリンク、修正案の表示

④どこをどのように対応すれば解決するのか、を表示

解決方法の表示

さいごに

Snykは開発者にとって使いやすいツールであり、開発者に負荷をかけることなくシフトレフトを実現できます。開発者の負荷が軽く、その上でシフトレフトが実現できるということは、それだけ開発中のアプリケーションのセキュリティが向上すると言えるかと思います。

ラックではお客様のSnykの導入について、以下の支援をしています。

  • Snyk本格導入前のトライアル、PoC
  • 組織のセキュリティポリシーや規制に基づいた診断ルールの策定
  • Snykが検出した脆弱性に対する、ラックのセキュリティ専門家による対応アドバイス
  • 組織でのSnyk利用定着化

Snykに興味をお持ちいただけましたら、ぜひラックへお問い合わせください。

プロフィール

鈴木 真人

鈴木 真人
主にアプリ開発プロセスにおけるセキュリティや、クラウドセキュリティを実現するソリューションの提案に取り組んでいます。DevOpsに「+セキュリティ」する方法について、今後も発信を行っていきます。

「Snyk」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ