概要
先日、私が個人開発していたアプリ aprecall(以下のGIF参照)をリリースしたところ、Windowsからマルウェアと誤判定され、一時的にダウンロードできなくなりました。ダウンロードしていただいた方にはご迷惑をおかけしました🙇
現象
最初のユーザーはダウンロード、インストール、実行が可能でしたが、次のユーザーからはインストールできず、トロイの木馬と警告が表示されるようになりました(画像1参照)。さらに次のユーザーはダウンロードした瞬間にChromeがウィルスを検出し、ダウンロードファイルが即座に削除されました。Windowsのネットワークで情報が共有されているため、現象が発覚するまでに時間差がありました。
原因
Microsoft Defenderはマルウェアとの類似度を判断基準としているため、マルウェアに似た処理があれば怪しいと判断されることがあります。例えば、ウィンドウがない、ウィンドウが極小、ターミナルがない、printではなくloggerを使用している、pyinstallerを使用しているなど、悪意のない要素も評価対象になることがあります。一昨日まで友人数名にインストーラーを試してもらった時は問題ありませんでしたが、ターミナルを削除しウィンドウを極小にしたことがウィルス判定を受ける要因となりました。
Go言語でも、ファイル書き込み時のメモリの扱い方で判定を受ける例があります。
対策
- pyinstallerのビルドをやり直す
- ターミナルを再表示させる
- Microsoftに偽陽性として申請し解除を求める
今後の対策
- ウイルス判定サイト virustotal などで事前確認を行う
- ダウンロード、インストール、実行のプロセスを時間を置いて複数台でテストする
- 直前で機能追加をせず、安定した状態でリリースする
その他
Chromeの警告やWindowsでの不明な発行元の表示を消すには、デジタル署名を行い信頼性が証明されたソフトが多くダウンロードされる必要があります。詳しくは個人ソフト作者にとってのデジタル署名とは?を参照してください。現時点では警告が表示されることがありますが、引き続きインストールをお願いいたします🙇