Blog

Engineering & AppSec

How we build proof-based application security - evidence over heuristics, reachability over noise, and gates teams actually respect.

AppSec · Jul 21, 2026 · 7 min read

Business logic abuse: proof that the rule broke, not that input looks unusual

Business logic flaws share no payload signature - they exploit the intended workflow. Confirming abuse requires proving the rule was violated, not detecting an unusual input.

Read →
AppSec · Jul 19, 2026 · 7 min read

GraphQL authorization: the access check that lives in the resolver, not the gateway

GraphQL routes all queries through one endpoint - making it easy to assume the gateway handles authorization. It does not: every resolver must check access independently, and a missing check on a sensitive field hands callers data they should never see.

Read →
AppSec · Jul 17, 2026 · 7 min read

Web cache deception: storing what the cache should not

Cache poisoning injects content for other users to receive. Cache deception exfiltrates what was already returned to one user - by tricking the cache into storing a private response as if it were a public asset.

Read →
DevSecOps · Jul 15, 2026 · 7 min read

Secrets in CI logs: the pipeline that narrates your credentials

A build log that prints a secret sends it to every developer with log access, every artifact store, and every SIEM ingesting build events - before any scanner that reads source files can fire.

Read →
Platform · Jul 13, 2026 · 7 min read

Kubernetes RBAC drift: when cluster permissions outlive their reason

Service accounts accumulate permissions across releases and almost never shed them - parsing every binding to its effective verb set on every commit is what catches drift before it becomes a cluster-takeover path.

Read →
Supply Chain · Jul 12, 2026 · 7 min read

SBOM and VEX: from component list to exploitability proof

An SBOM lists every component you ship. VEX declares which CVEs from those components do not affect you - and why. The gap between them is where supply-chain noise lives.

Read →
Supply Chain · Jul 11, 2026 · 7 min read

Dependency confusion: your private package name is not reserved

A private package name that exists only in your internal feed can be squatted on npm, PyPI or RubyGems - and the manager fetches the public one unless the feed policy is explicit.

Read →
AppSec · Jul 10, 2026 · 6 min read

Open-redirect chaining: from 302 to credential theft

A redirect to an attacker domain is reachable - the same mechanism leaking an OAuth authorization code to that domain is account takeover. Severity lives in the chain, not the 302.

Read →
AppSec · Jul 8, 2026 · 7 min read

Mass assignment: when the API binds what it should not

Auto-binding a request body to an object model without an allowlist hands an attacker control of every field in that object - not just the ones you intended.

Read →
AppSec · Jul 7, 2026 · 7 min read

Path traversal: confirming a read without touching /etc/passwd

A traversal probe that returns /etc/passwd runs a real exploit on a production host. A benign nonce oracle confirms the same sink without reading any sensitive file.

Read →
AppSec · Jul 6, 2026 · 7 min read

SAML signature wrapping: when the signed assertion is not the one the app reads

SAML XML Signature Wrapping moves a valid signature to cover benign content while the SP reads claims from a different node - confirming it uses a nonce NameID replay that establishes a session without impersonating any real user.

Read →
Engineering · Jul 5, 2026 · 7 min read

LDAP injection: blind confirmation without enumerating the directory

An LDAP filter that passes unsanitized input lets an attacker flip authentication logic - confirming it uses differential boolean oracles, not a directory dump.

Read →
AppSec · Jul 4, 2026 · 7 min read

Race conditions and TOCTOU: confirming the window is real

A check-then-act pattern that opens a window for concurrent abuse is reachable - a confirmed race means two requests collide inside that window with a measurable outcome.

Read →
AppSec · Jul 3, 2026 · 6 min read

GraphQL introspection: your schema is not a secret - treat it like one

Leaving introspection enabled in production hands every attacker a self-documenting map of your API surface - including the mutations you never published.

Read →
Engineering · Jul 2, 2026 · 7 min read

NoSQL injection: error signatures differ by database, so probe per engine

MongoDB, CouchDB, Redis and DynamoDB each produce distinct responses when injection succeeds - a scanner keyed on one engine is a false-negative factory for the rest.

Read →
AppSec · Jul 1, 2026 · 6 min read

Prototype pollution: using a property oracle to confirm without crashing the target

Injecting a uniquely named property and observing it appear in a second, unrelated request is the confirming artifact - no gadget chain runs during the probe.

Read →
AppSec · Jun 30, 2026 · 6 min read

Code-to-runtime: the API you shipped vs the API that's running

An endpoint your code defines and an endpoint your traffic hits are two different facts. The gap between them is where shadow APIs and untested risk live.

Read →
AppSec · Jun 30, 2026 · 7 min read

Insecure deserialization: a gadget chain needs proof, not a pattern flag

Detecting that an endpoint accepts serialized objects is reachability - confirming a gadget chain without running a real command is where severity is decided.

Read →
AppSec · Jun 29, 2026 · 6 min read

Host-header injection: proving the reflected value reaches a dangerous sink

Reflecting an injected Host header is the first step - confirming that value reaches a password-reset link or a redirect target is the step that decides severity.

Read →
Engineering · Jun 28, 2026 · 6 min read

CORS: reflecting your origin is not the same as leaking your credentials

An Access-Control-Allow-Origin that echoes your probe is a misconfiguration worth noting - one that also returns Access-Control-Allow-Credentials: true is the one that hands a cross-origin attacker your session.

Read →
AppSec · Jun 27, 2026 · 7 min read

Web cache poisoning: confirming the stored hit without poisoning real traffic

An unkeyed header that influences a cached response is reachable. One that stores your injected value and serves it cold to a separate session is confirmed - and the difference is a cache buster.

Read →
AppSec · Jun 26, 2026 · 6 min read

JWT algorithm confusion: forging tokens with a public key

When a server accepts the algorithm field from the token header, switching to HS256 lets you sign with the public key - which is already public.

Read →
ASPM · Jun 25, 2026 · 6 min read

One vulnerability, five scanners, one record

DAST, SAST, SCA, container and IaC will each report the same root cause differently. Deduplication is not cosmetic - it is what makes the number on the dashboard mean something.

Read →
Compliance · Jun 24, 2026 · 6 min read

Compliance maps that update themselves

OWASP, PCI-DSS, ISO 27001, SOC 2, NIST 800-53, HIPAA and GDPR coverage should be a deterministic projection of your findings - not a quarterly spreadsheet exercise.

Read →
ASPM · Jun 23, 2026 · 7 min read

A risk score is only as good as the proof under it

Ranking 500 unverified findings by CVSS is sorting noise. A risk score earns trust when exploitability is proven and business context is real.

Read →
Compliance · Jun 22, 2026 · 5 min read

An evidence vault your auditor cannot argue with

A finding without a reproducible PoC request and response is an opinion. Enterprise and public-sector audits run on proof, not on a CSV of severities.

Read →
AppSec · Jun 21, 2026 · 6 min read

Template injection that invokes a method is RCE - rate it that way

SpEL and EL injection that can call a method is critical remote code execution, not a reflected-input curiosity. Under-rating it is as wrong as inventing it.

Read →
Engineering · Jun 20, 2026 · 7 min read

XXE: a parser that accepts a DTD has not leaked your files yet

Over-claiming kills trust as fast as missing a bug. 'XML parser resolves external entities' is reachability - it is not the same finding as 'I read /etc/passwd'.

Read →
AppSec · Jun 19, 2026 · 6 min read

SSRF that reaches cloud metadata is critical, not 'maybe'

A server-side request that returns the cloud instance role credentials is not a medium - it is a confirmed path to your whole account.

Read →
Platform · Jun 3, 2026 · 6 min read

Your container images ship yesterday's CVEs

The base image you pinned six months ago is a frozen snapshot of that day's vulnerabilities - shipped to production on every deploy.

Read →
DevSecOps · May 20, 2026 · 5 min read

Secrets outlive the commit that removed them

Deleting a key from the latest commit does not delete it - anyone who clones the repo still has the history.

Read →
AppSec · May 6, 2026 · 6 min read

BOLA: the API breach you cannot see in the code

Broken object-level authorization is the top API risk - and it looks perfectly correct on the page that reads it.

Read →
DevSecOps · Apr 22, 2026 · 7 min read

When the pipeline is the target

Attackers now compromise CI/CD directly - a misconfigured workflow trigger leaked credentials that force-pushed malicious commits.

Read →
AI Security · Apr 8, 2026 · 6 min read

AI-generated code is your newest attack surface

Over 92% of teams use AI coding assistants, and AI-written code is now a top AppSec blindspot: new dependencies, new sink flows, embedded secrets.

Read →
Supply Chain · Mar 25, 2026 · 7 min read

Self-replicating packages: the supply chain attack got automated

A self-replicating worm turned a one-off typosquat into a campaign - and ~11% of orgs run known-malicious packages in production.

Read →
AppSec · Mar 11, 2026 · 8 min read

OWASP Top 10 2025: what actually changed

Broken access control still #1, misconfiguration jumps to #2, and software supply chain is now its own category.

Read →
AppSec · Feb 25, 2026 · 6 min read

One platform vs three tools

Why assembling separate SCA, DAST and SAST point tools costs more and proves less.

Read →
Platform · Feb 11, 2026 · 5 min read

Air-gapped AppSec with no phone-home

Full coverage offline - your data never leaves.

Read →
Threat Modeling · Jan 28, 2026 · 9 min read

IaC-grounded threat modeling

Trust boundaries as parsed facts, not LLM guesses.

Read →
DevSecOps · Jan 14, 2026 · 7 min read

Monitor → Block: rolling out a gate without slowing teams

A fail-closed security gate you enforce on your own terms - from the UI.

Read →
AppSec · Dec 17, 2025 · 6 min read

Reachable beats found

Prioritizing what's actually exploitable, not what merely exists.

Read →
Engineering · Dec 3, 2025 · 8 min read

Evidence over heuristics

Why a finding should be raised on proof - not a 200-response heuristic.

Read →

See it on one of your own apps - live in 30 minutes

From discovery to a proven attack chain. A PoC in your own environment.