Contrastの「内側から守る」とはどういう意味だろう?
これは、プロアクティブセキュリティであり、攻撃をされた後に慌てふためくのではなく、攻撃される前に講じる全てのことを意味する。つまり、アプリケーションを内部からしっかりと保護することで、悪者を寄せ付けない対策を事前に取るということだ。
プロアクティブセキュリティについては、多くの議論が交わされている。
しかし、「プロアクティブ」であるとは実際にはどのようなことを意味するのだろうか? 侵害や攻撃の成功につながる可能性のあるアプリケーションの脆弱性を事前に特定することを指しているのだろうか?
あるいは、悪用される前に脅威を特定するプロセスを導入することなのだろうか? アプリケーションセキュリティテスト(AST)ツールで何かを見逃したり、脆弱性のバックログを調べるのに忙しくて本番環境に入り込むリスクを阻止できない場合に備えて、本番環境でアプリケーションを保護していることを意味するのだろうか?
「プロアクティブなセキュリティ」または「内側から守る」ということは、結局のところ予防に尽きる。つまり、答えは「現状の場当たり的な対応以外のあらゆること」を行うことである。これは、攻撃が発生した後、単なる事後対応型のセキュリティプロセスを止めるということを意味する。ランサムウェアによってデータとビジネスが焼き尽くされた後、Log4Shellにやられてしまった後、顧客データが流失した後、侵害されたシステムを攻撃者が利用して、顧客、サプライヤー、パートナーのシステムに侵入したためにブランドが台無しになった後、メディアで批判の的になった後、などの対応だ。
もちろん企業は、ログ監視、攻撃の検知と対応、SIEM(セキュリティ情報/イベント管理)といった、インフラレベルの強固なセキュリティ対策に投資する必要がある。これらの対策やテクノロジは、インシデントに対応し、進行中の攻撃や業務の中断を、被害が拡大する前に食い止めることで機能する。しかし、どんなに迅速に対応しても、ほとんどの場合、ある程度の被害は避けられない。時には、「馬が逃げた後に馬小屋のドアを閉める」(手遅れとなる)ような状況もある。
事後対応のアプローチだけでは不十分だ。CISO(最高情報セキュリティ責任者)をはじめとするセキュリティ部門の管理者、および彼らが率いるセキュリティ組織は、悪用される前に、自分達のエコシステムにどのような脆弱性が存在するかを知っておく必要がある。そのような脆弱性の深刻度と修正方法を知っておく必要がある。アプリケーションを実行したら、最初の攻撃が試される前に自動的にアプリケーションを強化するソリューションが必要だ。このような予防的なアプローチにより、組織はインシデントを特定し、被害を未然に防ぐことができる。
それがまさにContrastだ。Contrastのランタイムセキュリティプラットフォームは、コードの脆弱性を検出するだけではない。本番環境でのWebアプリケーションに対する攻撃をブロックすることで、問題の発生を防ぐ。これは、Webアプリケーション内部に直接セキュリティを組み込むことで実現する。
Contrastは、インストルメンテーションというという技術を使用して、実行時にロードされるコードにセンサーを組み込む。これにより、セキュリティチェック機能がコードに搭載されて、開発者による誤用や攻撃者による悪用に対してアプリケーションが保護されるのだ。これが、アプリケーションを「内側から守る」ということだ。Contrastのプラットフォームは、脆弱性の検出と、攻撃のブロックの両方を可能にする。
「内側から守る」アプローチでSASTとDASTを比較
Webアプリケーションを内側から守るということは、DAST(動的アプリケーション セキュリティテスト) を使用して外部から見える問題や脆弱性を見つけるブラック ボックステストのように、外側からアプリを守ろうとするのとは異なる。このアプローチでは、スキャンに何日もかかる場合があるし、テストの作成はセキュリティエンジニアに依存するし、アプリケーションの健全性や動作に関する洞察が欠如するし、多くのことを見逃す可能性がある。
DASTは外部から攻撃して内側へと動作するため、ツールで実際に悪用してHTTPレスポンスで検知できる脆弱性しか検出できない。おそらく最悪なのは、DASTツールがスキャンできるのは「フロントドア」だけで、最新のアプリケーションのバックエンドインターフェイスや接続を全てスキャンできるわけではないことだ。要するに、DASTは手間がかかるし、ミスも多いということだ。
SASTツールもまた、外部から内部へのアプローチだ。SASTツールは、脆弱性の早期発見のために開発パイプラインで使用されることがよくあるが、ソースコードのみを参照するため、完成したアプリケーションが実際にどのように動作するかを確認することはできない。
WAF(Webアプリケーションファイアウォール) に関しては、バックエンドシステムからの攻撃を防ぐことはできない。また、MOVEitの脆弱性の悪用のようなSQLインジェクション攻撃を防ぐこともできない。この種の攻撃は25年前から知られている手口だが、WAFではいまだに阻止することができない。WAFでは、過検知や検知漏れも発生しやすい。WAFはインフラストラクチャの前面に位置しており、Webアプリケーションの内部構造(動的、モジュール化、分散化されたインスタンスであることなど)を把握できないからだ。
WAFはあなたのWebアプリを守りきれない
このままではダメだ。今日の複雑な環境では、現代のアプリケーションの多様な構造に対応できる総合的な視点が必要だ。それは、一元的なアプローチで常に変化するものであり、動的で、クラウドベースやコンテナ化された環境の現実が考慮されるものだ。よりスマートなアプローチは、ブラックボックスから抜け出し、代わりに内側から守ることだ。
アプリケーションを内側から守る
大まかに例えると、Contrastのランタイムセキュリティプラットフォームは、家が全焼しないようにするために使えるテクノロジと似ている。脆弱性の匂いを嗅ぎ分け、開発者に警告し、コード内のどこにリスクがあるかを特定し、修正・対策方法を提供する。そして、運用中に火災が発生した場合には、未知の脆弱性に対する攻撃をブロックして、スプリンクラーを作動させる。
結局のところ、消防士が遅すぎることもある。消防士が到着するまでに、すでに家が全焼していることもある。家が自ら火災を感知して、消火できる必要がある。それが、内側から守るということだ。
セキュリティリスクを壊滅的な火災に例えるのは、誇張ではない。サイバー攻撃の結果、消えた企業はいくつもある。Travelexもその1 つだ。同社は2019年の大晦日にサイバー攻撃を受けた後、この損失が追い打ちとなり2020年8月に経営破綻した。
Contrast の「内側から守る」というアプローチがどのように機能するかは次のとおりだ:
1.Contrastは煙を嗅ぎ分けて脆弱性を検出
まずは、脆弱性を検出するContrastのIAST(インタラクティブアプリケーションセキュリティテスト)ツールであるContrast Assessを使用して、アプリケーションを検査することから始める。Contrast Assessは、ユーザが作成した独自のコード(ファーストパーティコード)と、外部からインポートしたコード(サードパーティコード)の両方に含まれる既知の脆弱性(CVE)を検出する。一般的にはSAST(静的アプリケーションセキュリティテスト) ツールで脆弱性を検出(精度が低いものの検出は可能)し、SCA(ソフトウェアコンポジション解析)ツールでCVEを検出できるのだが、Contrastには、これらのテクノロジにはない奥の手がある。コード全体を解析(サードパーティの依存関係までも検査)することで、依存関係にある未知の脆弱性を検出しブロックできる。コード全体に対して、セキュリティチェックを追加し、危険なメソッドに信頼境界を設けることができる。とりあえずは、アプリケーション/住宅内の発火物質を防火して、防火対策を施す方法と考えて欲しい。
事実、Contrastは以下のゼロデイを発見前にブロックした:
発見前にブロックされたゼロデイの殿堂入り
Contrastは組み込みの検出ルールによって
脆弱性の悪用を検出して防止する
発見前に(CVEが発行される前に)Contrastが防いだゼロデイの例:
2. 脆弱性を取り除くよう
Contrastが警告
Contrast Assess は脆弱性を嗅ぎ分けるだけではない。開発担当に警告を発し、脆弱性を永久に取り除くことができるようにする。Contrastは、家の全ての木材を、自動的に金属でコーティングして不燃性にした木材に置き換えるようなものだ。その時点では、脆弱性が発火することはないので、脆弱性に対する処置も必要ない。
眠らずに見守る:IASTソリューションは、継続して脆弱性を検出し、優先順位付けを行い、開発者に脆弱性の修正方法を指示する。脆弱性のコードコンテキスト(データフローを含む)を示す図も生成されるので、経験の浅い開発者でも脆弱性の修正方法を理解することができる。
Contrast Assessでは、アプリやAPIのURL(「ルート」とも呼ばれる)がマッピングされ、脆弱性に到達する方法が正確に示される。そして、脆弱性のあるコード行が正確に示され、コードがどのように脆弱であるかが解説される。
3.Contrastが本番環境の危険な関数の周りにミニファイアウォールを構築してスプリンクラーを作動させる
すべての脆弱性とすべての攻撃の根本原因は、危険な関数だ。危険な関数とは、ユーザが書いたコードやサードパーティの依存関係の中にある、呼び出し可能なコードの単位(プロシージャ、メソッド、サブルーチンなど)だ。このような関数は、ファイルの作成、ドキュメントの解析、ネイティブコマンドの実行、オブジェクトのデシリアライズ、データベースクエリの実行など重要なタスクを実行する。アプリケーションで機能を実行するために必要なものであるが、悪用されると害を及ぼす可能性がある。
Contrastは、実行時にコード自体をインストルメント化し、上記のような危険な関数の周りに信頼境界を組み込む。これが「内側から守る」ということだ。これらの関数を強化することで、Contrastによって関数が悪用されるのを防ぐことができる。Contrastは、危険な関数のこの根本原因に対処する唯一のAST(アプリケーションセキュリティテスト)ツールだ。
Contrastは、可燃物となる危険な関数を見つけだし、それら をインストルメント化することで、火種に防火剤を吹きかけて火災を防ぐ。
Contrastが選ばれる理由
Contrastプラットフォームは、ランタイムセキュリティ製品によるアプリケーションレベルのゼロトラストアプローチを採用している。これは、IAST、RASP(ランタイムアプリケーションセルフプロテクション)、ランタイム SCA (ソフトウェアコンポジション解析)を1つの製品に統合したものだ。実行中のアプリケーションの動作が常に監視されて検査される。そして、危険な関数は信頼境界で囲まれ、開発やテスト段階で脆弱性が特定され、本番環境での攻撃はブロックされる。
危険な関数が適切なサニタイズを行わずに呼び出された場合は、インシデント対応担当者に警告が出される。そして、恒久的な修正ができるように、取り除く必要のある脆弱性についての情報が開発者に即座に通知される。ランタイムセキュリティとは、各アプリケーションの周囲にセキュリティ境界を追加するもの(要するに小型のファイアウォール)であり、開発段階で脆弱性に関する豊富な情報を提供し、本番環境でアプリケーションを保護するものと考えて欲しい。
アプリケーションのメソッドが強化されると、アプリケーションは内側から守らるようになる。
Contrastは、セキュリティを適切な場所、つまり最初からあるべき場所に配置したのだ。
関連記事/サイト: