W32/Induc-A Virus (Compile-A-Virus)に関するQ&A

By: Chikako Yonezawa

Abstract: 旧バージョンのDelphi開発環境を攻撃するW32/Induc-A “compile-a-virus” ウィルスに関するQ&Aです。

    Q. どのバージョンのDelphiに影響を及ぼしますか?

A. ウィルスは、1998年から2002にかけてリリースされたDelphi のバージョン4 ~ 7 までにのみ影響を及ぼします。W32/Induc ウィルスは、最近のバージョンであるDelphi 2005から2009、さらには今回リリースする2010には影響がありません。

    Q. どのバージョンのDelphiには影響がありませんか?

A. ウィルスは、最近のバージョンのDelphiには影響がありません。Delphi 2006、2007、2009、さらには、最新の2010リリースに対して、このウィルスは影響を及ぼすことはありません。

    Q. このウィルスは何といいますか?

A. このウィルスは、"Compile-a-Virus"と呼ばれています。また、"W32/Induc-A" とも言われます。

    Q. Delphi IDEや言語がこのウィルスを伝染させているのですか?

A. いいえ、この攻撃に脆弱なバージョンのDelphi(v4~v7)は、ウィルスを運搬してるわけではありませんし、言語に含まれているわけでもありません。それは、感染したEXEまたはDLLをダウンロードし、実行することによって感染します。

    Q. Delphi Prismには影響がありますか?

A. いいえ、Delphi Prismに影響を与えることはありません。

    Q. このウィルスはどのような作用を及ぼしますか?

A. このウィルスは、Delphi 7(2002年リリース)より後のバージョンのDelphiには何もしません。もし、マシンが感染している場合には、W32/Induc-A ウィルスは、それ自身を広める以外、悪意のある行為は行わず、損害を与えません。

ウィルスが行うのは、Delphi 4、5、6、7のインストール環境に入り込むことです。そして、感染したDelphiが、EXEないしはDLLを構築するとき、ウィルスは生成されたバイナリに埋め込まれます。そのEXEまたはDLLのコードが実行されると、インストール済みのDelphi 4~7を探し、それを見つけるどんなインストール環境にも自己複製を行います。それから、そのインストール環境でも、再び自己複製を行うEXEとDLLファイルを生成するようになります。

繰り返しますが、ウィルスは、Delphi 4~7のインストール環境だけを探します。具体的には、ウィルスが、このいずれかのバージョンのDelphiのうちの1つを見つけると、SYSCONST.PASファイルを捜します。ウィルスはそのファイルを開いてコードを注入し、コンパイルして、リリースバージョンのSYSCONST.DCUを新たに感染したバージョンと入れ替えます。ウィルスは、それから、作成したSYSCONST.PASファイルを削除します。(ウィルスは、システム上の*.PASファイルを書き換えることは一切ありません)。注入されたコードは、単にウィルスを複製するためにSYSCONST.DCUに含まれているコードの実行を誘発します。

    Q. これは、Delphi固有の問題ですか?

A. このウィルスは、Delphi 4~7を探し出しますが、これは、Delphi固有の方法を用いたウィルスの種類ではなく、この種のウィルスは、EclipseやVisual Studioといった開発環境にも影響を与える恐れがあります。

    Q. この感染に脆弱なのは誰ですか?

A. Delphi 4~7のインストール環境が、W32/Induc-Aの影響を受ける可能性があります。もし感染したEXE か DLLファイルが、Delphi 4~7をインストールしていないマシンで実行されたとしても、ウィルスは何もしません。ウィルススキャナーは、現在このウィルスの感染をレポートします。

    Q. ウィルスに感染しているかどうかはどうやって分かりますか?

A. Delphiのインストール環境が感染しているかどうかは、比較的容易に検出することができます。影響はDelphi 4~7のバージョンのみです。感染を判別する最も簡単な方法は、Delphiのインストールディレクトリ <delphi>\lib に、SYSCONST.BAK があるかどうかを確認することです。ウィルスは、その行動の一環でこのファイルを作成します。このファイルが存在する場合、感染の可能性があります(自分で同名のファイルを作成している場合には、この限りではありません)。

\lib ディレクトリに SYSCONST.BAK がある場合には、16進エディタないしは、メモ帳のようなテキストエディタでSYSCONST.DCUを開きます。そして、このDCUファイル内で、"CreateFile(pchar(d+$bak$),0,0,0,3,0,0);" というコードがあるかどうかを検索します。このコードがある場合、インストール環境は感染していることになります。

    Q. もし感染していた場合は、感染経路は何でしょうか?

A. もし、ウィルスに感染していた場合、すでにウィルスに感染していたEXEかDLLをそのマシン上で実行したということです。Delphiは、広く普及した開発環境であり、特に、ISVやMicroISVの開発の間で多く利用されています。もし、ウィルスに感染したバイナリを受け取っている場合には、ダウンロードアプリケーションから取得している可能性があります。

    Q. 感染していた場合には、どのようなことになるのでしょうか?

A. PCが感染していると、そのPCで作成するEXEとDLLは、Delphi 4~7がインストールされた無防備な環境で実行すると、さらに感染するEXEとDLLになります。

しかし、このウィルスは、それ自体を広めること以外は、悪意のある行為を何もしないという点に今一度留意してください。とはいうものの、もし、自身の感染を発見し、感染したファイルを配布していた場合には、ファイルを受け取った人に通知し、詳細な情報を提供するべくこのQ&Aを案内するのが賢明でしょう。

    Q. Delphiインストール環境からウィルスを除去するにはどうしたらいいでしょうか?

A. ウィルスを除去するには、以下の手順に従います。

  1. 感染したSYSCONST.DCUファイルをシステムから削除します。
  2. インストールメディアから、SYSCONST.DCUファイルを置き換えます。Delphiのバージョン4~7には、完全なインストールイメージがCD内に収録されています。ですから、単にファイルをCDからインストール環境にコピーするだけで完了です。

Q. 再び感染しないようにするにはどうしたらいいですか?

あるいは

    Q. 現在は感染していませんが、今後感染しないようにするにはどうしたらいいですか?

A. このウィルスは、Delphi 2005から2010までのバージョンには影響を及ぼしません。しかし、もし、Delphi 4~7をインストールしている場合には、ウィルスに感染しないようにする最も効果的な方法として、DCC32.EXEを異なるディレクトリに移動させる予防をとることができます。これらの旧バージョンのIDEでは、コマンドラインコンパイラを必要としないので、この予防措置は、製品の実行に影響を及ぼしません。

また、SYSCONST.BAKという名前のファイルを、見つけたのと同じ場所に残しておくことによって、ウィルスによる再感染を防止することもできます。ファイルは空でもかまいません。ウィルスは、この名前のファイルが存在するかどうかを調べ、見つけると何もしません。空のSYSCONST.BAKファイルを、SYSCONST.DCUファイルと同じ場所に置いておくことで、ウィルスが何もしないようにできます。

さらに、\libディレクトリの全てのファイルをリードオンリー属性に設定しておくことで、ウィルスによる変更を防止できます。

    Q. このウィルスを感染させるEXEファイルがあるかどうかは、どうすれば分かりますか?

A. これは比較的新しいウィルスであり、ウィルススキャナーはちょうどこのウィルスを検知するようになってきています。多くのベンダーではすでに感染したバイナリを識別しており、間違いなくほとんどのベンダーもすぐに対応するでしょう。ウィルスを検出する最善の方法は、W32/Induc-Aを認識するアンチウィルスソフトウェアをシステム上で実行し、スキャンさせることです。

    Q. 自分が作成しているバイナリが感染しています。どうすればいいですか?

A. もちろん、最初にシステムからウィルスを駆除しなければなりません。上記を参照してください。すでに、EXEまたはDLLからウィルスを除去する唯一の方法は、クリーンな環境で再コンパイルすることです。

    Q. Delphi 4~7で作成されたパッケージに影響はありますか?

A. 特定のケースを除いて、影響はありません。デフォルト設定では、作成されたパッケージは、このウィルスの影響を受けることはありません。しかし、通常のRTL.DCPファイルをリンクせずに、手動で感染したSYSCONST.DCUにリンクしている場合には、その限りではありません。ほとんどすべての開発者は、このような手動リンクを行っていませんが、万一そのようにしている場合には、クリーンシステムで再コンパイルしてください。

    Q. ほかに自衛する方法はありますか?

A. このウィルスに備えて自分自身を保護する方法はいくつかあります。上記のように、\libディレクトリ内のすべての DCUファイルをリードオンリー属性に設定することができます。さらに <delphi>\source ディレクトリ内のすべてのソースコードを同様にリードオンリー属性にすることも検討可能です。

安全のため、\libディレクトリと、CDのインストールイメージの \libディレクトリのファイル比較を行なうことも考えられます。

ファイル比較ツールが必要であれば、FreeFileSyncという強力なオープンソースツールもあります。

http://sourceforge.net/projects/freefilesync/

ご自身でこれらの DCUファイルを変更している場合もあるので、ファイルに差異がある場合には、自分自身が間違いなくファイルを変更していないことを確認してください。このウィルスは SYSCONST.DCUファイルに影響を及ぼすのみです。

いずれにしても、Delphi 4~7がインストールされた \libディレクトリのファイルと、CDのインストールイメージの一致を確認することを強くお勧めします。

    Q. C++Builderには影響がありますか?

A. いいえ。C++Builder EXEの感染は理論的に可能ですが、C++Builder開発者は、むしろ C++Builderのバイナリに影響を与えるウィルスのために、冗長なステップの設定や積極的な変更、システム上でいくつもの異なるものをリコンパイルしなければなりません。

    Q. シェアウエアや、Delphiでビルドされた ISVアプリケーションを製作していますが、どのように関係してきますか?

A. Delphi 2005~2010といった最近のバージョンを使用しているのであれば影響はありません。シェアウエアまたは ISVベンダーが Delphi 4から 7といった古いバージョンを使っている場合は、マシンの感染の有無を確認する必要があります。もし感染しているのであれば、それを駆除しなければなりません。

顧客向けに感染した実行可能ファイルを配布していた場合には、すぐに製品をリコンパイルし、新たにクリーンなバージョンを配布しなければなりません。そしてファイルの受取人に通知し、詳細な情報として、この FAQを添付するなど慎重な処理をお薦めします。アンチウィルスプログラムがバイナリ内のウィルスを検出しはじめているので、エンドユーザーは感染しているバイナリのレポートを得ているので、すみやかにクリーンなバイナリを供給するよう努めてください。

    Q. コンポーネントベンダーが特別に気をつけなければならないことはありますか?

A. Delphi 7またはそれ以前のバージョンを使用しているコンポーネントベンダーは、このドキュメントで述べた同じ予防措置や対処をすみやかに行う必要があります。感染が確認された場合でも、作成したコンポーネントを通して、コンポーネントベンダーのユーザーに感染が広がる可能性は低いです。その理由は、ウィルスが他の DCUファイルに感染しないからです。それは、ユーザーが作成するいかなるソースコードにも影響を及ぼしません。ただし、上述したように、パッケージ(BPL)ファイルへウィルスをリンクすることは可能です。そのため、Delphiの実行時ライブラリを使用したり、SYSCONST.DCUファイルを明示的にリンクすることを意図的に回避するようにしなければならないでしょう。

    Q. 今回のウィルス、そして将来現れる可能性のあるウィルスから Delphiを守るため何をすればよいですか?

A. 最高のアクションは、セキュアな開発環境でウィルス対応ソフトが実行されており、しかもそれがいつも最新を保っているという状態です。この手のウィルスがどんな開発環境でも攻撃する可能性がある一方で、私たちは、これらのシステム上への将来の攻撃を防ぎ、開発者を助ける方法の研究を続けています。




Server Response from: ETNASC03