Gemini も欺いた見えない文字、ASCII スマグリングとは
人には見えず、ソフトウェアには読める文字
ASCII スマグリングは、画面に表示されない Unicode 文字を使い、人が見る内容とソフトウェアが処理する内容の間に違いを生じさせる手法です。
この手法で主に使われるのは、U+E0000 から U+E007F までの Unicode タグブロックです。この領域は、もともと文字やテキストに言語情報を付与するために作られたもので、印字可能な ASCII 文字に対応するタグ文字を含んでいます。一方で、大半のフォントやユーザーインターフェースでは画面に表示されないという特徴があります。
タグ文字自体は人の目には見えませんが、元のテキストを処理するソフトウェアには、そのまま残る場合があります。この性質は、まず AI セキュリティの研究で注目されました。Web ページ、文書、メールなどにタグ文字で命令を隠すと、人は気づかなくても、生のテキストを入力として受け取る AI モデルは、隠された文字を処理して指示と解釈する可能性があるためです。
funding に見えない文字を入れると?
最近確認されたメールキャンペーンでは、同じ文字の性質が別の目的で使われました。AI に渡す命令全体を隠す代わりに、検知の手掛かりになりそうな金融関連の単語の中に、見えない文字を挿入していたのです。
例えば、「funding」という単語の途中に Unicode タグ文字の TAG SPACE(U+E0020) を入れると、実際の文字列の構成は次のように変わります。
fun + [U+E0020] + ding
U+E0020 は画面に表示されないため、受信者には引き続き funding と見えます。しかし、funding という文字列をそのまま検索する検知方式では、途中に別のコードポイントが入ることで一致しなくなる可能性があります。不可視文字を考慮していない正規表現も影響を受ける場合があります。
機械学習によるメール分類でも、同様の問題が起こり得ます。一部のシステムは、テキストを単語やサブワードのトークンに分割してから分析します。想定外の文字が途中に入ると、見慣れたトークンが複数に分割されたり、まれな形式のトークンとして扱われたりする可能性があります。
ただし、すべてのセキュリティシステムがこの手法の影響を受けるわけではありません。分析前に不可視文字を削除したり、正規化したりすれば、U+E0020 が取り除かれ、元の単語である funding を基に再び検知できます。
使う文字を変えた従来の回避手法
見えない文字を挿入して単語を分断するという発想自体は、新しい攻撃手法ではありません。スパムやフィッシングでは以前から、ゼロ幅スペース(Zero-width Space)、改行しないスペース(Non-breaking Space)、ソフトハイフン、見た目が似た文字などを混ぜ、単純な文字列検知を妨げる方法が使われてきました。
今回の事例で注目すべきなのは、従来よく悪用されてきた文字ではなく、AI セキュリティ研究で注目された Unicode タグブロックが、メールフィルターの回避に使われた点です。この領域の文字は通常のメールではほとんど使われないため、攻撃者が検知回避のために挿入した文字が、逆に異常の兆候を見つける手掛かりになる場合もあります。
厳密には、今回のキャンペーンでは、隠された ASCII メッセージ全体がタグ文字にエンコードされていたわけではありません。特定の単語内に、ASCII スマグリングに使われるタグブロックの不可視文字を挿入し、文字列検知を妨げる手法に近いものです。ただし、人が見るテキストとシステムが処理するテキストの違いを利用する点では、ASCII スマグリングと同じ性質を活用しています。
ASCII スマグリングはすべての検知を回避できるのか
ASCII スマグリングが、特定の文字列や一部のコンテンツ分析に影響を与える可能性があるからといって、メールセキュリティの仕組みを必ず回避できるわけではありません。
Microsoft が確認したキャンペーンでも、Microsoft Defender for Office 365 は、メッセージ全体の99%以上を、タグ文字自体を直接検知するシグネチャではなく、別の検知レイヤーで識別しました。送信者や IP、URL、ドメインのレピュテーションに加え、機械学習によるスパム・フィッシング分類、ブランドのなりすまし検知、認証チェックなど、多様なシグナルが併せて使われました。
また、メッセージを画像としてレンダリングし、光学文字認識(OCR) で画面上のテキストを再抽出して分析する方法も、文字挿入による検知回避の効果を抑えるために利用できます。
つまり、ASCII スマグリングはメールフィルターの特定の処理をかく乱することはあっても、複数のシグナルを総合的に分析する多層的な検知の仕組み全体を無効化する、万能の回避手段ではありません。