Panoptes is maintained by one person and carries no backport branches. Fixes
land on main and go out in the next tagged release. Only the newest release
is supported; there is no long-term-support line and older tags do not receive
patches.
| Version | Supported |
|---|---|
main |
✅ fixes land here first |
| Newest tagged release | ✅ |
| Any earlier tag | ❌ upgrade to the newest release |
The releases page lists every
tag, newest first, and CHANGELOG.md records what changed in
each one.
If you are running a checkout you pulled weeks ago, git pull and retry before
reporting — the issue may already be fixed. Include what you are running:
git -C /path/to/Panoptes describe --tags --always --dirtyA -dirty suffix means the working tree has local modifications, and a hash
with no tag means the checkout is somewhere between releases. Say so in the
report either way — it changes what I can reproduce.
I take the security of Panoptes seriously. If you discover a security vulnerability, please do not open a public issue.
Instead, please report it privately by emailing the report to: spilled-bowline0j@icloud.com
What to expect:
- Acknowledgment: You will receive an initial response to your report within 72 hours.
- Updates: I will keep you informed of my progress as I investigate the issue and develop a fix.
- Resolution: If the vulnerability is accepted, I will address it promptly and notify you. If declined, I will provide a clear explanation of my reasoning.
Please include as much detail as possible in your email, including steps to reproduce. Thank you for helping keep this project secure!
These tools install into /usr/local/bin, run as root, rewrite resolver
configuration and firewall state, drop one file into
/etc/NetworkManager/conf.d/, and feed addresses taken from logs into other
programs. That is the interesting surface:
- Command injection from untrusted input.
probesourcetakes a target from the UFW journal, thenetwatchlog, the livesstable or typed input, then hands it towhois,dig,tcpdump,tsharkandp0f. An address that escapes into a shell is a real finding — a hostile scanner controls what ends up in those logs. - Privilege escalation through the install paths, or through any tool that writes somewhere a non-root user can influence before root reads it.
- A hardening tool that fails open.
harden-dns.shreporting success while leaving DNSSEC or DoT off is a vulnerability, not a cosmetic bug. So isdns-toggleleavingresolved.confmutable after it claims to have restored thechattr +ilock. warp-killswitchnot killing. Reportingkilledwhile the machine is still reachable through WARP, or failing to restore the previous DNS verbatim onup.- Anything that writes outside its documented paths, or that a read-only
tool writes at all.
audit-dns.sh,netcheck,nettop,checkdns,dns-status.shandwifi-recover.shwithout--repairmust change nothing. - The installers fetching or trusting the wrong thing.
panoptes-deps.sh,warp-setup.sh,ech-build.shandech-browsers.shall run as root and pull in software: a repository added withoutgpgcheck, an unverified tarball, a source tree taken from the wrong ref, or a browser profile edited outside the documented paths. - The MAC randomization drop-in failing quietly, or landing where it must
not.
install.shwritesmac-randomization.confinto/etc/NetworkManager/conf.d/. Three things there are findings: the guard not declining on a Wi-Fi driver that cannot associate with a cloned MAC (wl,b43,b43legacy,brcmsmac), which leaves a machine with no Wi-Fi and no obvious cause; the drop-in being written when--no-mac-randomwas passed, or by any mode other than a full install; and a displaced config being saved anywhere NetworkManager will still read it — the.pre-panoptessuffix is load-bearing, becauseconf.dparses every*.conf. Randomization silently not taking effect while the tools report that it has is also in scope:netcheckclaiming MAC privacy that the adapter is not applying is a false assurance about a privacy control. ech-build.shshadowing the system TLS stack. It installs curl into/usr/local/bin, which precedes/usr/binonPATH— including root'ssecure_path— so it silently becomes the curl every script on the machine gets. Anything that widens that beyond curl, or that leaves the development OpenSSL linkable by other programs, is a finding.
- Bugs in the tools Panoptes drives —
systemd-resolved, NetworkManager,firewalld,warp-cli,tcpdump,p0f,arp-scan. Report those upstream. - The privacy policy or filtering behaviour of any resolver. The AdGuard and Cloudflare addresses are a hardcoded default, documented as opinionated and meant to be edited.
- The investigation tools revealing information about your own network. That is what they are for.
- Missing optional dependencies degrading a tactic to unavailable.
- What MAC randomization does not hide. A randomized MAC stops an access point recognizing the adapter across visits. It does not make you anonymous: the portal login, the DHCP hostname, the traffic itself and every layer above link-local still identify you. Captive portals breaking is documented behaviour, not a bug — every reconnect is a new client by design. Drivers outside the declined list that turn out not to handle a cloned MAC are a driver limitation; tell us anyway and the list grows, but the flaw is not Panoptes'.
- Bugs in the OpenSSL ECH branch itself.
ech-build.shbuilds an unreleased upstream branch, on purpose, because no released OpenSSL implements ECH. Flaws in that code belong upstream; how Panoptes builds, isolates and installs it is in scope.
Panoptes output is network output, and a bug report is not a good reason to publish your own topology. Read what you are about to attach:
nettop,netcheckandprobesourceprint MAC addresses, Wi-Fi SSIDs, your public address and third-party addresses.probesource'spcap,tsharkandp0ftactics capture live traffic off the wire. Do not attach a capture you have not read.~/.local/share/netwatch/events.logis a running record of everything that has touched the machine.
Redact addresses down to what the bug needs, and send the smallest thing that demonstrates it.