Gardience Documentation gardience.com →
Docs / Enterprise

Security testing

How Gardience is tested for security before each release, what the latest round found, and what was fixed. This is our own testing with standard open-source tools, not an independent third-party penetration test.

The release check (tools/release-check.sh) runs this whole test against a fresh install of the exact bundle being released, and the release is refused if any of it fails: a high finding, a medium finding not on the accepted list below, an internal port reachable from outside, a weak TLS setup, any nuclei match, or a tool that did not complete. The release key signs a bundle only through tools/release.sh, which refuses unless the full release check passed on that exact, committed source. You can run the same test against an install you own with tools/pentest/run.sh.

Latest run from the internet: 17 October 2026, against Gardience 1.2.0 on AWS (an m7g.xlarge managing 1,002 agents), with REMOTE_HOST set: native nmap, testssl.sh, nuclei (14,039 templates, 0 matches) and a signed-in ZAP API scan (111 rule sets, 0 failures). Every release check also runs the scan against a fresh install. The run described below: 16 October 2026, Gardience 1.2.0, a fresh install from the customer bundle (test ports 9643/9680 for the console and 16505/16506 for agents; the defaults are 443/80 and 4505/4506), signed in as an administrator.

Tools and coverage

ToolWhat it checksResult
OWASP ZAP API scan (authenticated)Active attacks (injection of every kind, XSS, path traversal, command injection, SSRF, header and parameter tampering) against all 81 console and API paths (89 operations), described to ZAP as an OpenAPI file generated from the running app and called with an admin session0 failures, 112 rule sets passed
OWASP ZAP baselinePassive review of every page and responseNo high findings; header items fixed (below)
nuclei (14,039 templates, updated at each run)Known CVEs, exposed panels, default credentials, misconfigurations0 matches
testssl.sh 3.2.4TLS protocols, ciphers and known TLS attacksTLS 1.2 and 1.3 only, forward secrecy, AEAD ciphers only, server cipher order, HSTS; not vulnerable to Heartbleed, ROBOT, CRIME, BREACH, POODLE, SWEET32, FREAK, DROWN, LOGJAM, BEAST, LUCKY13 or RC4
nmapWhich ports the server exposes, plus the internal service portsOnly the console (HTTPS, and HTTP that redirects) and the two Salt agent ports are open; salt-api (8000), the Gardience service (9400) and the playbook runner (9500) are closed from outside
BanditStatic analysis of all Gardience Python code and Salt modules (a gate in CI)0 high severity
TrivyKnown vulnerabilities in the three container images the release builds (OS packages and Python, including vendored copies)0 fixable high or critical, with one stated exception: a finding in a library bundled inside pip itself (pip/_vendor) passes only when the image's installed package of that name is a different, fixed version. pip runs only during a project sync, with its cache off and no proxy settings. Each accepted finding is printed in the release check log. The Salt master image ships without pip.
pip-auditKnown vulnerabilities in every Python package each built image contains (read from the image, not re-resolved from the requirements files)0
OWASP WSTG attack checks (tools/pentest/wstg.py, every release)The attacks a pen tester runs by hand, by WSTG chapter: leakage, headers, CORS, enumeration, default accounts, brute force per address and per account, cookie flags, CSRF, token handling, every API route without signing in and as a viewer, governed admin limits, broken bodies on every route, path traversal, SSRF, reflected XSS, open redirects, oversized bodies, caching. Map: PENTEST-READINESS.mdAll pass
Salt master exploits (tools/pentest/salt-cves.py, every release)CVE-2020-11651 and CVE-2020-11652 requests as the Metasploit modules send them, against the live masterAll 6 refused
Stored XSS from a compromised machine (tools/tests/ui/xss.sh)Plants script-carrying markup in a live agent's facts, then checks 24 console pages in ChromeShown as text; never an element, never run
Our own attack tests (every release)SSO response forgery, replay and theft; viewer and operator permission limits; playbook sandbox escape between runs; audit-log forgery, deletion and truncation; minion-forged job events; hostile drift-reactor events; tampered and replayed release bundles; split-brain fencing in the HA drillAll rejected (see the release gate)

Found by the pen-test readiness checks and fixed (17 October 2026)

Found by a separate code review and fixed (October 2026)

An adversarial code review, run separately from development (not a third-party penetration test), read the code and test logs and reported what our own tests had missed. Each finding was verified against the code, and the confirmed ones fixed and where possible covered by a new test:

Found and fixed in the test itself (this round)

Found and fixed in the product (previous round)

Accepted, with reasons

Not covered by this report

An independent third-party penetration test (see PENTEST-READINESS.md for what one would try and what stops it). Customers who require one can run their own against a trial install; we fix and retest anything found.

Gardience by Bouziden Management LLC.