動的コード難読化(Dynamic code obfuscation)――何やら難しそうな言葉である。いったいどういう意味なのだろうか。まず最初に、従来方式のコード難読化の定義を示そう。その後で、動的難読化とその危険性について解説する。
コード難読化というのは、スクリプトまたはプログラムのソースコードを意図的に読みにくくすることを意味する。これには、暗号化を利用したり、余分なタブやランダムなコメント、可変名を追加したりするなど、さまざまな方法がある。難読化を施す正当な理由として最も多いのが、リバースエンジニアリングの防止である。開発元ベンダーはソースコードを読みにくくし、理解しにくくすることにより、自社のソースコードに不正にアクセスしようとする人に歯がゆい思いをさせることができるのだ。例えばMicrosoftでは、開発者が最終的なスクリプトを難読化するために同社のScript Encoderの使用を推奨している。
難読化はある意味で、アクセスコントロールの露骨な形態であり、知的財産や売り上げの損失に起因するリスクを管理するために用いられている。実際、コード難読化プログラミングコンテストなどもあるくらいで、例えば、International Obfuscated C Code Contestでは、最もあいまいで読みにくいCプログラムを書く能力を競う。
残念ながら、コード難読化は、悪質なコードの作成者が自分のコードの真の目的を隠ぺいあるいは偽装する手段としても利用できる。ハッカーによる難読化の利用は今に始まったことではない。1990年代には、検出困難な多形態型ウイルスのシグネチャを隠したり変更するために、難読化テクニックが利用された。これらはスクリプトではなくバイナリコードをベースとするウイルスだったが、今日のハッカーたちは、難読化テクニックをスクリプトの隠ぺい手段として利用している。スパマーたちも、URLによって導かれるサイトや彼らのスクリプトコードの目的を隠すために、難読化されたJavaScriptやHTMLコードをよく利用する。Web2.0技術の登場、そしてハッカーやスパマーらがJavaScriptやHTMLを積極的に利用するようになったのに伴い、コード難読化はブラウザ攻撃、リダイレクト機能、クロスサイトスクリプティング攻撃を隠すための強力なツールとなったのだ。

幸いにも、ウイルス対策ベンダー各社も、コード難読化を利用するハッカーがインターネット上でのさばるのを手をこまぬいて見ているわけではない。ベンダー各社は現在、難読化されたコードに対処するために、広範なエミュレータやヒューリスティックアナライザのほか、既知のマルウェアのシグネチャデータベースを活用している。シグネチャは、悪質なコードから抽出された「デジタル指紋」であり、悪質なコードを特定するのに利用される。
次に、動的コード難読化の「動的」という部分について解説しよう。今日ハッカーたちは、悪質なコードを即座に暗号化し、関数の名前を変更し、個別の暗号鍵を用いてコードを暗号化している。つまり、悪質なコードが動的に変更されるため、例えばユーザーが悪質なWebサイトにアクセスすると、各ユーザーはそれぞれのマシンに対して独自のウイルスを受け取る可能性があるのだ。これは悪質なコードの脅威を根本的に変えるだけでなく、攻撃者が無警戒の犠牲者を通じて悪質なコードを拡散させるペースにも大きな変化をもたらす。例えば、広範に使われているハッキングツールキットのMetasploitにVoMM(eVade-o-Matic Module)モジュールが追加されようとしている。VoMMはもともと、JavaScriptベースのエクスプロイト(攻撃コード)用に設計されたものだが、ほかの非バイナリ型エクスプロイトでも利用されるようになるのは確実だ。このツールは、未熟な悪質ハッカーでも動的コード難読化プロセスを自動化できることを意味する。
ウイルス対策ソフトは今でもそれなりの役割を果たしているが、オンラインの世界では、この拡大する脅威を特定するための代替技術に目を向けなければならない。ウイルスシグネチャは、動的に変更されるコードに対してはほとんど役に立たない。ランダム化機能により、ウイルス対策ソフトが合致パターンを見つけるのがほぼ不可能になるからだ。このため、防護技術はシグネチャを利用するのではなく、ビヘイビア(挙動)に基づく分析手法を用いることにより、プログラムが何をしようとしているのか分析する必要がある。そして不審な動作(ファイルの削除など)が検出された場合には、警告を発するようにすればいいのだ。この種の分析は当然、かなりの処理能力を必要とするため、生産性やユーザーエクスペリエンスにもある程度影響するだろう。
一方、ソーシャルエンジニアリングは依然として、こういった攻撃の多くにおいて重要な要素となっているため、この最新の攻撃手段と戦う上でセキュリティ意識が今後もいっそう重要になるだろう。
本稿筆者のマイケル・コッブ氏は、データセキュリティおよび解析に関するトレーニングやサポートを提供するITコンサルティング会社、コッブウェブアプリケーションズの創業者兼マネージングディレクター。CISSP-ISSAP(公認情報システムセキュリティプロフェッショナル―情報システムセキュリティアーキテクチャプロフェッショナル)の資格を持つ。共著書として「IIS Security」があり、主要なIT出版物に多くの技術記事を寄稿している。