リバース・エンジニアリング技術は、プログラムの不正利用や著作権保護技術のバイパスといった、いわゆるクラッキング行為に悪用されることがあるので、良いイメージを持っていない方もおられると思います。

 また、日本ではリバース・エンジニアリングに関する著作権法の解釈が曖昧で、法律の専門家のあいだでも、リバース・エンジニアリングの是非をめぐってしばしば意見が分かれることがあるようです。

 しかし、フェア・ユースの規定がある米国では、事情がやや異なります。特にコンピュータ・セキュリティの分野では、むしろ非常に重要な技術として位置づけられており、近年は法的にも社会的にも十分なコンセンサスが得られています。

「0-day攻撃」対策にも

 リバース・エンジニアリングは、ソフトウエアの脆弱性監査や攻撃ペイロードの分析をはじめ、セキュリティのあらゆる側面において非常に重要な技術です。最近では、ハッカー・アンダーグラウンドの脆弱性解析能力が飛躍的に向上したこともあり、セキュリティ研究者や開発ベンダーのあいだでは、リバース・エンジニアリングにより脆弱性をいち早く洗い出し、攻撃が発生する前に対処することが重要な課題となっています。

 近年、パッチが公開されていない脆弱性に対する0-day攻撃が増加し始めたことも相まって、ソフトウエア・ベンダーやセキュリティ研究者はもちろん、IT業界全体でも、セキュリティ分野におけるリバース・エンジニアリングは、社会的公益性の高い、重要な技術であるという共通認識が生まれています。

 また最近では、リバース・エンジニアリング技術を使ったサード・パーティによる脆弱性パッチの開発も盛んです。0-day脆弱性が公表された場合、ベンダーが公式な脆弱性パッチをリリースするまでのあいだ、ユーザーは攻撃の危険にさらされることになります。このため、攻撃を回避するためのサードパーティ製のバイナリ・パッチが、セキュリティ・ベンダーや有志により公開されるようになってきました。

 eEyeでもバイナリ・パッチを開発し、無償公開しています(例:Internet Explorer JScript パッチ)。最近では、このようなサード・パーティ・パッチを組織的に開発、提供しようという動きもあります。「Zeroday Emergency Response Team(ZERT)」はその一つであり、アンチウイルス業界やCERTコミュニティなど、さまざまな民間企業や学術機関の有志がメンバーに名を連ねています。

不可欠な技術だが認知不足

 セキュリティ関係のカンファレンスでは、リバース・エンジニアリングされたコードの断片を引用して解説する風景も日常的になりました。リバース・エンジニアリングに関する、民間および学術機関のトレーニング・プログラム、書籍、Webなども充実してきました。このように、ソフトウエアのセキュリティ監査やセキュリティ・プロダクトの研究開発といった分野においては、リバース・エンジニアリングはもはや必要不可欠な技術になっています。

 今後日本国内においても、諸外国同様その社会的需要はますます増加するものと考えられるため、技術や情報の蓄積は非常に重要な課題です。しかし日本では、たとえ公益性の高いセキュリティ研究の分野においても、リバース・エンジニアリングの社会的な認知は非常に低いのが現状です。

 契約条項で、リバース・エンジニアリングを禁止している場合も少なくありません。リバース・エンジニアリングの禁止は、特定条件下において独占禁止法上問題があると考えられています(「電子商取引等に関する準則」、経済産業省)。しかし実際は、リバース・エンジニアリングを禁止する条項が広く一般で用いられているので、その目的などによって結論が左右される可能性があります。このような状況のため、国内におけるノウハウの蓄積は非常に難しくなっています。

「意見を聞かせてください」

 やはりまずは、社会的なコンセンサスを得ることが重要だと思います。そこで微力ではありますが、米国のセキュリティ業界におけるリバース・エンジニアリングの現状や、そこで使われている技術についての情報を、継続的に発信していきたいと考えています。

 その“第一弾”として、10月27日に開催される住商情報システム主催の「eEye Security Forum」(詳細・申し込み)および11月2日に開催されるカーネギーメロン大学日本校主催のゲスト講演(詳細・申し込み)において、リバース・エンジニアリングに関して講演させていただく機会を得ました。

 講演では、米国のセキュリティ分野におけるリバース・エンジニアリングの実情と最新技術動向について解説します。また、リバース・エンジニアリング技術による脆弱性の発見・攻略手法についてもお話します。脆弱性のバイナリ監査、exploit解析、脆弱性攻略、パッチ差分解析による修正脆弱性の抽出、パッチ適用により発生するサイド・エフェクトの分析、ランタイム・メモリ・パッチング---などの実践的な技術についてもお話しする予定です。

 基本的には米国の社会的現状と技術をお伝えするのが主な目的ですが、同時に、リバース・エンジニアリングが抱える諸問題について、みなさんと意見交換できればと考えております。

 この「ITpro Watcher」においても、今後、リバース・エンジニアリングに関する話題を取り上げたいと考えています。ソフトウエア・ベンダーや開発者、著作権保護団体といった方々のなかには、リバース・エンジニアリングに対してマイナス・イメージをお持ちの方もいるでしょう。そういった方々からも、ぜひコメントをいただきたいと考えています。開発者の権利や利益が適切に保護されることを前提にしたうえで、社会的にもコンセンサスの得られるポイントを探ることができればと考えています。

 いろいろと難しい問題をはらんでいるセキュリティ分野でのリバース・エンジニアリングですが、みなさんもこの機会にご一考いただければ幸いです。