「PreEmptive Protection for JavaScript」が提供する機能
PPJSが果たす役割は大きく5つ。第一はコードの圧縮。第二がリバースエンジニアリングを困難にすること。第三がデバッグの妨害。第四が攻撃者の脆弱性解析の阻止。第五がコード改ざんや流出の阻止である。
これらを実現するため、次の機能が提供されている。
【1】名前の変更
- ローカル変数の名前を複雑な記号に置き換えるなど、わかりづらく変更する。
- FalseとTrueリテラルを別の式に変換。
- 整数リテラル(定数)をわかりづらい式に変換。
- すべての整数リテラルを特定の基数(2進法、10進法、16進法、または8進法)に変換。
- 直接的なプロパティアクセスを間接的なプロパティアクセスに変換。
【2】文字列の暗号化
- 文字列を変数に置き換えるなど暗号化する。
【3】制御フローの難読化
- 不要コードの挿入やロジックの複雑化。
【4】ドメインのバインド
- JavaScriptコードを特定のドメインにバインド。これにより、コードが特定のドメインと一致しない場合、動作を中断させる。
難読化ツールをこれまで使ってきてこなかったエンジニアにとって、心配なのは使い勝手だ。だが、それも心配ない。
「Node.jsが動作するすべてのプラットフォームをサポートしており、現在使っている開発環境に組み込むだけですぐに使えます。操作もコンソールからコマンドを入力するだけなので、簡単です」(伊藤氏)
Webブラウザ用JavaScriptコードやサーバーサイド用JavaScriptコードはもちろん、ReactやCordovaといったフレームワークを利用したコードや、自社で構築したJavaScriptを利用したフレームワークなどを難読化することができる。さらに今後はReact Nativeなどのハイブリッドアプリもサポートする予定だという。
フリーの難読化ツールとの違い
とはいえ、JavaScriptの難読化ツールはPPJSだけではない。「JavaScript Obfuscator Tool」や「jjencode」「/packer/」などの無料ツールも存在する。それら無料ツールではなく有料ツールであるPPJSを使うメリットはどこにあるのか。
「まずは品質の高さです。難読化に対して、PreEmptive社には20年以上の歴史があるので、手法にも性能差が出てくる。もちろん、JavaScriptのバージョンアップにも即追随します。そして、難読化時に技術サポートの提供があることです。PPJSはJavaScriptのバージョンの違いもしっかりサポートします。JavaScriptの難読化はコマンドラインを使用するためGUIの日本語化は予定していませんが、マニュアルはすべて日本語化して提供します」(青山氏)
また実際に技術サポートを担当する伊藤氏も次のように話す。
「難読化ツールは簡単に使えると言いましたが、まれにビルドエラーが発生することがあります。そういった場合でも、私たちサポートチームにお問い合わせいただければ、状況を解析して解決策を提案します。手厚いサポートを提供する面でも安心して活用してもらえると思います」(伊藤氏)
それだけではない。.NETやJava/Android用の難読化ツールではすでに6000社を超える企業に採用され、実績がある。.NETの機能限定版はVisual Studio 2003から標準搭載されるなど、業界からの信頼性の高さもPPJSのメリットと言えるだろう。
「金融系などのクラウドを使ったサービスを展開している企業やeコマース企業などにぜひ活用していただきたいですね」(青山氏)
JavaScriptハイブリッドモバイルアプリの保護も予定
PPJSは10月にリリース予定だが、すでにさらなる機能拡張も予定されている。
「Cordova、React Native、IonicなどのJavaScriptフレームワークに順次対応していき、今後はクロスプラットフォームやAndroidといったネイティブ環境との統合による、さらに利用しやすいツール群なども追加していく予定です」(青山氏)
PPJSはアプリケーション保護の統合製品「PreEmptive Protection」(※)に含まれる製品であるため、年間98万円(税抜)とそれなりにコストはかかる。だが、Webアプリのセキュリティ対策を考えるのであれば難読化ツールの活用は必須とも言える。その効果を検証してみたい人は、エージーテックのPreEmptive製品サポートページから評価版を申し込み、試してみてほしい。その効果を実感できるはずだ。
※「PreEmptive Protection」に含まれている製品
- Dotfuscator for .NET/Xamarin(.NET/Xamarinアプリケーションの難読化&保護ツール)
- DashO for Java/Android(Java/Androidアプリケーションの難読化&保護ツール)
- PreEmptive Protection for JavaScript(JavaScriptの難読化ツール)
JavaScript難読化ツール「PreEmptive Protection for JavaScript」
「PreEmptive Protection for JavaScript」評価版は以下からお申込みいただけます。