SuperAPI AI 工具集

robotics-security

安全与审计

查看项目

更新于 10-15 13:51

技能介绍

用途

该技能用于对机器人系统进行安全加固与审计,覆盖从网络、中间件到应用、固件与物理接口的安全设计。适用于在 ROS2 部署中启用加密与访问控制、加固机器人板载计算机、管理机器人机群的凭据,以及面向工业机器人部署的 IEC 62443 合规场景。

机器人攻击面

资料将攻击面分为四类,并给出对应影响:

  • 网络层:开放 DDS 端口(7400-7500)、未分段局域网。
  • 中间件层:未认证的 /cmd_vel 发布、消息无签名。
  • 应用层:硬编码凭据、未校验的命令。
  • 物理层:USB/调试端口、串口控制台、暴露的 SBC。
  • 固件层:未签名固件 OTA、无安全启动。
  • 供应链层:被污染的 ROS 包、未校验的镜像。

典型影响包括:未认证 /cmd_vel 导致机器人意外运动造成伤害或损坏;传感器欺骗(/scan、/camera/image)导致碰撞或错误决策;开放 DDS 组播发现使被动监听者枚举完整主题图;USB/串口物理访问导致 root shell、刷写固件或数据外泄;未签名固件更新在电机控制器中留下持久后门。

SROS2 与 DDS 安全

资料说明 SROS2 在 DDS 层提供认证、加密与访问控制。

生成密钥库与按节点创建 enclave 的命令:

export ROS_SECURITY_KEYSTORE=~/sros2_keystore
ros2 security create_keystore ${ROS_SECURITY_KEYSTORE}

ros2 security create_enclave ${ROS_SECURITY_KEYSTORE} /my_robot/camera_driver
ros2 security create_enclave ${ROS_SECURITY_KEYSTORE} /my_robot/navigation
ros2 security create_enclave ${ROS_SECURITY_KEYSTORE} /my_robot/motor_controller
ros2 security create_enclave ${ROS_SECURITY_KEYSTORE} /my_robot/teleop

生成结果包含每个 enclave 的 cert.pem、key.pem、governance.p7s、permissions.p7s,以及 public/ca.cert.pem 与 private/ca.key.pem。

治理(governance)XML 用于设置域级安全行为,例如不允许未认证参与者、启用加入访问控制、将发现/活跃性/RTPS 保护设为 ENCRYPT,以及按主题启用读写访问控制与数据加密。

权限(permissions)XML 用于按 enclave 定义发布/订阅规则,并设置 default 为 DENY。资料提示:权限到期会造成“静默故障”——not_after 过期后,使用该授权的参与者会在发现阶段被拒绝;在 ROS_SECURITY_STRATEGY=Enforce 下机器人节点可能彼此不可见,且 DDS 日志中仅出现发现阶段拒绝,没有主题错误或崩溃。应按 TLS 证书的方式跟踪权限到期时间。

在 launch 文件中启用安全的环境变量:

ROS_SECURITY_KEYSTORE: ~/sros2_keystore
ROS_SECURITY_ENABLE: 'true'
ROS_SECURITY_STRATEGY: 'Enforce'

资料强调生产环境始终使用 Enforce;Permissive 仅记录违规但允许通过,仅用于调试。

按主题最小授权示例:motor_controller 发布 /joint_states、订阅 /cmd_vel;navigation 发布 /cmd_vel、/path,订阅 /scan、/odom、/map;camera_driver 仅发布 /camera/image_raw;teleop 发布 /cmd_vel、订阅 /joy。这样被攻陷的 camera_driver 无法向 /cmd_vel 发布。

网络加固

资料提出控制平面(VLAN 10)、数据平面(VLAN 20)、管理平面(VLAN 30)的分段模型:控制平面承载 /cmd_vel、/odom、/joint_states、/e_stop,低延迟、RELIABLE QoS;数据平面承载图像、点云、地图与 rosbag,高带宽、BEST_EFFORT;管理平面承载 SSH、Prometheus、日志收集与机群管理 API,仅通过跳板机/VPN+2FA 访问。管理平面不可从数据平面到达,控制平面流量不经过 WiFi。

给出了 iptables 规则示例(默认丢弃入站、允许已建立连接、DDS 发现端口 7400-7500 与用户流量 7500-7700 仅限控制 VLAN、SSH 仅限管理 VLAN、阻断 WiFi 上的组播),以及 netplan 的 VLAN 配置示例。

关闭 DDS 组播:资料指出组播自动发现会暴露完整主题图,应改用单播对等列表。给出 CycloneDDS 配置示例(AllowMulticast 设为 false 并列出 Peer 地址),并说明 FastDDS 的等效做法是设置 initialPeersList 使用显式单播定位器、省略组播定位器,通过 FASTRTPS_DEFAULT_PROFILES_FILE 加载。

SSH 与主机加固

资料提供 sshd_config 建议:更改端口、禁止 root 登录、禁用密码认证、启用公钥认证、限制 MaxAuthTries、设置 ClientAlive 参数、限制 AllowUsers、关闭 X11Forwarding、AllowTcpForwarding 与 PermitTunnel;并给出按机器人生成 ed25519 密钥对与 ssh-copy-id 的示例。

还包含 fail2ban 配置示例、无人值守安全更新配置(Automatic-Reboot 设为 false,因为不应自动重启运行中的机器人),以及移除 avahi-daemon、cups、snapd、modemmanager、bluetooth、bluez 等不必要软件包的命令。

凭据管理

资料强调不要硬编码凭据,应使用环境变量(例如从 os.environ['FLEET_API_KEY'] 读取),在 params.yaml 中使用 $(env AWS_SECRET_KEY) 引用环境变量而非明文。给出 systemd 服务通过 EnvironmentFile=/etc/robot/secrets.env 注入密钥的示例,并用 chown/chmod 限制文件权限。还给出证书轮换脚本示例(备份密钥库、重新创建 enclave、重启服务、通过 cron 每月执行),以及密钥库文件权限设置(目录 750、文件 640、CA 私钥 root 所有且 600)。

容器安全

资料包含:非 root 容器(创建 robot 用户并以 USER robot:robot 运行)、最小运行时镜像(用 ros-core 并移除 shell 与包管理器以阻止交互式利用)、镜像扫描与签名命令(trivy 扫描 HIGH/CRITICAL,cosign 签名与验证)、只读根文件系统(read_only: true、tmpfs、只读挂载密钥库、no-new-privileges、cap_drop: ALL)以及对应环境变量的 docker-compose 示例。

物理与网络安全交叉

资料强调机器人遭受网络攻击会造成物理伤害,标准 IT 安全必要但不充分。急停必须在所有软件、网络与主计算完全失效时仍能工作:物理急停按钮通过硬接线直接连接到安全继电器/安全 PLC,经接触器切断电机电源,不依赖软件;软件急停可通知继电器触发,但不能是唯一路径。

限制

资料未提供具体价格、收费、平台兼容矩阵或性能数据;文中示例的接口名、IP 地址、路径与分发版本需按实际硬件与系统调整。分类为安全与审计。