Back to Monolith Ward
Monolith Ward
White paper
Customer briefing · Security leadership & architecture review

A runtime security control that lives inside your network.

Ward evaluates every inbound HTTP request inline, before it reaches your application — and decides to allow, block, rate-limit, or challenge it, with a reason a human can defend to an auditor.

Audience
CISO · Head of application security · Security architecture · Application owners · Internal audit
Purpose
A self-contained reference to circulate inside your organization, before and after meetings with the Ward team. ~45 minutes.
Status
Customer-ready draft. Distinguishes capabilities available today from customer-configured options and roadmap items.
Document
v1 · No upfront performance figures — latency and effectiveness are measured during your own pilot.
01
Section 01 · Executive summary

A control you can see before you let it enforce.

Ward is a self-hosted runtime security control for web applications and APIs. It sits inline in your request path and selects one of four customer-controlled actions for every inbound request.

Ward evaluates every inbound HTTP request before it reaches the application. Each decision is annotated with reason codes, a risk indication, and the investigation metadata operators and auditors need after the fact.

Allow
Passes unchanged to the application. The default for legitimate traffic.
Block
Stopped with a configurable response. Clear injection attempts, known-bad signatures.
Rate-limit
Slowed or denied per policy. Bursty abuse, automation suspected.
Challenge
Client must complete an interactive proof. A deliberate middle path.

Runtime decisions are written to your own evidence store; control-plane actions such as policy changes and rollout decisions are recorded in a durable control-plane audit store. Both stay under your control.

Runs inside your network

By default, no runtime traffic, decision logs, or audit data is sent to the vendor. Exports to a SIEM, identity provider, or other internal systems remain your decision and your responsibility. You keep ownership of infrastructure, policy, retention, and operational control.

Designed for gradual rollout

Ward is built to be introduced without operational risk. Run in shadow to collect decisions without affecting production, in alert_only to validate signals and operator workflows without blocking, and in strict only where the evidence and operational risk support active enforcement. You can return to a non-blocking profile at any time during major changes or incidents.

Ward strengthens the application layer; it does not replace the security architecture around it. Scope, in one sentence

Volumetric network attacks that saturate your internet link must still be handled upstream by a CDN, anycast provider, or scrubbing service. Identity, infrastructure hardening, vulnerability management, and incident response remain your responsibility.

4
Customer-controlled actions evaluated per request
0 bytes
Of runtime or audit data leave your network by default
3
Rollout profiles — shadow, alert-only, strict

Recommended starting point

A scoped pilot on one representative service in shadow mode, lasting long enough to produce a usable decision-log sample. Pilot outcomes — including measured latency overhead and false-positive rates against your real traffic — then drive any decision to widen the deployment.

02
Section 02 · The problem we address

The attack is rarely one request. It's behavior over time.

Application-layer attacks have shifted away from single payloads and toward behavior over time — abuse that is only visible when sessions, flows, and frequencies are evaluated together.

A login form is probed slowly with credentials drawn from breach corpora. An API is mapped one route at a time by an automated scanner that respects rate limits. A scraper rotates session tokens to stay under the radar of static thresholds.

Each individual request can look ordinary. The abuse pattern only appears when you look across the session.

Why static rules alone are not sufficient

Static rules — pattern lists, signature feeds, regex-based WAF policies — still catch known payload shapes and have a place in defense. But they struggle with three classes of abuse that are increasingly common:

Class 01
Low-and-slow probing

Attackers respect rate limits, mimic real-user pacing, and spread reconnaissance over days. Each request looks unremarkable.

Class 02
Credential stuffing

Against well-formed login flows. Inputs are syntactically valid; only the pattern of attempts is anomalous.

Class 03
Abuse that imitates real users

Automated data harvesting, fraud activity, and business-logic abuse whose payloads look exactly like real traffic.

And a side effect
Unexplained false positives

Static rules produce false positives the team cannot easily explain. Over time trust erodes: rules get disabled, exceptions accumulate, protection narrows.

What security leadership actually needs

CISOs and architecture reviewers ask consistently for three properties in any new control.

1
Explainability

Every decision should map to a reason a human can understand, defend in conversation with application owners, and present to an auditor after the fact.

2
Data control

In regulated industries and data-sovereignty regimes, sending traffic, logs, or behavioral data to a vendor cloud is often not an acceptable trade-off. The control must be operable without that dependency.

3
Gradual adoption

Inline controls that can only run in active-blocking mode are difficult to introduce without operational risk. Leadership wants to see before committing to enforce.

Ward is designed around these three constraints — explainability, data control, and gradual adoption. Design premise
03
Section 03 · What Ward is

An inline decision, a written record, every request.

Ward evaluates every inbound HTTP request inline, before it reaches the protected application — and records what it decided and why.

Your existing proxy or policy enforcement point sends a sub-request to Ward. Ward responds with one of four actions, the request continues or is stopped accordingly, and a decision record is written to your runtime evidence store.

The four actions

ActionWhat happens to the requestTypical use
AllowPasses unchanged to the application.Default for legitimate traffic
BlockStopped with a configurable response.Clear injection attempts, known-bad signatures
Rate-limitSlowed, denied, or signalled to the proxy according to policy.Bursty abuse, automation suspected
ChallengeClient must complete an interactive proof.Suspected automation where outright block would be too aggressive

The challenge action is a deliberately middle path. It raises the cost for attackers without rejecting legitimate users who happen to match a risk signal. Browser clients can complete a browser-based proof-of-work flow; native API clients require client or gateway integration with Ward's challenge protocol.

What every decision carries

  • A risk score between 0 and 1, derived from the engine's signals.
  • One or more reason codes describing why the decision was made.
  • A taxonomy mapping to recognized frameworks — OWASP categories, MITRE ATT&CK techniques — where applicable.
  • The active profile at decision time — shadow, alert_only, or strict.
  • A request identifier tying the decision to the application's own logs, enabling end-to-end investigation.
  • The route, timestamp, and contextual metadata required by audit.
credential_stuffing_pattern session_velocity_anomaly injection_pattern_sqlmap
See Appendix B for a representative anonymized record.

What Ward is not

Not a black-box AI service

Decisions are produced by a combination of deterministic rules, behavioral signals, anomaly detection, and policy — each layer is inspectable, and the final action is chosen by customer-controlled policy. Optional LLM-based summarization for operator triage is available, but it is not part of the decision path: a separate, opt-in feature that supports the operator, not the runtime block/allow choice.

Ward is also not a CDN, a load balancer, or a full identity stack. It is a runtime security control that fits inside your existing topology, not a replacement for it.

04
Section 04 · Architecture

One hot path, everything else asynchronous — and all of it yours.

Ward consists of an inline engine and a small set of supporting services, all running inside your network. Nothing in the request path depends on the vendor.

Request path & component topology
Hot path Async signals Control plane
CUSTOMER NETWORK — NO RUNTIME DATA LEAVES THIS BOUNDARY request sub-request action / response evaluate state decision evidence async copy derived signals persist signals investigate admin actions write publish bundle query evidence External client Security operator Customer proxy enforcement point Inline engine allow · block rate-limit · challenge Policy engine signed bundles State Store hot state Async analyzer sessions · flows · behavior Analytics Store runtime evidence Operator dashboard investigation · evidence Control plane Admin API Control-Plane Store desired state · audit

Components

Inline enginehot path
Evaluates each request in the hot path, decides the action, writes a decision record, returns to the enforcement point.
Policy engine
Loads signed policy bundles and applies your profile, thresholds, and routing rules. Reason codes originate here.
State Store
Short-lived state — rate-limit counters, session tracking, recent-decision lookups. Entirely inside your network.
Async analyzer
Behavioral analysis that does not fit the inline budget. Emits derived session, flow, and behaviour signals back to the inline engine for use on later requests.
Analytics Store
Your runtime evidence and analytics store — decisions, signals, sessions, events. Operators query it; the vendor does not.
Operator dashboard
Investigation and evidence surface for your security team.
Control plane
Policy activation, configuration, access-controlled operations, rollout state and rollback — written as audit records.
Control-Plane Store
Durable local store for desired state, bundle artifacts, provenance, and control-plane audit. An external managed database is optional.

Design choices

Separation
Inline and asynchronous work are split

The hot path makes only fast, predictable decisions. Deeper analysis runs in the analyzer and feeds signals back later — so a slow analyzer never blocks production traffic.

Ownership
Evidence and control-plane data stay local

Decisions and signals go to the Analytics Store; desired state, lifecycle, and audit go to the Control-Plane Store. You control retention, backup, and any export. The vendor pulls from neither.

Integrity
Policy ships as signed bundles

Desired state is compiled into signed bundles. The policy engine verifies integrity before activation; tampered bundles are refused. The hot path needs no per-request database lookup.

Deployment
Self-hosted, your runtime

Kubernetes is the primary reference; VM-based and other customer-operated patterns are supported. Packaging differs by model — the logical components and control model do not.

05
Section 05 · Detection model

Layered defense, not a single decisive technique.

Ward combines multiple layers of signal. Each layer is inspectable, and the final action is the output of policy applied to those signals — never a single model's verdict.

The layers

1
Deterministic rules

Pattern lists for known attack classes — SQL injection, XSS, command injection, traversal patterns. Fast and precise where the attack is structurally visible.

2
Behavioral and anomaly signals

Detects patterns static rules miss: unusual request pacing, improbable parameter distributions, route-traversal anomalies.

3
Session and flow analysis

Looks at how a session moves over time — which routes are touched, in what order, with what velocity. Catches low-and-slow probing and multi-step abuse that no single request reveals.

4
Policy

Customer-controlled rules that combine the above into a final action. Policy is where the trade-off between false positives and missed attacks is made explicit.

Why this matters for explainability

Because the action is the output of policy applied to signals, every decision can be traced back to the inputs that produced it. A reason code identifies the signal class; the policy bundle identifies the rule that mapped that signal to the action. Both are available in the decision log.

Example threats and abuse patterns

PatternHow Ward responds
SQL injection / XSS / command injectionDeterministic rules, typically Block
Automated route probingBehavioral signals + rate limits
Credential stuffingSession velocity + Challenge
Scraping / bot trafficBehavioral class + rate-limit or challenge
Unusual session navigationFlow analysis + risk-weighted policy
HTTP-layer DoSRate limits + challenge to raise attacker cost
Volumetric network DDoSOut of scope — handled upstream by CDN / scrubbing

The DDoS row is deliberate. Ward addresses application-layer abuse; volumetric attacks at the network layer require an upstream control with the capacity to absorb the traffic before it reaches your link.

Posture observation and SDK enrichment

Ward's runtime position also creates a natural foundation for posture observation of the protected application surface. Because Ward already sees traffic flowing through the customer-controlled proxy path, it can use passive evidence from real requests and responses to build a route-aware view of what the application actually exposes in production.

This capability is intended to complement, not replace, request-time protection. Passive posture observation can highlight signals such as newly observed routes, routes that appear outside the declared API surface, missing or weak response security headers, risky cookie attributes, broad CORS behavior, cache settings on sensitive responses, unusual status-code patterns, and differences between observed traffic and expected application behavior.

Where you choose to instrument with the Ward SDK, the application can provide its own context — route ownership, service identity, deployment version, route type, expected authentication requirement, data sensitivity, tenant-boundary expectations, and business criticality — so that posture findings are prioritized accurately and routed to the right owners.

Passive observationRuntime traffic
What users and clients actually receive.
SDK enrichmentApplication context
What the application expects or declares.
Policy & inventorySecurity context
What security teams require.
Ward posture findingsCombined output
Security risk and observability confidence, prioritized and routed.

For example, a missing security header on a static asset may be low priority, while the same pattern on an authenticated account route may be more important. A newly observed route may be informational if it is declared by the SDK or OpenAPI inventory, but higher priority if it is unknown, sensitive-looking, or inconsistent with policy.

Treat posture as an emerging capability

The runtime architecture naturally supports posture observation, and parts of the signal foundation may already exist — but customer-facing posture findings should be enabled and scoped explicitly per deployment. It identifies exposure and configuration weaknesses from traffic Ward already observes; it is not a claim to detect all CVEs or to replace SCA, SBOM, container scanning, active DAST, or your vulnerability-management processes.

06
Section 06 · Data handling & privacy

By default, nothing leaves your network.

Runtime decisions, signals, and audit data are written to stores you own and operate. The vendor pulls from none of them.

Data typeHandlingLeaves network?
Runtime decision logsCustomer runtime evidence storage (the Analytics Store)No
Runtime signals and eventsCustomer runtime evidence storage (the Analytics Store)No
Control-plane audit logsThe durable Control-Plane StoreNo
Policy and rollout stateThe durable Control-Plane StoreNo
Short-lived raw contentOnly for active investigation, time-boundedNo
IdentifiersMasked or hashed by defaultNo

What is collected

  • Decisions — action, risk, reason codes, profile, route, request identifier.
  • Signals — behavioral and flow-analysis signals, stored alongside decisions.
  • Control-plane audit — operator actions, policy and config changes, rollout changes, access-controlled operations.
  • Short-lived raw content — retained for a customer-configured window, then removed.

What is not collected

  • No browsing history beyond the protected request path.
  • No content from requests that were not the subject of an active investigation.
  • No data exported to vendor systems as part of standard operation.

Customer-configured integrations

You may choose to integrate Ward with internal systems — SIEM ingestion of decisions, identity-provider integration for operator access, alerting webhooks. These integrations are configured by you and remain your responsibility. Each is opt-in.

Updates

Software updates are pulled by you under your own change-management process. The vendor does not push runtime changes into your environment.

07
Section 07 · Governance, access & audit

Built to be reviewed as a control, not only used as a tool.

Access is role-based, policy is signed, and every operator and control-plane action is written to a durable audit store you can correlate against runtime evidence.

Access

  • Role-based access control with fine-grained permissions: who can view decisions, who can change policy, who can administer the deployment.
  • Identity-provider integration is supported where you configure it.
  • Operator and control-plane actions are written to the durable control-plane audit store; runtime decisions and security evidence to the analytics/evidence store. Together they let investigators correlate what was decided in traffic with who changed policy, configuration, or rollout state.

Policy lifecycle

  • Policy is shipped as signed bundles whose integrity is verified before activation.
  • Unauthorized or tampered bundles are refused.
  • Activation, rollback, and review are all auditable actions.

Audit and reporting

  • Runtime decision evidence supports SOC triage, incident investigation, and regulatory reporting.
  • Control-plane audit records show who changed policy, configuration, rollout state, or access-controlled settings.
  • Investigations can correlate runtime evidence with control-plane changes to answer both "what happened in traffic?" and "what changed in the control plane?"
  • Retention is controlled by you.
08
Section 08 · Deployment & rollout

The deployment model changes packaging — not the control model.

Ward is deployed into your own environment using a supported self-hosted pattern. Kubernetes is the primary reference; VM-based and other customer-operated models are supported.

A standard deployment includes the inline engine, policy engine, analyzer, control plane, State Store, Analytics Store, Control-Plane Store, and the operator dashboard. In Kubernetes these are deployed into your namespace or cluster boundary. In VM-based deployments, the same logical components run as services on customer-operated infrastructure. Either way, runtime traffic, decision evidence, policy state, control-plane audit, and analytics data remain under your control.

Deployment modelTypical useNotes
KubernetesContainerized environmentsPrimary reference model; namespace-scoped deployment and standard orchestration patterns
VM-basedNo Kubernetes, or appliance-style requirementsSame logical components run as customer-operated services
Other self-hostedRegulated or constrained environmentsPackaging and operations agreed as part of deployment scope

Profiles

ProfileWhat it doesWhen to use
shadowRecords every decision; takes no action on trafficPilot phase; major changes; incident response
alert_onlyRecords decisions and emits operator alerts; takes no actionValidation of signals and workflows
strictRecords decisions and enforces the chosen actionConfident operation after pilot evidence

You can switch back to shadow or alert_only at any time during major changes or incidents. This is a configuration change, not a re-deployment.

Recommended rollout pattern

1
Install in shadow

On a representative service, with no effect on production traffic.

2
Observe

Long enough to produce a usable decision-log sample.

3
Tune policy with application owners

Address false positives at this stage rather than under enforcement pressure.

4
Move to alert_only

Validate operator workflows without blocking.

5
Move to strict selectively

Where the evidence supports it and the application's risk tolerance accepts active enforcement.

6
Maintain the fallback

Keep the option to return to a non-blocking profile during major changes or incidents.

Canary patterns are supported and recommended for sensitive services.

09
Section 09 · Security posture & residual risks

What Ward does today, and what needs complementary controls.

Ward is transparent about its scope. The application layer is its job; several adjacent responsibilities remain yours, and a small number of items are explicitly roadmap.

What Ward addresses

  • HTTP and application-layer abuse: injection, automation, credential stuffing, scraping, abuse-flow patterns, route-level reconnaissance.
  • Audit and evidence requirements at the application layer.
  • Data sovereignty for runtime decision data — operational data does not leave your network.

What requires complementary controls

  • Volumetric network attacks must be handled upstream by a CDN, anycast provider, or scrubbing service.
  • Identity and authentication — Ward consumes identity signals where integrated but does not replace the identity stack.
  • Infrastructure hardening, secrets management, backup, monitoring, and end-user SLA remain your responsibility.
  • Vulnerability management and incident response remain your responsibility.

What is roadmap rather than delivered

Roadmap items, marked explicitly

These are not presented as delivered functionality. This document distinguishes them so review is grounded in what exists today.

  • Full mTLS across all internal channels — a target-architecture item where not already implemented.
  • Customer-facing packaging of internal validation tooling — red-team disclosure gate, policy-validator pipelines, replay-harness. A future option; these tools support the vendor's own release quality today.

Latency

Measured in your pilot, not quoted up front

Latency overhead is designed to be low and predictable. Concrete p95/p99 figures depend on your environment, request shape, and traffic patterns, and are produced during your shadow pilot. This is a deliberate choice: a vendor-bench number rarely survives contact with real traffic.

10
Section 10 · Recommended pilot

One service, shadow mode, real traffic.

A scoped pilot on one representative service produces the evidence that drives every later decision — including whether to widen the deployment at all.

1
Scope

Pick one representative service and install Ward in shadow. No effect on production.

2
Observe

Run long enough to produce a usable decision-log sample against real traffic.

3
Tune

Work with application owners to address false positives before any enforcement pressure exists.

4
Validate

Move to alert_only to validate operator workflows and alerting.

5
Enforce selectively

Move to strict only where the evidence supports it and risk tolerance accepts it.

6
Keep the fallback

Retain the option to return to a non-blocking profile during major changes or incidents.

What the pilot measures

  • Measured latency overhead (p95/p99) against your real traffic.
  • False-positive rates against your real traffic.
  • Operator workflow validation in alert_only.
  • Decision explainability in practice — can a block be defended to an application owner and an auditor?

Pilot outcomes drive any decision to widen the deployment. Canary patterns are recommended for sensitive services.

This section consolidates the pilot guidance referenced in §1, §8, and §9.

Appendices
A
Appendix A · Frequently asked questions

Questions security reviewers ask.

Answers consolidate statements made elsewhere in this document; section references are noted.

Does any of our traffic or logs leave our network?
By default, no. Runtime decisions, signals, and control-plane audit are written to customer-owned stores. Exports to a SIEM, identity provider, or webhook are opt-in and configured by you.§1 · §6
Can we run Ward without blocking anything at first?
shadow records decisions with no action on traffic; alert_only adds operator alerts with no action; strict enforces. You can switch back at any time — it is a configuration change, not a re-deployment.§1 · §8
How do we justify a block to an application owner or auditor?
Every decision carries reason codes, a risk score, a taxonomy mapping (OWASP / MITRE ATT&CK), the active profile, route, timestamp, and a request identifier that ties it to your own logs.§3 · §5 · Appendix B
Is this a black-box AI?
No. Decisions come from deterministic rules, behavioral signals, anomaly detection, and policy — each layer inspectable. Optional LLM summarization is opt-in, supports operator triage, and is not in the decision path.§3
Does Ward protect against DDoS?
Application-layer HTTP abuse, yes. Volumetric network DDoS, no — that must be handled upstream by a CDN, anycast provider, or scrubbing service with the capacity to absorb it.§5 · §9
What about latency?
Designed to be low and predictable. Concrete p95/p99 figures are measured during your shadow pilot rather than quoted up front, because a vendor-bench number rarely survives contact with real traffic.§9
How is Ward deployed, and who pushes updates?
Self-hosted: Kubernetes is the primary reference; VM-based and other customer-operated patterns are supported. Updates are pulled by you under your own change-management — the vendor does not push runtime changes into your environment.§6 · §8
What is roadmap rather than delivered?
Full mTLS across all internal channels and customer-facing packaging of internal validation tooling are roadmap items. This document marks roadmap items explicitly so review is grounded in what exists today.§9
B
Appendix B · Decision-log evidence

A representative anonymized record.

Illustrative shape of a single decision as written to the runtime evidence store. Identifiers are masked or hashed by default.

decision · evidence record
{
  "request_id":      "req_8f3c0a91d2e4",
  "timestamp":       "2026-03-11T09:42:17.318Z",
  "route":           "POST /api/v2/auth/login",
  "action":          "challenge",
  "profile":         "alert_only",
  "risk_score":      0.82,
  "reason_codes":    ["credential_stuffing_pattern", "session_velocity_anomaly"],
  "taxonomy":        {
    "owasp":         "API2:2023 Broken Authentication",
    "mitre_attck":   "T1110 Brute Force"
  },
  "signals":         { "session_velocity": 14.2, "distinct_credentials": 37, "window_s": 60 },
  "identifiers":     { "client_net": "203.0.113.0/24 (masked)", "session": "sess_… (hashed)" },
  "policy_bundle":   "bundle_2026-03-09_rev7 (signed)"
}

How each field maps to the decision model

request_ididentifier
Ties the decision to the application's own logs for end-to-end investigation.
action · profileoutcome
The action selected and the profile active at decision time — here challenge under alert_only, so the record is written but no traffic is affected.
risk_score0 – 1
Derived from the engine's signals; an indication, not the decision itself.
reason_codeswhy
The signal classes that produced the decision — each defensible to an application owner or auditor.
taxonomyframeworks
Mapping to OWASP categories and MITRE ATT&CK techniques where applicable.
identifiersprivacy
Masked or hashed by default; raw content is retained only for active, time-bounded investigation.
C
Appendix C · Glossary

Terms used in this document.

Inline engine
The component that evaluates each request in the hot path, decides the action, and writes the decision record.
Policy enforcement pointPEP
Your existing proxy that sends an inline sub-request to Ward and applies the returned action.
Profileshadow · alert_only · strict
The operating mode that determines whether decisions are recorded only, alerted on, or actively enforced.
Reason code
A machine- and human-readable label identifying the signal class behind a decision.
Risk score
A value between 0 and 1 derived from the engine's signals; an input to policy, not the final verdict.
Signed policy bundle
Customer-desired state compiled into an integrity-verified artifact; tampered or unauthorized bundles are refused.
Async analyzer
Behavioral analysis outside the inline budget; emits session, flow, and behavior signals policy can consult on later requests.
Runtime evidence storethe analytics store
The customer-owned store for decisions, signals, sessions, and events. Operators query it; the vendor does not.
Control-plane storethe control-plane store
Durable local store for desired state, bundle artifacts, provenance, rollout state, and control-plane audit.
Challenge
An action requiring the client to complete an interactive proof — a middle path between allow and block.
Posture observation
Passive, route-aware analysis of what the application exposes in production, derived from traffic Ward already sees.
SDK enrichment
Application-supplied context — ownership, sensitivity, expected auth, criticality — that prioritizes and routes posture findings.
Canary
A limited, monitored rollout to a subset of traffic before wider enforcement; recommended for sensitive services.