它解决了什么,又带来什么
这项功能允许远程伙伴直接读写本机的数据块、位存储器与输入输出区,PLC 程序本身不需要编写任何通信代码,因此组态软件与第三方上位机接入非常方便。代价是它绕过程序里的校验与联锁:任何能建立连接并知道地址的伙伴,都可以直接改写数据,而 PLC 侧无法区分请求来自上位机还是攻击工具,也没有身份与权限判定。新一代机型出厂默认关闭该能力,需要显式允许才可用;老机型往往默认可通过配置连接使用。
基本信息
| 能力 | 远程伙伴按地址读写存储器与数据块 |
|---|---|
| 默认状态 | 新一代机型默认关闭,需在保护设置中允许 |
| 鉴权 | 无,建连成功后即可读写 |
| 可访问区域 | 数据块、位存储器、输入输出区等 |
| 程序参与 | 不经过程序逻辑,不触发内部校验与联锁 |
| 替代方案 | 应用层安全接口、程序内通信块、把交互收敛到受控数据块 |
| 检查位置 | CPU 属性中的保护与访问设置 |
典型使用场景
- 上位机或老 HMI 只能按绝对地址访问,必须依赖该能力
- 第三方驱动不支持其他接入方式时,作为过渡手段
- 升级工程软件后默认值变化,原本可用的功能突然失效,需要复核设置
- 安全审计发现该能力被长期开启,需要评估依赖方后再关闭
- 临时调试开启后忘记关闭,成为长期暴露点
- PLC 之间交换数据时,评估是否改用程序内的通信块更可控
风险与缓解
| 风险 | 后果 | 缓解方向 |
|---|---|---|
| 无身份校验 | 任意可达主机可读写 | 限制可达来源,优先网络分区 |
| 绕过程序校验 | 非法值直接进入数据块 | 关键写入改由程序内部处理并校验 |
| 无操作审计 | 事后无法定位来源 | 记录连接与变更,纳入监控 |
| 默认开启被忽略 | 长期暴露且无人知晓 | 列入交付与巡检检查项 |
| 与调试口叠加 | 外部可达性被放大 | 关闭不必要的服务与远程入口 |
开启与关闭的检查顺序
开启与关闭的检查顺序
# 1 列出依赖该能力的上位机与工具,确认无法用其他方式替代
# 2 在 CPU 属性的保护与访问设置中最小化开启,并限制可达来源
# 3 在程序侧把关键写入改为受控数据块,附加范围与状态校验
# 4 变更后逐台上位机验证功能是否仍正常
# 5 记入配置基线,定期复核是否有被重新打开关闭该能力前必须确认所有依赖方:不少老 HMI 与第三方驱动一旦失去它,采集会整体中断,因此变更应安排在检修窗口并准备回退。
现实中已有攻击针对这类无认证的读写能力造成实质破坏,工程默认应当是保持关闭,而不是为了省事长期开启。