JavaScriptの変遷とAkamai Page Integrity Manager

AkamaiのPage Integrity Managerは、ユーザーがWebサイトで入力するクレジットカード番号やセキュリティコードのような機密性の高い個人情報を盗み取る、Webスキミングとも呼ばれる攻撃を防止するソリューションです。この記事では、Page Integrity Managerのようなソリューションが何故誕生したのかを、Softwareアーキテクチャの変遷やJavaScriptの位置づけの変遷を辿りながら考察します。
Softwareアーキテクチャの変遷 - MonolithicからMicroserviceへ
多くのお客様がSoftwareを開発して市場に投入しているかと思います。ニーズ把握〜設計・開発〜市場投入までのサイクルが短く、Softwareのリリース頻度が高い企業ほど市場獲得のチャンスは高いことから、多くのお客様の中でSoftware Life Cycleの高速化の取り組みが始まっています。以前までは全ての機能を1つのSoftwareで持つMonolithic型のSoftwareが主流でした。しかし、Monolithic型のSoftwareは全ての機能が密な関係にあるため、新しい機能を開発したら既存の機能を含む全ての機能に関するテストをクリアしてからでないと市場投入できず、新しい機能の開発完了からリリースまでの期間が長くなる課題がありました。この課題を解決するために、機能毎にSoftwareをAPIとして分割するMicroservice型のSoftwareが台頭してきました。Microservice型のSoftwareは個々の機能が疎の関係にあるため、新しい機能を開発したらその機能に関するテストをクリアするだけで市場投入することが可能になり、リリース期間の短縮が実現できるようになりました。
"MonolithicからMicroserviceへ"
JavaScriptの位置づけの変遷 - 脇役から主役へ
Microservice型のSoftwareが台頭してくると、ブラウザのRuntime上でJavaScriptが稼働してバックエンドのAPIを呼び出す形態のSoftwareがWeb Applicationの主流になってきました。Javaや.NET Frameworkのような従来型のWeb Applicationが台頭していた頃までは、開発されたコードはバックエンドのWeb Application Server上で稼働してブラウザには結果をHTMLで表示されるだけの形が主流で、JavaScriptは動的なHTMLを生成するための補完的な用途で使われているケースがほとんどでした。しかしながら、Microservice型のSoftwareはメインのロジックをJavaScriptで実装してDOMを操作したりAPIを呼び出したりする形がほとんどで、JavaScriptは補完的な用途を担う脇役から主役になりました。また、ブラウザはJavaScriptが保存されているリポジトリにアクセスしてコードをロードして自身のランタイムで稼働させますが、リポジトリは自社が管理している1st Partyのものだけでなく第三者が管理している3rd Partyのものも利用されます。3rd Partyのリポジトリのセキュリティ対策がどのようになっているか把握することはできません。悪意を持った攻撃者がJavaScriptを改ざんしていても、改ざんに気づくことなく実行されて気づかないうちにWebスキミングの被害に遭遇し、攻撃者にクレジットカード番号やセキュリティコードのような機密性の高い個人情報を盗み取られてしまいます。
"脇役から主役へ"
Web Application Firewallの限界
Java言語やC#言語で開発されたSoftwareは、Web Application Firewall (WAF) で保護されたバックエンドのWeb Application Server上で稼働するため不正なトラフィックを遮断することができますが、JavaScriptで開発されたSoftwareはブラウザが持っているランタイム上で稼働するため、3rd PartyのJavaScriptはWAFでは監視できません。Microservice型のSoftware全盛の昨今では、Page Integrity ManagerのようなブラウザのランタイムにJavaScriptを仕掛けて3rd PartyのJavaScriptの挙動を監視し、不正な動きをするJavaScriptの実行を防止するソリューションが必要不可欠となりました。
"3rd PartyのJavaScriptはWAFでは守れない"
Akamai Page Integrity Managerとは?
Akamai Page Integrity Managerは、JavaScriptの脆弱性を検知して不正な機密情報搾取を防止するソリューションです。
Point#1 - Detection Driven
ブラウザ内の攻撃を発見し緩和する最も効果的な方法は、疑わしいJavaScriptのふるまいを検知することです。Page Integrity Manager はユーザーのセッションを基に、Repository Source、送信される宛先ネットワークを含め、JavaScriptのふるまいをリアルタイムで監視します。
Point#2 - Easy to Enable
Page Integrity Manager は、エッジでのインジェクション、およびオリジンでのインジェクションによる展開モデルをサポートしており、既存環境の変更を行うことなく、Akamaiのプラットフォーム上にないWebサイトを含めたすべてのWebサイトを保護します。
Point#3 - Actionable
JavaScriptのふるまいに関するポリシーを作成することでふるまいを管理し、ブラウザのランタイム上でJavaScript の実行を制御します。このポリシーは、オリジンとなるドメインごとに、Cookie、宛先ネットワーク、Local Storageへのアクセスを監視・制御します。
おわりに
JavaScriptが主役になった今日、JavaScriptは単なる動的なHTML生成するだけではなくなりました。多くのお客様のあらゆるWebサイトがJavaScriptにより構築されており、JavaScriptは自社で管理しているリポジトリ以外からもロードされるようになりました。お客様が管理できない3rd PartyのJavaScriptは従来のWAFでは監視できないため、今後さらにPage Integrity Managerのような時代に即したソリューションが求められるようになると考えます。