关注我项目中的恶意库

Concerned about malicious libraries in my project

所以一段时间以来,我一直在 python 中构建我的虚拟助手,这需要使用多个外部库。我也一直在使用 pyinstaller 将脚本转换为 exe。然而就在前几天,windows 防御者告诉我有问题,只影响了我创建的 exe 文件

它说Trojan: Win32/Wacatac.C!ml

我只是不明白这是怎么现在才被标记出来的,而不是在考虑到我已经在这个项目上工作了一个多月之前。

这是我使用过的模块列表:

newsapi、维基百科、线程、自动更正、随机、时间、电子邮件、日历、日期时间、数学、sys、webbrowser、pyttsx3、io、speech_recognition、imaplib、pickle、wmi、docx、comtypes、googletrans , qhue, pyowm, ast, pyaudio, pycaw, tkinter, smtplib, 电子邮件, bs4, 请求

这是误报。您的第三方模块没有恶意,问题与 PyInstaller 有关。

PyInstaller 带有预编译的引导加载程序二进制文件。由于许多实际的业余病毒是用 Python 编写的,然后使用 PyInstaller 转换为可执行文件,因此大多数反病毒软件会将这些预编译的引导加载程序二进制文件标记为恶意的。唯一真正的解决方案是编译自己的引导加载程序。

误报?您提到 "the use of several external libraries." 不确定如何根据该信息确定它是误报。尽管有相反的其他答案,除非您亲自查看了代码……您不会。

PyPI,即 "official" 存储库,在很多情况下,最近一次是 2019 年 12 月,被发现早在此类恶意软件被发现之前就一直在提供恶意软件。参见例如https://www.bleepingcomputer.com/news/security/python-package-installation-can-trigger-malicious-code/, https://www.zdnet.com/article/two-malicious-python-libraries-removed-from-pypi/.

正如@Paul M. 所解释的那样,这是一个误报,需要在本地编译引导加载程序。这可能超出了为此添加另一个答案的范围,但认为这对任何想知道如何重新编译 pyinstaller 引导加载程序的人都有帮助。

  1. 验证此处安装了正确的 windows 编译器:https://wiki.python.org/moin/WindowsCompilers
  2. 通过在此处下载最新版本的源代码手动安装 PyInstaller:https://github.com/pyinstaller/pyinstaller/releases
    1. 取决于 PyInstaller 是否已与 Pip 一起安装,您可能需要卸载它:python.exe -m pip uninstall pyinstaller

    2. 在任何地方解压缩并导航到 PyInstaller 中的引导加载程序目录。

    3. 运行 为您的架构构建的任一命令:

      python.exe ./waf all --target-arch=32bit
      

      python.exe ./waf all --target-arch=64bit
      
    4. 导航到根 PyInstaller 目录

      python.exe setup.py install
      
    5. 重新运行原来的pyinstaller命令将python打包为exe。

仅供参考,我现在不得不重做两次,我不确定这是否与将这些可移植可执行文件部署到其他 windows 机器和 windows 防御者标记它以及以后有关在更新中推送签名或交易是什么,但重新编译引导加载程序似乎有效。