Skip to main content
Internal red-team · April 2026 · no third-party pentest yet

Security
Posture Report

We publish our security posture openly — internal red-team results, CVE history, architecture controls, and SOC 2 progress. No marketing spin. Just the numbers.

0
Open critical / high
3.12%
Held-out FPR
7
Findings fixed
H2 2026
SOC 2 audit

Numbers an attacker has to defeat, not adjectives we picked for marketing.

0
Open critical / high
Apr 2026 internal red-team
7
Findings fixed
each with a regression test
3.12%
False-positive rate
2,084 held-out benign prompts
HMAC
Audit chain
deployment-keyed
TLS 1.2+
In transit
HSTS preload
600K
PBKDF2 iters
OWASP 2024 spec
8
CI scanners
block every merge
7yr
WORM retention
when S3 Object Lock is configured
Internal Red-Team Self-Assessment · April 2026

What Our Internal Red-Team Found and Fixed

An internal red-team self-assessment, April 2026. No third-party penetration test has been done yet. Every finding below is fixed and has a regression test in the repository.

0
Critical

None found

5
High · Fixed

Each fix has a regression test

2
Medium · Fixed

Each fix has a regression test

All 7 Findings — Disposition

High

Audit hash chain forgeable without a key

Disposition: Genesis and entry hashes are HMAC-keyed per deployment. Regression test: backend/tests/unit/test_hash_chain_service_coverage.py

Fixed
High

Code execution via a crafted ML model file (pickle)

Disposition: Restricted unpickler, and no model loads without its SHA-256 file. Regression test: backend/tests/modules/services/ai_business_logic/test_ml_detector.py

Fixed
High

JWT replay from a different client

Disposition: Tokens carry client IP and user-agent hashes; strict mode refuses a mismatch. Regression test: backend/tests/security/test_device_binding.py

Fixed
High

MCP transitive permission bypass

Disposition: The tool-call graph refuses a chain that reaches a tool the session was never granted. Regression test: backend/tests/modules/mcp/test_tool_call_graph_extra.py

Fixed
High

Prompt injection split across requests

Disposition: Fragments are correlated per client across requests. Regression test: backend/tests/agentic/test_prompt_security.py

Fixed
Medium

ReDoS in the HTML-comment threat pattern

Disposition: Bounded quantifiers; a 50,000-character pathological input completes in under 20 ms. Regression test: backend/tests/unit/threat_detection/test_pattern_loader.py

Fixed
Medium

WebSocket rate limiter trusted X-Forwarded-For from any client

Disposition: X-Forwarded-For is honoured only from TRUSTED_PROXY_IPS. Regression test: backend/tests/middleware/test_client_ip_extra.py

Fixed

The full internal red-team write-up is in the data room and available to prospects on request. Request report →

Held-Out Test · Measured 2026-09-11

Detection Quality, Scored On Held-Out Data

Detection is scored on a frozen 2,580-sample held-out set it was never trained on: 0.788 recall, 0.857 precision, 3.12% false-positive rate. The test lives at backend/tests/security/test_detector_heldout_external.py and fails the build on any regression.

65 of 2,084 held-out benign prompts flagged
99.71% threat-analysis success under load (2,424 concurrent requests)
Cache-hit detection overhead under 1 ms
Recall
0.788
391 / 496 held-out attacks caught
Precision
0.857
65 false positives on 2,084 benign prompts
Held-out set
2,580
never used in training
Why It Matters

G8KEPR vs Typical SaaS Security

Most SaaS security is checkbox compliance — bolted on after the fact. G8KEPR built security into the core architecture from day one.

Topic
Typical SaaS
G8KEPR
Penetration testing
Annual checkbox — findings rarely tied to regression tests
Internal red-team self-assessment, April 2026: 5 high and 2 medium findings, each fixed with a regression test. No third-party test yet.
Audit logs
Mutable database rows — editable or deletable post-hoc
HMAC-SHA256 hash-chain — each record hashes the previous under a deployment key. Tampering breaks the chain
Tenant isolation
WHERE org_id = ? in app code — bypassable if there is a bug
PostgreSQL RLS policies — enforced at DB level, even if app code is wrong
Security headers
Basic HSTS + X-Frame-Options — CSP often missing or report-only
A+ SSL Labs — nonce CSP, Trusted Types, SRI, ModSecurity WAF, Brotli + HTTP/3
Dependency scanning
Periodic manual review or no process
pip-audit + npm audit on every PR as blocking CI gate — SBOM diff on every release
Secrets detection
Hope developers do not commit secrets
TruffleHog scans every commit. Runtime secret-leak detector in the backend pipeline
Field encryption
Full-disk encryption only — PII readable in the database
AES-256-GCM field-level encryption with per-tenant BYOK and zero-downtime DEK rotation
CVE response
Discovered during next sprint, patched weeks later
Next.js CVE-2025-29927 patched same day. P1 patch SLA is 72 hours
Defense in Depth

Four Independent Layers

A breach must defeat every layer independently. Each layer is operated and verified separately — there is no single point of failure.

Layer 1

nginx TLS Termination

Edge

TLS 1.2+ terminated by nginx; the application listens on localhost only

TLS 1.2 / 1.3nginxLocalhost-only app
Layer 2

ModSecurity + OWASP CRS

Web

926 OWASP Core Rule Set rules active — blocks SQLi, XSS, RCE, path traversal

926 rulesSQLi/XSS blockOWASP Top 10
Layer 3

G8KEPR API Gateway

App

Rate limiting, JWT validation, scoped API keys, circuit breakers, MCP sandbox

JWT hardeningRate limitsMCP sandbox
Layer 4

RLS + Field Encryption

Data

PostgreSQL row-level security enforces tenant isolation at the DB layer

RLS tenant isolationAES-256-GCMBYOK / DEK
What Each Capability Does by Default

Four Capabilities, Marked Honestly

Each card says what the capability does on a default install: whether it blocks, only records, or waits for you to switch it on.

Tool Definition Hash Registry

Rug-pull detection. Tool definitions hashed at tools/list time, re-verified on every tools/call. A malicious MCP server cannot silently swap a safe tool for a malicious one mid-session.

ENFORCINGSHA-256modules/mcp/tool_registry.py

Adaptive Z-Score Breaker

Statistical baselines per provider per hour-of-day, not static thresholds. 4 rolling windows. Progressive recovery 10/25/50/100%. Off by default; enable with ADAPTIVE_CB_ENABLED.

OPT-IN3σ · 4 windowsgateway/router.py

Cross-Pillar Correlation

All four pillars publish findings to one internal threat event bus, and a correlator scores the ones that occur together into incidents. Today it joins findings that share a correlation ID.

ADVISORYone bus · 4 pillarsmodules/compound_correlator/

Tamper-Evident Audit Trail

Every security event written to append-only audit storage with SHA-256 integrity verification. Three verification levels (full, single entry, last-N). Tampering breaks downstream hashes.

ADVISORY7 modules · 3,866 LOCSHA-256 integrity
Every Header — Passing

Security Headers & TLS Configuration

Verified against SSL Labs, securityheaders.com, and Mozilla Observatory. TLS 1.2 and 1.3 only — TLS 1.0 and 1.1 are not offered. All headers are enforced server-side, not just report-only.

SSL LabsA+
Mozilla ObservatoryA+
securityheaders.comA
SSL/TLS Grade
A+
Content Security Policy
Strict
HSTS
max-age=31536000
X-Frame-Options
DENY
Permissions-Policy
Strict
Subresource Integrity
Enforced
Trusted Types
Enforced
ModSecurity WAF
OWASP CRS
Cryptographic Primitives

The Crypto Underneath

Concrete primitives, not vague "industry-standard" promises. Algorithm choices match OWASP 2024 guidance.

TLS 1.2 and 1.3
AES-256-GCM · ChaCha20-Poly1305

HSTS preload · mTLS between sensor and collector

AES-256-GCM at Rest
96-bit nonce · 128-bit auth tag

Application-level encryption for API keys, OAuth secrets, TOTP, webhooks, MCP secrets

PBKDF2-HMAC-SHA256
600,000 iterations

Per OWASP 2024 password storage guidance · 256-bit output

bcrypt Passwords
Cost factor 12+

Timing-safe comparisons via hmac.compare_digest() everywhere

HMAC-SHA256 Audit Chain
Deployment-keyed

DB access alone cannot forge an entry · genesis block derived from the key itself

API Key Format
gk_org_sk_...

Prefix in transit · SHA-256 hash at rest · timing-safe lookup

JWT Secret Rotation
90-day cycle

Decryption keeps previous key as fallback · zero-downtime rotation

Encryption Key Rotation
1-year cycle

Envelope encryption · KEK in KMS or HashiCorp Vault · per-record DEK

CVE Response & Dependency Hygiene

pip-audit + npm audit run as blocking CI gates on every pull request

0
Critical CVEs ever

No critical dependency vulnerabilities found in project lifetime

1
Medium CVE (2025)

Next.js CVE-2025-29927 — header bypass. Patched same day, before any production traffic was routed

<24h
Avg. patch time

Automated alerts fire when a new CVE matches a pinned dependency version

8 Security Scanners Gate Every Merge

CodeQL

SAST · Python + TypeScript

Bandit

Python security linting

Trivy

Container CVE scanning

pip-audit

Python dependency CVEs

npm audit

Node dependency CVEs

OWASP ZAP

Dynamic AppSec testing

Gitleaks

Secret detection in git

Semgrep

Custom-rule SAST

Every PR runs all eight. Build fails on any new finding. TruffleHog scans every commit for accidentally committed credentials. SBOM diff is generated on every release.

7 of 9 Controls Complete

SOC 2 Type II Readiness

All technical controls are implemented and independently verifiable. We are not SOC 2 certified — we say so plainly. External auditor engagement is scheduled H2 2026. We disclose our actual status, not a vaporware claim.

Controls complete7 / 9
Technical controlsExternal audit H2 2026
Access Control (CC6)
Done
Encryption at Rest (CC6.7)
Done
Encryption in Transit (CC6.7)
Done
Audit Logging (CC7)
Done
Monitoring & Alerting (CC7.2)
Done
Incident Response (CC7.3)
Done
Change Management (CC8)
Done
Vendor Risk (CC9)
In Progress
Formal SOC 2 Type II Audit
H2 2026
Coordinated Disclosure Policy

Responsible Disclosure

Found a vulnerability? We want to hear from you. Report privately to security@g8kepr.com and we will acknowledge within 24 hours with an initial severity assessment and remediation timeline.

Security contactsecurity@g8kepr.com
Acknowledge SLA< 24 hours
P1 patch SLA< 72 hours
RewardHall of fame + recognition

Disclosure Steps

1

Report privately

Email security@g8kepr.com — description, reproduction steps, and impact. PGP-encrypted reports welcome.

2

We acknowledge within 24h

You receive confirmation and an initial severity assessment. We commit to a remediation timeline.

3

We patch and keep you updated

P1/P2 issues are patched before public disclosure. We will keep you in the loop on progress.

4

Coordinated public disclosure

We work with you on timing and credit for public disclosure after the fix is deployed and verified.

Incident Response SLAs

Defined runbooks for every severity level — DR drills run quarterly

P1 — Critical
Acknowledge15 min
Mitigate1 hour
Resolve4 hours
Data breach, full outage
P2 — High
Acknowledge30 min
Mitigate4 hours
Resolve24 hours
Auth failure, partial outage
P3 — Medium
Acknowledge2 hours
Mitigate24 hours
Resolve72 hours
Performance degradation
P4 — Low
AcknowledgeNext business day
Mitigate1 week
ResolveSprint
Non-critical bug
Open Security Posture

Security questions? Ask them directly.

We publish our posture because we have nothing to hide. Need the full red-team write-up, an architecture review session, or a call with our security team — reach out.