コンプライアンス
「RASP」によるサーバレス/コンテナアプリケーションの保護
本ブログでは、開発者が知っておくべきセキュリティ上の考慮事項と、コンテナベースのアプリケーションやサーバレスアプリケーション向けに最適な防御を構築するにあたり、アプリケーションのランタイムにセキュリティを組み込むためのツールであるRuntime Application Self-Protection(RASP=実行時アプリケーション自己保護)の利用方法に焦点をあてて説明します。
近年、コンテナやサーバレスといったテクノロジーに対する需要が増しています。ある市場調査によれば、全世界のコンテナ市場は2018年に12億米ドルだったものが2023年には49.8億米ドルに、またサーバレスアーキテクチャについては、2020年の76億米ドルから2025年には211億米ドルに成長することが見込まれるとのことです。コンテナやサーバレスに対する需要が高まっているのは、企業がアプリケーションを開発および展開する際に、スケーラビリティや効率、費用対効果の面で役に立つからです。
しかしながら、急激な成長を遂げるテクノロジーに共通する点として、コンテナベースのアプリケーションやサーバレスアプリケーションは、リスクや脅威と無縁ではありません。悪意を持つ攻撃者は、常にもっと多くの標的を見つけようと広範囲に網を張っていますので、さまざまな手口で頻繁な攻撃を仕掛けてくるようになるのも時間の問題です。こうした点を踏まえ、これらのアプリケーションを潜在的な攻撃から守るには、どのようなセキュリティ強化を企業は実施すればよいのでしょうか。
本ブログでは、開発者が知っておくべきセキュリティ上の考慮事項と、コンテナベースのアプリケーションやサーバレスアプリケーション向けに最適な防御を構築するにあたり、アプリケーションのランタイムにセキュリティを組み込むためのツールであるRuntime Application Self-Protection(RASP=実行時アプリケーション自己保護)の利用方法に焦点をあてて説明します。
■ RASPとは
RASPは、アプリケーションに直接組み込まれるセキュリティツールです。アプリケーションが起動するたびにRASPもサーバ上で実行され、機能します。ひとことで言えば、RASPとは悪意のある挙動をリアルタイムで検知するために設計されたツールです。RASPは、アプリケーションの動作に加え、その動作のコンテキストも分析することでアプリケーションを攻撃から保護します。
■ RASPの利点
本質的に、RASPはアプリケーションに対してリアルタイムで保護を提供します。RASPは、SQLインジェクションやクロスサイトスクリプティング(XSS)、脆弱性、ボットといった悪意のある挙動に加え、電子メールやSlack、その他のメッセージを介して仕掛けられる攻撃など、あらゆる種類のトラフィックを捕捉します。
RASPは、アプリケーションに直接組み込まれるという性格上、アプリケーションの動作を監視できます。そのため、RASPは攻撃と正当な要求を区別することで誤検出を減らし、高い精度で攻撃を防げますので、セキュリティ技術者は重要度の高い問題に集中して取り組めます。
さらに、RASPはゼロデイ攻撃に対しても、優れた保護を提供します。アプリケーションのパッチができるまでの期間が長引くような場合、RASPが短期的な対策となります。また、RASPはアプリケーション自体を適正な動作の基準としているため、攻撃を検知する際にいかなる種類の署名にも依存しません。
■ RASPがサーバレスアプリケーションを保護する仕組み
RASPがサーバレスアプリケーションを保護する仕組みを説明するため、Trend Micro Cloud One™ – Application Securityを使ってAmazon Web Services(AWS)Lambdaを保護する場合を例にとります。Lambdaは、企業がサーバのプロビジョニングや保守を行うことなく、コードを実行するためのサーバレスなサービスです。
トレンドマイクロのリサーチペーパー、「Securing Weak Points in Serverless Architectures: Risks and Recommendations」(英語)では、トレンドマイクロのシニアセキュリティリサーチャーが高度なアクセス許可が設定されたAWS Lambda関数を使った実験を行い、サーバレスシステムに問題のあるコードを実装した場合のリスクを明らかにしています。この場合、攻撃者はLambda関数のタイムアウトを改変し、続いて特権のエスカレーションやデータの窃取といった攻撃を実行できてしまう可能性があります。なお、この実験を行うにあたっては、Lambdaに管理者特権を設定しています。初期状態では、顧客が定義する以外の権限がLambdaに与えられることはありません。この点に注意し、実行ロールを定義する場合、原則として付与する権限は常に最小限にとどめるようにしてください。
図1は、前述のとおり、高度なアクセス許可が設定されたAWS Lambda関数に関連する攻撃の流れを示しています。なお、システムにはCloud One – Application Securityライブラリがすでにインストールされているものとします。

図1:高度なアクセス許可が設定されたAWS Lambda関数に関連する攻撃の流れ
図2に示すとおり、Cloud One - Application Securityコンソールがコマンドインジェクション攻撃をブロックします。

図2:Cloud One - Application Securityコンソールがコマンドインジェクション攻撃を検知

図3:Cloud One - Application Securityコンソールには、疑われる攻撃の説明、関連するCVE、およびペイロード情報が表示される
前掲のトレンドマイクロのリサーチペーパーでは、サーバレスアプリケーションの開発に関係のあるさまざまなクラウドサービスを保護する必要性についても強調しています。図4に示すように、Trend Micro Cloud One™ Conformityは、システム内で実行するIAMロールとしては高すぎる許可が設定されたものをブロックします。

図4:許容範囲を超える許可が設定されたIAMロールは、システム内での実行がCloud One-Conformityによってブロックされる
■ RASPがコンテナを保護する仕組み
本項では、Azure Container Instancesで実行中のコンテナベースアプリケーションをSQLインジェクションから保護する方法について説明します。詳細については、トレンドマイクロのソリューションアーキテクトによるLinkedInの記事に記載されています。
まず、新規のイメージを実行します。プライベートなAzure Container Registryから意図的に脆弱性を持たせてあるPHPベースのDVWAコンテナイメージをプルします。この実験では、図5に示すように、Cloud One - Application Securityライブラリがすでにシステムにインストールされています。

図5:コンテナイメージのコードに追加されたCloud One – Application Securityライブラリ
図6に示すように、Azureポータルからイメージを実行し、すべてが意図したとおりに動作しているかどうかを確認します。アプリケーションからCloud One-Application Securityダッシュボードに対し、リアルタイム保護の呼び出しが行われるようになっています。

図6:Azureポータルから実行するコンテナイメージ
設定要件を構成する際、コンテナのインスタンス実行を開始しておく必要があります。これは、図7に示すとおり、Azureポータルの出力からも確認できます。

図7:Azureポータルでコンテナの実行がすでに進行中であることがわかる

図8:Azure CLIの出力を見てコンテナインスタンスが実行されているかどうかを確認することもできる
これで実験用Webアプリケーションが使えるようになりました。コンテナベースのWebアプリケーション、DVWAにログインした後、図9に示すとおり、SQLインジェクション攻撃を送信します。Cloud One - Application Securityコンソールでこのような悪意のある挙動を検知できるかどうか、後ほど確認します。

図9:コンテナベースのアプリケーションにSQLインジェクション攻撃を送信
図10に示すとおり、送信された要求がCloud One - Application Securityコンソールによってブロックされ、リアルタイムで検出されました。

図10:Cloud One - Application SecurityでSQLインジェクション攻撃を検出
■ RASPを自動化する
サーバレスアプリケーションを保護するには、RASPを自動化する方法がさらに効果的です。AWS Lambda関数のテンプレート(たとえばCloudFormation)には、Cloud One – Application SecurityをAWS Lambdaに組み込むのに必要なRASPのコンポーネントが含まれています。
これらの情報をCFNテンプレートに入れておけば、セキュリティがアプリケーション自体の一部としてあらかじめ組み込まれた安心な状態で、開発チームはAWS Lambda関数を起動できるようになります。これにより、前述した煩雑な手作業を減らすことができます。
■ まとめ
RASPは、組織における「シフトレフト」の推進を支援します。「シフトレフト」は、開発者が機密の管理や強靱なコーディングを実践する際に、安全かつ周知のパターンを利用できるようにするための大切な考え方です。
ただし、RASPのような新しいセキュリティ技術がもたらす利点を支持する人たちがいる一方で、従来のやり方で仕事を進めている懐疑的な人たちの中には、こうした変化に抵抗しようとする人もいるかもしれません。しかしながら、それぞれのチームや部門がどのようにしてギャップを埋め、力を合わせて強固なDevSecOps文化を確立できるのか、これについて組織で包括的な議論を行っていけば、懐疑的な人たちの啓発にもなります。また、開発チームとセキュリティチームが、ソフトウェアのテストやセキュリティの組み込み、運用における可視性の確保を常に適切な形で進めていけば、こうした文化の醸成が可能になるでしょう。
■ トレンドマイクロのソリューション:Trend Micro Cloud One
クラウドサービスプロバイダ(CSP)のサービスは、各社がガイダンスとセキュリティ機能を提供しています。しかしながら、企業の側も、自社のコンピューティング環境と接続するサービスについて、さらにセキュリティを強化しなければなりません。
これらのサービスの保護においては、責任共有モデルを採り入れることが鍵となります。なぜなら、CSPとユーザーの双方が、自社のコンピューティング環境のセキュリティを確保できるよう、それぞれの責任範囲を保守する必要があるからです。AWS Lambdaの場合、実行ロールは利用者が定義した権限のみを持つ状態で起動します。したがって、実行ロールを定義する場合、顧客は原則として最小限の権限を設定するようにしてください。
また、企業にはTrend Micro Cloud Oneのセキュリティサービスプラットフォームをお使いいただく方法があります。Cloud Oneは、以下の柔軟な自動サービスを通して、ハイブリッドクラウド環境向けの統合的な可視性とリアルタイムセキュリティを企業に提供します。
- Application Security:コンテナ、サーバレス、その他のクラウドプラットフォーム上に構築されたアプリケーションおよびAPIに対する脅威を未然に検出し、保護を提供する組み込み型セキュリティフレームワークです。
- Cloud Conformity:数多くの業界コンプライアンス標準やクラウドセキュリティのベストプラクティスプラクティスルールに対する準拠のチェックを自動で行い、クラウドインフラのセキュリティおよびコンプライアンス体制を強化します。
- Container Security:コンテナイメージの脅威や脆弱性、APIやパスワードといった機密情報が外部にさらされていないかなどを検出します。
- Workload Security:レガシーシステム向け仮想パッチや、機械学習(ML)を応用した技術で絶えず変化する脅威からクラウドワークロードを保護します
- File Storage Security:マルウェアスキャニングがクラウドネイティブなアプリアーキテクチャに置かれたクラウドファイル/オブジェクトストレージを保護します。カスタムワークフローに統合することも可能です。
- Network Security:攻撃や脅威のブロック、データ抽出の検出を行い、仮想プライベートクラウドを保護します。
参考記事: