Bundled CloudXR libPoco.so statically links libexpat 2.8.1 (CVE-2026-56132 + CVE-2026-56403..56409)
Medium6.9CVE-2026-56132 · Published Aug 25, 2026
**Summary** `libPoco.so` from the bundled CloudXR Runtime SDK statically links libexpat 2.8.1, which is vulnerable to CVE-2026-56132 (heap buffer overflow in `doProlog()`) and CVE-2026-56403 through CVE-2026-56409 (integer overflows). All are fixed upstream in libexpat 2.8.2. **Details** `src/core/cloudxr/python/CMakeLists.txt` extracts the entire CloudXR SDK tarball into `isaacteleop/cloudxr/native/`, so `libPoco.so` ships in the published wheel and in every image built from it. It is loaded at runtime — `libNvStreamServer.so` carries a `NEEDED` entry for `libPoco`. Verify against any installed wheel or extracted SDK: ``` strings isaacteleop/cloudxr/native/libPoco.so | grep -oiE 'expat_2\.[0-9.]+' # expat_2.8.1 ``` **Impact** **No CloudXR Runtime SDK build currently ships a fixed libexpat.** Swept every release on NGC `0566138804516934/cloudxr-dev/cloudxr-runtime-binary`, extracting `libPoco.so` from each tarball: | SDK version | date | expat | |---|---|---| | 6.1.0 | 2026-03-12 | 2.6.4 | | 6.2.0 | 2026-05-20 | 2.6.4 | | 6.2.1-rc1 | 2026-06-12 | 2.6.4 | | 6.2.1-rc2 | 2026-06-25 | **2.8.1** | | 6.2.1 | 2026-06-26 | **2.8.1** | | 6.2.2-rc1 / -rc2 / 6.2.2 | 2026-07-01 … 07-06...
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| isaacteleop PyPI | >= 1.3.131 | No fix yet |
Details and references
**Summary** `libPoco.so` from the bundled CloudXR Runtime SDK statically links libexpat 2.8.1, which is vulnerable to CVE-2026-56132 (heap buffer overflow in `doProlog()`) and CVE-2026-56403 through CVE-2026-56409 (integer overflows). All are fixed upstream in libexpat 2.8.2. **Details** `src/core/cloudxr/python/CMakeLists.txt` extracts the entire CloudXR SDK tarball into `isaacteleop/cloudxr/native/`, so `libPoco.so` ships in the published wheel and in every image built from it. It is loaded at runtime — `libNvStreamServer.so` carries a `NEEDED` entry for `libPoco`. Verify against any installed wheel or extracted SDK: ``` strings isaacteleop/cloudxr/native/libPoco.so | grep -oiE 'expat_2\.[0-9.]+' # expat_2.8.1 ``` **Impact** **No CloudXR Runtime SDK build currently ships a fixed libexpat.** Swept every release on NGC `0566138804516934/cloudxr-dev/cloudxr-runtime-binary`, extracting `libPoco.so` from each tarball: | SDK version | date | expat | |---|---|---| | 6.1.0 | 2026-03-12 | 2.6.4 | | 6.2.0 | 2026-05-20 | 2.6.4 | | 6.2.1-rc1 | 2026-06-12 | 2.6.4 | | 6.2.1-rc2 | 2026-06-25 | **2.8.1** | | 6.2.1 | 2026-06-26 | **2.8.1** | | 6.2.2-rc1 / -rc2 / 6.2.2 | 2026-07-01 … 07-06 | **2.8.1** | | 6.3.0-rc1 / -rc2 / -rc3 | 2026-07-27 … 07-31 | **2.8.1** | Uniform across `amd64` and `arm64`, across the `external` and `exp-external` variants, and identical in the `-public` and `-private` NGC channels (checked for 6.3.0-rc3). The vulnerable range is therefore **SDK 6.2.1-rc2 and later**, including the current latest, 6.3.0-rc3. Builds on 6.2.1-rc1 and earlier carry 2.6.4, which is exposed to different expat CVEs, not these. Note the timing: expat 2.8.2 was released 2026-06-25, the same day 6.2.1-rc2 picked up 2.8.1. The vendored copy has not been refreshed across the seven builds since, spanning roughly five weeks. Teleop is affected because `src/core/cloudxr/python/CMakeLists.txt` pins `CXR_RUNTIME_SDK_VERSION` from `deps/cloudxr/.env.default` — currently 6.3.0-rc2, moved off 6.2.1 in 01e1b804. The originating scan of `6.3.0-rc3-public` flagged `libPoco.so` in `isaacteleop-1.4.110rc1-cp312-cp312-manylinux_2_35_aarch64.whl` and in all four Linux SDK tarballs. **First affected `isaacteleop` build is 1.4.41.** The SDK pin moved 6.2.0 → 6.2.1 in 63c12ca6 (2026-07-13), and the patch component is the commit count since the `VERSION` bump (`cmake/IsaacTeleopVersion.cmake`), which puts that commit at 1.4.41. Everything from there is affected: 1.4.41 through 1.4.103 on `main`, 1.4.104 through 1.4.111 on `release/1.4.x` (which contains the same commit — hence the scanned 1.4.110rc1), and all of 1.5.x. Builds at 1.4.40 and earlier bundled SDK 6.2.0 or older with expat 2.6.4. The Win64 SDK zip published alongside each version also exists, but Teleop does not consume it — `scripts/download_cloudxr_runtime_sdk.sh` resolves Linux `amd64`/`arm64` only — so it is out of scope here, though it likely carries the same `libPoco` build. Reachability from Teleop is unconfirmed. CVE-2026-56132 requires `XML_ExternalEntityParserCreate` (DTD sharing across parsers). Whether the CloudXR runtime parses attacker-influenced XML via `Poco::XML`, rather than only local configuration, needs an answer from the CloudXR team. **Patches** None available, and no newer SDK to move to — every published build from 6.2.1-rc2 onward carries 2.8.1. Requires a CloudXR SDK rebuild against libexpat 2.8.2, covering both the `external` and `exp-external` tarball variants and both architectures, followed by a `CXR_RUNTIME_SDK_VERSION` bump in `deps/cloudxr/.env.default`. CloudXR already moved 2.6.4 → 2.8.1 at 6.2.1-rc2, so this repeats a refresh they have done before — it needs to go one patch further. **Workarounds** None. Expat is statically linked at hidden visibility (`nm -D` on `libPoco.so` exports no `XML_*` symbols), so it can be neither patched in place nor `LD_PRELOAD`-interposed with a fixed system libexpat.
More Nvidia advisories
All Nvidia| Date | Advisory | Severity | Fixed in |
|---|---|---|---|
| Aug 25 | Nvidia OpenShell: command injection | High8.8 | No fix yet |
| Aug 25 | Nvidia OpenShell: path traversal | High8.5 | No fix yet |
| Aug 25 | Nvidia OpenShell: code execution | Critical9.9 | No fix yet |
| Aug 25 | Nvidia NemoClaw: command injection | High7.8 | No fix yet |
| Aug 25 | Nvidia NemoClaw: code execution | High7.5 | No fix yet |
| Aug 25 | Nvidia NemoClaw: remote code execution | High8.1 | No fix yet |