SHOEISHA iD

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

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

【デブサミ2020】セッションレポート (AD)

ソフトウェアの品質とセキュリティを担保するためのヒントとは【デブサミ2020】

【13-F-2】アプリケーションやシステムが悪い奴らに攻撃されたらどうなる?

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

セキュアなアプリケーションを開発するポイント

 では、セキュアなサービスやシステムを開発することは可能なのか。1つは、システム全体を俯瞰しながら、解決すべき課題がどこに存在し、どう解決すべきかを整理することだと松岡氏は言う。

 例えばWebアプリケーションであれば、外部と連携するためのWeb UIやAPI、Webアプリケーションのふるまいを決めるロジック、フレームワーク、コード、OSSコード、OSやシステムで構成される。Web UIやAPIなどのインターフェイスは、DAST(動的アプリケーション・セキュリティ・テスト)で実際の動きを見ながら脆弱性をチェックするテスト方法。ロジックは、ランタイム・テストやインタラクティブ・アプリケーション・セキュリティ・テストで、データやオブジェクトの生成、やり取りを可視化し、バグを洗い出す。フレームワークやコードについては、SAST(静的アプリケーション・セキュリティ・テスト)で静的解析し、脆弱性やバグを発見。OSSコードやOSなどは、脆弱性だけでなくライセンス違反のリスク管理も必要だ。

 「特に、今どきはサードパーティのOSSコンポーネントを寄せ集めてシステム開発することが一般的で、そのコンポーネントに内在する脆弱性を見落としたまま実装してしまうケースは後を絶たない」と松岡氏は指摘する。

 こうしたテストは、計画、コード作成、ビルド、テスト、デプロイといった開発の各工程で実施することが望ましい。「効率化の意味でも、CI/CDパイプラインにセキュリティテストを組み込み、自動化することをおすすめする」(松岡氏)

 もう1つのポイントは、脅威モデルを構築することだ。脅威モデルでは、システム構成をベースにアセットの種類や場所、アセット間のデータ連係ややり取りを整理し、これらアセットに対してどのような攻撃が想定されるのかをマッピング。それぞれの管理策、さらには管理策を回避しうる攻撃や脆弱性を考える。

 Webアプリケーションで考えてみる。アセットには、データベース、アプリケーションのデータ、セッションチケット、ユーザーのIDとパスワード、イベントテーブル、レポートデータ、ログファイルやイベントデータなどがある。これらの情報に対して不正にアクセスする場合、どのような脅威エージェントが存在するのか。

 例えば、本来は正しい権限を持ったユーザーや通信のみがアクセスできなければならないところを、認証に不備があると、権限のないユーザーや通信がアクセスできる可能性がある。また、正規の認証情報が何らかの形で他人に漏れていれば、正規の承認済みユーザーとなり、外部および内部からアプリケーションのユーザーやシステム管理者、データベース管理者、開発者としてログインすることも可能だ。

Webアプリケーションの脅威モデル例
Webアプリケーションの脅威モデル例

 脅威エージェントがリストアップできたら、次はそれぞれの管理策、管理策の回避方法と対策を考える。例えば、Webサーバー経由でアプリケーションサーバーにアクセスするには、認証情報のアセットを用いてユーザー認証や一方向のSSLを組み合わせ、アクセス制御で管理する。ここで困るのは、認証情報を窃取されてしまった場合だ。これは、サイバー攻撃と対策についてまとめたナレッジベース「MITRE ATT&CKフレームワーク」を参照するのがいいと松岡氏は言う。

 例えば、認証情報を窃取するテクニックの1つに「クレデンシャルダンピング」が存在する。これは、カーネルの実装上の問題から権限昇格が実行可能な脆弱性を悪用するといった手法だ。防ぐには、ルート権限を取得できる脆弱性はつぶすことだと同フレームワークには記載されている。

 「MITRE ATT&CKフレームワークでは、標的型攻撃などで使われたテクニックや既存の脆弱性の概要、対策が簡潔にまとめられているので、参考になる」(松岡氏)

 脅威モデルは、マイクロソフトの「STRIDE」、OWASPの「Application Threat Modeling」、OpenID Foundationの「OAuth 2.0 Threat Model/IETF RFC6819」などがある。自社にとって運用しやすいモデルを選択するのがおすすめだそうだ。

 シノプシスでは、静的解析でコードに含まれる既存の脆弱性を検知する「Coverity」や「Black Duck」などの製品群のほか、DASTやペネトレーションテストを実施するプロフェッショナルサービスを提供している。

 最後に、松岡氏は「脆弱性は、ビジネスにおいて大きなリスクだ。脆弱性が組み込まれないように対策するには、まずはサービスやシステムにどのようなアセットが存在し、どのような脅威が想定されるかを整理して、自動化で工夫しながら開発のライフサイクルの各プロセスでセキュリティテストを組み込むこと。それがセキュアな製品・サービスの開発を実現し、ビジネスリスクを低減するためのカギだ」と強調した。

お問い合わせ

 日本シノプシス合同会社

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2020】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング