ソフトウェア開発の世界で新たな脅威が浮上しています。GitHubをはじめとする主要なコードリポジトリで、人間の目には見えないUnicode文字を悪用した巧妙なサプライチェーン攻撃が確認されました。この手口は、従来のセキュリティ対策をすり抜け、開発者に深刻なリスクをもたらす可能性があります。
「見えないコード」の正体と仕組み
セキュリティ企業Aikido Securityの研究者たちは、3月3日から9日の間にGitHubにアップロードされた151個もの悪意あるパッケージを発見しました。これらのパッケージは、一見すると無害なコードに見えますが、その中に「見えないコード」が隠されています。
この「見えないコード」は、Unicodeの「Public Use Areas」と呼ばれる特殊な文字範囲を利用しています。これは、絵文字や記号などのプライベートな用途のために予約された領域ですが、攻撃者はこの特性を悪用。特定のUnicode文字をJavaScriptインタープリタに読み込ませると、人間には空白や改行としてしか認識されないにもかかわらず、コンピューター上では実行可能なコードとして機能します。
Aikido Securityが分析したパッケージでは、この見えない文字で悪意あるペイロードがエンコードされていました。JavaScriptのランタイム時に、小さなデコーダーが隠されたバイトを抽出し、eval()関数に渡すことで、本来見えないはずの悪意あるコードが実行される仕組みです。
巧妙化する攻撃手口:AIの影
今回の攻撃が特に厄介なのは、その巧妙さにあります。悪意あるコードが挿入されたコミットは、ドキュメントの修正、バージョンアップ、小規模なリファクタリング、バグ修正など、非常に自然な変更に見えるのです。ターゲットプロジェクトのスタイルと一貫性があり、手動でのコードレビューではほとんど見破ることができません。
研究者たちは、この大規模かつ巧妙な攻撃の背後にLLM(大規模言語モデル)の存在を強く疑っています。151個以上のオーダーメイドのコード変更を異なるコードベースで手作業で作成することは現実的ではないため、AIが説得力のある正規のパッケージを生成している可能性が高いと指摘されています。実際、セキュリティ企業Koiも同様にAIの利用を推測しています。
この見えないUnicode文字の悪用は、2024年にハッカーがAIエンジンに悪意あるプロンプトを隠蔽するために使用し始めたことで再び注目されました。人間やテキストスキャナーには見えないテキストでも、LLMはそれを読み取り、悪意ある指示に従うことができたのです。今回、その技術がより伝統的なマルウェア攻撃に応用された形となります。
被害の拡大と開発者への影響
このサプライチェーン攻撃はGitHubに留まらず、npmやVS Code marketplaceといった他の主要なリポジトリでも同様のパッケージが確認されています。Aikido Securityは、検出された151個のパッケージは、このキャンペーン全体から見ればごく一部に過ぎず、多くの悪意あるパッケージがすでに削除されている可能性も指摘しています。
開発者にとって、この攻撃は従来のセキュリティ対策の限界を露呈するものです。目視でのコードレビューや一般的な静的解析ツールでは、見えないUnicode文字で隠された悪意あるペイロードを検出することは極めて困難です。信頼しているライブラリやパッケージに、知らぬ間にマルウェアが紛れ込むリスクが飛躍的に高まります。
特に、AIが生成したと疑われる巧妙なパッケージは、その外見の正当性から、開発者が無意識のうちにプロジェクトに組み込んでしまう危険性があります。これにより、企業やプロジェクト全体のセキュリティが脅かされ、情報漏洩やシステム侵害につながる可能性も否定できません。
今後の展望と対策
見えないUnicode文字とAIの組み合わせによるサプライチェーン攻撃は、ソフトウェア開発におけるセキュリティのあり方を根本から見直す必要性を示唆しています。開発者は、パッケージやその依存関係をプロジェクトに組み込む前に、これまで以上に慎重な検査が求められます。
具体的には、パッケージ名やタイプミスの精査に加え、コードの挙動を詳細に分析する動的解析ツールの導入、そして信頼できるソースからのパッケージのみを使用するといった厳格なポリシーの徹底が不可欠です。また、AIが生成した可能性のあるコードに対しては、特に疑いの目を持って検証する意識が重要となるでしょう。
セキュリティ研究者と開発者コミュニティが連携し、新たな脅威に対応するためのツールやガイドラインを迅速に開発していくことが、今後のデジタル社会の安全を守る鍵となります。
情報元:arstechnica.com

