diff --git a/README.md b/README.md index 8998f79..6489f53 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,21 @@ last error, current calibration, rates, and sequence progress before deciding wh a new session. Callback exceptions are counted; they remain non-fatal under reconnect policy and become a callback fault under fail-stop policy. +## Network security + +ATI Net F/T configuration discovery uses HTTP and RDT streaming uses UDP. These device protocols +do not provide transport encryption, peer authentication, or message integrity through this +library. Run the sensor and client on a trusted, isolated network segment; do not expose the +sensor HTTP or RDT ports directly to the Internet or an untrusted shared network. Use firewall +allowlists and an authenticated network boundary when traffic must cross an untrusted network. + +Automatic discovery values are not authenticated solely because they came from the configured +sensor address. Verify the discovered calibration and units before enabling a controller. A +complete manual calibration override avoids HTTP discovery when independently verified values +are required, but it does not authenticate the UDP measurement stream. See +[SECURITY.md](SECURITY.md) for the supported network model, deployment controls, and private +vulnerability reporting. + ## Hardware safety Force/torque data can feed motion, force-control, and protective-limit decisions. Treat the diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..6a420fa --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,60 @@ +# Security Policy + +## Supported versions + +Security fixes are applied to the latest released version and the `main` branch. Older releases +may not receive backports. + +## Reporting a vulnerability + +Please do not open a public issue for a suspected vulnerability. Use +[GitHub private vulnerability reporting](https://github.com/netft/netft-cpp/security/advisories/new) +when available. If private reporting is unavailable, contact the maintainer at +hanxudong159@126.com. + +Include the affected version, deployment assumptions, a minimal reproduction or data-flow +description, and the security impact. Remove sensor addresses, credentials, and private network +details before submitting a report. + +## Network security model + +ATI Net F/T devices expose configuration through HTTP and stream RDT records through UDP. +`netft-cpp` implements those device protocols and does not add transport encryption, peer +authentication, or message integrity. Automatic discovery data and RDT records must therefore +not be treated as authenticated solely because they came from the configured sensor address. + +The supported deployment model assumes that the sensor and client run on a trusted, isolated +network segment. Do not expose the sensor, its HTTP interface, or its RDT port directly to the +Internet or to an untrusted shared network. Where traffic must cross an untrusted network, place +the complete sensor connection inside an authenticated network boundary such as a managed VPN +or equivalent industrial-network gateway. + +Recommended deployment controls include: + +- isolate the sensor network with a dedicated interface or VLAN; +- restrict traffic with host and network firewalls to the expected client and sensor addresses; +- prevent untrusted devices from joining, routing to, or bridging the sensor segment; +- monitor unexpected calibration, unit, sensor-address, and connection changes. + +The library disables HTTP redirects and proxy use and strictly validates the configuration +response, but those controls do not authenticate its origin. + +## Configuration integrity and hardware safety + +Automatic discovery reads calibration scales and units over unauthenticated HTTP. Verify the +discovered values against the intended sensor configuration before enabling a controller. When +an application must use fixed, independently verified calibration values, configure a complete +manual calibration override. A manual override avoids HTTP discovery but does not authenticate +the UDP measurement stream. + +Force/torque data can affect motion and protective-limit decisions. Use fail-stop behavior where +appropriate, detect stale or invalid data, and retain an independent safety-rated control path. +This library is not a substitute for an emergency stop or other safety system. + +## Known protocol limitations + +A report that depends only on the absence of HTTPS or authenticated UDP in the ATI device +protocol may describe a known protocol limitation rather than a defect that this library can +correct independently. Reports remain valuable when they demonstrate an unexpected exposure, +a bypass of the stated trusted-network model, unsafe handling of unauthenticated data, or a +practical mitigation that remains compatible with the device.