マルウェア

ランタイムアセンブリ攻撃の新たなフロンティア:LLMを活用したフィッシング用JavaScriptのリアルタイム生成

Clock Icon 2 分で読めます

エグゼクティブサマリー

完全に安全に見えるWebページにアクセスしたと想像してください。悪意のあるコードも、疑わしいリンクもありません。しかし、数秒以内に、それはパーソナライズされたフィッシングページへと変貌します。

これは単なる幻想ではありません。これはWeb攻撃の新たなフロンティアであり、攻撃者は生成AI(GenAI)を使用して、被害者が一見無害なWebページにアクセスした後に読み込まれる脅威を構築します。

言い換えれば、この記事では、一見無害なWebページが、信頼された大規模言語モデル(LLM)サービスへのクライアントサイドAPIコールを使用して、悪意のあるJavaScriptをリアルタイムで動的に生成する新しい攻撃手法を実証します。攻撃者は、慎重に設計されたプロンプトを使用してAIの安全ガードレールを回避し、LLMを騙して悪意のあるコードスニペットを返させる可能性があります。これらのスニペットはLLMサービスのAPIを介して返され、被害者のブラウザで実行時に組み立てられて実行され、その結果、完全に機能するフィッシングページが作成されます。

このAIによって強化されたランタイムアセンブリ技術は、検知を回避するように設計されています:

  • フィッシングページのコードはポリモーフィック(多態的)であり、アクセスごとに構文的に異なるユニークな亜種となります
  • 悪意のあるコンテンツは信頼されたLLMドメインから配信され、ネットワーク分析を回避します
  • それは実行時に組み立てられ、実行されます

この新しいクラスの脅威に対する最も効果的な防御策は、ブラウザ内で直接、実行時に悪意のある活動を検知してブロックできるランタイム振る舞い分析です。

パロアルトネットワークスのお客様は、以下の製品およびサービスを通じてより良く保護されています:

Unit 42 AI Security Assessmentは、組織全体での安全なAIの利用と開発を支援します。

侵害された可能性があると思われる場合、または緊急の案件がある場合は、Unit 42 インシデントレスポンスチームにご連絡ください。

取り上げる脆弱性 avaScript, LLMs, フィッシング

LLM強化型ランタイムアセンブリ攻撃モデル

私たちの以前の調査では、攻撃者がLLMを効果的に使用して、悪意のあるJavaScriptサンプルをオフラインで難読化する方法を示しました。他のソースからの報告では、侵害されたマシン上での実行時にLLMを活用して攻撃を調整するキャンペーン(例:LLMを利用したマルウェアランサムウェア)が文書化されています。

Anthropicの研究者も、LLMがサイバー犯罪者を支援し、AIが組織するサイバー諜報キャンペーンで役割を果たしていることを示すレポートを公開しています。これらの最近の発見に動機付けられ、私たちは脅威アクターがどのようにLLMを活用して、Webページ内で実行時にフィッシング攻撃ペイロードを生成、組み立て、実行し、ネットワーク分析での検知を困難にするかを調査しました。以下に、この攻撃シナリオのProof of Concept(PoC)の概要と、この潜在的な攻撃の影響を軽減するための手順を示します。

我々のPoCにおける攻撃モデル

攻撃シナリオは、一見無害なページから始まります。被害者のブラウザで読み込まれると、最初のWebページは、一般的で信頼されているLLMクライアント(例:DeepSeekやGoogle Gemini、ただしPoCは多数のモデルで有効である可能性があります)に対してクライアントサイドJavaScriptのリクエストを行います。

攻撃者は、安全ガードレールを回避する慎重に設計されたプロンプトを使用して、LLMを騙して悪意のあるJavaScriptスニペットを返させることができます。これらのスニペットは、ブラウザのランタイムで組み立てられて実行され、完全に機能するフィッシングページをレンダリングします。これにより、静的で検知可能なペイロードは残りません。

図1は、既存の攻撃を強化し、防御を回避するためにLLMを活用するPoCをどのように開発したかを示しています。最初の2つのステップは初期準備を含み、最後のステップではブラウザ内で実行時にフィッシングコードを生成および実行する詳細を示します。

フィッシングに関与するサイバーセキュリティの脅威を示すフローチャート。このプロセスには、フィッシングページを選択すること、悪意のあるコードをLLMプロンプトに変換してセキュリティを回避すること、ブラウザでスクリプトを実行し、悪意のあるコンテンツがバックグラウンドで処理されている間、無害に見えるページを表示することなどが含まれる。アイコンは、コーディング、エンジニアリング、信頼できるAPIエンドポイントを表しており、「SecureBank Login」の事例を重視している。
図1. PoCのワークフロー。最初の2つのステップは初期準備であり、3つ目はブラウザでレンダリングされる悪意のあるコンテンツを生成する例です。

ステップ1:悪意のあるWebページまたはフィッシングWebページの選択

攻撃者の最初のステップは、目的の機能を実行する悪意のあるコードのモデルとして使用するために、アクティブなフィッシングキャンペーンまたは悪意のあるキャンペーンからWebページを選択することです。そこから、ユーザーに表示される最終的なページを動的にレンダリングするために、リアルタイムで生成されるJavaScriptコードスニペットを作成できます。

ステップ2:悪意のあるJavaScriptコードのLLMプロンプトへの変換

攻撃者の次のステップは、JavaScriptコードの機能を平文でLLMに説明するプロンプトを作成することです。プロンプトを反復的に改良し、既存のLLMガードレールを回避する悪意のあるコードを生成することができます。これらの生成されたスニペットは構造的および構文的に異なる可能性があり、攻撃者は同じ機能を持つポリモーフィックなコードを作成できます。

ステップ3:実行時における悪意のあるスクリプトの生成と実行

そこから、攻撃者はこれらの設計されたプロンプトをWebページ内に埋め込み、それが被害者のブラウザで読み込まれます。その後、Webページはプロンプトを使用して、一般的で正当なLLM APIエンドポイントに悪意のあるコードスニペットの生成を要求します。これらのスニペットは、一般的で信頼されたドメインを介して送信され、ネットワーク分析を回避する可能性があります。続いて、これらの生成されたスクリプトが組み立てられ実行されて、悪意のあるコードやフィッシングコンテンツがレンダリングされます。

この攻撃手法がいかに回避を助けるか

この手法は、フィッシングやマルウェア配信URLで頻繁に観察される既存の回避的なランタイムアセンブリ動作に基づいています。たとえば、私たちが毎日検知する悪意のあるWebページの36%は、eval関数を使用して構築された子スクリプトを実行する(例:取得、デコード、または組み立てられたペイロード)などのランタイムアセンブリ動作を示しています。Webページ上で実行時にLLMを活用することで、攻撃者には以下の利点があります:

  • ネットワーク分析の回避: LLMによって生成された悪意のあるコードは、人気のあるLLM APIエンドポイントのドメインへのアクセスがクライアント側から許可されていることが多いため、信頼されたドメインからネットワーク経由で転送される可能性があります。
  • 訪問ごとの悪意のあるスクリプトの多様性の増加: LLMはフィッシングコードの新しいバリエーションを生成できるため、ポリモーフィズム(多態性)が高まります。これにより、検知がより困難になる可能性があります。
  • ランタイムアセンブリとJavaScriptコード実行を使用した検知の複雑化: 実行時にこれらのコードスニペットを組み立てて実行することで、被害者の場所やメールアドレスに基づいてターゲットブランドを選択するなど、よりカスタマイズされたフィッシングキャンペーンが可能になります。
  • 平文でのコードの難読化: コードをテキストに変換してWebページ内に隠蔽することは、一種の難読化と見なすことができます。攻撃者は、悪意のあるコードを視覚的に隠蔽し、検知を回避するために、さまざまな従来の手法(エンコーディング、暗号化、コードの断片化など)を一般的に採用しています。高度な分析では、式を評価することで従来の難読化手法を特定することがよくありますが、各スニペットをLLMにかけることなく、テキストを実行可能なコードとして評価することは、防御者にとってより困難になります。

PoCの例

PoCの調査において、この強化が実際のフィッシングキャンペーンにどのように適用できるかを実証し、上記の手順を通じて回避技術を向上させる能力を示しました。このPoCの概要を以下に示します。

ステップ1:悪意のある/フィッシングWebページの選択

私たちのPoCでは、LogoKitとして知られる高度な実際のフィッシングキャンペーンのWebページを複製しました。元のフィッシング攻撃は、静的なJavaScriptペイロードを使用して、一見無害なWebフォームを説得力のあるフィッシングの囮(ルアー)に変えます。このスクリプトは2つの主要な機能を実行します。アドレスバーにある被害者のメールアドレスに基づいてページをパーソナライズすることと、取得した認証情報を攻撃者のWebサーバーに外部送信することです。

ステップ2:悪意のあるJavaScriptコードのLLMプロンプトへの変換

私たちのPoCは、ブラウザのJavaScript内からのチャットAPIクエリを介してアクセス可能な、人気のあるLLMサービスを使用しています。攻撃者による潜在的な悪用を軽減するために、この特定のAPIの名前は公開しません。私たちはこのLLM APIを使用して、認証情報の収集とターゲットWebページのなりすましに必要なコードを動的に生成しました。悪意のあるペイロードはブラウザ内で動的に生成されるため、ネットワーク経由で送信される最初のページは無害であり、本質的にネットワークベースのセキュリティ検知器を回避することができます。

攻撃の成功は、LLMの組み込みの安全策を回避するための慎重なプロンプトエンジニアリングにかかっていました。単純な言い換えが驚くほど効果的であることがわかりました。

たとえば、一般的な $AJAX POST関数のリクエストは許可されましたが(図2参照)、「認証情報を外部送信するコード」への直接的なリクエストはブロックされました。さらに、侵害の指標(IoC)(例:Base64エンコードされた外部送信URL)も、最初のページをクリーンに保つためにプロンプト自体の中に隠すことができました。

コーディングに関するテキスト指示が含まれている文書を表示したスクリーンショット。このテキストには、赤い下線を引いたURLと、AJAXリクエストに関連するいくつかのコーディングコマンドと説明が含まれている。この文書は白地に赤と黒の文字で書かれている。画像の上部にあるのは、Base64形式でエンコードされたURLである。2番目のパラグラフは、クレデンシャルデータの摂取ではなく、AJAXリクエストを行うよう要求している。
図2. LLMのガードレールを回避し、フィッシングコンテンツ用のJavaScriptコードを生成するためのプロンプトエンジニアリングの例。

モデルの非決定論的な出力は、高度なポリモーフィズムを提供し、各クエリは構文的にはユニークですが機能的には同一の悪意のあるコードのバリエーションを返しました。たとえば、図3は赤で強調表示されたコードスニペットの違いを示しています。この絶え間ない変異により、検知はより困難になります。

JavaScriptでURLとドメインデータを抽出し、処理するさまざまな方法に注目し、IDEで2つのコードを並べて比較したスクリーンショット。左のコード抽出ではリクエストを使用している、一方、右のコードではドメイン抽出のために電子メールベースのURLを分析している。注釈のほか各ステップに印をつけ強調表示した。
図3. 動的に生成されたJavaScriptコードの複数のバリエーションを作成するポリモーフィズム。

特筆すべき点として、LLMが生成したコードにはハルシネーション(幻覚)が含まれる可能性がありますが、私たちはプロンプトの改良と具体性の向上によってこれを軽減し、構文エラーを効果的に削減しました。その結果、最終的な非常に具体的なプロンプトは、ほとんどの場合で機能的なコードを生成することに成功しました。

ステップ3:実行時における悪意のあるスクリプトの実行

生成されたスクリプトは、Webページ上で実行時に組み立てられ実行され、フィッシングコンテンツをレンダリングしました。このプロセスは、機能的でブランドになりすましたフィッシングページを構築することに成功し、攻撃の実現可能性を検証しました(図4参照)。生成されたコードの実行が成功し、エラーなしにフィッシングページがレンダリングされたことで、我々のPoCの有効性が確認されました。

フィッシング攻撃のプロセスを示すスクリーンショットのコラージュ。上の画像:偽のログインページ。中央の画像:フィッシングページを検出するためのPalo Alto Networksの偽のログインページ。下の画像:フィッシングコードジェネレーターのインターフェース。
図4. ブラウザ内で実行時に動的に生成されたJavaScriptを組み立てることによってレンダリングされたフィッシングページの例。

脅威の一般化と攻撃対象領域の拡大

LLM APIをリクエストする代替手法

PoCを通じて実証された我々の攻撃モデルは、さまざまな方法で実装可能です。しかし、PoCで説明されている各手法は、攻撃者がLLM APIに接続し、ブラウザ内で実行時に実行されるスニペットとして悪意のあるコードを転送する方法について述べています。

PoCで示されているように、攻撃者はブラウザからよく知られたLLMサービスAPIエンドポイントに直接接続してコード生成プロンプトを実行することで、セキュリティ対策を回避する可能性があります。あるいは、信頼されたドメインやコンテンツ配信ネットワーク(CDN)上のバックエンドプロキシサーバーを使用して、プロンプト実行のためにLLMサービスに接続するかもしれません。さらなる戦術として、WebSocketなどの非HTTP接続を介してこのバックエンドプロキシサーバーに接続する方法も考えられます。これは、私たちがフィッシングキャンペーンで以前に報告した手法です。

信頼されたドメインのその他の悪用

攻撃者は過去に、EtherHidingのような事例で見られるように、検知を回避するために正当なドメインの信頼を悪用してきました。EtherHidingでは、攻撃者は評判の良い信頼されたスマートコントラクトプラットフォームに関連するパブリックブロックチェーン上に悪意のあるペイロードを隠蔽しました。

この記事で詳述されている攻撃は、検知を回避するために、多様なLLM生成の悪意のあるコードスニペットと、信頼されたドメインを介したこの悪意のあるコードの送信を組み合わせて使用します。

さらなる攻撃のための悪意のあるコードのテキストプロンプトへの変換

この記事は、フィッシングWebページのレンダリングを容易にするための、悪意のあるJavaScriptコードのテキストプロンプトへの変換に焦点を当てています。この手法は、悪意のあるアクターが多様な形態の敵対的コードを生成するための潜在的なベクトルを提示します。たとえば、侵害されたマシン上でマルウェアを開発したり、コマンドアンドコントロール(C2)チャネルを確立したりして、人気のあるLLMに関連付けられた信頼されたドメインから悪意のあるコードを生成・送信することが考えられます。

ブラウザ内ランタイムアセンブリ動作を活用した攻撃

ここで提示された攻撃モデルは、悪意のあるWebページがブラウザ内で動的に構築されるランタイムアセンブリ動作を例示しています。先行研究でも、フィッシングページやマルウェア配信を作成するためのランタイムアセンブリのさまざまなバリエーションが文書化されています。たとえば、ある記事では、攻撃者が悪意のあるコードをより小さなコンポーネントに分割し、その後ブラウザ内で実行時にそれらを再構築する手法(SquareXによってラストマイル再構築攻撃と呼ばれています)について言及しています。さまざまなレポートが、マルウェアを配信するためにHTMLスマグリング技術を使用する攻撃者について説明しています。

この投稿で概説されている攻撃モデルは、さらに踏み込んだものです。後で組み立てられて実行される新しいスクリプトバリエーションの実行時生成を伴うため、検知に対して著しく高い課題を突きつけます。

防御者への推奨事項

この攻撃の動的な性質は、ブラウザでのランタイムアセンブリと組み合わさることで、防御にとって手ごわい課題となります。この攻撃モデルは、被害者ごとにユニークなバリエーションを作成します。各悪意のあるペイロードは動的に生成されてユニークであり、信頼されたドメインを介して送信されます。

このシナリオは、セキュリティ環境における重大な変化を示唆しています。これらの攻撃の検知は(強化されたブラウザベースのクローラを通じて可能ですが)、ブラウザ内でのランタイム振る舞い分析を必要とします。

防御者はまた、職場での許可されていないLLMサービスの利用を制限すべきです。これは完全な解決策ではありませんが、重要な予防措置として機能します。

最後に、私たちの研究は、慎重なプロンプトエンジニアリングがいかに既存の保護を回避し、悪意のある使用を可能にするかを実証したため、LLMプラットフォームにおけるより強固な安全ガードレールの必要性を強調しています。

結論

この記事は、悪意のあるWebページがLLMサービスを使用して、ブラウザ内でリアルタイムに多数の悪意のあるコードのバリエーションを動的に生成する、新しいAI強化型アプローチを実証しています。これに対抗するための最も効果的な戦略は、ブラウザ内保護による実行時点でのランタイム振る舞い分析と、最終的なWebページをレンダリングするブラウザベースのサンドボックスを使用したオフライン分析の実行です。

パロアルトネットワークスの保護と緩和策

パロアルトネットワークスのお客様は、以下の製品およびサービスを通じて、上記の脅威からより良く保護されています:

Prisma AIRSのお客様は、ガードレールを回避しようとする入力に対して、社内で構築されたGenAIアプリケーションを保護できます。

Advanced URL FilteringおよびPrisma Browser(Advanced Web Protection搭載)を使用しているお客様は、さまざまなランタイムアセンブリ攻撃に対してより良く保護されています。

Prisma Browser(Advanced Web Protection搭載)のお客様は、防御機能がブラウザ内で直接ランタイム振る舞い分析を使用して実行時点での悪意のある活動を検知しブロックするため、最初の試行、つまり「ペイシェント・ゼロ(最初の感染者)」のヒットからランタイム再構築攻撃に対して保護されています。

Unit 42 AI Security Assessmentは、組織全体での安全なAIの利用と開発を支援します。

侵害された可能性があると思われる場合、または緊急の案件がある場合は、Unit 42 インシデントレスポンスチームにご連絡いただくか、以下にお電話ください:

  • 北米 フリーダイヤル: +1 (866) 486-4842 (866.4.UNIT42)
  • 英国: +44.20.3743.3660
  • ヨーロッパおよび中東: +31.20.299.3130
  • アジア: +65.6983.8730
  • 日本: +81.50.1790.0200
  • オーストラリア: +61.2.4062.7950
  • インド: 000 800 050 45107
  • 韓国: +82.080.467.8774

パロアルトネットワークスは、これらの調査結果をCyber Threat Alliance (CTA) のメンバーと共有しました。CTAメンバーはこのインテリジェンスを使用して、顧客への保護を迅速に展開し、悪意のあるサイバーアクターを組織的に妨害します。Cyber Threat Allianceの詳細については、こちらをご覧ください。

追加リソース

Enlarged Image