乐于分享
好东西不私藏

绕过IDE直连云端:PLC编程软件AI助手漏洞分析

绕过IDE直连云端:PLC编程软件AI助手漏洞分析

诚招web、re、crypto、pwn、misc、合约方向的师傅,长期招新IOT+Car+工控+样本分析多个组招人有意向的师傅请联系邮箱 admin@chamd5.org(带上简历和想加入的小组)

1 前言

随着工业自动化软件的智能化演进,越来越多的PLC集成开发环境(IDE)开始引入云端 AI 助手功能,将自然语言问答、代码补全、故障诊断等能力通过网络接口下发给终端用户。这类功能的实现模式高度一致:桌面客户端内置一个专用的通信模块(通常以动态链接库形式存在),负责向厂商云端服务发起鉴权请求并获取 JWT,随后携带令牌调用AI问答接口。

这种"桌面软件 + 外挂云模块"的架构在快速迭代的工业软件市场中十分普遍,但安全设计往往严重滞后于功能开发。由于工业软件团队长期专注于工业场景业务功能的实现而对信息安全的相关规范认知不足,云服务凭据被直接硬编码进客户端二进制的情况在国内外工业软件生态中均有出现。

笔者在某款广泛应用于工业自动化领域的PLC IDE编程软件中发现了此类问题,并已通过CNNVD国家信息安全漏洞库完成正规报告。本文以此次研究为脉络,介绍如何系统性地对工业软件 AI助手服务模块展开安全分析,为工控安全研究者提供方法论参考。

2 信息收集

研究的第一步是建立目标全景。对于带有 AI 助手功能的工业 PLC IDE编程软件,需要收集以下几类信息:

软件安装包与版本信息:通过厂商官网或授权渠道获取目标软件的完整安装包,记录版本号。

功能特性与云端依赖:安装软件后,在隔离网络环境中使用抓包软件全量抓取软件启动、AI 功能激活、问题发送等关键操作的 HTTPS 流量,初步了解云端服务的域名、端口及接口路径分布,建立接口地图。

模块文件清单:通过 Process Monitor 监控软件启动时的 DLL 加载顺序,重点关注安装目录中与"ai"、"cloud"、"com"、"net"相关的动态库文件,这些文件往往是云端通信能力的核心载体。

历史安全通告:检索 CVE、CNVD、NVDB、厂商官网是否存在与目标产品相关的历史安全通告,了解同类软件已披露的漏洞模式,为后续分析提供参照。

安装后的文件如下所示,通过以上方法定位到关键dll为AIComm.dll文件

3. 环境搭建

在正式逆向分析之前,需要搭建一个完整的分析环境:

静态分析环境:以 IDA Pro 或 Ghidra 作为主要反汇编工具。对于 .NET 编写的 DLL,优先使用 dnSpy 进行反编译,代码可读性接近源码级别。对于原生 C++ DLL,则依赖 IDA 的 F.L.I.R.T. 签名库辅助函数识别,同时结合 FLOSS 工具批量提取二进制中的字符串,快速定位敏感常量。

动态调试环境:将目标软件安装于 Windows 虚拟机(建议 Windows 10,快照便于回滚),使用 x64dbg 附加主进程。由于部分工业软件使用了 Wibu 或 HASP 等软件保护方案,可能需要借助调试插件从内存中提取解密后的模块进行分析。

流量分析环境:使用 Burp Suite 配置系统代理,结合证书导入,对软件发出的 HTTPS 流量进行中间人解密与重放,直观观察请求结构与响应格式,与静态分析结论相互印证。

隔离原则:全程在虚拟机或物理隔离的测试机器上操作,严禁将任何测试流量发往厂商生产服务器。

基于以上方法及原则,我们在虚拟机win10中安装目标软件,加载分析软件,如下所示

4. 漏洞点定位

4.1 从通信模块切入

定位到目标 DLL 后,首先执行批量字符串提取,重点关注以下类型的字符串:

  • 包含 http、https 的 URL 片段
  • 包含 Authorization、Bearer、token、password、username、secret、key 的键名
  • 看起来像随机生成但实际上是固定字符串的密码模式(如含有特殊字符的固定长度字符串)

在字符串列表中,若发现形如固定用户名密码组合的常量字符串,应立即重点标记。

4.2 定位登录函数

在 IDA 中以可疑凭据字符串作为锚点,追溯其交叉引用,定位到使用该字符串的核心函数。对于使用 libcurl 的原生 DLL,其登录函数的典型特征是:

  • 出现 curl_easy_init、curl_easy_setopt、curl_easy_perform 等 libcurl API 调用序列
  • 通过 curl_easy_setopt 设置 CURLOPT_POSTFIELDS,其值由用户名/密码拼接而成的 JSON 字符串填充
  • 存在解析响应 JSON 并提取 token 字段写入成员变量的逻辑

重点检查 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 的设置值。若这两个选项被设为 0,则说明客户端完全放弃了对服务端证书的校验,传输层信任体系被主动削弱,攻击面进一步扩大。

4.3 分析 URL 选择逻辑

逆向分析不止于找到凭据,还需要理解代码的分支逻辑。在登录函数中,通常存在根据某个成员变量或配置值在公网地址与内网/测试地址之间切换的分支。内网地址(如私有 IP 段)往往是开发测试环境的残留,其暴露本身也构成信息泄露风险。

4.4 追踪Token生命周期

登录成功后,JWT 通常被写入对象的某个成员字段,供后续AI问答接口调用时附加到 Authorization: Bearer 头部。通过追踪该成员字段的读写关系,可以完整还原从登录到AI调用的整条数据流,为理解漏洞全貌提供基础。

5. 漏洞复现及分析

基于前述静态分析的结论,使用通用 HTTP 客户端(Python/curl)在完全隔离的测试网络中进行最小化验证:

验证步骤一:登录接口可达性测试

向登录接口发送标准 JSON 请求,观察服务端是否返回包含有效 JWT 的响应。若响应结构与静态分析还原的解析逻辑吻合,则证实硬编码凭据确实有效。

验证步骤二:JWT 结构分析

对获取到的 JWT 进行 Base64 解码,分析 Payload 中的字段,重点关注 sub(主体标识)、exp(过期时间)、aud(受众)、role(角色权限)等字段。若 JWT 的主体标识为通用账号名而非设备/用户绑定的唯一标识符,则进一步证实了凭据不可区分用户的设计缺陷。

验证步骤三:AI 接口调用链验证

携带 JWT 向 AI 问答接口发送合法格式的请求,确认是否能够成功获取响应,从而完成从凭据获取到服务调用的完整链路验证。

响应格式分析:部分云端 AI 接口采用流式响应(Streaming Response),将 AI 回答以多个 chunk 的形式分段返回。每个 chunk 中的文本内容可能经过 Base64 编码,需要逐段解码后拼接才能得到完整回答。

整体攻击数据流可以用以下示意图描述:

整个利用过程及问答内容如下所示,无需依赖编程软件即可连接云端使其回答问题、编写PLC的内部程序。

6.同类漏洞挖掘思路

基于本次研究积累的经验,我们总结出一套可复用于同类工业软件 AI 模块的漏洞挖掘方法:

目标选型:优先选择近两三年新增云端 AI 或远程诊断功能的工业桌面软件。这类产品通常是在原有成熟软件基础上快速集成云服务模块,安全设计最为仓促,问题密度较高。典型品类包括 PLC编程IDE、SCADA/HMI组态软件、变频器/伺服调试工具等。

模块识别:安装后检查 %ProgramFiles% 及软件安装目录,以"ai"、"cloud"、"ifg"、"iot"、"gateway"等关键词过滤DLL文件列表。对于Electron架构的新一代工业软件,可解包 app.asar 直接审计 JavaScript 源码,往往更为直接。

凭据提取:FLOSS工具可自动识别并解码二进制中的混淆字符串,比 IDA 自带的字符串视图覆盖更全面,适合批量筛查。对于 .NET 程序集,dnSpy 的反编译结果可直接搜索含有 password、apikey、secret 的字面量字符串。

协议还原:结合抓包与 IDA 静态分析,还原云端接口的完整协议格式,包括必填字段、鉴权机制、响应结构。对于格式未知的接口,可参考后端框架的错误提示(如 FastAPI 的 422 响应中通常包含 Pydantic 的字段校验信息)来推断请求结构。

对于已发现问题的产品,后续还可以进一步对云端接口进行各类测试不限于模糊测试甚至AI大模型进行渗透测试,挖掘接口层面的注入、越权、资源滥用等深层问题。

7.防护措施

  • 对工业软件厂商:
  1. 建立发布前的凭据扫描机制,将 truffleHog、gitleaks 等工具集成到 CI/CD 流程,禁止任何固定密码字符串进入生产二进制;
  2. AI 云服务接入应采用用户级或企业级授权体系(OAuth2 + PKCE、设备绑定证书等),每个客户端实例使用独立的、可吊销的主体身份;
  3. 恢复完整的 TLS 证书校验,HTTPS 场景下禁止将 CURLOPT_SSL_VERIFYPEER 置 0;
  4. 云端接口应实施速率限制、设备指纹校验和异常访问告警,单一账号的高频或异地调用需触发二次验证。
  • 对工业企业用户:
  1. 在网络边界对工业主机的出站流量实施白名单管控,仅允许授权的云端域名通过,并记录审计日志;
  2. 通过企业代理监控 AI 功能相关的 HTTPS 出站流量,发现非授权进程调用时及时告警;
  3. 使用 AI 问答功能时,避免在提问内容中包含敏感工艺参数、设备配置或未公开项目信息,防止数据经云端泄露;
  4. 关注软件厂商的安全更新通告,及时升级至修复版本。

8.总结

本文以PLC 编程软件 AI助手服务模块的安全分析为主线,介绍了从信息收集、模块定位、逆向分析到漏洞验证的完整研究方法,并归纳出适用于同类工业软件的通用挖掘思路。核心发现是:在"桌面软件 + 外挂云模块"的工业 AI 集成架构中,硬编码云服务凭据是当前阶段最普遍、攻击门槛最低的安全缺陷之一,其根因在于工业软件团队在快速集成云端能力时缺乏对应的安全开发规范。

工控安全不仅是传统网络层面的攻防,随着 AI 与云服务深度嵌入工控软件生态,云端接口安全、供应链凭据管理已成为不可回避的新战场。希望本文能为国内工控安全研究者提供有益的方法参考,也呼吁更多工业软件厂商重视并主动推进产品安全性建设,共同守护工控系统的安全底线。

本文所述研究成果已上报至国家漏洞平台,文中不包含可直接利用的完整攻击链,请勿将相关技术用于未经授权的目标。

结束

招新小广告

ChaMd5 Venom 招收大佬入圈

新成立组IOT+工控+样本分析 长期招新

欢迎联系admin@chamd5.org