Python自作プログラムでノートン誤検出

2020-04-16

Python(パイソン:プログラミング言語)で自作したプログラムがシマンテックのノートン(ウィルス対策ソフト)で「Heur.AdvML.B」というウィルスとして誤検出・誤検知されてしまいます。

情報共有のために書きます。

確認環境

  • Windows 10 Home(64bit)
  • Python 3.8.2(32bit)
  • PyInstaller 3.6でexe化
  • シマンテック ノートン インターネットセキュリティ オンライン Ver.22.20.2.57

状況説明

Python 3.8.2(32bit)でPyInstallerを用いてexeを作成すると、ウィルス対策ソフトのノートンにより「Heur.AdvML.B」と見なされて(誤検知・誤検出されて)削除されてしまいます。

「PyInstallerでexeが作成されない」と悩んでいる方は、Norton等ウィルス対策ソフトによって削除されていないか確認してみた方がよいでしょう。

作成したexeを配布したいと思っているので、特定フォルダをウィルススキャンから除外するというような方法は根本対策になりません。

デジタル署名(コード署名)はまだ付加していませんが、それで状況が改善するとも思えないので、誤検出問題を先に解決しておきたいところです。

原因調査

原因調査を行いました。

ソースコード自体は問題ないことが前提となりますので以下の1行のみのプログラムで確認しました。

print (“Hello, Python”)

いろいろやってみて、ウィルス判定される条件が分かりました。

表示するとこんな感じです。

PyInstallerオプション32bit64bit
なしOKOK
–onefile(-F)OKOK
–noconsole(-w)Heur.AdvML.BOK
–onefile –noconsoleHeur.AdvML.BOK

まず、64bit版のPython(PyInstaller)でexe化した場合は問題ありませんでした。

また、32bit版でも「–noconsole」のオプションをつけない場合は問題ありませんでした。

結論としては、

32bit版のPython(PyInstaller)の「–noconsole」でexe化した場合に、「Heur.AdvML.B」として誤検知されるということです。

もちろん「-w」でも同じ状況です。

これだけの条件で発生するとなると、結構大問題になっている気がするのですが、どうなんでしょう。

多くのところで発生しているならこのページのアクセスが上がりそうなものです。

Pythonで作成したプログラムをexeとして配布したい人は少ないのかな?

個人的には64bitでも問題ないのですが、人様に配布するので念のため32bitにしたいというところです。

対処中

シマンテック・セキュリティ・レスポンスにファイルを送信する方法

上記ページの「ファイルを送信する」ではなく「誤検知を報告する」から対処中です。紛らわしいですね。英語で送信しました。

はっきり言って、こんなことに時間を取られたくないのですが、今までノートンが守ってくれていたと考えて受け入れたいと思います。

2020年05月05日追記

3週間近く経ちましたが、シマンテックから連絡はありません。

(2020年06月03日でも連絡はないので一生連絡はないのでしょう。そもそもが連絡くれるフローなのかどうかも分かりませんし。)

他のブログでも同じような情報を見たので、昔からの誤検出なのだと思います。

ちなみに、自分は32bit版はPy2exeでexe化することにしました。

そのために、(その時点でPy2exeはPython 3.8に対応していなかったので)旧バージョンのPython 3.7をインストールもしました。

Py2exeの32bit版で作成したexeはウィルスとして誤検知はされません。

他のウィルスチェックはどうなの?

SymantecのNortonではウィルスとして誤検出されますが、他のウィルス対策ソフトではどうなの?ということで、某ブログを参考にオンラインのファイルチェックサイトで確認しました。

VIRUSTOTAL

「ウイルスチェックのためにアップロードしたファイルはセキュリティベンダーなどに公開されてしまうため、機密情報を含むファイルには使用できません。」とのことです。

PyInstaller(32bit版)で作成したexeをアップロードしてみると、72種類のウィルスチェックエンジンのうち、10で陽性判定(ウィルスと判定)のようです。

私が知っているようなところでは、Symantecの他にMicrosoftとMcAfee-GW-Editionというものでウィルスと判定しているようです。

一方で、Avast、AVG、F-Secure、Kaspersky、Kingsoft、McAfee、TrendMicro、ZoneAlarm by Check Point等では陰性(問題ないファイル)と判定しているようです。

ちなみにMcAfee-GW-Editionでは陽性判定、McAfeeでは陰性判定です。2つの違いについてはこちら

それくらい判定が難しいというか、グレー部分が多いものなんでしょうね。

なので間違ってもいいのですが、間違いを正すフローはあるのかな?

基本は「疑わしきは罰せよ」だとしても、ちゃんと調べて疑いが晴れたら釈放してほしいものです。

以上。

後記

最後までお読みくださりありがとうございます。

こんなに更新したのに、現在はほぼ誰も見ていないゴミカスクズ無価値ブログです。

よければ(はてな)ブックマークや拡散をお願いいたします。

更新の原動力として励ましが欲しいのです…<(_ _)>

当ブログ内お薦め記事

記事はここまでです。