SHOEISHA iD

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

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

Developers Summit 2022 レポート(PR)

開発プロセスでセキュリティと品質の課題を解決しよう――DevSecOps導入のためのポイント【デブサミ2022】

【17-C-8】DevSecOps始めてますか?品質やセキュリティでお困りごとないですか?

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

 ソフトウェアの開発ライフサイクルを効率的に回しながら、製品の安全性や品質を担保するには、開発フェーズごとに適切なセキュリティテストを実行することが肝要だ。目指すは、DevSecOpsの実現。だが、昨今のソフトウェア/サービスは多様なクラウドのインフラやサービスを組み合わせた、複雑な構成が当たり前。そんな環境でDevSecOpsを実現するには、どうすればいいのか。導入に向けて検討すべきポイントや手順について、Developers Summit 2022の講演で日本シノプシスの松岡正人氏が解説した。

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

日本シノプシス合同会社 ソフトウェア・インテグリティ・グループ シニア・プロダクト・マーケティング・マネージャ 松岡正人氏
日本シノプシス合同会社 ソフトウェア・インテグリティ・グループ シニア・プロダクト・マーケティング・マネージャ 松岡正人氏

Microsoft SDLをもとに開発ライフサイクルを整理する

 ソフトウェアの脆弱性は、サイバー攻撃でシステム侵害を試みる際に狙われる格好の標的の1つだ。シノプシスが毎年発行する「オープンソースセキュリティ&リスク分析レポート」(2020年版)によると、17業種の1,546の商⽤コードベースを監査したところ、84%のコードベースに1つ以上の脆弱性が含まれており、中には2年以上前に公表された脆弱性が対応されないまま残っているものもあるという。

 リリース前にはバグや脆弱性の有無をセキュリティテストで検証するなど、多くの開発現場はセキュアなソフトウェア開発に取り組んでいるが、かなりの取りこぼしが発生しているのは明らかだ。

 日本シノプシスの松岡正人氏は、ソフトウェアのセキュリティ強度を高めるには、テストツールを導入するだけではダメだと指摘する。「開発に関わる人やプロセス、技術をうまく組み合わせて最適化し、開発ライフサイクルの全フェーズでセキュリティリスクに対処する、そんな機構を構築したい」(松岡氏)

 松岡氏は参考として、多くの開発現場でリファレンスとして取り入れられているマイクロソフトの「Microsoft SDL(Software Development Lifecycle)」を紹介する。ソフトウェアの信頼性と安全性を高めるために同社が策定したガイドラインで、要件・設計・実装・検証・リリース・運用の開発ライフサイクルの各フェーズで求められるセキュリティテストが記載されている。

 異なる制約下のサービスやプラットフォーム、サブシステムが連携し、OSSやサードパーティのライブラリなどを組み合わせたアプリケーションが動作する現代の複雑なシステムも、こうしたガイドラインに基づき、要件フェーズでセキュリティ要件の定義やリスク評価を実施。設計フェーズで攻撃面の分析や想定される脅威を洗い出し(脅威モデリング)、実装や検証フェーズで必要なセキュリティテストを組み込むことで、よりセキュアなシステムを開発運用できるようになる。

Microsoft SDLをベースとした現代のソフトウェアの開発ライフサイクル+セキュリティテスト
Microsoft SDLをベースとした現代のソフトウェアの開発ライフサイクル+セキュリティテスト

 セキュリティテストの主なものとしては、静的解析(SAST)、動的解析(DAST/IAST)、ソフトウェアコンポジション解析(SCA)が挙げられる。

 SASTはソースコードの静的解析テストで、SQLインジェクションやXSSなどの一般的な脆弱性を発見するのに最適だ。テストツールには、プロジェクトや組織で使用する言語、コーディング規約を確実にサポートし、業界標準を網羅、IDEとの連携や大規模開発環境に対応するものを選びたい。

 DASTは、アプリケーションやコンポーネントが動作する開発環境および運用環境を動的解析し、構成や設定、認証処理、ビジネスロジックなどの欠陥をあぶり出すテストだ。IASTもDAST同様に動的解析の1つで、アプリケーションサーバーなどにインストールしたエージェントを介してコードおよびメモリを解析し、問題を洗い出す。いずれもテストツールであれば、解析結果から偽陽性を排除できる正確性や、新たに発見された脆弱性に関する詳細の分析報告をする機能など、自動化を視野に入れた機能だ。

 そして最後のSCAは、コードに含まれるOSSやサードパーティのソフトウェアコンポーネントを解析し、脆弱性の有無をチェックするテストだ。特にこうしたコンポーネントは、開発者が使えると判断して利用しているもの、過去のコードから含まれていたもの、外部委託事業者の判断で含まれているものなど多様で、すべて把握できていない企業は多い。新たな脆弱性が公開されても、自社のコードに該当するものが存在することすら気付けないのが現状だ。

 このような問題に対処するため、いま注目されているのが、ライブラリや各種機能などソフトウェアの構成要素を洗い出して管理するSBOM(ソフトウェア部品表)の考え方だ。ポイントは、開発側と運用側でSBOMを共有することだと松岡氏は言う。これにより、開発側はリリース時に既知の脆弱性がソフトウェアに含まれていないかを検証でき、運用側は新たに発見された脆弱なライブラリなどがないかを監視することができる。2021年に米国で発令された14028大統領令では、政府機関が利用するソフトウェアの開発に関する安全性の確保について、ガイドライン策定をNISTに指示しているが、SBOMの活用についても強調されている。

 このほか、NISTからはSP800-53 Rev5「組織と情報システムのためのセキュリティおよびプライバシー管理策」のSA-11(付属書C)にもSASTや脅威モデリング、コードレビュー、セキュリティリスク評価、DAST/ファジング、IAST/APIセキュリティテストの一覧が掲載されている。NISTの各種ガイドラインは、IPA(独立行政法人 情報処理推進機構)が日本語版を公開している。

次のページ
DevSecOpsを実現するための新たな仕組み:ASOC

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

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

もっと読む

この記事の著者

谷崎 朋子(タニザキ トモコ)

 エンタープライズIT向け雑誌の編集を経てフリーランスに。IT系ニュースサイトを中心に記事を執筆。セキュリティ、DevOpsあたりが最近は多めですが、基本は雑食。テクノロジーを楽しいエクスペリエンスに変えるような話が好きです。

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング