DASTであるVexを開発・販売をおこなっている弊社が何故真向からぶつかるIASTを取り扱うのか?この二つの製品は競合するのではないか?ぼんやりとした疑問が浮かぶのは私だけではないと思います。

どんなツールや仕組みを導入しようとも、目指すところはひとつ。一つでも多くの安全なWebアプリケーションが世の中に提供され、利用者が安心してそのシステムを使うことができるようになる。ここに尽きると思っています。ユービーセキュアは安全なWebアプリケーション(システム)を作るための様々なソリューションを提供していますが、特に診断ツール/脆弱性検査ツールについては、その機能や特性を理解し、様々な施策とうまく組合せ、適用するフェーズを工夫できればと考えています。

Contrast Assessの検査の仕組み

まず簡単にContrast Assessの概要を説明します。
Contrast Assessはセキュリティ検査ツールの分類ではIAST(Interactive Application Security Testing)に属します。分類としては比較的新しく、日本市場に登場したのは2018年前後です。SASTのようにアプリケーションのソースコードを自身のツールに取り込んでの検査は行いません。DASTのように脆弱性を検出するパターンを含んだHTTPリクエストをアプリケーションに送信し、アプリケーションのレスポンス(返答)を見て判定するタイプでもありません。その中間に位置し、いいとこ取りをしたのがIASTと言ってよいでしょう。Contrast Assessは、診断対象にインストールして脆弱性を検知する「エージェント」と脆弱性情報を一元管理する「Contrastサーバ」で構成されています。

  • SAST:Static Application Security Testing(静的解析)
  • DAST:Dynamic Application Security Testing(動的解析)
  • IAST:Interactive Application Security Testing(インタラクティブ解析)

「エージェント」は、入力されたHTTPリクエストがどのようにソースコード、データフロー、ライブラリ、各種設定で扱われ、最終的にどんな値となって出力されるのかを総合的に検証する仕組みでセキュリティ検査を実行しています(図1参照)。アプリケーションをソースコードの記述だけでなく、実際のデータの流れや扱われ方を見て解析するため、非常に正確かつ極めて高い脆弱性検出能力を提供しています。

図1. エージェントによるアプリケーションチェックの概要図図1. エージェントによるアプリケーションチェックの概要図

 

私の推しポイント

この仕組みによるメリットは様々であり、下記にご紹介します。
私自身が10年以上にわたってWebアプリケーション診断(DASTおよび手動)に携わってきた経験の中で、Contrast Assessを利用することで開発の高速化が実現できると考える理由をご紹介します。数ある理由でも次の3点は個人的には非常に推しのポイントです。

1)事前のデータ準備が不要
2)検出結果の精査に要する時間が劇的に少なくなる
3)導入が容易で、誰でも検査実施が可能

1)事前のデータ準備が不要

私が長年セキュリティ診断を実施してきた中で、苦労した事のひとつに、「データの準備」がありました。この準備をスキップし、思い立った時に検査が可能というメリットはまさに目から鱗でした。
セキュリティ検査では通常、対象機能が担う役目に応じて多くの「検査用データ」を事前に用意しておく必要があります。例えば「テータ削除機能」があったとします。正常遷移と処理によりデータが消える事が確認できるよう、削除用のデータが必要になります。その数はアプリケーションの作りにより一概に言えませんが、時には1000件単位でのデータ作成が発生します。この手間が検査担当者自身の手間だったり、部署間を跨いだ調整が発生する手間だったりと、それらのデータの準備が完了するには、時には煩雑で相当の時間を要する場合があります。その分検査実施も後ろ倒しになってしまいます。
Contrast Assessの場合、必要とするのは一度の正常遷移と処理なため、データ作成は必要なく、検査に入るまでの準備時間を短縮させることが可能です。

2)検出結果の精査に要する時間が劇的に少なくなる

検査結果が極めて正確かつ、どのアプリケーションのどの箇所をどのように修正すればよいかを自然な日本語で提示されるので、開発者は指摘された結果を容易に受け止め、速やかに修正することが可能です。
検出の正確さも検査を実施した経験からすると非常に心強いものです。検査には、常に「白」か「黒」かをハッキリさせる「精査」というプロセスが必要になりますが、Contrast Assessの検出精度の高さにより、「精査」に必要となる時間は明確に削減されます。

3)導入が容易で、誰でも検査実施が可能

Contrast Assessの利用者はツールの特別なUIを操作する必要がありません。通常業務で使用しているブラウザを使って検査対象を巡回します。したがって、利用者は今まで自身の開発端末に構築した開発フレームワークなどに特別な手を入れることはなく、意識せずに開発とセキュリティ検査の同時実施が可能になります。セキュリティツールを利用するための事前準備や、ツール操作の習熟度によって検査結果が変わることがなく、安定した検査精度の確保につながります。

・検査のための環境が不要
Contrast Assessは通常ご利用の開発環境に検査用エージェントアプリケーションを組み込んで利用します。検査を実施している最中でも対象アプリケーションへの修正を自由に行い、その都度検査を実施することが可能です。

・検査工数そのものを低減できる
Contrast Assessによる検査は、利用者がブラウザを使って対象アプリケーションを遷移する(なぞる)裏側で自動的には脆弱性を見つけ出して報告します。正直なところ検査をしている実感はありません。初めてその動きを体験する方はキツネにつままれている感覚になるのではないでしょうか。
これは何を意味しているのでしょうか?アプリケーションを動かせば、その瞬間に検査が実施される。思い立った時にいつでも検査できる手軽さがあるとも言えますね。

上述した以外にも、優れた特性がありますのでご紹介したいと思います。

外部ツールとの高い親和性

外部ツールとの親和性(検査結果の連携)

昨今の開発体制では情報連携のツールが電子メールに代わってSlackやTeamsなどのビジネスチャットが用いられるようになってきました。情報連携の即時性や共有性が格段に向上したことを実感されている方も多いでしょう。Contrast Assessには、これらの情報連携ツールとの連携機能が用意されており、検査結果や検出された課題のチーム内連携性を高め、作業効率をあげることが可能です。

CI/CDパイプラインとの親和性

高速アプリケーション開発を実践するうえで有効な手段とされるCI/CDパイプラインに対して無理なくContrast Assessを組み込むことが可能です。
例えば、下記のようなサイクルを自動的に進めることが可能です。

  1.  開発者による新規コードのコミット時にCIツールにより自動ビルドを実施
  2.  自動ビルド後試験サーバへCDツールにより自動デプロイ
  3.  テスト自動化ツールによる自動試験を実施
  4.  自動試験時にContrastエージェントが試験を監視、検出した脆弱性をContrastサーバへ報告
  5.  検出された脆弱性情報及び修正方法を利用しているIDE上に連携
  6.  検出された脆弱性情報をチケット管理ツールに連携、チケット作成
  7.  重大な脆弱性については利用しているチャットツールへリアルタイムで通知実施


fig02図2. CIパイプライン導入例

見たい検査結果にすぐ辿りつける

見たい検査結果の閲覧が容易、閲覧権限の設定も可能

多くの脆弱性管理ツールの例にもれず、Contrast AssessでもWebベースのダッシュボードを用いてプロジェクト毎に分かれた検知事項、脆弱性の詳細、コードの修正箇所と方法、修正履歴、検査履歴を予め設定されたユーザ権限に基づいて閲覧、操作、管理することが可能です。

ダッシュボードではアプリケーション(プロジェクト)の一覧、各アプリケーションバージョンなど強力なフィルタ機能を用いて迅速に目的の指摘事項まで辿りつくことを容易にしています。

またWebベース以外に、普段利用している統合開発環境(IDE)のUIから検知事項などの情報を直接閲覧することができます。IDEから離れることなく開発環境とセキュリティ管理をシームレスに行えます。

オープンソースソフトウェア(OSS)の検査機能も充実

ライブラリの脆弱性確認(OSS検査機能)

昨今のアプリケーション開発ではオープンソースソフトウェア(OSS)の利活用なくしては成立しないでしょう。それほどまでOSSに対する依存度は高いものになっていますし、実際にOSSを用いた開発スタイルが主流になっていると言えます。このような状況下で、自社がコーディングしたアプリケーションがセキュアであっても利活用しているOSSに脆弱性があった場合、結果的にそのアプリケーションの安全性は担保できない状態となります。

開発サイクルの中で、常にどのアプリケーションがどのOSSを利活用しいているのか、利活用しているOSSが少なくとも脆弱性を含んでいないバージョンなのか?OSSパッケージとしてインストールはされているが、それがアプリケーションで使用されているか?利用ライセンス形態が競合していないか?と言った観点を常に管理する必要があるのです。

また単一のライブラリではなく、ライブラリ同士がその他複数の別のライブラリと依存関係になっていることもライブラリ管理を非常に複雑なものにしており、もはや人手による管理は困難と言われています。弊社のお客様である損保ジャパン様もこの根深い課題に対してContrast Assessのオプションで提供されているOSS機能を導入され、管理を効率化されています。

損保ジャパン、米国Contrast Security社のセキュリティソリューションを導入 〜デジタルトランスフォーメーションにおけるセキュリティ強化と開発業務の高度化を推進〜
https://www.ubsecure.jp/topics/topics-2021/t-20210602

OSSの脆弱性は、しばしば「間(はざま)に落ちる」と言われます。OSSの管理や更新を開発チームと運用チームとでお見合いしてしまい、やがて脆弱性を帯びたOSSが開発、運用環境に潜み続け、ある日その脆弱性を突かれてインシデントにつながるケースが過去何度も繰り返された歴史があります。

Contrast Assessでは脆弱性検査以外にOSS管理機能を提供しており、上記の管理課題の解決支援も可能です。

理解しておくべき制約事項も

万能ツールのように思えるContrast Assessですが、残念ながら下記の通り、出来ないこともあります。
このような特にビジネスロジックや権限管理のセキュリティ品質はContrast Assessとは別に第三者によるマニュアル診断を併用する必要があります。

対応言語に制約がある

これまで説明しきた機能は下記の言語でご利用可能です(2021年6月現在)
Java、.NET Framework、.NET Core、Node.js、Ruby、Pyhton、Go
言語バージョン、アプリケーションサーバ、フレームワークについての詳細はこちらのページを参照ください。
国内で多く利用されているPHPは未対応です。現在本国に向けて機能提供要望を上げています。

ビジネスロジック、権限管理は解析範囲外

Contrast Assessはアプリケーションそのものに潜む脆弱性を検出しますが、アプリケーションのロジック(画面遷移や処理条件の悪用など)や「縦横」の権限詐称については解析範囲外となっています。この範囲については、第三者によるマニュアル診断を適用してセキュリティを担保する必要があります。

まとめ

IASTであるContrast Assessの活用によるメリットは理解いただけたと思います。
本ブログのタイトルにある「セキュアアプリケーション開発の高速化」について簡単にまとめると、「指摘事項の妥当性検証(精査作業)を行う時間が事実上ゼロとなり、開発者が実施すべきアクションが明確に提示されることで、脆弱性の検出から修正、修正後の確認までのリードタイムが大幅に削減される。最終的に開発プロセス全体の高速化を果たすことが可能になる」 と言えるでしょう。

ユービーセキュアは、いかに早くアプリケーション開発現場の課題を見つけ出し、解消するかを目指しています。
冒頭の「真向からぶつかるIASTを取り扱うのか?この二つの製品は競合するのではないか?」という疑問については、確かに市場での立ち位置としてはぶつかる可能性があります。DASTは、開発言語に左右されない検査を実施することが可能であり、様々な言語を用いた開発を行う組織にとっては非常に使い勝手の良いツールです。一方、IASTは対応言語に制約があるものの、開発の高速化を求める組織にとって大きなメリットを享受できるツールであると断言できます。
ただ、いずれのツールにせよ全ての問題点を100%洗い出すことは未だ難しく、ツールどうしの補完や外部診断サービスの組み合わせ等も考慮する必要があります。
いかに100%に近づけるか、またはどのレベルを目指すのか。どのようにセキュリティカバー領域を考えれば良いのか。弊社ではこのような課題をお客様に寄り添いながら解決に向けて歩む文化があります。是非、弊社までお気軽にご相談いただければと思います。

Contrast Securityの製品/サービス紹介ページへの導線