Security & trust

Why should you trust CableProbe?

CableProbe is a tool you point at hardware you already suspect, on a host you are willing to burn. That only works if the tool — and the site you downloaded it from — earn the same scrutiny you are giving the cable. Here is what we do so that they can.

Trusting the tool

Every line is readable

CableProbe is open source under the MIT License. There is no closed-source component, no obfuscation and no compiled blob — the code you run is the code in the repository.

Observation only, by design

It watches, records and reports. It does not inject payloads, exploit anything, capture credentials, establish persistence or provide remote access. Contributions that add offensive capability are refused.

No telemetry, no auto-update

CableProbe does not phone home, check for updates, or send your reports anywhere. It is built to run on a host with no network you care about, and it behaves that way.

Small, named dependencies

Six well-known Python libraries, each listed with its licence. No third-party source is vendored into the project.

Reproducible, not prebuilt

There is no mystery .img to trust. You build the disposable Raspberry Pi image yourself from stock Raspberry Pi OS using the shipped pi-gen recipe.

Tested without hardware

The analysis, rules and report layers are pure functions with full unit-test coverage. Probe parsers are tested against captured sample output.

What CableProbe touches on your machine

The 18 probes read system state that is already there — USB devices, descriptors and hub topology; USB-C / Power Delivery port state; block devices and mounts; network interfaces, routing, DNS and listening sockets; input/HID, serial, audio and video devices; PCI / Thunderbolt devices; loaded kernel modules; the process list; and USB-relevant kernel log lines — and it watches udev events live. To do this it reads /sys, /proc and /dev, and runs standard Linux tools (lsusb, lsblk, ip, ss, journalctl, dmesg) as separate, independently installed programs and reads their output. It writes exactly one thing: the JSON report, to the output directory you choose.

pyudev (LGPL-2.1, Linux-only) is imported as a normal, unmodified PyPI package, never vendored or patched. If you redistribute CableProbe as a bundled image, keep it a replaceable component and ship its licence text. See third-party dependencies.

The honest limit

CableProbe cannot prove that a cable is safe or uncompromised. A clean report means nothing notable was observed during that session — not that the cable is benign. A tool that claimed otherwise would be the one not to trust. Use CableProbe as one input to your own judgement.

Trusting this website

cableprobe.com is a static-feeling PHP site whose only job is to document the project and point you at the real artifacts.

  • No third-party requests. No analytics, no tag managers, no tracking pixels, no A/B tools, no web fonts and no CDN. Every asset — CSS, JavaScript, images — is served from cableprobe.com itself. The one script on the site is a small menu toggle.
  • No cookies, no accounts, no forms. The site sets no cookies and collects nothing from you. There is nothing to log in to and nothing to submit.
  • Locked-down headers. A strict Content-Security-Policy built on default-src 'self' with object-src 'none' and frame-ancestors 'none', plus X-Content-Type-Options: nosniff, X-Frame-Options: DENY, a tight Referrer-Policy, a Permissions-Policy that denies camera, microphone and geolocation, and HTTP Strict Transport Security. HTTPS is forced and all plain-HTTP requests are redirected.
  • The site is open source too. It lives in the project repository under the same MIT licence, so you can read or diff exactly what is serving these pages.
  • This site is documentation, not the source of truth. Every install instruction points at PyPI or GitHub. If this domain ever disappeared, nothing about CableProbe would change.

Standard web-server access logs (IP, timestamp, requested path, user agent) may be retained for a short period for abuse and reliability purposes. That is the extent of it.

Verifying your download

Install CableProbe only from these sources:

SourceCanonical location
PyPI packagecableprobehttps://pypi.org/project/cableprobe/
Source & releasesgithub.com/rosscooney/CableProbe

Before you install or upgrade:

  • Pin the version and read the release notes and the diff for that tag on GitHub.
  • Inspect the package if you want to — it is pure Python: pip download cableprobe --no-deps --no-binary :all: and read the sdist.
  • Check release artifacts against the checksums (and, where published, build attestations) attached to the GitHub release.
  • Build the Pi image yourself from packaging/pi-gen/ rather than accepting a pre-flashed card from anyone.
# Pin an exact version rather than floating
pipx install cableprobe==0.1.2

# Confirm what you got, offline
cableprobe --version
cableprobe check

Hardening the test host

CableProbe's safety model assumes the machine you run it on is expendable. Hold up your side of that:

  • Use a dedicated, disposable Raspberry Pi that holds no sensitive data and no credentials.
  • Keep it isolated from any network you care about for the duration of the test.
  • Re-flash between cables. Treat the host as burned once a session produces a positive finding.
  • Running with sudo lets the kernel-log and udev-attribute probes see more — do that only on the throwaway host, never on a machine that matters.
  • Treat every cable under test as hostile hardware from the moment it comes out of the bag.

See the usage documentation for the full session workflow.

Reporting a vulnerability

If you believe you have found a security vulnerability in CableProbe, please report it privately. Do not open a public GitHub issue for security vulnerabilities.

  • GitHub private vulnerability reporting — use the “Report a vulnerability” button under the repository's Security tab.
  • Email — a monitored security contact address for Stable State Consulting Ltd, published in the repository's SECURITY.md.

Please include:

  • a description of the issue and its impact,
  • steps to reproduce or a proof of concept,
  • affected version(s) or commit hash,
  • any suggested remediation.

In scope, for example: code that could cause CableProbe to modify the system under test, unsafe handling of report data, or command injection via crafted device metadata. Not in scope: “CableProbe failed to detect a malicious cable” is not by itself a vulnerability — though improvements to detection coverage are very welcome as normal issues or pull requests.

What to expect from us

  • Acknowledgement of your report as soon as reasonably possible.
  • An assessment of the issue and, where accepted, a fix or mitigation.
  • Credit in the release notes if you would like it.

CableProbe is built and maintained by Stable State Consulting Ltd (www.stablestate.co.uk).