複数のJoomla!サイトにおいて、jjencodeを使用して記号だけに難読化したJavaScriptを注入する攻撃が発生
イタリアのJoomla!を使用している複数のサイトにおいて、悪意あるサイトに誘導するためのJavaScriptを注入されるという攻撃が発生したようですが、そのときに埋め込まれるJavaScriptが、jjencode によって難読化されたものだったようです。
- Italian compromised sites
- extraexploit: dollars javascript code – yet another Javascript obfuscation method for cc frauds
実際に攻撃を受けたサイトのHTMLソースは以下のような感じ。jjencode によって生成された記号JavaScriptが埋め込まれています。
jjencodeによる難読化コードを、このような形で攻撃に利用することは、実際には攻撃者側にとってはあまり効果がないのではないかと思います。理由は以下の通り。
- 難読化のバリエーションを作りにくい。
- Gumblarによる攻撃では、document.CreateElement( "s#c@!r#@i$#p@!t".replace( /\$|\(|@|\^|\)|#|&|\!/ig, '') ); のような、文字列に挿入されたゴミを取り除いて実行というパターンが多用されました。この方法だと、難読化部分はランダムなゴミを挿入すればいいので機械的に亜種を生成することができますが、jjencode では亜種を作ろうと思った場合は人間がコードを考えながら書く必要があり、アンチウイルスソフト等にシグネイチャが一度登録されてしまうと、以降は拡散させることが難しくなります。
- IEで動作しない
- jjencodeによる記号化JavaScriptのコードは、IE6、IE7およびIE8(ドキュメントモードがIE8標準モードでない場合)にコードが動作しません。
- コードサイズの増加、実行速度の低下
- jjencodeによる難読化では、コードサイズが圧倒的に増加し、また行速度も低下します。それが理由で、サーバ管理者やブラウザの利用者に汚染されていることが気付かれる可能性も増えるかもしれません。
このような理由で、jjencode が実際の攻撃手段として有効かというと、個人的には非常に懐疑的に思っています。