<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>AppSec Atlas Blog</title>
        <link>https://appsecatlas.com/blog</link>
        <description>AppSec Atlas Blog</description>
        <lastBuildDate>Sun, 26 Jul 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Hardening Agentic AI & Model Context Protocol (MCP) Tool Execution in Production]]></title>
            <link>https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools</link>
            <guid>https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools</guid>
            <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A deep security research dive into mitigating indirect prompt injection, enforcing least-privilege tool scopes, and validating MCP agent executions.]]></description>
            <content:encoded><![CDATA[<p>As autonomous AI agents shift from passive text generators to active systems capable of executing database queries, invoking REST APIs, and modifying infrastructure via the <strong>Model Context Protocol (MCP)</strong>, the threat landscape shifts dramatically.</p>
<p>In this research article, we analyze the mechanics of <strong>Indirect Prompt Injections</strong> in agentic workflows, demonstrate how untrusted data smuggles commands into tool parameters, and provide production-grade Python guardrails to sandbox MCP tool execution.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-threat-data-instruction-conflation-in-agent-tool-loops">The Threat: Data-Instruction Conflation in Agent Tool Loops<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#the-threat-data-instruction-conflation-in-agent-tool-loops" class="hash-link" aria-label="Direct link to The Threat: Data-Instruction Conflation in Agent Tool Loops" title="Direct link to The Threat: Data-Instruction Conflation in Agent Tool Loops" translate="no">​</a></h2>
<p>Unlike classical microservices where data and control code are strictly separated at the instruction level, LLM-based agents process system prompts, user input, retrieved RAG context, and tool responses within a single unified sequence of tokens.</p>
<p>When an AI agent accesses an external resource (such as reading an email, scanning a web page, or parsing a customer ticket) that contains hidden adversarial instructions, an <strong>Indirect Prompt Injection</strong> occurs.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hardening-strategy-4-layer-defense-for-mcp-tool-loops">Hardening Strategy: 4-Layer Defense for MCP Tool Loops<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#hardening-strategy-4-layer-defense-for-mcp-tool-loops" class="hash-link" aria-label="Direct link to Hardening Strategy: 4-Layer Defense for MCP Tool Loops" title="Direct link to Hardening Strategy: 4-Layer Defense for MCP Tool Loops" translate="no">​</a></h2>
<p>To safely deploy Agentic AI tools in production environments, organizations must enforce a 4-layer defense in depth:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-1-perimeter-input-sanitization--homoglyph-stripping">Layer 1: Perimeter Input Sanitization &amp; Homoglyph Stripping<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#layer-1-perimeter-input-sanitization--homoglyph-stripping" class="hash-link" aria-label="Direct link to Layer 1: Perimeter Input Sanitization &amp; Homoglyph Stripping" title="Direct link to Layer 1: Perimeter Input Sanitization &amp; Homoglyph Stripping" translate="no">​</a></h3>
<p>Before text enters the agent prompt context, untrusted Unicode homoglyphs, zero-width spaces, and Base64-wrapped payloads must be sanitized.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-2-dual-llm-privilege-separation">Layer 2: Dual-LLM Privilege Separation<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#layer-2-dual-llm-privilege-separation" class="hash-link" aria-label="Direct link to Layer 2: Dual-LLM Privilege Separation" title="Direct link to Layer 2: Dual-LLM Privilege Separation" translate="no">​</a></h3>
<p>Separate the <strong>Privileged Executive LLM</strong> (which makes execution decisions and holds tool keys) from the <strong>Unprivileged Summarizer LLM</strong> (which parses untrusted external web pages/documents).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-3-least-privilege-mcp-tool-scope-enforcement">Layer 3: Least-Privilege MCP Tool Scope Enforcement<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#layer-3-least-privilege-mcp-tool-scope-enforcement" class="hash-link" aria-label="Direct link to Layer 3: Least-Privilege MCP Tool Scope Enforcement" title="Direct link to Layer 3: Least-Privilege MCP Tool Scope Enforcement" translate="no">​</a></h3>
<p>Tools should never accept open-ended SQL or arbitrary shell strings. Scope every tool invocation against fine-grained OAuth2 JWT scopes (<code>mcp:tool:database:read_only</code>).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="layer-4-deterministic-guardrail-evaluators-llamaguard3">Layer 4: Deterministic Guardrail Evaluators (LlamaGuard3)<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#layer-4-deterministic-guardrail-evaluators-llamaguard3" class="hash-link" aria-label="Direct link to Layer 4: Deterministic Guardrail Evaluators (LlamaGuard3)" title="Direct link to Layer 4: Deterministic Guardrail Evaluators (LlamaGuard3)" translate="no">​</a></h3>
<p>Pass proposed tool parameters through a lightweight safety evaluator before dispatching the RPC call to the underlying tool handler.</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Production Python Guardrail for MCP Agent Tool Validation</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> appsec_atlas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">ai_guard </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> LlamaGuard3Validator</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> appsec_atlas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">security </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> OAuth2ScopeVerifier</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">class</span><span class="token plain"> </span><span class="token class-name">MCPToolExecutor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">__init__</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> jwt_context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">scope_verifier </span><span class="token operator">=</span><span class="token plain"> OAuth2ScopeVerifier</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">jwt_context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">execute_tool</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> tool_name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">str</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> tool_args</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(189, 147, 249)">dict</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token comment" style="color:rgb(98, 114, 164)"># 1. Validate mandatory scope</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        required_scope </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f"mcp:tool:</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">tool_name</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">not</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">scope_verifier</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">has_scope</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">required_scope</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">raise</span><span class="token plain"> PermissionError</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f"JWT lacks required scope: </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">required_scope</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token comment" style="color:rgb(98, 114, 164)"># 2. Run deterministic hazard classification</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        is_safe</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> hazard_category </span><span class="token operator">=</span><span class="token plain"> LlamaGuard3Validator</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">evaluate_tool_call</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">tool_name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> tool_args</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">not</span><span class="token plain"> is_safe</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">raise</span><span class="token plain"> SecurityError</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">f"Blocked by LlamaGuard3 hazard rule: </span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token string-interpolation interpolation">hazard_category</span><span class="token string-interpolation interpolation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token string-interpolation string" style="color:rgb(255, 121, 198)">"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token comment" style="color:rgb(98, 114, 164)"># 3. Dispatch safe execution</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">return</span><span class="token plain"> self</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">_dispatch_to_sandbox</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">tool_name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> tool_args</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion--further-reading">Conclusion &amp; Further Reading<a href="https://appsecatlas.com/blog/securing-agentic-ai-mcp-tools#conclusion--further-reading" class="hash-link" aria-label="Direct link to Conclusion &amp; Further Reading" title="Direct link to Conclusion &amp; Further Reading" translate="no">​</a></h2>
<p>Securing Agentic AI requires treating every LLM output as untrusted user input before it reaches tool execution code.</p>
<p>For the complete guide including automated garak security scans and runnable red-teaming PoCs, check out the full <a class="" href="https://appsecatlas.com/docs/ai-ml-security/agentic-ai-security">Agentic AI Security Guide</a> and <a class="" href="https://appsecatlas.com/docs/ai-ml-security/mcp-tool-security">MCP Tool Security Guide</a> in AppSec Atlas.</p>]]></content:encoded>
            <category>AI &amp; ML Security</category>
            <category>AI Red Teaming &amp; Offensive Security</category>
            <category>Threat Research</category>
        </item>
        <item>
            <title><![CDATA[Zero Trust Microservices: Implementing SPIFFE/SPIRE & mTLS for Kubernetes Services]]></title>
            <link>https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire</link>
            <guid>https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire</guid>
            <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to eliminate static API keys and IP-based trust in Kubernetes microservices using SPIFFE/SPIRE cryptographic workload attestation and Envoy mTLS.]]></description>
            <content:encoded><![CDATA[<p>In modern cloud-native Kubernetes environments, relying on perimeter firewalls, network security groups, or hardcoded API keys for microservice-to-microservice authentication is no longer sufficient. If an attacker compromises a single pod inside a VPC, unauthenticated internal networks allow lateral movement across the entire cluster.</p>
<p><strong>Zero Trust Architecture (NIST SP 800-207)</strong> dictates a fundamental shift: <em>Never Trust, Always Verify</em>. In this article, we explore how to establish cryptographic workload identity using <strong>SPIFFE/SPIRE</strong> and enforce Mutual TLS (mTLS) via Envoy sidecar proxies.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-spiffespire">What is SPIFFE/SPIRE?<a href="https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire#what-is-spiffespire" class="hash-link" aria-label="Direct link to What is SPIFFE/SPIRE?" title="Direct link to What is SPIFFE/SPIRE?" translate="no">​</a></h2>
<ul>
<li class=""><strong>SPIFFE (Secure Production Identity Framework for Everyone)</strong>: A set of open standards defining how workloads acquire short-lived, cryptographically verifiable identities represented as <strong>SPIFFE IDs</strong> (e.g., <code>spiffe://example.org/ns/prod/sa/payment-service</code>) in X.509 certificates (SVIDs).</li>
<li class=""><strong>SPIRE (SPIFFE Runtime Environment)</strong>: The production-ready reference implementation that performs node and workload attestation (verifying Kubernetes namespace, service account, pod UID, and binary hash) before issuing SVID certificates.</li>
</ul>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-by-step-production-architecture">Step-by-Step Production Architecture<a href="https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire#step-by-step-production-architecture" class="hash-link" aria-label="Direct link to Step-by-Step Production Architecture" title="Direct link to Step-by-Step Production Architecture" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-workload-attestation">1. Workload Attestation<a href="https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire#1-workload-attestation" class="hash-link" aria-label="Direct link to 1. Workload Attestation" title="Direct link to 1. Workload Attestation" translate="no">​</a></h3>
<p>When a pod requests an identity certificate, the local SPIRE Agent queries the Kubernetes API server to verify:</p>
<ul>
<li class="">Pod Namespace (<code>prod</code>)</li>
<li class="">ServiceAccount Name (<code>payment-sa</code>)</li>
<li class="">Container Image SHA-256 Digest</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-svid-certificate-rotation">2. SVID Certificate Rotation<a href="https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire#2-svid-certificate-rotation" class="hash-link" aria-label="Direct link to 2. SVID Certificate Rotation" title="Direct link to 2. SVID Certificate Rotation" translate="no">​</a></h3>
<p>SPIRE automatically issues short-lived X.509 SVIDs (typically valid for 1 hour) directly into container memory via the SPIFFE Workload API, eliminating disk storage of private keys.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-envoy-sidecar-mtls-verification">3. Envoy Sidecar mTLS Verification<a href="https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire#3-envoy-sidecar-mtls-verification" class="hash-link" aria-label="Direct link to 3. Envoy Sidecar mTLS Verification" title="Direct link to 3. Envoy Sidecar mTLS Verification" translate="no">​</a></h3>
<p>Envoy proxies intercept incoming gRPC/REST traffic, validate the client certificate chain against the SPIRE Trust Bundle, and assert the client's SPIFFE ID in SPIFFE SAN URI extensions.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Envoy Proxy Hardened TLS Context Configuration</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">static_resources</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">listeners</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ingress_listener</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">address</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">socket_address</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token key atrule">address</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> 0.0.0.0</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token key atrule">port_value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">8443</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">filter_chains</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">transport_socket</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> envoy.transport_sockets.tls</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">typed_config</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">"@type"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">common_tls_context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token key atrule">tls_certificates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">certificate_chain</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token key atrule">filename</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"/spiffe-workload-api/svid.pem"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">              </span><span class="token key atrule">private_key</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token key atrule">filename</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"/spiffe-workload-api/svid_key.pem"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token key atrule">validation_context</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">              </span><span class="token key atrule">trusted_ca</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> </span><span class="token key atrule">filename</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"/spiffe-workload-api/bundle.pem"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">              </span><span class="token key atrule">match_typed_subject_alt_names</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">              </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">san_type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> URI</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">                </span><span class="token key atrule">matcher</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">                  </span><span class="token key atrule">exact</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"spiffe://appsecatlas.org/ns/prod/sa/order-service"</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="summary--next-steps">Summary &amp; Next Steps<a href="https://appsecatlas.com/blog/zero-trust-microservices-spiffe-spire#summary--next-steps" class="hash-link" aria-label="Direct link to Summary &amp; Next Steps" title="Direct link to Summary &amp; Next Steps" translate="no">​</a></h2>
<p>Cryptographic workload identity with SPIFFE/SPIRE eliminates hardcoded credentials, defends against SSRF/lateral movement, and satisfies NIST SP 800-207 Zero Trust requirements.</p>
<p>For complete hands-on Terraform/Kubernetes manifests and Python/Go code samples, check out the <a class="" href="https://appsecatlas.com/docs/foundational/zero-trust/zero-trust-cloud-architecture">Zero Trust Architecture Guide</a> and <a class="" href="https://appsecatlas.com/docs/cloud-and-infra/container-kubernetes">Container &amp; K8s Security Guide</a> in AppSec Atlas.</p>]]></content:encoded>
            <category>Zero Trust Architecture</category>
            <category>Cloud Native &amp; DevSecOps</category>
            <category>Application Security</category>
        </item>
        <item>
            <title><![CDATA[Announcing AppSec Atlas: The Open-Source Security Knowledge Engine]]></title>
            <link>https://appsecatlas.com/blog/announcing-appsec-atlas</link>
            <guid>https://appsecatlas.com/blog/announcing-appsec-atlas</guid>
            <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Introducing AppSec Atlas — 45 masterclass guides across 9 security domains, featuring multi-language production code, runnable labs, and real-world threat modeling.]]></description>
            <content:encoded><![CDATA[<p>Today, we are thrilled to officially launch <strong>AppSec Atlas</strong> — a comprehensive, open-source security knowledge engine spanning <strong>45 masterclass guides</strong> and over <strong>300 technical chapters</strong> across 9 security domains.</p>
<p>Whether you are an Application Security Engineer, Cloud Architect, AI Researcher, or Software Developer, AppSec Atlas is built to map the entire modern software security landscape—with <strong>zero fluff, pure engineering, and runnable code</strong>.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-built-appsec-atlas">Why We Built AppSec Atlas<a href="https://appsecatlas.com/blog/announcing-appsec-atlas#why-we-built-appsec-atlas" class="hash-link" aria-label="Direct link to Why We Built AppSec Atlas" title="Direct link to Why We Built AppSec Atlas" translate="no">​</a></h2>
<p>For years, security knowledge has been fragmented across scattered OWASP cheat sheets, vendor whitepapers, outdated blog posts, and obscure academic research. Developers and security teams were left to piecemeal together defenses without a single, unified source of truth.</p>
<p>AppSec Atlas bridges this gap by providing:</p>
<ol>
<li class=""><strong>Multi-Language Implementation Code</strong>: Side-by-side vulnerable ❌ vs secure ✅ implementations in Python, Node.js/TypeScript, Go, and Java Spring Boot.</li>
<li class=""><strong>Runnable Vulnerability Labs</strong>: Self-contained target microservices, automated exploit PoC harnesses, and unit-tested security refactors.</li>
<li class=""><strong>Framework-Aligned Standards</strong>: Direct alignment with OWASP Top 10 (Web, API, LLM), NIST AI 100-2, NIST SP 800-207 Zero Trust, and MITRE ATLAS™.</li>
</ol>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="exploring-the-9-core-security-domains">Exploring the 9 Core Security Domains<a href="https://appsecatlas.com/blog/announcing-appsec-atlas#exploring-the-9-core-security-domains" class="hash-link" aria-label="Direct link to Exploring the 9 Core Security Domains" title="Direct link to Exploring the 9 Core Security Domains" translate="no">​</a></h2>
<p>AppSec Atlas organizes modern cybersecurity into 9 specialized domains:</p>
<ol>
<li class=""><strong>Foundational Security</strong>: Core design patterns, Saltzer-Schroeder principles, AuthN/AuthZ, Cryptography, and Zero Trust.</li>
<li class=""><strong>Web &amp; API Security</strong>: REST, GraphQL, gRPC, CORS/SOP mechanics, Frontend, and Mobile security.</li>
<li class=""><strong>Cloud &amp; DevSecOps</strong>: Container &amp; K8s security, Infrastructure as Code SAST, Secrets lifecycle, and CI/CD pipelines.</li>
<li class=""><strong>AI &amp; ML Security</strong>: LLM Prompt Injection, RAG vector poisoning, Agentic AI, MCP Tool safety, and AI Red Teaming.</li>
<li class=""><strong>Offensive Security</strong>: CTF competition tactics, Web &amp; Crypto exploits, Network attacks, and Social Engineering.</li>
<li class=""><strong>Defensive Security &amp; DFIR</strong>: Incident Response, Digital Forensics (Disk/RAM/Artifacts), Malware Analysis, and SOC Operations.</li>
<li class=""><strong>Specialized Technologies</strong>: Browser Extension Manifest V3 security, IoT &amp; Embedded device auditing, and Hardware security.</li>
<li class=""><strong>Compliance &amp; Privacy</strong>: Technical implementation for GDPR, PCI-DSS v4.0, SOC 2 Type II, and ISO 27001.</li>
<li class=""><strong>Hands-On Labs &amp; PoCs</strong>: Self-contained runnable vulnerability labs and automated exploit scripts.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-involved--contribute">Get Involved &amp; Contribute<a href="https://appsecatlas.com/blog/announcing-appsec-atlas#get-involved--contribute" class="hash-link" aria-label="Direct link to Get Involved &amp; Contribute" title="Direct link to Get Involved &amp; Contribute" translate="no">​</a></h2>
<p>AppSec Atlas is <strong>100% open-source</strong> and licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener noreferrer" class="">Creative Commons Attribution 4.0 International (CC BY 4.0)</a>.</p>
<ul>
<li class="">🗺️ <strong>Explore the Guides</strong>: Start learning at <a class="" href="https://appsecatlas.com/docs/getting-started">appsecatlas.com/docs/getting-started</a>.</li>
<li class="">⭐ <strong>Star on GitHub</strong>: Support the project on <a href="https://github.com/AnimeshShaw/AppSec-Atlas" target="_blank" rel="noopener noreferrer" class="">GitHub</a>.</li>
<li class="">💬 <strong>Join the Community</strong>: Connect with contributors on <a href="https://discord.gg/appsecatlas" target="_blank" rel="noopener noreferrer" class="">Discord</a>.</li>
</ul>]]></content:encoded>
            <category>Application Security</category>
            <category>Threat Research</category>
            <category>Cloud Native &amp; DevSecOps</category>
        </item>
    </channel>
</rss>