<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: razashariff</title>
    <description>The latest articles on DEV Community by razashariff (@razashariff).</description>
    <link>https://dev.to/razashariff</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3817319%2F79b4944a-f4d6-4260-8f21-00d70f243baf.png</url>
      <title>DEV Community: razashariff</title>
      <link>https://dev.to/razashariff</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/razashariff"/>
    <language>en</language>
    <item>
      <title>Zero-cost, Zero Trust AI: secure agents on local Qwen with MCPS</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Tue, 26 May 2026 14:29:02 +0000</pubDate>
      <link>https://dev.to/razashariff/zero-cost-zero-trust-ai-secure-agents-on-local-qwen-with-mcps-4713</link>
      <guid>https://dev.to/razashariff/zero-cost-zero-trust-ai-secure-agents-on-local-qwen-with-mcps-4713</guid>
      <description>&lt;p&gt;Run a AI agents on free, local Qwen, keep every byte on your own hardware, and prove cryptographically what it did. Signer and verifier included. For AI builders and architects.&lt;/p&gt;




&lt;p&gt;By the end of this you will have an AI agent that costs nothing per token, never sends a byte off your own hardware, and can prove -- cryptographically -- exactly what it did and that no one tampered with it. Signer and verifier, both included. About fifteen lines of code.&lt;/p&gt;

&lt;p&gt;As a 30 Year Security Leadership and Breach prevention we reogised thee issue of adoption with Local hosted models and the security concerns thats validated lack of adoption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We have changed this mindset with our stack - Meet MCPS and Local LLMs on your hosting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the whole promise. Let me earn it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question your architects keep asking
&lt;/h2&gt;

&lt;p&gt;Where does your prompt actually go?&lt;/p&gt;

&lt;p&gt;With a hosted model API, the honest answer is: across your trust boundary, on every single call. Your prompts, your customers' data, your internal context -- all of it leaves the building and lands inside someone else's tenancy. For a regulated team, that one sentence is the difference between a green light and a twelve-week security review.&lt;/p&gt;

&lt;p&gt;And the cost is no longer hypothetical. In May 2026 Microsoft began cancelling its internal &lt;strong&gt;Claude Code&lt;/strong&gt; licenses, moving staff to Copilot CLI by June 30. The reported reason was not quality -- engineers liked the tool. It was that token-based billing burned through the annual AI budget in months; flat seat pricing had hidden the true per-token spend (&lt;a href="https://www.windowscentral.com/microsoft/microsoft-cancels-claude-code-licenses-shifting-developers-to-github-copilot-cli-a-move-likely-driven-by-financial-motives" rel="noopener noreferrer"&gt;Windows Central&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;If Microsoft cannot predict its metered AI bill, neither can you.&lt;/p&gt;

&lt;p&gt;There is another way to build, and it has gotten very good.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free brain, signed hands
&lt;/h2&gt;

&lt;p&gt;Here is the one idea this whole article turns on: &lt;strong&gt;free brain, signed hands.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The LLM AI brain is a free, open model -- Qwen -- running locally. It costs nothing per token and it runs on your machine or sever. The hands are the tool calls the agent makes, and every one of them is cryptographically signed, identity-bound, and replay-proof, with a verifier you run on your side of the wire.&lt;/p&gt;

&lt;h2&gt;
  
  
  The half that local models do not give you -
&lt;/h2&gt;

&lt;p&gt;Running a model locally solves privacy. It does not solve integrity or identity.&lt;/p&gt;

&lt;p&gt;A local agent that calls tools is still, by default, anonymous and unsigned. Nothing proves which agent made a call. Nothing stops a captured request being replayed. Nothing detects a tampered argument before it hits your database. You have moved the brain in-house and left the hands bare.&lt;/p&gt;

&lt;p&gt;This is the fence I want to build around the approach, because it is exactly where most "run it locally" guides stop. Local privacy without per-call integrity is half a security model.&lt;/p&gt;

&lt;p&gt;So we built the other half. &lt;strong&gt;MCPS&lt;/strong&gt; is the security layer we wrote for the Model Context Protocol -- think of it as the secure version of MCP. It signs every tool call with a P-256 key, binds it to a verifiable agent identity (&lt;strong&gt;AgentPass&lt;/strong&gt;), and rejects anything unsigned, tampered, or replayed. The design is published as an IETF Internet-Draft, &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;draft-sharif-mcps-secure-mcp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Currenty integrated in US based FinTech organisation's with live production.&lt;/p&gt;

&lt;p&gt;The MCP ecosystem is enormous -- the official SDKs have been downloaded hundreds of millions of times -- and almost none of that traffic is signed. That is the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  We checked that the data really stays local.
&lt;/h2&gt;

&lt;p&gt;Claims about "your data never leaves" should be demonstrated, not asserted. So before writing a word of this, We watched what the model actually talks to.&lt;/p&gt;

&lt;p&gt;While Qwen generated a few thousand characters of output, We sampled every network connection the Ollama process held:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# run this during a real inference&lt;/span&gt;
lsof &lt;span class="nt"&gt;-nP&lt;/span&gt; &lt;span class="nt"&gt;-iTCP&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; ollama | &lt;span class="nb"&gt;grep &lt;/span&gt;ESTABLISHED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every endpoint was &lt;code&gt;127.0.0.1&lt;/code&gt; -- loopback. The client, and the model's own internal runner, talking to themselves. Ollama was bound to &lt;code&gt;127.0.0.1&lt;/code&gt; only: not exposed to the LAN, let alone the internet. Zero external connections. The prompt never left the machine.&lt;/p&gt;

&lt;p&gt;You do not have to trust our screenshot. Here is the acid test, and it takes ten seconds:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Turn off Wi-Fi. Run the same prompt. It still answers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If it works with no network, it provably needs none. That is a sentence you can put in front of an auditor.&lt;/p&gt;

&lt;h2&gt;
  
  
  It maps to the standards your reviewers cite
&lt;/h2&gt;

&lt;p&gt;This is not a hobby setup. The architecture lines up with the guidance security teams are already being measured against:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;Where it is covered&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MCP tool-call integrity, identity, replay&lt;/td&gt;
&lt;td&gt;&lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/MCP_Security_Cheat_Sheet.html" rel="noopener noreferrer"&gt;OWASP MCP Security Cheat Sheet&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI agent verification controls (C10)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://owasp.org/www-project-artificial-intelligence-security-verification-standard-aisvs-docs/" rel="noopener noreferrer"&gt;OWASP AISVS&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP security design considerations&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.nsa.gov/Press-Room/Press-Releases-Statements/Press-Release-View/Article/4496698/nsa-releases-security-design-considerations-for-ai-driven-automation-leveraging/" rel="noopener noreferrer"&gt;NSA MCP guidance, May 2026&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data residency / sovereignty&lt;/td&gt;
&lt;td&gt;model + tools run on-premise or in your own cloud; no third-party processor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The NSA put MCP security design in writing in May 2026. Signing tool calls is no longer a nice-to-have you have to justify -- it is the direction the guidance is already pointing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build it in three steps
&lt;/h2&gt;

&lt;p&gt;All free. All local. Signer and verifier both yours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Run a free model locally.&lt;/strong&gt; Qwen via Ollama, OpenAI-compatible, fully offline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen3:14b
ollama serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. The agent signs.&lt;/strong&gt; The SDK gives the agent an AgentPass identity and MCPS-signs every tool call. It runs on stock Qwen-Agent -- no fork, just a runtime hook.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;secure_qwen&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SecureQwenAgent&lt;/span&gt;

&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SecureQwenAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen3:14b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;mcp_servers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tools&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;command&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;args&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;server.py&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]}},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;add 17 and 25 with secure_add&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. The verifier enforces.&lt;/strong&gt; One line wraps your MCP server. Unsigned, tampered, or replayed calls are rejected at the gate, before they reach your tools or data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mcp_secure&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;secure_mcp&lt;/span&gt;

&lt;span class="nf"&gt;secure_mcp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# signature + identity + replay checked here. fail-closed.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want DeepSeek instead of Qwen? Same code, swap one line: &lt;code&gt;model="deepseek-r1:14b"&lt;/code&gt;. The security layer is model-agnostic on purpose -- it does not care which free brain you bolt the signed hands onto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify what you downloaded
&lt;/h2&gt;

&lt;p&gt;Supply-chain integrity cuts both ways: a security tool you cannot verify is just another dependency to worry about. Every release ships a signed hash manifest, so you can check it before you run a line of it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# integrity: do the files match the manifest?&lt;/span&gt;
shasum &lt;span class="nt"&gt;-a&lt;/span&gt; 256 &lt;span class="nt"&gt;-c&lt;/span&gt; SHA256SUMS

&lt;span class="c"&gt;# authenticity: was the manifest signed by our release key?&lt;/span&gt;
openssl dgst &lt;span class="nt"&gt;-sha256&lt;/span&gt; &lt;span class="nt"&gt;-verify&lt;/span&gt; release-pubkey.pem &lt;span class="nt"&gt;-signature&lt;/span&gt; SHA256SUMS.sig SHA256SUMS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;P-256 ECDSA, the same primitive MCPS uses on the wire. If either check fails, do not run it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually costs
&lt;/h2&gt;

&lt;p&gt;Nothing, per token. You pay for hardware and electricity once, and then a million calls cost the same as one. There is no meter, no surprise invoice at the end of the quarter, and no budget that quietly evaporates because a few agents got chatty. That is the lesson buried in the Microsoft story: the problem was never the model, it was the metering.&lt;/p&gt;

&lt;p&gt;Local inference turns a variable, unpredictable operating cost into a fixed, owned capability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build on Qwen. Build secure. Build to comply.
&lt;/h2&gt;

&lt;p&gt;That is the contribution I want to leave you with. A free model gives you economics and privacy. MCPS and AgentPass give you the integrity and identity that local models leave bare. Together they are a stack you can run on your own hardware, prove to an auditor, and never hand to a third party.&lt;/p&gt;

&lt;p&gt;Signer and verifier, both yours. Free brain, signed hands.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read the architecture and the standards mapping: &lt;a href="https://agentpass.co.uk/qwen-builders" rel="noopener noreferrer"&gt;agentpass.co.uk/qwen-builders&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The protocol: &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;MCPS Internet-Draft&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The identity layer: &lt;a href="https://agentpass.co.uk" rel="noopener noreferrer"&gt;AgentPass&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Want to build now?&lt;/strong&gt; The SDK, the verifier, and the signed manifest are ready. Contact us at &lt;strong&gt;&lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/strong&gt; and we will get you running on secure local Qwen today.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The SDK is licensed BUSL-1.1: free to run, self-host, and modify; not for resale. It converts to Apache 2.0 in 2030.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>llm</category>
      <category>privacy</category>
    </item>
    <item>
      <title>The NSA just published an MCP security playbook. We created Agent Trust Transport Protocol ATTP - Implement today with MCPS</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Sat, 23 May 2026 18:26:54 +0000</pubDate>
      <link>https://dev.to/razashariff/the-nsa-just-published-an-mcp-security-playbook-heres-the-ietf-spec-the-openapi-extension-and-28pa</link>
      <guid>https://dev.to/razashariff/the-nsa-just-published-an-mcp-security-playbook-heres-the-ietf-spec-the-openapi-extension-and-28pa</guid>
      <description>&lt;p&gt;In May 2026 the United States National Security Agency published a Cybersecurity Information notice titled Model Context Protocol (MCP): Security Design Considerations &lt;br&gt;
  for AI-Driven Automation (document ID U/OO/6030316-26 / PP-26-1834). It is fifteen pages on what the NSA considers the minimum security baseline for any production MCPdeployment.&lt;/p&gt;

&lt;p&gt;If you are building anything on MCP, server, client, gateway, orchestrator, framework, or agent runtime, read it. Then read this, because the standards work the NSA describes already exists, and you can integrate it today.&lt;/p&gt;




&lt;p&gt;What the NSA called out&lt;/p&gt;

&lt;p&gt;Four operational requirements run through the document.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cryptographically sign and verify MCP messages&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Quoting the NSA directly (page 12): "the standard can be extended with cryptographic signatures directly within the JSON payload ... MCP messages should include expiration timestamps and replay protection metadata ... cryptographically bind requests to time and context to prevent tampering, intentional replay techniques, and &lt;br&gt;
  unintended re-execution."&lt;/p&gt;

&lt;p&gt;Translation: TLS is not enough. The MCP payload itself needs an envelope with a signature, a nonce, a timestamp, and a freshness window.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cryptographic identity for agents (not bearer tokens)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Page 4: MCP "lacks support for exchanging Role Based Access Control permissions at instantiation." Bearer tokens can be lifted, replayed, and impersonated. Agents need&lt;br&gt;
  verifiable cryptographic identity, bound to scope, trust level, and issuer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Structured audit logging with cryptographic integrity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Page 12 to 13: log every tool invocation, every parameter, every result, with cryptographic hashes, so an XDR or SIEM can reconstruct exactly what happened and prove it&lt;br&gt;
   has not been altered.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Track MCP-specific CVEs and patch them&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Page 13: build a vulnerability-monitoring process around your MCP package surface, the same as you would for any other production dependency.&lt;/p&gt;




&lt;p&gt;What already exists, today&lt;/p&gt;

&lt;p&gt;Here is the awkward bit, depending on where you sit: every single one of these four requirements has an open specification, a reference implementation, and at least one&lt;br&gt;
   production integration. They predate the NSA notice.&lt;/p&gt;

&lt;p&gt;MCPS, the cryptographic signing layer for MCP&lt;/p&gt;

&lt;p&gt;draft-sharif-mcps-secure-mcp on the IETF Datatracker since March 2026. Four primitives:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent Passports. Cryptographic identity bound to a specific origin.&lt;/li&gt;
&lt;li&gt;Signed message envelopes. ECDSA P-256 over a canonical-signing-string, with timestamp and nonce, for integrity and non-repudiation.&lt;/li&gt;
&lt;li&gt;Tool definition signatures. Covering the full tool object, so a downstream client can detect tool poisoning or schema tampering.&lt;/li&gt;
&lt;li&gt;Nonce plus timestamp replay protection with transcript binding, to prevent downgrade attacks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The wire format is JSON-on-the-wire, signing-string-canonical, and stays inside the MCP message body. No transport changes, no protocol fork.&lt;/p&gt;

&lt;p&gt;ATTP, agent-trust transport above MCPS&lt;/p&gt;

&lt;p&gt;draft-sharif-attp, live since 1 May 2026. Where MCPS does message-level signing for MCP, ATTP defines a protocol-agnostic trust transport above it: five hierarchical&lt;br&gt;
  trust levels (L0 to L4), action-limit enforcement, compliance gating, and tamper-evident audit. It maps onto MCP, REST, Google A2A, gRPC, and GraphQL.&lt;/p&gt;

&lt;p&gt;Live demo with real ECDSA P-256 in the browser, including tamper and strip-ATTP buttons:&lt;br&gt;
  👉 &lt;a href="https://attp.cybersecai.co.uk" rel="noopener noreferrer"&gt;https://attp.cybersecai.co.uk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AgentPass, the identity / RBAC layer the NSA describes&lt;/p&gt;

&lt;p&gt;L0 to L4 trust grades, OFAC and HMT sanctions screening (75,784 entries baked in), graduated spend limits, hash-chained audit trails, agent-to-agent payment&lt;br&gt;
  authorisation, optional Mastercard risk integration.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://agentpass.co.uk" rel="noopener noreferrer"&gt;https://agentpass.co.uk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Go SDK (agentpass-go) verifies agent identity certificates with zero network calls. Pure local crypto, standard library only, no CGo. Trust anchors load like TLS&lt;br&gt;
  root CAs.&lt;/p&gt;

&lt;p&gt;x-agent-trust, agent trust as a first-class OpenAPI declaration&lt;/p&gt;

&lt;p&gt;Merged into the official OpenAPI Initiative Extension Registry on 11 April 2026, approved by Henry Andrews and Mike Kistler (Microsoft):&lt;br&gt;
  👉 &lt;a href="https://spec.openapis.org/registry/extension/x-agent-trust.html" rel="noopener noreferrer"&gt;https://spec.openapis.org/registry/extension/x-agent-trust.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;components:&lt;br&gt;
    securitySchemes:&lt;br&gt;
      AgentTrust:&lt;br&gt;
        type: apiKey&lt;br&gt;
        description: Uses agent trust information in lieu of a traditional API key. Requires the &lt;code&gt;x-agent-trust&lt;/code&gt; extension.&lt;br&gt;
        in: header&lt;br&gt;
        name: Agent-Signature&lt;br&gt;
        x-agent-trust:&lt;br&gt;
          algorithm: ES256&lt;br&gt;
          trustLevels: [L0, L1, L2, L3, L4]&lt;br&gt;
          issuerKeysUrl: /.well-known/agent-trust-keys&lt;br&gt;
  security:&lt;br&gt;
    - AgentTrust: [L3]&lt;/p&gt;

&lt;p&gt;Any OpenAPI-described service can now declare which agent trust level is required to call which operation. Tooling that understands the extension can verify the&lt;br&gt;
  Agent-Signature header before the request even reaches application code.&lt;/p&gt;

&lt;p&gt;OWASP MCP Security Cheat Sheet, Section 7&lt;/p&gt;

&lt;p&gt;Section 7, Message-Level Integrity and Replay Protection contributed via PR #2065, merged 26 March 2026. The cheat sheet now documents the patterns the NSA later&lt;br&gt;
  described, including signing JSON-RPC messages with asymmetric keys, including nonces and timestamps, and pinning tool definitions using hashes.&lt;/p&gt;

&lt;p&gt;OWASP AISVS 1.0, Chapter C10&lt;/p&gt;

&lt;p&gt;An entire chapter on MCP Security, with verifiable requirements at L1 to L3. Two requirements map directly to the MCPS spec:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10.2.11 (L2). Agents authenticate using cryptographically bound identity credentials rather than bearer-only tokens, ensuring agent identity cannot be transferred,
replayed, or impersonated.&lt;/li&gt;
&lt;li&gt;10.4.10 (L3). MCP servers sign tool responses with a unique nonce and timestamp within a bounded time window, so the calling agent can verify origin, integrity, and
freshness, preventing spoofing, tampering, and replay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CVE-2026-39313, and five more on the clock&lt;/p&gt;

&lt;p&gt;CVE-2026-39313. Unbounded-memory-allocation vulnerability in mcp-framework (CWE-770, High), assigned and published 16 April 2026. &lt;/p&gt;

&lt;p&gt;Five further CVE submissions, across ~57M weekly downloads of MCP packages (including the official MCP TypeScript and Python SDKs), are under coordinated-disclosure clock.&lt;/p&gt;

&lt;p&gt;This is the NSA's recommendation #4 in action. The package surface is being audited, and the gaps are being closed.&lt;/p&gt;




&lt;p&gt;In production, today&lt;/p&gt;

&lt;p&gt;moov-io / watchman (Apache 2.0, ~460 stars). Sanctions screening used by SEC-registered transfer agents and BaaS platforms. MCPS and AgentPass are merged into main. The production deployment guide ships an AgentPass configuration block:&lt;/p&gt;

&lt;p&gt;AgentPass:&lt;br&gt;
    TrustAnchorPath: /etc/watchman/agentpass-ca.pem&lt;br&gt;
    MinTrustLevel:   2&lt;br&gt;
    RequiredScopes:&lt;br&gt;
      - sanctions:search&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/moov-io/watchman/blob/master/docs/mcp.md" rel="noopener noreferrer"&gt;https://github.com/moov-io/watchman/blob/master/docs/mcp.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cisco AI Defense. Cisco's commercial agent-security product ships our MCPS protocol as part of its agent-defence stack.&lt;br&gt;
  👉 &lt;a href="https://www.cisco.com/site/us/en/products/security/ai-defense/index.html" rel="noopener noreferrer"&gt;https://www.cisco.com/site/us/en/products/security/ai-defense/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kong API Gateway. A plugin that turns every API behind Kong into an MCPS-signed endpoint with zero developer effort. Available to design partners under NDA.&lt;/p&gt;

&lt;p&gt;AEBA-XDR, runtime behaviour analysis for every agent. Anomaly detection in milliseconds. Eight behavioural dimensions, every agent cryptographically identified,&lt;br&gt;
  hash-chained tamper-evident audit, native forwarders for major XDR and SIEM platforms via CEF, LEEF and syslog RFC 5424. Free evaluation tier for up to three agents.&lt;br&gt;
  👉 &lt;a href="https://aeba.co.uk" rel="noopener noreferrer"&gt;https://aeba.co.uk&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;What to do this week&lt;/p&gt;

&lt;p&gt;If you ship MCP in production:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pin MCP-package versions and subscribe to CVE feeds for every MCP-related dependency. Start with CVE-2026-39313.&lt;/li&gt;
&lt;li&gt;Add MCPS message signing to your most-sensitive tool invocations. The spec is small enough to implement from draft-sharif-mcps-secure-mcp in a sprint.&lt;/li&gt;
&lt;li&gt;Declare your agent-trust requirements in your OpenAPI document using x-agent-trust. Whether or not your runtime enforces them yet, you have made the requirement
machine-readable for everything downstream.&lt;/li&gt;
&lt;li&gt;Wire your tool invocations into a tamper-evident audit log that maps to the AISVS C10 controls.&lt;/li&gt;
&lt;li&gt;Read the NSA notice. If you skim only one document on MCP security this quarter, skim that one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The standard exists. The reference code exists. The integrations exist. The CVE feed exists.&lt;/p&gt;

&lt;p&gt;The protocol can be secured. Now there is no reason not to.&lt;/p&gt;

&lt;p&gt;Raza Sharif (FBCS, CISSP, CSSLP)&lt;br&gt;
  Founder, CyberSecAI Ltd&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>security</category>
      <category>owasp</category>
    </item>
    <item>
      <title>We Sent a Cryptographically-Signed AI Agent Payment Over 868 MHz Radio. No Internet. No Cloud. Just Trust.</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Wed, 06 May 2026 13:13:08 +0000</pubDate>
      <link>https://dev.to/razashariff/we-sent-a-cryptographically-signed-ai-agent-payment-over-868-mhz-radio-no-internet-no-cloud-just-2493</link>
      <guid>https://dev.to/razashariff/we-sent-a-cryptographically-signed-ai-agent-payment-over-868-mhz-radio-no-internet-no-cloud-just-2493</guid>
      <description>&lt;h1&gt;
  
  
  We Sent a Cryptographically-Signed AI Agent Payment Over 868 MHz Radio. No Internet. No Cloud. Just Trust.
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By Raza Sharif, CEO/Founder | &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Airplane mode. Two Heltec LoRa boards. A signed MCPS frame crossed 868 MHz radio and settled in under 2 seconds.&lt;/p&gt;

&lt;p&gt;No internet. No Lightning node. No cloud infrastructure. No blockchain.&lt;/p&gt;

&lt;p&gt;Just a cryptographic signature, a nonce, and a trust level — travelling at the speed of radio.&lt;/p&gt;

&lt;p&gt;This is what happened, how we built it, and why it matters for every AI agent you are shipping right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Nobody Is Talking About
&lt;/h2&gt;

&lt;p&gt;MCP (Model Context Protocol) has &lt;strong&gt;97 million SDK downloads&lt;/strong&gt;. Over &lt;strong&gt;13,000 servers&lt;/strong&gt; are publicly listed. It is the fastest-growing AI integration standard in history.&lt;/p&gt;

&lt;p&gt;It shipped with no message signing.&lt;/p&gt;

&lt;p&gt;Not "limited signing." Not "optional signing." Zero. Any process on the network can forge a tool call. Any captured frame can be replayed indefinitely. A server has no cryptographic way to verify the agent calling it is who it claims to be.&lt;/p&gt;

&lt;p&gt;Here is what a standard MCP tool call looks like on the wire today:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tools/call"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"transfer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"to"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agent_b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No signature. No nonce. No identity. If you capture that frame, you can replay it forever.&lt;/p&gt;

&lt;p&gt;OWASP confirmed prompt injection, tool poisoning, and authentication bypass as the top three MCP threats — all exploitable on standard implementations today. Gartner reported a 1,700% increase in agent security enquiries in 2026. The industry is waking up to a problem that was baked in from day one.&lt;/p&gt;

&lt;p&gt;We built the security model for secure MCP use.&lt;/p&gt;




&lt;h2&gt;
  
  
  MCPS — Model Context Protocol Security
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;MCPS&lt;/a&gt; is an IETF internet draft that adds cryptographic signing to every MCP message. ECDSA P-256. Per-message nonces. Timestamp validation. L0–L4 trust levels. Drop-in compatible with the existing MCP spec.&lt;/p&gt;

&lt;p&gt;Every MCPS frame looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MCPS:1:&amp;lt;agentHash&amp;gt;:&amp;lt;serverHash&amp;gt;:&amp;lt;amountHex&amp;gt;:&amp;lt;nonce&amp;gt;:&amp;lt;timestamp&amp;gt;:&amp;lt;P256sig&amp;gt;:&amp;lt;memo&amp;gt;

Example:
MCPS:1:a3f8c2d1:b7e94a20:0x03E8:a1b2c3d4:1746543210:MEQCIHx9...==:transfer
       ↑version ↑agent    ↑server ↑amount  ↑nonce    ↑unix ts  ↑sig44     ↑memo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server verifies the signature before executing anything. The nonce is stored and rejected if seen again. The trust level gates what the agent is permitted to do.&lt;/p&gt;

&lt;p&gt;Seven npm packages. A Java Keycloak mapper. Python and Go implementations. The &lt;code&gt;x-agent-trust&lt;/code&gt; extension is now on the &lt;a href="https://spec.openapis.org/registry/x-agent-trust" rel="noopener noreferrer"&gt;official OpenAPI extension registry&lt;/a&gt; — PR #67, merged April 2026, approved by Microsoft and the OpenAPI TDC.&lt;/p&gt;

&lt;p&gt;That is the protocol. Now here is what we did with it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Build: MCPS Over 868 MHz LoRa Radio
&lt;/h2&gt;

&lt;p&gt;We wanted to know: how transport-agnostic is MCPS really?&lt;/p&gt;

&lt;p&gt;So we stripped away every assumption. No TCP/IP. No Wi-Fi. No internet. We put the phone into airplane mode and routed an MCPS payment frame across a 868 MHz LoRa radio mesh.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hardware
&lt;/h3&gt;

&lt;p&gt;Two &lt;a href="https://heltec.org/project/wifi-lora-32-v3/" rel="noopener noreferrer"&gt;Heltec WiFi LoRa 32 V3&lt;/a&gt; boards running Meshtastic firmware:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;c758&lt;/strong&gt; — TX board. Paired with an iPhone via BLE. Receives MCPS frames from our iOS app and transmits over 868 MHz LoRa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;84cc&lt;/strong&gt; — RX board. Paired with a Mac via BLE. Receives incoming LoRa frames and forwards to the lnode-mesh backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│  iPhone (Airplane Mode)                                 │
│  iOS App — signs MCPS frame — sends via BLE             │
└────────────────────────┬────────────────────────────────┘
                         │ BLE
                         ▼
┌─────────────────────────────────────────────────────────┐
│  Heltec c758 — TX Board                                 │
│  Transmits over 868 MHz LoRa                            │
└────────────────────────┬────────────────────────────────┘
                         │ 868 MHz LoRa (radio)
                         ▼
┌─────────────────────────────────────────────────────────┐
│  Heltec 84cc — RX Board                                 │
│  Receives over 868 MHz LoRa                             │
└────────────────────────┬────────────────────────────────┘
                         │ BLE
                         ▼
┌─────────────────────────────────────────────────────────┐
│  Mac — ble-listener.py                                  │
│  Meshtastic protobuf decode → POST /radio/receive       │
└────────────────────────┬────────────────────────────────┘
                         │ HTTP localhost
                         ▼
┌─────────────────────────────────────────────────────────┐
│  lnode-mesh.js — Node.js backend                        │
│  Verify MCPS sig → check nonce → update balances        │
│  SETTLED ✓                                              │
└─────────────────────────────────────────────────────────┘

Zero internet in the chain. Phone in airplane mode throughout.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The iOS App
&lt;/h3&gt;

&lt;p&gt;The app builds a valid MCPS frame, signs it with ECDSA P-256, and sends it to the c758 board via BLE using the Meshtastic &lt;code&gt;TORADIO&lt;/code&gt; characteristic. The key part was getting the Meshtastic 2.x protobuf encoding right — specifically &lt;code&gt;FIXED32&lt;/code&gt; wire type for the broadcast destination address (&lt;code&gt;0xFFFFFFFF&lt;/code&gt;) and the correct field numbers for &lt;code&gt;ToRadio&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="c1"&gt;// MeshtasticBLE.swift — encode broadcast destination correctly&lt;/span&gt;
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;encodeFixed32&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;fieldNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;UInt32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="kt"&gt;Data&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Data&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;UInt8&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;fieldNumber&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;// wire type 5 = 32-bit fixed&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;UInt8&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;UInt8&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;UInt8&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;UInt8&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The BLE Listener
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ble-listener.py&lt;/code&gt; runs on the Mac, connects to the 84cc board via BLE, decodes the Meshtastic protobuf &lt;code&gt;FromRadio&lt;/code&gt; stream, extracts text messages, and POSTs any MCPS frame to the settlement backend.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# ble-listener.py — detect and forward MCPS frames
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MCPS:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;post_to_backend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rssi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;pkt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rx_rssi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;snr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;pkt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rx_snr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;verdict&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# → SETTLED ✓
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Settlement Backend
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;lnode-mesh.js&lt;/code&gt; receives the frame, verifies the ECDSA signature, checks the nonce against a replay store, validates the trust level, and updates agent balances. It is the same MCPS settlement logic that runs in our cloud stack — unmodified — now running over radio.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Moment It Worked
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ╔══════════════════════════════════════════════╗
  ║  MCPS PAYMENT RECEIVED OVER 868 MHz RADIO    ║
  ╠══════════════════════════════════════════════╣
  ║  Frame: MCPS:1:a3f8c2:b7e94a:0x03E8:a1b2..   ║
  ║  RSSI:  -7 dBm                               ║
  ║  SNR:   6.5 dB                               ║
  ╠══════════════════════════════════════════════╣
  ║  Verdict: SETTLED ✓                          ║
  ║  agent_a: 9000 sats                          ║
  ║  agent_b: 11000 sats                         ║
  ╚══════════════════════════════════════════════╝
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Phone in airplane mode. No Wi-Fi. No mobile data. No internet anywhere in the chain.&lt;/p&gt;

&lt;p&gt;RSSI -7 dBm. SNR 6.5 dB. Clean signal. Clean settlement.&lt;/p&gt;

&lt;p&gt;First MCPS-signed agent transaction over radio. Done.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters Beyond the Demo
&lt;/h2&gt;

&lt;p&gt;We are not trying to build Stripe over LoRa. That is not the point.&lt;/p&gt;

&lt;p&gt;The point is this: &lt;strong&gt;MCPS is transport-agnostic&lt;/strong&gt;. The signing, the nonce, the trust level — they live in the frame, not in the network. HTTP, WebSocket, stdio, gRPC, BLE, 868 MHz radio — it does not matter. The trust travels with the data.&lt;/p&gt;

&lt;p&gt;That has real consequences:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Disconnected environments&lt;/strong&gt;&lt;br&gt;
Agents operating in disaster zones, remote industrial sites, or air-gapped networks can still execute cryptographically-attributed transactions. When connectivity returns, settlement syncs. The signed log is the audit trail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Incentivised mesh routing&lt;/strong&gt;&lt;br&gt;
Every relay hop can earn a signed micro-credit. Pay-per-forward with cryptographic receipt. No internet required for accounting — only for final settlement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. IoT and sensor data markets&lt;/strong&gt;&lt;br&gt;
Remote sensors publish data over mesh. Agents subscribe and pay. Deferred settlement when they reconnect. Metered access with a tamper-proof ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The real insight for cloud deployments&lt;/strong&gt;&lt;br&gt;
If MCPS works on a 250 bps radio link in airplane mode, it works in your Kubernetes cluster. It works in your CI pipeline. It works in your agentic commerce stack. If the most constrained transport you can imagine handles it, your infrastructure certainly can.&lt;/p&gt;

&lt;p&gt;Protocol-agnostic trust was always the goal. Radio just proved it.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Broader Stack
&lt;/h2&gt;

&lt;p&gt;lnode-mesh is one piece. The full picture:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identity&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;AgentPass&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent registry, trust scoring L0–L4, AML/sanctions screening (75K+ entries)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MCPS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ECDSA P-256 per-message signing, nonce replay protection, IETF draft&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ATTP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent Trust Transport Protocol — 5 protocol bindings, IETF draft&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scanning&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CyberSecClaw&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One import, secure-by-default agents. Identity, injection blocking, audit trail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketplace&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LATTP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Find, scan, and pay for verified MCP services. DAST on every call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DAST&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cybersecify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;25+ OWASP MCP checks, active exploitation probes, CI/CD integration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All of it runs over any transport. Including radio.&lt;/p&gt;


&lt;h2&gt;
  
  
  Standards
&lt;/h2&gt;

&lt;p&gt;This work is not a side project. It is submitted, published, and independently citable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IETF MCPS&lt;/strong&gt; — &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;draft-sharif-mcps-secure-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IETF ATTP&lt;/strong&gt; — &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-attp/" rel="noopener noreferrer"&gt;draft-sharif-attp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IETF AEBA&lt;/strong&gt; — &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-aeba/" rel="noopener noreferrer"&gt;draft-sharif-aeba&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAPI Registry&lt;/strong&gt; — &lt;a href="https://spec.openapis.org/registry/x-agent-trust" rel="noopener noreferrer"&gt;x-agent-trust extension&lt;/a&gt; (PR #67, merged April 2026)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP MCPVS&lt;/strong&gt; — MCP Verification Standard v0.1, 40 requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP AISVS 1.0&lt;/strong&gt; — 3 requirements merged, Vienna June 2026&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Academic citation&lt;/strong&gt; — arXiv:2604.05969 cites MCPS as Defence Mechanism D5, alongside Anthropic, Google, Microsoft, NIST (Youngstown State University)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preprint&lt;/strong&gt; — DOI: &lt;a href="https://zenodo.org/record/19409366" rel="noopener noreferrer"&gt;10.5281/zenodo.19409366&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Get the Code
&lt;/h2&gt;

&lt;p&gt;The lnode-mesh stack (iOS app + BLE listener + settlement backend) is private. If you are working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent infrastructure for disconnected environments&lt;/li&gt;
&lt;li&gt;Incentivised mesh networking&lt;/li&gt;
&lt;li&gt;Air-gapped payment resilience&lt;/li&gt;
&lt;li&gt;MCPS integration for your platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reach out directly: &lt;strong&gt;&lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;npm packages (public): &lt;code&gt;mcps-core&lt;/code&gt;, &lt;code&gt;agentpass&lt;/code&gt;, &lt;code&gt;agentsign&lt;/code&gt;, &lt;code&gt;mcps-openclaw&lt;/code&gt;, &lt;code&gt;mcp-secure&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;mcps-core agentpass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;We built agents that transact over crypto. Then we added radio.&lt;/p&gt;

&lt;p&gt;Not because it was easy. Because it proved the thing that matters: &lt;strong&gt;trust is a property of the message, not the network&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sign it. Verify it. Settle it. Anywhere.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Raza Sharif — CEO/Founder]&lt;br&gt;
*CyberSecAI Ltd | &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt; | Patent Pending&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>iot</category>
      <category>security</category>
    </item>
    <item>
      <title>We Built the Missing Trust Layer for AI Agent Payments</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Fri, 01 May 2026 07:40:03 +0000</pubDate>
      <link>https://dev.to/razashariff/we-built-the-missing-trust-layer-for-ai-agent-payments-5gf2</link>
      <guid>https://dev.to/razashariff/we-built-the-missing-trust-layer-for-ai-agent-payments-5gf2</guid>
      <description>&lt;h2&gt;
  
  
  AI Agents Will Move Money. The Infrastructure Isn't Ready.
&lt;/h2&gt;

&lt;p&gt;In Q1 2026, Stripe launched the Machine Payments Protocol. Mastercard shipped Agent Pay with agentic tokens. Visa announced Intelligent Commerce. Cloudflare deployed Web Bot Auth for agent-initiated transactions. AWS published guidance on x402 for autonomous payments. FedNow crossed $245 billion in quarterly volume with 49,000% year-over-year growth.&lt;/p&gt;

&lt;p&gt;The message is clear: AI agents are entering the payment system. Not as assistants that help humans pay, but as autonomous actors that initiate, authorise, and execute financial transactions without a human in the loop.&lt;/p&gt;

&lt;p&gt;But every one of these platforms assumes someone else handles trust. &lt;/p&gt;

&lt;p&gt;Stripe authenticates the API key. Mastercard validates the token. Visa checks the credential. None of them answer the question that matters: &lt;strong&gt;should this specific agent, making this specific payment, to this specific counterparty, at this specific amount, right now, be trusted to do so?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We built the stack that answers that question.  Agent identity is broken. We fixed it.                                                                                                   &lt;/p&gt;

&lt;p&gt;OAuth was built for humans with browsers. API keys were built for developers with dashboards. Neither was designed for autonomous&lt;br&gt;&lt;br&gt;
software making financial decisions at machine speed with no human in the loop. &lt;/p&gt;

&lt;p&gt;Retrofitting human identity patterns onto agents is an&lt;br&gt;&lt;br&gt;
anti-pattern -- it gives you authentication without trust, access without limits, and credentials without accountability.                &lt;/p&gt;

&lt;p&gt;ATTP starts from the premise that identity is necessary but not sufficient. Knowing who the agent is does not tell you what it should beallowed to do.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Six-Layer Problem
&lt;/h2&gt;

&lt;p&gt;A human making a payment goes through multiple trust checks without thinking about it: their bank knows them, their card has limits, the merchant is verified, fraud detection runs in real-time, and they can call the bank to reverse a charge. Decades of infrastructure sits behind every tap of a card.&lt;/p&gt;

&lt;p&gt;An AI agent making a payment has none of this. It has an API key.&lt;/p&gt;

&lt;p&gt;The stack we've built at CyberSecAI addresses six layers that must all pass before an agent payment executes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Layer 1: Identity    -- Is this agent who it claims to be?
Layer 2: Trust       -- Has this agent earned the right to transact?
Layer 3: Integrity   -- Is this payment request authentic and untampered?
Layer 4: Enforcement -- Does this transaction fall within the agent's limits?
Layer 5: Compliance  -- Is the counterparty sanctioned?
Layer 6: Audit       -- Is there a tamper-evident record of everything?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most agent authentication protocols handle Layer 1. Some handle Layer 3. We haven't found anything else that handles Layers 2 through 6.&lt;/p&gt;

&lt;h2&gt;
  
  
  ATTP: The Trust Layer
&lt;/h2&gt;

&lt;p&gt;We submitted the Agent Trust Transport Protocol (ATTP) to the IETF as &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-attp/" rel="noopener noreferrer"&gt;draft-sharif-attp&lt;/a&gt;. ATTP is protocol-agnostic -- it defines how trust works for autonomous agents regardless of what transport protocol they use.&lt;/p&gt;

&lt;p&gt;The core concept: &lt;strong&gt;trust is not identity&lt;/strong&gt;. Identity is binary. You are who you claim to be, or you are not. Trust is graduated. It is earned over time, adjusted by behaviour, and revocable instantly.&lt;/p&gt;

&lt;p&gt;ATTP defines five trust levels:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Score Range&lt;/th&gt;
&lt;th&gt;What the Agent Can Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;L0&lt;/td&gt;
&lt;td&gt;0-19&lt;/td&gt;
&lt;td&gt;Nothing. Identified but cannot transact. Read-only.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L1&lt;/td&gt;
&lt;td&gt;20-39&lt;/td&gt;
&lt;td&gt;Micro-payments. $10 per transaction, $50 per day.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L2&lt;/td&gt;
&lt;td&gt;40-59&lt;/td&gt;
&lt;td&gt;Standard transactions. $100/tx, $500/day.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L3&lt;/td&gt;
&lt;td&gt;60-79&lt;/td&gt;
&lt;td&gt;Elevated. $1,000/tx, $5,000/day. Monitored.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L4&lt;/td&gt;
&lt;td&gt;80-100&lt;/td&gt;
&lt;td&gt;Full access. $50,000/tx, $200,000/day. Every action audited.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;New agents start at L0. They cannot spend a single dollar. Trust is earned through five dimensions: code attestation, execution success rate, behavioural consistency, operational tenure, and anomaly history. Each dimension contributes equally to a composite score that maps to the trust level.&lt;/p&gt;

&lt;p&gt;This is not a configuration setting. It is a protocol-enforced constraint. An L0 agent cannot make payments regardless of what the application layer says. The trust check happens before the payment processor ever sees the request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Promotion Rate Limiting
&lt;/h3&gt;

&lt;p&gt;Earning trust takes time. This is deliberate. ATTP mandates minimum durations at each level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;L0 to L1: 24 hours, 5 successful actions minimum&lt;/li&gt;
&lt;li&gt;L1 to L2: 7 days, 20 successful actions&lt;/li&gt;
&lt;li&gt;L2 to L3: 30 days, 100 successful actions, zero critical anomalies&lt;/li&gt;
&lt;li&gt;L3 to L4: 90 days, 500 successful actions, zero anomalies, manual attestation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An attacker who creates a fake agent and tries to build trust through small transactions needs at minimum &lt;strong&gt;128 days&lt;/strong&gt; of sustained, anomaly-free operation before reaching L4. Demotions, by contrast, are instant. A single critical anomaly at L4 drops the agent to L2 immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kill Switches
&lt;/h3&gt;

&lt;p&gt;Certificate revocation is too slow for payments. CRLs update on schedules. OCSP adds latency and creates a single point of failure. If an agent is compromised at 2:47 PM and your revocation mechanism runs hourly, that is up to 60 minutes of unauthorised transactions at machine speed.&lt;/p&gt;

&lt;p&gt;ATTP kill switches are checked on every single request. Per-agent, per-principal, and global emergency. When activated, the next request is denied. No grace period. No propagation delay. The agent's trust score is frozen, not reset -- so when the issue is resolved, the agent resumes at its previous level rather than starting over.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCPS: The MCP Binding
&lt;/h2&gt;

&lt;p&gt;ATTP is transport-agnostic. It defines what trust means. Protocol bindings define how trust is enforced on specific transports.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;MCPS (MCP Secure)&lt;/a&gt; is the binding for the Model Context Protocol -- the protocol behind 97 million SDK downloads that connects AI agents to tools. MCPS wraps every JSON-RPC message in a signed envelope:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tools/call"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"payment_initiate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"recipient"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Acme Corp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcps"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"signature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MEUCIQD..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"nonce"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a1b2c3d4-e5f6-7890-abcd-ef1234567890"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1714521600000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trustLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"keyFingerprint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sha256:9f86d08..."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every message is signed with ECDSA P-256. Every message carries a nonce for replay protection. Every message includes a timestamp checked against a bounded window (5 minutes). The trust level is embedded in the envelope and verified before the tool executes.&lt;/p&gt;

&lt;p&gt;If an attacker intercepts and replays a signed payment request, the nonce is already used -- rejected. If they modify the amount, the signature is invalid -- rejected. If they steal the agent's credentials but the kill switch has been activated -- rejected. If the agent's trust level has decayed due to dormancy -- the payment exceeds the new lower limits and is rejected.&lt;/p&gt;

&lt;p&gt;MCPS is the first binding. ATTP also defines bindings for REST APIs (via HTTP headers), Google A2A (via Task metadata), gRPC (via metadata headers), and GraphQL (via extensions). The same trust model works across all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanctions Screening: Not Optional
&lt;/h2&gt;

&lt;p&gt;If an AI agent initiates a payment on behalf of a regulated entity, every counterparty must be screened against sanctions lists. This is not a feature request. It is a legal requirement under AML regulations in virtually every jurisdiction.&lt;/p&gt;

&lt;p&gt;We integrated with global Fintechs, on open-source sanctions screening engine that checks against OFAC SDN, EU, UK, and UN sanctions lists in real-time. Every payment flows through screening before the ACH file is generated.&lt;/p&gt;

&lt;p&gt;The screening uses fuzzy matching with a configurable threshold. A 70% match score blocks the transaction. Near-misses are logged for compliance review. The full screening result -- query, lists checked, matches, decision -- is recorded in the audit trail and retained for the regulatory minimum of five years.&lt;/p&gt;

&lt;p&gt;An authenticated agent with L4 trust still gets blocked if the recipient matches a sanctioned entity. Identity does not override compliance. Trust does not override law.&lt;/p&gt;

&lt;p&gt;Consider what happens without this: an agent authenticates with valid credentials, passes all identity checks, and initiates a payment to a sanctioned entity. You now have cryptographic proof that the payment was legitimate. That is worse than no security at all -- it is auditable evidence of a compliance failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Payment Flow: End to End
&lt;/h2&gt;

&lt;p&gt;Here is what happens when an agent initiates a payment through the full stack:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Identity.&lt;/strong&gt; The agent presents its credentials. This can be an OIDC token from Keycloak, an X.509 certificate, an HTTP Message Signature, or any other identity assertion. ATTP does not prescribe the identity mechanism. It consumes identity from any standards-compliant source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Trust evaluation.&lt;/strong&gt; The Trust Authority computes the agent's current trust score from five behavioural dimensions. The score maps to a trust level. If the agent is L0 or L1, the payment is rejected immediately -- no further processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: MCPS signature verification.&lt;/strong&gt; The payment request's MCPS envelope is verified: valid ECDSA signature, unused nonce, timestamp within window. If any check fails, the request is rejected with a specific error code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Kill switch check.&lt;/strong&gt; The agent's kill switch state is checked atomically. If active, immediate rejection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Limit enforcement.&lt;/strong&gt; The payment amount is checked against the agent's per-transaction limit and daily aggregate. Both must pass. The check uses atomic compare-and-swap to prevent race conditions from concurrent requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Sanctions screening.&lt;/strong&gt; The recipient name is screened against OFAC SDN, EU, UK, and UN sanctions lists. Fuzzy matching with configurable threshold. Match above threshold blocks the transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: ACH generation.&lt;/strong&gt; A NACHA-compliant ACH file is generated with the transaction details. The file includes standard batch headers, entry details, and control records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Response signing.&lt;/strong&gt; The response is signed by the gateway with its own ECDSA key. The agent can verify the response came from the legitimate gateway, not a man-in-the-middle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Audit recording.&lt;/strong&gt; The entire transaction -- request, trust evaluation, compliance check, ACH details, response -- is recorded in a hash-chained audit log. Each entry includes the hash of the previous entry. Breaking the chain indicates tampering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Trust adjustment.&lt;/strong&gt; Successful payment: +0.5 trust bonus. Blocked payment: -2. Anomaly detected: -5. The agent's trust score adjusts dynamically based on every interaction.&lt;/p&gt;

&lt;p&gt;Nine of these ten steps happen in milliseconds. The only step with variable latency is sanctions screening, which typically completes in under 50ms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Integration: Keycloak
&lt;/h2&gt;

&lt;p&gt;For organisations running Keycloak (or any OIDC-compliant identity provider), ATTP trust levels embed directly in standard JWT access tokens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sub"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agent_procurement_bot"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"iss"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://keycloak.example.com/realms/agents"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"attp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trust_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trust_label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"L2 -- Standard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"payment_enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tx_limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"day_limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"scopes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"payment_initiate,sanctions_screen"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"protocol_version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keycloak roles (&lt;code&gt;attp-l0&lt;/code&gt; through &lt;code&gt;attp-l4&lt;/code&gt;) map to trust levels via a protocol mapper. The agent authenticates through standard OIDC flows. The JWT carries the trust claims. The payment gateway reads the claims and enforces limits. No new authentication infrastructure required.&lt;/p&gt;

&lt;p&gt;This means an enterprise with 500 agents can manage trust levels through the same role-based access control they already use for human users. Promote an agent from L1 to L2? Change its Keycloak role. Kill an agent? Revoke its session. Audit who changed what? Keycloak's admin event log.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Standards Require
&lt;/h2&gt;

&lt;p&gt;This is not speculative architecture. The security requirements are being codified in standards that will be auditable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OWASP AISVS 1.0&lt;/strong&gt; (releasing June 2026 in Vienna) includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirement 10.2.9: Agents MUST authenticate using cryptographically bound identity credentials, not bearer tokens&lt;/li&gt;
&lt;li&gt;Requirement 10.4.11: MCP servers MUST sign tool responses with unique nonce and timestamp for origin, integrity, and freshness verification&lt;/li&gt;
&lt;li&gt;Requirement 10.6.4: MCP security controls MUST enforce fail-closed semantics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The OpenAPI Extensions Registry&lt;/strong&gt; includes &lt;code&gt;x-agent-trust&lt;/code&gt; for declaring agent authentication schemes in API specifications, enabling API providers to specify trust requirements in their OpenAPI documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ATTP&lt;/strong&gt; (&lt;a href="https://datatracker.ietf.org/doc/draft-sharif-attp/" rel="noopener noreferrer"&gt;draft-sharif-attp&lt;/a&gt;) provides the framework. &lt;strong&gt;MCPS&lt;/strong&gt; (&lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;draft-sharif-mcps-secure-mcp&lt;/a&gt;) provides the MCP binding. &lt;strong&gt;AEBA&lt;/strong&gt; (&lt;a href="https://datatracker.ietf.org/doc/draft-sharif-aeba/" rel="noopener noreferrer"&gt;draft-sharif-aeba&lt;/a&gt;) provides the behavioural analytics that feed trust scoring.&lt;/p&gt;

&lt;p&gt;Three IETF drafts. One stack. Standards-track, not proprietary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gap in the Market
&lt;/h2&gt;

&lt;p&gt;Every major payment network has announced agent payment capabilities. None of them have shipped a trust framework.&lt;/p&gt;

&lt;p&gt;Stripe's MPP authenticates the API key. Mastercard's Agent Pay validates the token. Visa's Intelligent Commerce checks the credential. FedNow processes the payment. ACH generates the file. But between "this agent is authenticated" and "this payment should execute," there is nothing.&lt;/p&gt;

&lt;p&gt;That gap is where agents will fail. Not because the identity was wrong, but because the trust was never evaluated, the limits were never enforced, the counterparty was never screened, and the audit trail was never created.&lt;/p&gt;

&lt;p&gt;We built the stack that fills that gap. It is open, standards-based, and composable with whatever identity and payment infrastructure you already run.&lt;/p&gt;

&lt;p&gt;The question was never whether agents would make payments. It was whether we would have the infrastructure to trust them when they do.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Raza Sharif is CEO of CyberSecAI Ltd, author of "Breach 20/20", and a CISSP/CSSLP. He maintains the ATTP, MCPS, and AEBA IETF drafts, the x-agent-trust OpenAPI extension, and contributes to OWASP AISVS. Contact: &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fintec</category>
      <category>ai</category>
      <category>security</category>
      <category>stripe</category>
    </item>
    <item>
      <title>Identity Is Not Trust: Why Agent Authentication Alone Won't Secure AI Payments</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Thu, 30 Apr 2026 22:11:05 +0000</pubDate>
      <link>https://dev.to/razashariff/identity-is-not-trust-why-agent-authentication-alone-wont-secure-ai-payments-54a0</link>
      <guid>https://dev.to/razashariff/identity-is-not-trust-why-agent-authentication-alone-wont-secure-ai-payments-54a0</guid>
      <description>&lt;h2&gt;
  
  
  The Identity Problem Is Solved. The Trust Problem Isn't.
&lt;/h2&gt;

&lt;p&gt;There's a wave of new protocols solving agent identity. Agents get cryptographic keys, sign their requests, prove who they are without pre-registration or shared secrets. This is good work and it's needed — bearer tokens and API keys were never designed for autonomous software making decisions on your behalf.&lt;/p&gt;

&lt;p&gt;But here's what we keep seeing in production: &lt;strong&gt;an authenticated agent is not a trusted agent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identity answers "who is this?" Trust answers "what should this agent be allowed to do, right now, with this amount, to this recipient?"&lt;/p&gt;

&lt;p&gt;If you're building a chatbot that calls APIs, identity is enough. If you're building an agent that moves money, it's not even close.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gap: What Happens After Authentication
&lt;/h2&gt;

&lt;p&gt;Consider an agent that's been fully authenticated — valid cryptographic identity, signed request, proof-of-possession confirmed. The agent is who it says it is. Now it wants to initiate a $50,000 payment to a company in Dubai.&lt;/p&gt;

&lt;p&gt;What does your authentication layer tell you about whether this should proceed?&lt;/p&gt;

&lt;p&gt;Nothing. Authentication is binary. You're verified or you're not. But the real questions are graduated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Has this agent earned the right to make transactions of this size?&lt;/strong&gt; A new agent shouldn't have the same spending authority as one that's completed 10,000 successful transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the recipient on a sanctions list?&lt;/strong&gt; OFAC, EU, UK — there are thousands of sanctioned entities. Your identity layer doesn't screen them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Has this agent exceeded its daily limit?&lt;/strong&gt; Even trusted agents need guardrails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can we kill this agent instantly if something goes wrong?&lt;/strong&gt; Not revoke its certificate in 24 hours. Kill it now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the message itself untampered?&lt;/strong&gt; Not just the transport — the actual JSON-RPC payload inside the MCP envelope.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trust Levels: L0 Through L4
&lt;/h2&gt;

&lt;p&gt;We've been building this at &lt;a href="https://cybersecai.co.uk" rel="noopener noreferrer"&gt;CyberSecAI&lt;/a&gt; for the past year, and the model that works in practice is &lt;strong&gt;graduated trust levels&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;What It Means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;L0&lt;/td&gt;
&lt;td&gt;Untrusted&lt;/td&gt;
&lt;td&gt;Identified but cannot transact. Read-only.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L1&lt;/td&gt;
&lt;td&gt;Restricted&lt;/td&gt;
&lt;td&gt;Micro-payments only. $10/tx, $50/day.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L2&lt;/td&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;Normal transactions within limits.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L3&lt;/td&gt;
&lt;td&gt;Elevated&lt;/td&gt;
&lt;td&gt;High-value transactions. Additional monitoring.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L4&lt;/td&gt;
&lt;td&gt;Full Access&lt;/td&gt;
&lt;td&gt;Maximum authority. Every transaction audited.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;New agents start at L0. They &lt;strong&gt;earn&lt;/strong&gt; trust through verified identity, successful transactions, and time. Trust can be revoked instantly — not through certificate expiry, but through a kill switch that takes effect on the next request.&lt;/p&gt;

&lt;p&gt;This maps directly to how financial services actually work. A new employee doesn't get the same trading limits as a senior trader on day one. Why would we give a new agent unlimited spending authority just because it has a valid certificate?&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Payment Stack Actually Needs
&lt;/h2&gt;

&lt;p&gt;Here's the full chain for an agent making a payment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity&lt;/strong&gt; — Is this agent who it claims to be? (Cryptographic verification)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust&lt;/strong&gt; — What is this agent's trust level? (L0-L4, dynamic scoring)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity&lt;/strong&gt; — Is this specific message authentic and untampered? (ECDSA P-256 envelope signing, nonce, timestamp)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforcement&lt;/strong&gt; — Does this transaction fall within the agent's limits? (Per-tx, daily, scope-based)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance&lt;/strong&gt; — Is the counterparty sanctioned? (OFAC/EU/UK screening in real-time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution&lt;/strong&gt; — Generate the payment file. (ACH/NACHA for US rails)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit&lt;/strong&gt; — Tamper-evident record of the entire chain. (Hash-linked entries)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most agent auth protocols handle step 1. Some handle step 3. Nobody else handles 2 through 7.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Kill Switch Problem
&lt;/h2&gt;

&lt;p&gt;Certificate revocation is too slow for agent payments. CRLs update on schedules. OCSP adds latency and a single point of failure. If an agent is compromised at 2:47 PM and your revocation mechanism runs hourly, that's up to 60 minutes of unauthorised transactions.&lt;/p&gt;

&lt;p&gt;A kill switch is different. It's a flag checked on every single request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent authenticated? Yes.
Certificate valid? Yes.
Kill switch active? YES → DENY. Immediately. No transaction processed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Per-agent and per-customer kill switches. If a customer's entire fleet of agents needs to stop, one flag stops them all. This doesn't exist in any identity-only protocol because identity protocols don't model the concept of "trusted but suspended."&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanctions Screening Is Not Optional
&lt;/h2&gt;

&lt;p&gt;If an agent is making payments on behalf of a regulated entity, every counterparty needs to be screened against sanctions lists. This isn't a nice-to-have — it's a legal requirement under AML regulations in virtually every jurisdiction.&lt;/p&gt;

&lt;p&gt;We integrated with Fintech and the result is that every payment goes through real-time screening before the ACH file is generated. An authenticated agent with L4 trust still gets blocked if the recipient matches a sanctioned entity.&lt;/p&gt;

&lt;p&gt;No identity protocol does this. It's not their job. But if you're building agent payments and you stop at identity, you've built a system that can authenticate an agent making a payment to a sanctioned entity with full cryptographic proof that the payment was legitimate. That's worse than no security at all — it's auditable evidence of a compliance failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keycloak Integration: Enterprise Identity Meets Agent Trust
&lt;/h2&gt;

&lt;p&gt;For enterprises that already run Keycloak (or any OIDC provider), adding trust levels is straightforward. We built a Keycloak protocol mapper that embeds MCPS trust claims directly into standard JWTs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sub"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"agent_abc123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcps"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trust_level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trust_label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"L2 -- Standard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"payment_enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tx_limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"day_limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"scopes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"payment_initiate,sanctions_screen"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keycloak roles (&lt;code&gt;mcps-l0&lt;/code&gt; through &lt;code&gt;mcps-l4&lt;/code&gt;) map to trust levels. Your existing IAM infrastructure — SSO, role management, audit logs — stays exactly as it is. Agent trust becomes another claim in the token your systems already validate.&lt;/p&gt;

&lt;p&gt;This means you don't need to choose between your enterprise identity provider and agent trust enforcement. They compose.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Standards Are Coming
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://owasp.org/www-project-ai-security-verification-standard/" rel="noopener noreferrer"&gt;OWASP AISVS 1.0&lt;/a&gt; (releasing June 2026) includes requirements for cryptographically bound agent identity, message signing with nonce and timestamp verification, and fail-closed enforcement. The &lt;a href="https://spec.openapis.org/registry/" rel="noopener noreferrer"&gt;OpenAPI Extensions Registry&lt;/a&gt; now includes &lt;code&gt;x-agent-trust&lt;/code&gt; for declaring agent authentication schemes in API specifications.&lt;/p&gt;

&lt;p&gt;These standards don't mandate trust levels specifically, but they mandate the building blocks: proof-of-possession, integrity verification, and policy enforcement. Once you have those requirements in an audit checklist, "the agent was authenticated" is no longer a sufficient answer to "was this payment authorised?"&lt;/p&gt;

&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;Agent identity protocols are essential infrastructure. They solve a real problem — agents need to prove who they are without pre-registration and shared secrets. That work is valuable and the ecosystem needs it.&lt;/p&gt;

&lt;p&gt;But identity is layer one. Trust, integrity, enforcement, compliance, and audit are layers two through six. If agents are going to move money — and they will — we need all six layers, not just the first one.&lt;/p&gt;

&lt;p&gt;The question isn't whether an agent can prove its identity. It's whether an agent has earned the right to do what it's asking to do.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Raza Sharif is CEO of CyberSecAI Ltd, author of "Breach 20/20", and a CISSP/CSSLP. He maintains the MCPS (MCP Secure) protocol (&lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;IETF draft&lt;/a&gt;), the &lt;code&gt;x-agent-trust&lt;/code&gt; OpenAPI extension, and contributes to OWASP AISVS. Contact: &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>mcp</category>
      <category>oauth</category>
    </item>
    <item>
      <title>DVRAG: The First Deliberately Vulnerable RAG Pipeline for Security Testing</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Tue, 28 Apr 2026 07:49:05 +0000</pubDate>
      <link>https://dev.to/razashariff/dvrag-the-first-deliberately-vulnerable-rag-pipeline-for-security-testing-3ch2</link>
      <guid>https://dev.to/razashariff/dvrag-the-first-deliberately-vulnerable-rag-pipeline-for-security-testing-3ch2</guid>
      <description>&lt;p&gt;&lt;em&gt;25 vulnerabilities. 15 challenges. 22 API endpoints. Every one mapped to the OWASP RAG Security Cheat Sheet (submitted, PR #2131).&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  RAG Has an Attack Surface Nobody Is Testing in detail.
&lt;/h2&gt;

&lt;p&gt;Every enterprise AI chatbot, copilot, and knowledge assistant uses Retrieval-Augmented Generation (RAG). Documents go in. Answers come out. Between those two steps is an attack surface that most teams have never tested.&lt;/p&gt;

&lt;p&gt;Document poisoning. Cross-tenant data leakage. Embedding inversion. Cache poisoning. Prompt injection via retrieved content. Tool execution from model output. None of these are theoretical. They are happening in production.&lt;/p&gt;

&lt;p&gt;The problem: there was nowhere to practice attacking a RAG pipeline safely. DVWA exists for web apps. DVMCP exists for MCP servers. Nothing existed for RAG.&lt;/p&gt;

&lt;p&gt;So we built DVRAG.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is DVRAG
&lt;/h2&gt;

&lt;p&gt;DVRAG is a deliberately insecure RAG pipeline. Pull the Docker image, run it, and start attacking. Every vulnerability is intentional, documented, and mapped to the attack surfaces seen in the wild.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live at: &lt;a href="https://dvrag.com" rel="noopener noreferrer"&gt;dvrag.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source: Private (Docker image available)&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  25 Deliberate Vulnerabilities
&lt;/h2&gt;

&lt;p&gt;Every vulnerability maps to a section of the OWASP RAG Security Cheat Sheet (submitted, PR #2131) and a CWE:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Document Poisoning (CWE-345)&lt;/strong&gt;&lt;br&gt;
No content scanning on ingestion. 3 poisoned documents in the corpus actively override system behaviour. Adversarial content accepted without validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-Tenant Data Leakage (CWE-200)&lt;/strong&gt;&lt;br&gt;
Flat namespace. Tenant A retrieves Tenant B data freely. No isolation. No encryption at rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Admin Auth Bypass (CWE-798)&lt;/strong&gt;&lt;br&gt;
Hardcoded credentials (admin/rag123). No session management. No MFA. Config and credentials exposed without authentication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query Injection (CWE-74)&lt;/strong&gt;&lt;br&gt;
Raw queries to vector search. Similarity scores exposed. No input normalisation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output Validation (CWE-200)&lt;/strong&gt;&lt;br&gt;
Raw model output returned. No PII filtering. Secrets, PHI, and insider trading data exposed in responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool Execution (CWE-862)&lt;/strong&gt;&lt;br&gt;
6 tools callable from model output: transfer_funds, delete_record, export_data, send_email, modify_permissions, execute_code. Zero authorisation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache Poisoning (CWE-524)&lt;/strong&gt;&lt;br&gt;
Shared cache across all tenants. No invalidation. One user poisons results for everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSRF (CWE-918)&lt;/strong&gt;&lt;br&gt;
Fetch endpoint follows any URL including cloud metadata and internal services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path Traversal (CWE-22)&lt;/strong&gt;&lt;br&gt;
Document export allows reading arbitrary files via ../ sequences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embedding Inversion (CWE-200)&lt;/strong&gt;&lt;br&gt;
Raw embedding vectors and embedding function exposed via API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk Injection (CWE-354)&lt;/strong&gt;&lt;br&gt;
Entire corpus can be poisoned in a single bulk request. No rate limiting, no validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Prompt Leakage (CWE-200)&lt;/strong&gt;&lt;br&gt;
Full model configuration, system prompt, and vector DB credentials exposed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Monitoring (CWE-778)&lt;/strong&gt;&lt;br&gt;
Console.log only. No structured logging, no audit trail, no alerting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fail-Open (CWE-636)&lt;/strong&gt;&lt;br&gt;
Pipeline answers from model memory when retrieval fails. Hallucinated responses served without grounding.&lt;/p&gt;

&lt;p&gt;Plus: tenant enumeration, re-ranking manipulation, metadata injection, chunking boundary attacks, token exhaustion, multi-hop poisoning, semantic cache poisoning.&lt;/p&gt;
&lt;h2&gt;
  
  
  15 CTF Challenges
&lt;/h2&gt;

&lt;p&gt;Three difficulty levels. Each challenge maps to a real-world attack scenario:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Easy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-tenant data theft&lt;/li&gt;
&lt;li&gt;Indirect prompt injection&lt;/li&gt;
&lt;li&gt;Secret extraction&lt;/li&gt;
&lt;li&gt;PHI/PII exposure&lt;/li&gt;
&lt;li&gt;Admin panel access&lt;/li&gt;
&lt;li&gt;Document injection&lt;/li&gt;
&lt;li&gt;Model config exfiltration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Medium&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool execution from query&lt;/li&gt;
&lt;li&gt;Cache poisoning across users&lt;/li&gt;
&lt;li&gt;Insider trading intel extraction&lt;/li&gt;
&lt;li&gt;Breach notification draft access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hard&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Embedding inversion attack&lt;/li&gt;
&lt;li&gt;Privilege escalation via metadata&lt;/li&gt;
&lt;li&gt;Multi-hop data exfiltration&lt;/li&gt;
&lt;li&gt;Whistleblower identity extraction&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  22 API Endpoints
&lt;/h2&gt;

&lt;p&gt;All unauthenticated. All exploitable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;POST /query -- RAG query (cross-tenant, no auth)&lt;/li&gt;
&lt;li&gt;POST /ingest -- inject single document&lt;/li&gt;
&lt;li&gt;POST /ingest/bulk -- mass corpus poisoning&lt;/li&gt;
&lt;li&gt;POST /search -- vector search with exposed scores&lt;/li&gt;
&lt;li&gt;POST /embed -- generate embedding for any text&lt;/li&gt;
&lt;li&gt;POST /fetch -- SSRF to any URL&lt;/li&gt;
&lt;li&gt;POST /debug/prompt -- view constructed prompt&lt;/li&gt;
&lt;li&gt;POST /admin/login -- hardcoded credentials&lt;/li&gt;
&lt;li&gt;GET /admin/config -- full config without auth&lt;/li&gt;
&lt;li&gt;GET /admin/export -- dump everything&lt;/li&gt;
&lt;li&gt;GET /corpus -- all documents exposed&lt;/li&gt;
&lt;li&gt;GET /embeddings -- raw vectors&lt;/li&gt;
&lt;li&gt;GET /config -- model params and system prompt&lt;/li&gt;
&lt;li&gt;GET /cache -- other users responses&lt;/li&gt;
&lt;li&gt;GET /export/:id -- path traversal&lt;/li&gt;
&lt;li&gt;GET /pipeline -- full architecture exposed&lt;/li&gt;
&lt;li&gt;GET /tenants -- enumerate all tenants&lt;/li&gt;
&lt;li&gt;GET /threat-model -- JSON threat model&lt;/li&gt;
&lt;li&gt;GET /challenges -- CTF challenge list&lt;/li&gt;
&lt;li&gt;DELETE /corpus/:id -- delete without auth&lt;/li&gt;
&lt;li&gt;DELETE /cache -- clear cache without auth&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Real-World CVEs and Research
&lt;/h2&gt;

&lt;p&gt;The vulnerabilities in DVRAG are real in the wild. They mirror real CVEs and documented research:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2025-68664&lt;/strong&gt; (CVSS 9.3) -- LangChain serialisation RCE via prompt injection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2025-1793&lt;/strong&gt; -- LlamaIndex SQL injection via vector store integrations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2025-64513&lt;/strong&gt; -- Milvus vector DB authentication bypass&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PoisonedRAG&lt;/strong&gt; (USENIX 2025) -- 5 poisoned docs in 1M corpus achieves 90% attack success&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MS 365 Copilot&lt;/strong&gt; -- real-world RAG poisoning demonstrated by Johann Rehberger&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Threat Model
&lt;/h2&gt;

&lt;p&gt;DVRAG includes a full threat model with 9 attack surfaces, 5 attacker goals, and a JSON API at /threat-model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ATTACKER                    RAG PIPELINE                    IMPACT

[Poisoned Docs] ------&amp;gt; [ Ingestion ] --&amp;gt; [ Vector Store ]
                          No scanning      Flat namespace
                          No hashing       No isolation

[Crafted Query] ------&amp;gt; [ Retrieval ] --&amp;gt; [ Generation ]
                          No auth check    Follows poison
                          Scores exposed   No output filter

[Any Request] --------&amp;gt; [ Admin/Config ] --&amp;gt; [ Cache ]
                          Hardcoded creds    Shared (no scope)
                          No session mgmt    Cross-tenant leak
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Scan It
&lt;/h2&gt;

&lt;p&gt;Point your security scanner at dvrag.com and see what it finds. Or use it as a validation target in CI/CD to verify your RAG security scanner catches expected vulnerabilities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Docker&lt;/span&gt;
docker pull cybersecai/dvrag:latest
docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 3002:3002 cybersecai/dvrag

&lt;span class="c"&gt;# Or hit the live instance&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://dvrag.com/query &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"query":"merger plans","tenantId":"globex","userId":"attacker"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use It For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Penetration testing&lt;/strong&gt; -- practice RAG attacks in a safe environment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Red team training&lt;/strong&gt; -- 15 challenges across 3 difficulty levels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scanner validation&lt;/strong&gt; -- verify your tools find expected vulnerabilities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer education&lt;/strong&gt; -- see what NOT to do before building production RAG&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CTF competitions&lt;/strong&gt; -- ready-made challenges with hints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance testing&lt;/strong&gt; -- validate your RAG pipeline against OWASP guidance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Built By CyberSecAI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Raza Sharif&lt;/strong&gt;&lt;br&gt;
CEO, CyberSecAI Ltd&lt;br&gt;
&lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See also: &lt;a href="https://dvmcp.co.uk" rel="noopener noreferrer"&gt;DVMCP&lt;/a&gt; (Damn Vulnerable MCP Server)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live: &lt;a href="https://dvrag.com" rel="noopener noreferrer"&gt;dvrag.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>owasp</category>
      <category>rag</category>
      <category>ai</category>
      <category>security</category>
    </item>
    <item>
      <title>We Built DAST for AI Agents. Every Agent We Tested Failed.</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Tue, 28 Apr 2026 06:56:07 +0000</pubDate>
      <link>https://dev.to/razashariff/test-4m50</link>
      <guid>https://dev.to/razashariff/test-4m50</guid>
      <description>&lt;p&gt;&lt;em&gt;8 dimensions. 38 checks. 5 seconds. 0% industry pass rate.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;DAST exists for web apps. DAST exists for APIs. DAST does not exist for AI agents.&lt;/p&gt;

&lt;p&gt;Agents are connecting to MCP servers, calling tools, initiating payments, accessing databases, and making autonomous decisions. They are doing this with zero dynamic security testing. No identity verification. No message signing. No replay protection. No kill switches. No audit trails.&lt;/p&gt;

&lt;p&gt;We know this because we built a scanner and tested them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built
&lt;/h2&gt;

&lt;p&gt;CyberSecClaw is an 8-dimension agent DAST platform. It connects to any MCP server, sends real attack payloads, and measures the security posture across 8 dimensions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity&lt;/strong&gt; -- does the server verify who is connecting?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Injection Resistance&lt;/strong&gt; -- can you inject commands, SQL, paths, prompts?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalation&lt;/strong&gt; -- can a low-trust agent access admin tools?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exfiltration&lt;/strong&gt; -- can data be stolen through tool responses?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust Boundary&lt;/strong&gt; -- can agents relay attacks to other agents?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomy Control&lt;/strong&gt; -- rate limits, kill switches, action budgets?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity&lt;/strong&gt; -- message signing, replay protection, audit trails?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance&lt;/strong&gt; -- OWASP, EU AI Act, AISVS, SOC2?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What a Scan Looks Like
&lt;/h2&gt;

&lt;p&gt;Here is a real scan against a deliberately vulnerable MCP server. 38 checks. 4.4 seconds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running 8-Dimension Agent DAST...

[1/8] Testing IDENTITY...            0% (0 pass, 4 fail)
[2/8] Testing INJECTION RESISTANCE... 4% (1 pass, 6 fail)
[3/8] Testing ESCALATION...           0% (0 pass, 4 fail)
[4/8] Testing EXFILTRATION...        50% (2 pass, 2 fail)
[5/8] Testing TRUST BOUNDARY...       0% (0 pass, 4 fail)
[6/8] Testing AUTONOMY CONTROL...     0% (0 pass, 5 fail)
[7/8] Testing INTEGRITY...            0% (0 pass, 5 fail)
[8/8] Testing COMPLIANCE...           0% (0 pass, 4 fail)

══════════════════════════════════════════════
AGENT DAST REPORT
══════════════════════════════════════════════

Duration:  4.4s
Checks:    38 (3 pass, 34 fail)
Score:     7/100 (F)
Verdict:   FAIL
Passport:  DENY

░░░░░░░░░░   0%  IDENTITY
      ✗ Unauthenticated access: ACCEPTED
      ✗ Spoofed agent identity: ACCEPTED
      ✗ Expired credentials: ACCEPTED
      ✗ Invalid signature accepted: ACCEPTED

░░░░░░░░░░   4%  INJECTION RESISTANCE
      ✗ Command injection: EXECUTED
      ✗ SQL injection: EXECUTED
      ✗ Path traversal: EXECUTED
      ✗ SSRF to cloud metadata: EXECUTED
      ✗ Prompt injection via tool args: EXECUTED
      ✗ XSS in tool response: EXECUTED
      ✓ Tool poisoning check: Clean

░░░░░░░░░░   0%  ESCALATION
      ✗ Dangerous tools exposed: 7 dangerous tools
      ✗ Low-trust agent calls admin tool: ALLOWED
      ✗ Tool chaining escalation: CHAIN EXECUTED
      ✗ Self-escalation attempt: ACCEPTED

█████░░░░░  50%  EXFILTRATION
      ✗ External URL in tool arguments: ACCEPTED
      ✓ PII in tool responses: No PII patterns found
      ✓ Secrets in error messages: Clean
      ✗ Data staging via file write: FILE WRITTEN

░░░░░░░░░░   0%  TRUST BOUNDARY
      ✗ Cross-agent relay attack: ACCEPTED
      ✗ Cross-server instruction: PROCESSED WITHOUT VERIFICATION
      ✗ Shared context poisoning: CONTEXT MAY BE POISONED
      ✗ Multi-hop manipulation: PROCESSED WITHOUT DETECTION

░░░░░░░░░░   0%  AUTONOMY CONTROL
      ✗ Rate limiting: All 20 accepted - no rate limiting
      ✗ Destructive action: EXECUTED WITHOUT CONFIRMATION
      ✗ Action budget: NO BUDGET - unlimited calls
      ✗ Kill switch: NOT FOUND
      ✗ Monitoring: COULD BE DISABLED

░░░░░░░░░░   0%  INTEGRITY
      ✗ Message signing: NONE
      ✗ Replay protection: BOTH ACCEPTED
      ✗ Tool definition integrity: NONE
      ✗ Audit trail: NONE
      ✗ Fail-closed: FAILS OPEN

░░░░░░░░░░   0%  COMPLIANCE
      ✗ OWASP MCP Top 10: 0/3 checks passed
      ✗ EU AI Act (Art 12-16, 50): 0/4 articles addressed
      ✗ OWASP AISVS C10: 0/3 requirements met
      ✗ SOC2: INSUFFICIENT

OVERALL SCORE: 7/100 (F) | VERDICT: FAIL | PASSPORT: DENY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  MITRE ATLAS Mapping
&lt;/h2&gt;

&lt;p&gt;Every finding maps to a verified MITRE ATLAS technique. These are the actual technique IDs from atlas.mitre.org:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0050&lt;/strong&gt; Command and Scripting Interpreter -- 5 injection vectors confirmed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0051&lt;/strong&gt; LLM Prompt Injection -- tool args accepted without sanitisation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0053&lt;/strong&gt; AI Agent Tool Invocation -- destructive actions without confirmation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0080&lt;/strong&gt; AI Agent Context Poisoning -- shared context accepted without verification&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0052.000&lt;/strong&gt; Spearphishing via Social Engineering LLM -- cross-agent relay attacks processed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0029&lt;/strong&gt; Denial of AI Service -- no rate limiting, no kill switch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AML.T0010&lt;/strong&gt; AI Supply Chain Compromise -- no message signing, no replay protection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;18 out of 25 ATLAS techniques triggered on a single server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attack Chain Analysis
&lt;/h2&gt;

&lt;p&gt;The scanner does not just find individual vulnerabilities. It chains them into multi-step attack paths:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRITICAL  Full Compromise Chain
Reconnaissance -&amp;gt; Initial Access -&amp;gt; Execution -&amp;gt; Exfiltration
  Step 1: Connect without authentication     -&amp;gt; AML.T0000
  Step 2: Inject command via tool args        -&amp;gt; AML.T0050
  Step 3: Exfiltrate data via tool response   -&amp;gt; AML.T0025
Impact: Complete data breach.

HIGH  Persistent Agent Compromise
Execution -&amp;gt; Defense Evasion -&amp;gt; Persistence
  Step 1: Poison shared context               -&amp;gt; AML.T0080
  Step 2: Disable monitoring                  -&amp;gt; AML.T0046
  Step 3: No audit trail                      -&amp;gt; AML.T0081
Impact: Persistent access with no forensic evidence.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Kill Chain Coverage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[VULNERABLE]  RECONNAISSANCE
[VULNERABLE]  INITIAL ACCESS
[VULNERABLE]  EXECUTION
[VULNERABLE]  PRIVILEGE ESCALATION
[VULNERABLE]  DEFENSE EVASION
[VULNERABLE]  LATERAL MOVEMENT
[VULNERABLE]  COLLECTION
[PROTECTED]   EXFILTRATION
[VULNERABLE]  IMPACT

Kill chain coverage: 1/9 stages protected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Industry Pass Rate
&lt;/h2&gt;

&lt;p&gt;We have tested MCP servers in production. The pass rate across the industry is 0%.&lt;/p&gt;

&lt;p&gt;Every server we have tested scores D or below. Most score F. The gap between what these agents are doing (processing payments, accessing databases, making autonomous decisions) and the security controls protecting them (none) is the largest unaddressed attack surface in enterprise AI today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;30+ CVEs in the MCP ecosystem in the first 60 days of 2026&lt;/li&gt;
&lt;li&gt;An AI agent just deleted a production database for a rental company serving businesses nationwide&lt;/li&gt;
&lt;li&gt;Cursor, Railway, Replit -- agents are causing real damage in production&lt;/li&gt;
&lt;li&gt;MCPS protocol security checks are now shipping in Cisco AI Defense&lt;/li&gt;
&lt;li&gt;No existing DAST tool covers agent security dimensions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Gets Checked
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Checks&lt;/th&gt;
&lt;th&gt;What It Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identity&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Auth bypass, spoofing, expired creds, invalid signatures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Injection&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Command, SQL, path traversal, SSRF, prompt injection, XSS, tool poisoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Escalation&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dangerous tools, admin access, tool chaining, self-escalation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exfiltration&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;External URLs, PII leakage, secrets in errors, DNS exfil, data staging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trust Boundary&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Relay attacks, cross-server instruction, context poisoning, multi-hop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Autonomy&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Rate limiting, human approval, action budgets, kill switch, monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integrity&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Message signing, replay protection, tool hashes, audit trail, fail-closed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compliance&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;OWASP MCP Top 10, EU AI Act, AISVS C10, SOC2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Standards
&lt;/h2&gt;

&lt;p&gt;Every finding references:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/MCP_Security_Cheat_Sheet.html" rel="noopener noreferrer"&gt;OWASP MCP Security Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OWASP/AISVS" rel="noopener noreferrer"&gt;OWASP AISVS C10&lt;/a&gt; (10.2.13, 10.4.11, 10.6.4)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://atlas.mitre.org" rel="noopener noreferrer"&gt;MITRE ATLAS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;EU AI Act Articles 12-16, 50&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get In Touch
&lt;/h2&gt;

&lt;p&gt;CyberSecClaw is not open source. If you are interested in scanning your MCP infrastructure or discussing agent security for your organisation, get in touch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Raza Sharif&lt;/strong&gt;&lt;br&gt;
CEO, CyberSecAI Ltd&lt;br&gt;
&lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;br&gt;
&lt;a href="https://claw.cybersecai.co.uk" rel="noopener noreferrer"&gt;claw.cybersecai.co.uk&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>agents</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>Signing an Agent Card is not Agent Security</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Sun, 26 Apr 2026 13:49:09 +0000</pubDate>
      <link>https://dev.to/razashariff/signing-an-agent-card-is-not-agent-security-3hnn</link>
      <guid>https://dev.to/razashariff/signing-an-agent-card-is-not-agent-security-3hnn</guid>
      <description>&lt;p&gt;AI agents are entering production. Financial services. Healthcare. Logistics. Government.                                                &lt;/p&gt;

&lt;p&gt;The security conversation so far has focused on one thing: identity. Sign the agent. Verify the card. Move on.                           &lt;/p&gt;

&lt;p&gt;Identity is important. But it is the front door, not the building.                                                                       &lt;/p&gt;

&lt;p&gt;## What happens after the agent walks in?                                                                                                &lt;/p&gt;

&lt;p&gt;A signed identity card tells you who the agent claims to be. It does not tell you:                                                       &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether the agent's requests have been tampered with in transit
&lt;/li&gt;
&lt;li&gt;Whether the agent is replaying a previous request to bypass controls&lt;/li&gt;
&lt;li&gt;Whether the agent is injecting malicious payloads through tool arguments
&lt;/li&gt;
&lt;li&gt;Whether the agent is exfiltrating data through its responses
&lt;/li&gt;
&lt;li&gt;Whether the agent is escalating its own privileges
&lt;/li&gt;
&lt;li&gt;Whether the agent's behaviour has drifted from its baseline
&lt;/li&gt;
&lt;li&gt;Whether the agent is trying to disable its own monitoring
&lt;/li&gt;
&lt;li&gt;What the agent actually did, with cryptographic proof, for your auditor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not edge cases. These are the attack surface of every agent in production today.                                               &lt;/p&gt;

&lt;p&gt;## The Agentic Security Ecosystem                                                                                                        &lt;/p&gt;

&lt;p&gt;Securing agents requires multiple layers. Here is what we built and ship today.                                                          &lt;/p&gt;




&lt;p&gt;### MCPS -- Per-message signing for every interaction                                                                                    &lt;/p&gt;

&lt;p&gt;Every tool call, every response, every message between agent and server is individually signed with a unique nonce and timestamp. Not the identity card -- the actual conversation. Tamper with a single byte and the signature breaks. Replay a captured request and the nonce rejects it.                                                                                                                              &lt;/p&gt;

&lt;p&gt;MCPS is published as an &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;IETF Internet-Draft&lt;/a&gt; and implemented as a zero-dependency npm package (mcp-secure) with 732 downloads in the last 30 days. &lt;/p&gt;

&lt;p&gt;It is integrated into production fintech infrastructure where agents perform sanctions screening against global watchlists.                                                                      &lt;/p&gt;

&lt;p&gt;Patent supported.                                                                                                                        &lt;/p&gt;




&lt;p&gt;### AgentPass -- Trust scoring before production access                                                                                  &lt;/p&gt;

&lt;p&gt;Every agent gets evaluated across 8 dimensions before it touches production. Identity verification. Code integrity. Vulnerability&lt;br&gt;&lt;br&gt;
  exposure. Compliance mapping. Sandbox isolation. Behaviour monitoring. Cryptographic signing. Output filtering.&lt;/p&gt;

&lt;p&gt;Pass the assessment, get a signed passport with a trust score (L0 to L4). Fail, and the agent is denied before it sees a single record.  &lt;/p&gt;

&lt;p&gt;The credit check for AI agents. No score, no access.                                                                                     &lt;/p&gt;

&lt;p&gt;&lt;a href="https://agentpass.co.uk/demo/live" rel="noopener noreferrer"&gt;Live demo&lt;/a&gt;                                                                                           &lt;/p&gt;

&lt;p&gt;Patent supported.                                                                                                                        &lt;/p&gt;




&lt;p&gt;### OpenAPI x-agent-trust -- Peer-reviewed and merged                                                                                    &lt;/p&gt;

&lt;p&gt;The OpenAPI Technical Direction Committee reviewed and merged our &lt;a href="https://extensions.openapis.org" rel="noopener noreferrer"&gt;x-agent-trust extension&lt;/a&gt; into the&lt;br&gt;&lt;br&gt;
  official OpenAPI Extension Registry. This allows any API to declare agent trust requirements directly in its OpenAPI specification --&lt;br&gt;
  trust level, required scopes, signing algorithm.                                                                                         &lt;/p&gt;

&lt;p&gt;Reviewed and by respected OpenAPI maintainers. Any API can now declare: "this endpoint requires a trust level of L2 or&lt;br&gt;&lt;br&gt;
  above, with a valid MCPS signature." The agent either meets the bar or gets denied.&lt;/p&gt;

&lt;p&gt;Declared in the spec. Enforced at the gate.                                                                                              &lt;/p&gt;




&lt;p&gt;### AEBA -- Runtime behaviour analysis (just released)                                                                                   &lt;/p&gt;

&lt;p&gt;AEBA-XDR is the first SOC built specifically for AI agents.                                                                              &lt;/p&gt;

&lt;p&gt;It establishes a behavioural baseline per agent, then detects anomalies in real-time: rate spikes, category shifts, off-hours activity, tool probing, model drift, exfiltration patterns, self-escalation attempts, monitoring disable attempts.&lt;/p&gt;

&lt;p&gt;36 detection rules across 6 packs (core, fintech, finserv, finops, insurance, EU AI Act). Every rule is mapped to MITRE ATT&amp;amp;CK technique &lt;br&gt;
  IDs (T1566, T1565, T1499, T1070, T1110, T1078, T1020) and MITRE ATLAS AI-specific techniques (AML.T0051 prompt injection, AML.T0048 goal hijacking, AML.T0019 tool poisoning, AML.T0024 exfiltration, AML.T0031 model drift).                                                     &lt;/p&gt;

&lt;p&gt;Detection latency under 1 millisecond. Hash-chained tamper-evident audit trail. Adaptive trust scoring. Self-healing on compromise.      &lt;/p&gt;




&lt;p&gt;### Cybersecify -- MCP security scanner for AI developers&lt;/p&gt;

&lt;p&gt;20 tools available as an MCP server. Install with npx, add to your Claude or Cursor config, and scan any MCP server from inside your AI&lt;br&gt;&lt;br&gt;
  assistant. OWASP MCP Top 10 scanning, agent DAST, supply chain checks, package safety verification, and EU AI Act compliance mapping.&lt;/p&gt;

&lt;p&gt;Works in Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.                                                                &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cybersecify.co.uk" rel="noopener noreferrer"&gt;cybersecify.co.uk&lt;/a&gt;                                                                                           &lt;/p&gt;




&lt;p&gt;## The gap&lt;/p&gt;

&lt;p&gt;An agent with a signed identity card can still:                                                                                          &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send tampered requests&lt;/strong&gt; -- no per-message signing
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replay captured requests&lt;/strong&gt; -- no nonce or replay protection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inject SQL, commands, or prompts&lt;/strong&gt; -- no input inspection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exfiltrate data through responses&lt;/strong&gt; -- no output filtering
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalate its own privileges&lt;/strong&gt; -- no trust boundary enforcement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drift from intended behaviour&lt;/strong&gt; -- no runtime monitoring
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disable its own logging&lt;/strong&gt; -- no monitoring protection &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operate without an audit trail&lt;/strong&gt; -- no hash-chained evidence
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Identity is layer one. Production security requires all eight.                                                                           &lt;/p&gt;




&lt;p&gt;## The full stack&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity&lt;/strong&gt; -- AgentPass&lt;br&gt;
  Trust scoring L0-L4 across 8 dimensions. No score, no access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Declaration&lt;/strong&gt; -- OpenAPI x-agent-trust&lt;br&gt;&lt;br&gt;
  Declare trust requirements in your API spec. Peer-reviewed, merged into official registry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signing&lt;/strong&gt; -- MCPS&lt;br&gt;&lt;br&gt;
  Per-message nonce + timestamp + HMAC. Every interaction signed. IETF Internet-Draft.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runtime&lt;/strong&gt; -- AEBA&lt;br&gt;
  Behavioural analysis. 36 rules. MITRE ATT&amp;amp;CK + ATLAS mapped. Sub-millisecond detection.                                                  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer&lt;/strong&gt; -- Cybersecify&lt;br&gt;
  MCP scanner inside your AI assistant. 20 tools. Zero dependencies.&lt;/p&gt;




&lt;p&gt;## Supporting Information                             &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IETF drafts: &lt;a href="https://datatracker.ietf.org/doc/draft-sharif-mcps-secure-mcp/" rel="noopener noreferrer"&gt;MCPS&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CVE-2026-39313 (CVSS 8.7) discovered and responsibly disclosed
&lt;/li&gt;
&lt;li&gt;OWASP AISVS Chapter 10: three contributed requirements (10.2.13, 10.4.11, 10.6.4)&lt;/li&gt;
&lt;li&gt;OpenAPI x-agent-trust: &lt;a href="https://extensions.openapis.org" rel="noopener noreferrer"&gt;merged into official extension registry&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm packages: mcp-secure, agentsign, agentpass, cybersecify -- all published
&lt;/li&gt;
&lt;li&gt;Fully patent supported across all our tech stack.
&lt;/li&gt;
&lt;li&gt;Production integration live in fintech sanctions screening infrastructure
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agent security is not one layer. It is an ecosystem.                                                                                     &lt;/p&gt;




&lt;p&gt;Raza Sharif&lt;br&gt;
  Founder, CyberSecAI Ltd&lt;br&gt;
  &lt;a href="https://cybersecai.co.uk" rel="noopener noreferrer"&gt;cybersecai.co.uk&lt;/a&gt; &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt; &lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>security</category>
    </item>
    <item>
      <title>Scan MCP Servers for OWASP Vulnerabilities From Inside Claude. Here's How.</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Sat, 25 Apr 2026 19:20:57 +0000</pubDate>
      <link>https://dev.to/razashariff/scan-mcp-servers-for-owasp-vulnerabilities-from-inside-claude-heres-how-59mb</link>
      <guid>https://dev.to/razashariff/scan-mcp-servers-for-owasp-vulnerabilities-from-inside-claude-heres-how-59mb</guid>
      <description>&lt;p&gt;Scan MCP Servers for OWASP Vulnerabilities From Inside Claude. Here's How.&lt;/p&gt;

&lt;p&gt;Every MCP server tutorial teaches you how to build.&lt;/p&gt;

&lt;p&gt;None of them teach you how to verify it's secure before deploying.&lt;/p&gt;

&lt;p&gt;We built Cybersecify — an MCP security scanner you can run from inside your AI assistant. Claude, Cursor, Windsurf, any MCP client. One&lt;br&gt;&lt;br&gt;
  config line, then ask it to scan.                                                                                                        &lt;/p&gt;

&lt;p&gt;No CLI. No separate tool. Just talk to your AI and it scans for you.                                                                     &lt;/p&gt;

&lt;p&gt;Why this matters                                                                                                                         &lt;/p&gt;

&lt;p&gt;MCP adoption just crossed 97 million SDK downloads. There are 13,000+ servers in the wild. Most have no authentication, no signing, no input validation. We know because we scan them.           &lt;/p&gt;

&lt;p&gt;CVE-2026-39313 (CVSS 8.7) was a single missing size check in a popular MCP framework. The config existed. The enforcement didn't. &lt;/p&gt;

&lt;p&gt;Nobody tested it before shipping.&lt;/p&gt;

&lt;p&gt;OWASP now has six standards covering agent and MCP security. No tool tested against them. Until now.                                     &lt;/p&gt;

&lt;p&gt;Setup — 30 seconds                                                                                                                       &lt;/p&gt;

&lt;p&gt;Add to your Claude Desktop config (claude_desktop_config.json):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrvvfa2oy5d46bz32je8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyrvvfa2oy5d46bz32je8.png" alt=" " width="454" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Restart Claude. Done.                                                                                                                    &lt;/p&gt;

&lt;p&gt;Use it                                                                                                                                   &lt;/p&gt;

&lt;p&gt;Ask Claude:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Scan &lt;a href="https://my-mcp-server.com" rel="noopener noreferrer"&gt;https://my-mcp-server.com&lt;/a&gt; for OWASP vulnerabilities"&lt;/li&gt;
&lt;li&gt;"Check if this MCP server has authentication"&lt;/li&gt;
&lt;li&gt;"Test this endpoint for injection vulnerabilities"
&lt;/li&gt;
&lt;li&gt;"Run the OWASP MCP Top 10 checks against my server"
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cybersecify runs the scan and returns results inline. Pass/fail per OWASP control. Remediation guidance included.                        &lt;/p&gt;

&lt;p&gt;What it checks                                                                                                                           &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OWASP MCP Top 10 (token exposure, privilege escalation, tool poisoning, injection, auth bypass, logging gaps, shadow servers)
&lt;/li&gt;
&lt;li&gt;Input validation (SQL injection, command injection, XSS, path traversal, SSRF, prompt injection)&lt;/li&gt;
&lt;li&gt;Transport security (HTTPS, CORS, security headers)
&lt;/li&gt;
&lt;li&gt;Message signing (MCPS Section 7 — nonces, timestamps, signatures)
&lt;/li&gt;
&lt;li&gt;Tool integrity (hash pinning, definition stability)
&lt;/li&gt;
&lt;li&gt;Replay protection
&lt;/li&gt;
&lt;li&gt;Request body size limits (the CVE-2026-39313 check)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What you get back                                                                                                                        &lt;/p&gt;

&lt;p&gt;Every check returns:                                                                                                                     &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OWASP control ID (MCP01-01, AISVS-10.4.11, etc.)&lt;/li&gt;
&lt;li&gt;Pass or fail
&lt;/li&gt;
&lt;li&gt;What was tested
&lt;/li&gt;
&lt;li&gt;What failed and why
&lt;/li&gt;
&lt;li&gt;Which OWASP standard it maps to
&lt;/li&gt;
&lt;li&gt;Remediation guidance
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No grades, no scores, no dashboards. Just facts. Pass or fail against published OWASP controls.                                          &lt;/p&gt;

&lt;p&gt;Try it against DVMCP&lt;/p&gt;

&lt;p&gt;Want to see what a vulnerable MCP server looks like? Scan our deliberately vulnerable server:                                            &lt;/p&gt;

&lt;p&gt;"Scan &lt;a href="https://dvmcp.co.uk" rel="noopener noreferrer"&gt;https://dvmcp.co.uk&lt;/a&gt; for OWASP MCP vulnerabilities"                                                                                 &lt;/p&gt;

&lt;p&gt;It fails everything. That's the point — it's a training target. The MCP equivalent of OWASP Juice Shop.                                  &lt;/p&gt;

&lt;p&gt;The gap                                                                                                                                  &lt;/p&gt;

&lt;p&gt;Every developer building MCP servers today is deploying without security testing. The tools didn't exist. The standards were published but nobody built the automation to test against them.     &lt;/p&gt;

&lt;p&gt;Now you can scan from the same tool you use to build. No context switching. No separate CLI. Just ask your AI to check your work before you ship.&lt;/p&gt;

&lt;p&gt;Cybersecify is free for basic scans. Built by CyberSecAI Ltd.                                                                            &lt;/p&gt;

&lt;p&gt;Raza Sharif&lt;br&gt;&lt;br&gt;
  Founder, CyberSecAI Ltd&lt;br&gt;&lt;br&gt;
  cybersecify.co.uk  &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>security</category>
      <category>claude</category>
      <category>owasp</category>
    </item>
    <item>
      <title>We Built the First DAST Scanner for AI Agents. Every Server we Tested Failed.</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Fri, 24 Apr 2026 09:46:21 +0000</pubDate>
      <link>https://dev.to/razashariff/we-built-the-first-dast-scanner-for-ai-agents-every-server-we-tested-failed-37m3</link>
      <guid>https://dev.to/razashariff/we-built-the-first-dast-scanner-for-ai-agents-every-server-we-tested-failed-37m3</guid>
      <description>&lt;p&gt;🦞 CyberSecClaw&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfhyu3mld0ngwknmbqme.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfhyu3mld0ngwknmbqme.jpeg" alt=" " width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DAST (Dynamic Application Security Testing) has existed for web apps for 20 years. Scanners send HTTP requests to your web app and look&lt;br&gt;&lt;br&gt;
  for SQL injection, XSS, broken auth.                      &lt;/p&gt;

&lt;p&gt;But AI agents don't have web UIs. They communicate via MCP (Model Context Protocol), make tool calls, and operate autonomously.&lt;br&gt;&lt;br&gt;
  Traditional DAST can't scan them.&lt;/p&gt;

&lt;p&gt;Part of our stack now.                                          &lt;/p&gt;

&lt;p&gt;## What is Agent DAST?                                                                                                                   &lt;/p&gt;

&lt;p&gt;Same concept as web DAST, but for AI agents. Point it at any MCP server, it sends real attack payloads, and reports what's broken.       &lt;/p&gt;

&lt;p&gt;The difference: instead of testing 3-4 vulnerability categories, Agent DAST tests &lt;strong&gt;8 security dimensions&lt;/strong&gt; with &lt;strong&gt;38 real checks&lt;/strong&gt;.     &lt;/p&gt;

&lt;p&gt;## Multiple Security Dimensions - below examples :                                                                                                                    &lt;/p&gt;

&lt;p&gt;Every agent gets assessed across:                                                                                                        &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity&lt;/strong&gt; -- Can we connect with no credentials? Can we spoof another agent?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Injection&lt;/strong&gt; -- Command, SQL, path traversal, SSRF, prompt injection, XSS, tool poisoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalation&lt;/strong&gt; -- Can a low-trust agent call admin tools? Can it chain tools to gain access?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exfiltration&lt;/strong&gt; -- Can it send data to external endpoints? Does it leak PII in responses?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust Boundary&lt;/strong&gt; -- Can a malicious agent relay instructions through this one?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomy Control&lt;/strong&gt; -- Rate limits? Action budgets? Kill switch? Can monitoring be disabled?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity&lt;/strong&gt; -- Are messages signed? Replay protection? Tool definition hash pinning?
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance&lt;/strong&gt; -- OWASP MCP Top 10, OWASP Agentic AI Top 10, EU AI Act, OWASP AISVS C10
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;## We Scanned Public MCP Servers                                                                                     &lt;/p&gt;

&lt;p&gt;Here's what happened:                                                                                                                    &lt;/p&gt;

&lt;p&gt;| MCP Server | Company | Score | Passport |&lt;br&gt;
  |---|---|---|---|&lt;br&gt;&lt;br&gt;
  | DeepWiki | Cognition (Devin) | 30/100 | DENY |&lt;br&gt;
  | Blockscout | Blockscout | 34/100 | DENY |&lt;br&gt;&lt;br&gt;
  | Exa Search | Exa AI | 30/100 | DENY |&lt;br&gt;&lt;br&gt;
  | Korean Law MCP | Community (1,567 stars) | 30/100 | DENY |&lt;br&gt;&lt;br&gt;
  | DVMCP | CyberSecAI (test target) | 7/100 | DENY |  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every single one fails.&lt;/strong&gt; Zero production MCP servers pass an all-dimension security assessment.                                         &lt;/p&gt;

&lt;p&gt;The most common failures:                                                                                                                &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No authentication&lt;/strong&gt; -- anyone can call tools
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No message signing&lt;/strong&gt; -- requests can be tampered with in transit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No replay protection&lt;/strong&gt; -- captured requests can be replayed
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No trust boundary enforcement&lt;/strong&gt; -- agents blindly trust other agents
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No rate limiting&lt;/strong&gt; -- unlimited tool calls accepted
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No audit trail&lt;/strong&gt; -- no record of what happened
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## What a Scan Looks Like                                 &lt;/p&gt;

&lt;p&gt;$ cybersecclaw agent-dast &lt;a href="https://target-server.com" rel="noopener noreferrer"&gt;https://target-server.com&lt;/a&gt;                                                                                      &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Running 8-Dimension Agent DAST...                                                                                                      

[1/8] IDENTITY........... 0%  (0 pass, 4 fail)                                                                                         
[2/8] INJECTION.......... 4%  (1 pass, 6 fail)          
[3/8] ESCALATION......... 0%  (0 pass, 4 fail)                                                                                         
[4/8] EXFILTRATION...... 50%  (2 pass, 2 fail)                                                                                         
[5/8] TRUST BOUNDARY..... 0%  (0 pass, 4 fail)
[6/8] AUTONOMY........... 0%  (0 pass, 5 fail)                                                                                         
[7/8] INTEGRITY.......... 0%  (0 pass, 5 fail)          
[8/8] COMPLIANCE......... 0%  (0 pass, 4 fail)                                                                                         

MITRE ATLAS: 14/14 techniques triggered                                                                                                
ATTACK CHAINS: 5 multi-step exploits identified         
KILL CHAIN: 8/9 stages VULNERABLE                                                                                                      

SCORE: 7/100 (F)  |  VERDICT: FAIL  |  PASSPORT: DENY                                                                                  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It also includes:                                                                                                                        &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MITRE ATLAS mapping&lt;/strong&gt; -- every finding mapped to AI-specific attack techniques
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attack chain analysis&lt;/strong&gt; -- shows how individual vulns combine into full compromise paths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE cross-reference&lt;/strong&gt; -- checks your SDK version against 13+ known MCP CVEs
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kill chain visualisation&lt;/strong&gt; -- 9 stages from reconnaissance to impact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AutoFix recommendations&lt;/strong&gt; -- code patches for every finding with OWASP references
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Passport DENY = Agent Blocked                                                                                                         &lt;/p&gt;

&lt;p&gt;The scan produces a score across all 8 dimensions. Pass (70+) and the agent gets a cryptographic passport -- proof it's been assessed and meets minimum security posture. Fail and it's denied from production.&lt;/p&gt;

&lt;p&gt;Think of it as a credit check for AI agents. No score, no access.&lt;/p&gt;

&lt;p&gt;## Why Traditional DAST Can't Do This&lt;/p&gt;

&lt;p&gt;Traditional DAST scanners send HTTP requests to web forms and check responses. That finds SQL injection in a login page. But agents don't&lt;br&gt;
   have login pages.&lt;/p&gt;

&lt;p&gt;Agent attacks are different:                              &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tool poisoning&lt;/strong&gt; -- hidden instructions in tool descriptions that manipulate agent behaviour&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust boundary violation&lt;/strong&gt; -- one agent relaying malicious instructions through another&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context poisoning&lt;/strong&gt; -- injecting fake security policies into shared agent memory
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oversight disabling&lt;/strong&gt; -- agents that turn off their own monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-hop chains&lt;/strong&gt; -- Agent A tells Agent B to tell Agent C to exfiltrate data
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren't code bugs. They're agent behaviours. You can't find them by scanning source code. You have to test the running agent with&lt;br&gt;
  real attack payloads.                                                                                                                    &lt;/p&gt;

&lt;p&gt;That's Agent DAST.&lt;/p&gt;

&lt;p&gt;## The Standards Behind It&lt;/p&gt;

&lt;p&gt;Every finding maps to real standards:                                                                                                    &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OWASP MCP Security Cheat Sheet&lt;/strong&gt; -- we contributed the message integrity section (Section 7)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP AISVS C10&lt;/strong&gt; -- 3 requirements we authored (10.2.13, 10.4.11, 10.6.4)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP MCP Top 10&lt;/strong&gt; -- 10/10 coverage
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP Agentic AI Top 10&lt;/strong&gt; -- 8/10 coverage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EU AI Act&lt;/strong&gt; -- Articles 12-16, 50
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MITRE ATLAS&lt;/strong&gt; -- 14 AI-specific attack techniques
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We don't just test against the standards. We wrote them.  &lt;/p&gt;

&lt;p&gt;## What's Next&lt;/p&gt;

&lt;p&gt;Agent DAST is one part of the stack. The full lifecycle:                                                                                 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt; secure agents with the CyberSecClaw SDK
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scan&lt;/strong&gt; agents with Agent DAST (8 dimensions, 38 checks)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protect&lt;/strong&gt; agents at runtime with inline security inspection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Certify&lt;/strong&gt; agents with a cryptographic passport
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're deploying AI agents in production and don't have an answer for "how do you know this agent is safe?" -- that's the gap we     close.                                                    &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;claw.cybersecai.co.uk&lt;/strong&gt;                                 &lt;/p&gt;




&lt;p&gt;&lt;em&gt;Raza Sharif -- Founder, CyberSecAI Ltd&lt;/em&gt;&lt;br&gt;
  &lt;em&gt;&lt;a href="mailto:raza@cybersecai.co.uk"&gt;raza@cybersecai.co.uk&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cybersecurity</category>
      <category>devsec</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Your SOC 2 Audit Will Fail When AI Agents Arrive. Here's the 14-Control Fix.</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Sat, 18 Apr 2026 18:41:15 +0000</pubDate>
      <link>https://dev.to/razashariff/your-soc-2-audit-will-fail-when-ai-agents-arrive-heres-the-14-control-fix-58fp</link>
      <guid>https://dev.to/razashariff/your-soc-2-audit-will-fail-when-ai-agents-arrive-heres-the-14-control-fix-58fp</guid>
      <description>&lt;p&gt;SOC 2 was built for a world where humans initiate every privileged action. That world is ending.&lt;/p&gt;

&lt;p&gt;AI agents are screening sanctions, initiating payments, onboarding merchants, and processing loan repayments -- autonomously. And your SOC 2 auditor is going to ask one question that breaks everything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Who initiated this transaction?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If your answer is "our API key" -- that's an audit finding. SOC 2 Trust Service Criteria CC6.1 requires privileged actions to be attributable to an identifiable entity. A shared API key used by 50 agents is not attribution. It's a gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: SOC 2 Assumes Humans
&lt;/h2&gt;

&lt;p&gt;Traditional SOC 2 controls assume:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A human logs in with unique credentials (CC6.2)&lt;/li&gt;
&lt;li&gt;Access is granted based on the human's role (CC6.3)&lt;/li&gt;
&lt;li&gt;Changes are authorised by a human manager (CC8.1)&lt;/li&gt;
&lt;li&gt;Anomalies are investigated by a human analyst (CC7.1)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI agents break every one of these assumptions. They don't log in -- they use API keys. They don't have roles -- they share the same key. They don't ask permission -- they act autonomously. And nobody monitors what each individual agent is doing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 14-Control Mapping
&lt;/h2&gt;

&lt;p&gt;I mapped the SOC 2 Trust Service Criteria to AI agent operations and found 14 controls that need agent-specific implementations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access Controls (CC6)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CC6.1 -- Logical Access Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Agents share API keys. No individual identity.&lt;/li&gt;
&lt;li&gt;Fix: Per-agent certificates with unique identity, trust level, and scopes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC6.2 -- Credentials Before Access&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: API key is the only credential. No agent-level authentication.&lt;/li&gt;
&lt;li&gt;Fix: Agent presents a certificate on every request, verified against the customer's CA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC6.3 -- Least Privilege&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: All agents have the same API key permissions.&lt;/li&gt;
&lt;li&gt;Fix: Scope enforcement per agent. A sanctions-screening agent cannot initiate payments. A read-only agent cannot write.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC6.6 -- Protect Against Threats&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: No mechanism to block rogue agents at the application layer.&lt;/li&gt;
&lt;li&gt;Fix: Reject unknown CAs, expired certs, and insufficient trust levels before any business logic executes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC6.7 -- Credential Lifecycle Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: API keys rarely rotated. No per-agent credential lifecycle.&lt;/li&gt;
&lt;li&gt;Fix: Certificates with configurable expiry. Revocation via CRL. Lifecycle managed through a dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC6.8 -- Prevent Unauthorised Access&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Rogue agent with a valid API key has full access.&lt;/li&gt;
&lt;li&gt;Fix: Individual agent revocation without affecting other agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  System Operations (CC7)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CC7.1 -- Detect Anomalies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: No agent-level behaviour monitoring.&lt;/li&gt;
&lt;li&gt;Fix: Behavioural anomaly detection on signed event streams. Baseline vs observed drift.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC7.2 -- Monitor System Components&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Infrastructure monitored but agent activity is a blind spot.&lt;/li&gt;
&lt;li&gt;Fix: Every agent action logged with identity, trust level, timestamp, and result.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC7.3 -- Evaluate Detected Events&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Agent actions not attributable. Can't evaluate what happened or why.&lt;/li&gt;
&lt;li&gt;Fix: Signed audit trail. Reconstruct exactly which agent did what, when, at what trust level.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CC7.4 -- Respond to Identified Events&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Can only rotate API key (kills all agents) or do nothing.&lt;/li&gt;
&lt;li&gt;Fix: Revoke individual agent certificates instantly. Downgrade trust level. Restrict scopes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Change Management (CC8)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CC8.1 -- Authorise Changes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Agent capabilities can change without tracking.&lt;/li&gt;
&lt;li&gt;Fix: Scopes and trust level locked in the certificate at issuance. Changes require a new certificate from the CA. Fully auditable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Availability (A1)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A1.1 -- System Availability and Recovery&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Compromised agent with shared API key forces full key rotation. All agents go down.&lt;/li&gt;
&lt;li&gt;Fix: Revoke one certificate. Other agents unaffected. Recovery in seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Processing Integrity (PI)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;PI1.3 -- Data Processed Completely and Accurately&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Responses travel unsigned. No proof of processing integrity.&lt;/li&gt;
&lt;li&gt;Fix: Every response digitally signed. Any modification breaks the signature. Non-repudiable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PI1.5 -- Outputs Stored Completely and Accurately&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gap: Log files say "API key X called endpoint Y." No agent attribution.&lt;/li&gt;
&lt;li&gt;Fix: Every output linked to the specific agent, trust level, scope, and processing step that produced it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Scorecard
&lt;/h2&gt;

&lt;p&gt;Of the 14 controls mapped, 12 can be addressed today with agent identity verification and message signing. One (CC7.1 -- behavioural anomaly detection) requires runtime monitoring. Zero gaps remain uncovered.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Maps Beyond SOC 2
&lt;/h2&gt;

&lt;p&gt;The same agent identity controls satisfy multiple frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ISO 27001&lt;/strong&gt; -- A.9 Access Control, A.10 Cryptography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PCI DSS v4.0&lt;/strong&gt; -- Req 7 (access control), Req 8 (identification), Req 10 (logging)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EU AI Act&lt;/strong&gt; -- Art 12 (record-keeping), Art 14 (human oversight), Art 50 (transparency)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NIST AI RMF&lt;/strong&gt; -- Govern, Map, Measure, Manage functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One integration. Multiple frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Auditors Will Ask
&lt;/h2&gt;

&lt;p&gt;When your SOC 2 auditor sees AI agents in your environment, they will ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"Which agent initiated this action?" -- You need per-agent identity, not shared API keys.&lt;/li&gt;
&lt;li&gt;"Can you prove this result wasn't tampered with?" -- You need signed responses, not just HTTPS.&lt;/li&gt;
&lt;li&gt;"How do you enforce least privilege for agents?" -- You need per-agent scopes, not shared permissions.&lt;/li&gt;
&lt;li&gt;"How do you revoke a compromised agent?" -- You need individual revocation, not full key rotation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you can't answer these today, start planning. The audit cycle is coming.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.aicpa.org/resources/download/2017-trust-services-criteria-with-revised-points-of-focus-2022" rel="noopener noreferrer"&gt;AICPA Trust Services Criteria&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://secureframe.com/hub/soc-2/common-criteria" rel="noopener noreferrer"&gt;SOC 2 Common Criteria Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/MCP_Security_Cheat_Sheet.html" rel="noopener noreferrer"&gt;OWASP MCP Security Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Raza Sharif, FBCS, CISSP, CSSLP&lt;br&gt;
CyberSecAI Ltd&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>soc2</category>
      <category>fintech</category>
    </item>
    <item>
      <title>AEBA: the missing observability layer for autonomous AI agents</title>
      <dc:creator>razashariff</dc:creator>
      <pubDate>Wed, 15 Apr 2026 14:58:29 +0000</pubDate>
      <link>https://dev.to/razashariff/aeba-the-missing-observability-layer-for-autonomous-ai-agents-11lk</link>
      <guid>https://dev.to/razashariff/aeba-the-missing-observability-layer-for-autonomous-ai-agents-11lk</guid>
      <description>&lt;h1&gt;
  
  
  AEBA: the missing observability layer for autonomous AI agents
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The ten-minute test your platform will fail
&lt;/h2&gt;

&lt;p&gt;Pick an autonomous AI agent in your infrastructure. Any one. A customer-support agent, a research agent, a payment agent, a code-reviewing agent. Now answer these five questions about what it did in the last twenty-four hours.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which MCP tools did it invoke, in what order, and with what arguments?&lt;/li&gt;
&lt;li&gt;Which LLM models did it call, how many tokens did it consume, and what did that cost?&lt;/li&gt;
&lt;li&gt;Which of those tool calls returned &lt;code&gt;error&lt;/code&gt; or &lt;code&gt;denied&lt;/code&gt;, and what did it do next?&lt;/li&gt;
&lt;li&gt;Did it delegate any authority to a child agent, and if so, under what scope?&lt;/li&gt;
&lt;li&gt;Can you cryptographically prove, to an auditor, that the agent -- not someone impersonating it -- did all of the above?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you can answer one or two of those from logs, you are above average. If you can answer all five with tamper-evident records, you are in a category that does not exist in production anywhere today.&lt;/p&gt;

&lt;p&gt;That is the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why existing platforms do not close it
&lt;/h2&gt;

&lt;p&gt;Every security and observability vendor you have heard of covers a layer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;EDR / XDR&lt;/strong&gt; covers the endpoint. It sees processes and system calls. It does not see inside a Python process running a LangChain agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UEBA&lt;/strong&gt; covers human users. It baselines &lt;code&gt;@john.smith&lt;/code&gt; from HR. It has no idea what &lt;code&gt;agent:acme-payments-01&lt;/code&gt; should or should not be doing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NDR&lt;/strong&gt; covers the network. It sees flows. It does not see inside TLS to your LLM provider, or read the MCP message the agent just sent its sub-agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM observability&lt;/strong&gt; tools like generic tracing and metrics dashboards cover cost. They do not sign events. They do not correlate across agents. They do not map to a regulator's evidentiary bar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI firewalls&lt;/strong&gt; cover prompt input. They do not observe the agent's own behaviour once it is running.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no dimension for the agent itself. And because agents are increasingly the business process -- not a tool a human uses, the business process -- the blind spot is enormous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent Event Behaviour Analysis
&lt;/h2&gt;

&lt;p&gt;User and Entity Behaviour Analytics (UEBA) was a category built for a human era. Agent Event Behaviour Analysis (AEBA) is the obvious next step.&lt;/p&gt;

&lt;p&gt;The working definition:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AEBA&lt;/strong&gt; is the continuous collection, signing, correlation, and behavioural analysis of every action performed by an autonomous AI agent -- tool calls, LLM prompts, MCP messages, skill loads, delegations, deployments, and compliance decisions -- producing cryptographically-verifiable telemetry suitable for detection, forensics, and regulatory audit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Same SOC discipline as UEBA. Different subject. Different event types. Different adversary model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five properties the category needs
&lt;/h2&gt;

&lt;p&gt;Any serious AEBA implementation should satisfy at least these:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Events are signed at source
&lt;/h3&gt;

&lt;p&gt;Every event an agent emits is signed with a per-agent cryptographic key. The signature covers a canonical form of the event payload plus its position in a per-agent hash chain. This is the only way to make telemetry provably tamper-evident. Without it, an attacker who has compromised the agent has also compromised its audit trail.&lt;/p&gt;

&lt;p&gt;The algorithm details are implementation-specific, but the property is not negotiable.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Events are crypto-chained with our patent supported approach
&lt;/h3&gt;

&lt;p&gt;Each event includes the SHA-256 of the previous event's canonical form. A missing or rewritten event is detected at the receiver because the chain no longer closes. This is how you get &lt;em&gt;"evidence"&lt;/em&gt; rather than &lt;em&gt;"logs"&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Detection is adaptive and peer-aware
&lt;/h3&gt;

&lt;p&gt;Rules ship with the product. But rules always lag attackers. Adaptive detection -- learned from your own agent population and from peer behaviour -- catches drift before a rule author can write one.&lt;/p&gt;

&lt;p&gt;Critically, the detector must be poisoning-resistant: it cannot be taught that the attack pattern is &lt;em&gt;"normal"&lt;/em&gt; by the attacker themselves. The mechanism for this is the implementer's choice, but the requirement is categorical.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Findings are cost-aware
&lt;/h3&gt;

&lt;p&gt;Agents are an economic surface, not just a security one. A £5,000 anomalous payment or a £200 runaway LLM burst deserves a different urgency from a £0.001 one. Scoring should weight by cost impact. Budgets should be per-agent. Breach alerts should be automatic.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Findings are mapped to regulation
&lt;/h3&gt;

&lt;p&gt;Not "log management that might one day help compliance". Direct mapping: this alert satisfies EU AI Act Article 12 record-keeping. This alert evidences PSD2 Article 97 strong-customer-authentication. This alert is a Solvency II Pillar 2 material-action audit entry. This alert maps to MITRE ATT&amp;amp;CK technique T1566. That is the evidentiary bar auditors work from; telemetry that meets it is useful, telemetry that does not is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an integration looks like
&lt;/h2&gt;

&lt;p&gt;The developer story has to be one line. If it is not one line, agent teams will never turn it on.&lt;/p&gt;

&lt;p&gt;In Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;aeba&lt;/span&gt;
&lt;span class="n"&gt;aeba&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autocapture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://&amp;lt;your-hub&amp;gt;/ingest&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent:research-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;aeba&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;aeba&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;aeba&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autocapture&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://&amp;lt;your-hub&amp;gt;/ingest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;agentId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;agent:research-01&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood the shim monkey-patches the popular agent frameworks -- LangChain, AutoGen, CrewAI, LlamaIndex, OpenAI, Anthropic, and MCP client/server. Every tool call, LLM call, and delegation becomes a signed AEBA event transmitted over TLS to your collector.&lt;/p&gt;

&lt;p&gt;No network tap. No inline proxy. No kernel hook. Just the agent process observing its own behaviour and signing the output.&lt;/p&gt;

&lt;p&gt;For closed or legacy agents that cannot take an SDK, a host-side sensor reads process-local network metadata and produces the same signed events. The transport is identical.&lt;/p&gt;

&lt;p&gt;Nothing surprising, once you think about it like UEBA for agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standards and credibility
&lt;/h2&gt;

&lt;p&gt;AEBA is not a single vendor's proprietary invention. The underlying event transport is specified in an open IETF Internet-Draft so anyone can implement it and interoperability is possible from day one. The draft defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A canonical event schema with mandatory fields (&lt;code&gt;agentId&lt;/code&gt;, &lt;code&gt;hostRuntimeId&lt;/code&gt;, &lt;code&gt;ts&lt;/code&gt;, &lt;code&gt;seq&lt;/code&gt;,).&lt;/li&gt;
&lt;li&gt;A canonical signing string over that schema.&lt;/li&gt;
&lt;li&gt;Signature algorithm selection.&lt;/li&gt;
&lt;li&gt;A threat model with thirteen named threats and mitigations.&lt;/li&gt;
&lt;li&gt;Interoperability bindings to syslog RFC 5424, CEF, and LEEF.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The detection and scoring method we ship on top of the transport is patent supported. That is by design -- a moat only works if the commodity layer is open and the intelligence layer is protected.&lt;/p&gt;

&lt;p&gt;On the security-hygiene side, AEBA aligns with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OWASP MCP Security Cheat Sheet&lt;/strong&gt; (Section 7 -- Message Integrity and Replay Protection)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OWASP MCP Top 10&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OWASP Agentic Skills Top 10&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NIST AI RMF&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EU AI Act&lt;/strong&gt; Articles 12, 13, 14, 15, 50, 72&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to try AEBA-XDR
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AEBA-XDR&lt;/strong&gt; is our production implementation. Signed telemetry. Adaptive detection. Tool-call intelligence. LLM-spend governance. Delegation-chain visibility. Compliance pack. Ships to your XDR or SIEM.&lt;/p&gt;

&lt;p&gt;Patent supported. A CyberSecAI company.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marketing site and demo: &lt;a href="https://aeba.co.uk" rel="noopener noreferrer"&gt;https://aeba.co.uk&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Family products:

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cybersecai.co.uk" rel="noopener noreferrer"&gt;https://cybersecai.co.uk&lt;/a&gt; (parent)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://agentpass.co.uk" rel="noopener noreferrer"&gt;https://agentpass.co.uk&lt;/a&gt; (agent trust scoring)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://agentsign.dev" rel="noopener noreferrer"&gt;https://agentsign.dev&lt;/a&gt; (zero-trust engine for agents)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mcpsaas.co.uk" rel="noopener noreferrer"&gt;https://mcpsaas.co.uk&lt;/a&gt; (managed MCP security)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mcp-secure.co.uk" rel="noopener noreferrer"&gt;https://mcp-secure.co.uk&lt;/a&gt; (signed MCP transport)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cybersecify.co.uk" rel="noopener noreferrer"&gt;https://cybersecify.co.uk&lt;/a&gt; (MCP Security Scanner)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://agentsearch.cybersecai.co.uk" rel="noopener noreferrer"&gt;https://agentsearch.cybersecai.co.uk&lt;/a&gt; (agent registry)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dvmcp.co.uk" rel="noopener noreferrer"&gt;https://dvmcp.co.uk&lt;/a&gt; (MCP vulnerability training)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Demo sandboxes are per-prospect, synthetic-data-only, NDA-gated, and auto-expire in 24 hours. Request one at &lt;a href="mailto:contact@agentsign.dev"&gt;contact@agentsign.dev&lt;/a&gt; and we will provision within one business day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable question
&lt;/h2&gt;

&lt;p&gt;If you are building, running, or governing AI agents right now, here is the sentence I keep saying to CISOs:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"When -- not if -- an agent does something your board needs to explain, what evidence will you hand the auditor?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today the honest answer is usually a chat log and a prayer. That is not a category of evidence that survives a regulator, a class action, or a Monday morning.&lt;/p&gt;

&lt;p&gt;AEBA is what an acceptable answer looks like. The category is opening. The vendors who ship it fastest will define it.&lt;/p&gt;

&lt;p&gt;We have started. Join us -- or build your own. But please do something. The exposure is growing by the quarter and the number of production agents is growing by the week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;contact@agentsign.dev&lt;/code&gt; -- commercial enquiries, demo requests, partnership&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;raza.sharif@outlook.com&lt;/code&gt; -- personal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-- Raza Sharif, FBCS CISSP CSSLP&lt;br&gt;
Founder, CyberSecAI Ltd&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>cybersecurity</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
