web-dev-qa-db-ja.com

mingw32でコンパイルされたプログラムは感染していると報告されています

Linuxシステムを使用して、Win32にクロスコンパイルしています。最も簡単なWindowsソースコード(Petzoldによる「Hello world」)は、i686-w64-mingw32-gcc(gccバージョン7.3-win32 20180312)を使用してコンパイルすると、有効なWindows実行可能ファイルを生成します。この実行可能ファイルは、Wine(Linux)とネイティブWindowsで適切に実行されます。ただし、アンチウイルスソフトウェアを使用してテストすると、multipleウイルス検出レポートが表示されます。

Virustotal.comのレポート ファイルの内容:

BitDefenderTheta: Gen:NN.ZexaF.34106.x8Y@aqPOh2m
Cylance: Unsafe
Cyren: W32/Rozena.O.gen!Eldorado
Endgame: Malicious (moderate Confidence)
F-Prot: W32/Rozena.O.gen!Eldorado
Ikarus: Trojan.Win32.Rozena
Microsoft: Trojan:Win32/Wacatac.C!ml
Rising: Malware.Heuristic!ET#89% (RDMK:cmRtazr+3...

これは信頼できますか?私がWine/mingw/gccのために持っているライブラリの何かが感染しているのでしょうか、それともこれはあまりにも多くの誤検知ですか?

ソースコード: http://tal.forum2.org/helloworld.c ;コンパイルされた実行ファイル: http://tal.forum2.org/helloworld.exe 。任意の助けいただければ幸いです。

2
Tal Cohen

次の理由により、アンチウイルス(Defenderまたはその他のソフトウェア)が安全なファイルにウイルス署名を表示します。

  1. コードはminGWによってコンパイルされます。多くのウイルスはCで書かれ、minGWでコンパイルされて小さくなっています。したがって、AVはファイルをCで記述された小さな実行可能ファイルと見なし、minGWコンパイラの呼び出しシーケンスを使用します。したがって、AVは、コンパイラの呼び出しシーケンスに変換されたコードの一部をウイルスシグネチャとして認識します(この場合、Trojan:Win32/Wacatac.C!mlなどです)。

これは、AVソフトウェアによる誤検出と呼ばれます。

この場合、何ができますか?

  1. 実行可能ファイル内のコード行を見つけようとすると、この誤検出が発生します
  2. この問題をAV開発者に報告してください。この呼び出しシーケンスをウイルスデータベースに安全なシグネチャとして追加するか、除外する必要があります(ソフトウェアによって異なります)。

    • :これは小さな問題ではなく、大きな問題でもありません。しかし、その問題は、小さなCプログラムを書く一部の学生に影響を与える可能性があります。

    • :また、AV開発者が正確なファイルのSHA256(またはその他)を除外として追加できるため、この問題は部分的にしか解決できない場合があることも付け加えておきます。次に、小さな変更を加えた別のexeを作成し、再びAV開発者に連絡する必要があります。したがって、これらの問題を完全に解決するには、調査を実施し、小さなminGWでコンパイルされたファイルの誤検出を防止する実用的なアルゴリズムを作成することをAV開発者に要求する必要があります。

2
hgrev