<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Asura Insights]]></title><description><![CDATA[Asura Insights' mission is to be a springboard for Cybersecurity and Technology Engineering knowledge transfer directed at giving back to the community through public exposure opportunities and practical mentoring.]]></description><link>https://asurainsights.com</link><image><url>https://substackcdn.com/image/fetch/$s_!_wLP!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f9ccc76-5838-4922-9989-faee0f4b81d4_608x608.png</url><title>Asura Insights</title><link>https://asurainsights.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 19 Apr 2026 13:03:43 GMT</lastBuildDate><atom:link href="https://asurainsights.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Carl Sue]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[carlsue@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[carlsue@substack.com]]></itunes:email><itunes:name><![CDATA[Carl Sue]]></itunes:name></itunes:owner><itunes:author><![CDATA[Carl Sue]]></itunes:author><googleplay:owner><![CDATA[carlsue@substack.com]]></googleplay:owner><googleplay:email><![CDATA[carlsue@substack.com]]></googleplay:email><googleplay:author><![CDATA[Carl Sue]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[AI Bubble Politics? Or A Preview To The Future]]></title><description><![CDATA[Anthropic Provides a Possible Glimpse Into The Future of Security Testing]]></description><link>https://asurainsights.com/p/ai-bubble-politics-or-a-preview-to</link><guid isPermaLink="false">https://asurainsights.com/p/ai-bubble-politics-or-a-preview-to</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 22 Dec 2025 14:01:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ste8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ste8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ste8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 424w, https://substackcdn.com/image/fetch/$s_!ste8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 848w, https://substackcdn.com/image/fetch/$s_!ste8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 1272w, https://substackcdn.com/image/fetch/$s_!ste8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ste8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:500140,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/182091754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ste8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 424w, https://substackcdn.com/image/fetch/$s_!ste8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 848w, https://substackcdn.com/image/fetch/$s_!ste8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 1272w, https://substackcdn.com/image/fetch/$s_!ste8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b3216dc-0166-445a-acff-3924d9624088_2816x1536.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Anthropic has released an interesting report in mid November 2025. The company claims it has identified an attack chain attributed to a threat actor associated with the Chinese State, which managed to execute a full blown cyberattack using Claude Code AI integrated with penetration testing tools. Although there&#8217;s no response to these accusations from China. Anthropic&#8217;s evaluation identified that the AI agent handled 80-90% of the cyber attack&#8217;s operations, and executed an almost perfect cyber kill-chain. This threat actor targeted roughly 30 entities such as big tech companies, financial institutions, chemical manufacturers, and government agencies across multiple countries. The first instance of an AI driven threat actor is a very bold claim, and in this blog we&#8217;ll uncover some facts underneath this case study done by Anthropic.</p><h1>Anthropic reports first ever cyber attack by AI</h1><p>On 13 November 2025, Anthropic released a <a href="https://www.anthropic.com/news/disrupting-AI-espionage">blog</a> and a <a href="https://assets.anthropic.com/m/ec212e6566a0d47/original/Disrupting-the-first-reported-AI-orchestrated-cyber-espionage-campaign.pdf">full report</a> titled &#8216;Disrupting the first reported AI-orchestrated cyber espionage campaign&#8217;. In this report, they claim that in mid-September 2025, they detected suspicious activities that later turned out to be highly sophisticated cyber-attacks using penetration testing tools integrated with the Claude Code application to  target around 30 businesses and organizations across multiple countries. After detecting the threat actors, an investigation was launched to determine the scope and severity, Anthropic banned the associated accounts, contacted affected entities, and collaborated with appropriate authorities to gather threat intelligence. Anthropic also claims to have associated this cyber attack with the known threat actor designated as GTG-1002.</p><p>What is notable though, this is the first publicly recorded incident of a legitimate cyber attack where AI has apparently operated 80-90% of the work. This campaign represents promising advancements in AI integration into traditional attack lifecycles. Allowing threat actors to manipulate AI agents assisting throughout all phases of the attack killchain.</p><h2>How did the cyber attack work?</h2><p>The report mentions that the attackers used &#8220;MCP servers&#8221; paired with Claude Code to execute all the phases of the attack. But what does that actually mean?</p><p>To put it simply, <strong>MCP (Model Context Protocol)</strong> is like a universal USB port for AI models. Usually, an AI like Claude is trapped in a chat box: it can write code for you, but it can&#8217;t actually <em>run</em> it within <em>your</em> network. MCP changes that. It acts as a bridge that connects the AI to external tools. LLMs already function as plugins for IDEs like VS Code, but MCP takes this integration a step further. It allows the AI to access and operate external applications, enabling it to run a system like Kali Linux and execute applications and security tools, including Nmap, Metasploit, SqlMap, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iV2g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iV2g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 424w, https://substackcdn.com/image/fetch/$s_!iV2g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 848w, https://substackcdn.com/image/fetch/$s_!iV2g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 1272w, https://substackcdn.com/image/fetch/$s_!iV2g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iV2g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png" width="847" height="488" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:488,&quot;width&quot;:847,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iV2g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 424w, https://substackcdn.com/image/fetch/$s_!iV2g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 848w, https://substackcdn.com/image/fetch/$s_!iV2g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 1272w, https://substackcdn.com/image/fetch/$s_!iV2g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ff2defb-7f8e-4d50-a576-133e683513fe_847x488.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Image: Illustration of AI working with MCP servers</em></p><p>In this attack, the threat actors didn&#8217;t just chat with Claude. They set up an MCP server that had access to hacking tools (like scanners or exploit kits). Usually all AI agents have usage limitations and rules in place to avoid unethical practices and are extensively trained to avoid harmful behaviour. However, the attackers bypassed this easily by tricking Claude into role-play. Anthropic said, &#8220;the human operators claimed that they were employees of legitimate cybersecurity firms and convinced Claude that it was being used for cybersecurity testing.&#8221; Instead of refusing the request with a standard safeguard, Claude would receive the command to &#8220;scan this target&#8221; and send it directly to the MCP server. The server would then execute the tool and return the results to Claude for the next step. Below is an architecture diagram given by Anthropic to suggest how threat actors designed a framework using MCP servers to use Claude Code to conduct the cyber operation without direct human involvement.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wzPQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wzPQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wzPQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wzPQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wzPQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wzPQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg" width="1456" height="838" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:838,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wzPQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wzPQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wzPQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wzPQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23445320-68c6-4c6f-bfe3-c10a4e565860_1600x921.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Image: Simplified architecture diagram of the operation by Anthropic</em></p><p>What makes this report impressive, is how closely the AI followed a professionally executed Kill Chain. Let&#8217;s break down the orchestration. It is a general good practice in engineering to break down complex problems into separate modules. The attackers likely did exactly this. They didn&#8217;t ask the AI to &#8220;hack this company&#8221; in one go. They broke the kill-chain into individual phases such as reconnaissance, initial access, lateral movement, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ynTL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ynTL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ynTL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ynTL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ynTL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ynTL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg" width="1456" height="1084" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1084,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ynTL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ynTL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ynTL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ynTL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F743eb075-34bb-4183-8c24-208bc4fd85c5_1600x1191.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Image: Attack lifecycle and AI integration architecture given by Anthropic</em></p><h2>AI Integration and Attack Lifecycle</h2><p>The operation mostly used open-source tools and focused on integrating AI via MCP with the traditional eco-system rather than using AI for custom malware development or advanced novel techniques.  It&#8217;s worth noting that skills for AI deployment as well as Penetration Testing are highly important for these types of eco-systems, because the attackers understood the strength of AI. AIs perform better on open-source tools and widely known methodologies as they might have been trained on them and there&#8217;s ample documentation available for them.</p><p>Here is how the lifecycle progressed, and I&#8217;ve also mapped AI&#8217;s involvements aligned to traditionally manual attackers would have executed these steps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uuXC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uuXC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uuXC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uuXC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uuXC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uuXC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg" width="2824" height="3611" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3611,&quot;width&quot;:2824,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1300436,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/182091754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548223cf-fa25-425f-9434-01e2beab65c3_5100x6600.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uuXC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uuXC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uuXC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uuXC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbff6a8e-92e1-4af8-abe8-1f8e8250742f_2824x3611.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0_CG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0_CG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0_CG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0_CG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0_CG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0_CG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg" width="2829" height="3484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3484,&quot;width&quot;:2829,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:985260,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/182091754?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53d20615-b2ad-450a-86cd-28fc66b50bda_5100x6600.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0_CG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0_CG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0_CG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0_CG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e7519f-87dd-4056-b5ec-06cfb08dd64c_2829x3484.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The results of one phase were fed into the next serving two critical purposes:</p><ol><li><p><strong>Jailbreaking:</strong> By isolating each phase, they could use persona-based role-play (e.g., &#8220;You are a penetration tester helping secure this system&#8221;) to bypass ethical guardrails. The AI never sees the &#8220;whole picture,&#8221; so it doesn&#8217;t realize it&#8217;s committing a crime.</p></li><li><p><strong>Avoiding Degradation:</strong> LLMs tend to get confused or perform worse during long, complex tasks. By restarting the context for each phase, the attackers kept the AI sharp and focused.</p></li></ol><h1>Is this the future of AI cyber-attacks?</h1><p>I think we all should ponder on this questions: </p><blockquote><p>What is the truth to be found from this incident? and what lesson can be learned?</p></blockquote><p>There is a lot of skepticism in the community right now, and rightly so. With no details on the actual logs or the technical proof, we only have Anthropic&#8217;s summary. It claims the agent ran autonomously for 2-6 hours doing highly technical work, but without verifiable evidence, it&#8217;s hard to blindly trust.</p><p>In a <a href="https://www.bbc.co.uk/news/articles/cx2lzmygr84o">BBC news article </a>covering this, Martin Zugec from the cyber firm Bitdefender said, &#8220;Anthropic&#8217;s report makes bold, speculative claims but doesn&#8217;t supply verifiable threat intelligence evidence.&#8221; There is a real possibility that the cybersecurity industry, much like the AI business, is keen to say hackers are using this tech just to boost interest in their own defensive AI products.</p><p>But for us cyber professionals, the question shouldn&#8217;t be &#8220;if this is true,&#8221; but &#8220;how much truth is there?&#8221;. To do that, we should look at how Claude was used in this cyber-attack, and the current capabilities of AI integration in the cyber security eco-system.</p><h2>How capable are MCP servers and LLMs for Hacking?</h2><p>If you look around, you&#8217;ll see that the capability is definitely there.</p><p>There are already tutorials on YouTube and GitHub showing how to use Claude with MCP servers for penetration testing. <strong><a href="https://www.youtube.com/watch?v=GuTcle5edjk">NetworkChuck</a></strong> recently released a video demonstrating how to use MCP servers to hack a DVWA (Damn Vulnerable Web App) machine. He showed that the setup is capable of basic tasks like running Nmap scans, using WPScan, and finding vulnerabilities. On GitHub, there are repositories like <strong><a href="https://github.com/0x4m4/hexstrike-ai">HexStrike AI</a></strong>, which has over 4.5k stars. These projects are rapidly growing and explicitly focus on AI-powered penetration testing.</p><p>Consider MCP server setups as similar to a painters palette: MCP server setup is an AI-operated palette which contains different colours (in this case, security tools) which can be used in many ways. How a penetration tester paints or plays out their methodology is up to them, and having an AI-operated toolkit ready not only makes the setup easy but inherently it&#8217;s going to be much faster due to the speed of AI. <strong><a href="https://github.com/0x4m4/hexstrike-ai">HexStrike AI</a></strong> is one of many publicly available AI toolkits for penetration testers, and everybody can make one too.</p><p>So, there may definitely be some truth to Anthropic&#8217;s report. It is possible to integrate LLMs with cybersecurity tools. In the hands of capable people , it might be possible to orchestrate a cyber-attack as big as Anthropic claims. For example an experienced AI developer might focus on integrating AI services with the most appropriate tool based on the task, and create an eco system tailored to the specific objective. On the other hand, an experienced penetration tester might integrate AI with the tools to do analysis of their findings or to create custom malware payloads to exploit a vulnerability based on the target infrastructure. There are multiple ways this can go depending on the user, but one thing that&#8217;s common in all cases is that AI integration will definitely increase the effectiveness and efficiency of traditional tasks, one way or another.</p><h2>Takeaway for Cyber Professionals</h2><p>Quick Recap: There&#8217;s definitely gaps in Anthropic&#8217;s report and one might ask various questions. Why did the threat actors use <em>only</em> Claude? Anthropic admitted that Claude &#8220;hallucinated&#8221; a lot during the attack, claiming to find credentials that didn&#8217;t work, so did the attack actually cause significant damage, or was it just a noisy mess?</p><p>This incident indicates AI integration in defensive tools could be equally promising, and could be an upcoming shift on AI usage in overall cyber industry. We also hear <a href="https://www.bbc.co.uk/news/articles/c867vyn2evlo">news about an &#8220;AI bubble&#8221; that might burst</a>, and some <a href="https://gizmodo.com/yann-lecun-world-models-2000685265">senior researchers suggesting LLMs are hitting a dead end</a>. Many industry leaders on LinkedIn are warning us to be careful of the hype.</p><p>However, the growth of MCP servers is very new and shows genuine promise, not just for penetration testing, but for all engineering domains. The only way to know for sure is to actually use this technology yourself, beyond just the prompt-based web UIs.</p><p>There is a massive opportunity here for cyber professionals, especially those trying to break into the industry. Don&#8217;t just read the headlines. Go build an MCP server. Experiment with the tools. Understand the advancements in AI  If there&#8217;s true potential in this, you could be riding the wave of the next computer revolution.</p><p>If you&#8217;re interested in learning how to use AI and MCP servers with cyber security tools, Subscribe to Asura Insights to be notified for our future blogs on AI-powered Penetration Testing.</p>]]></content:encoded></item><item><title><![CDATA[Never Roll Your Own Auth (Part 1)]]></title><description><![CDATA[Starting from the beginning why do we have OAuth? and why was it created? OAuth is an authorization framework that allows applications to access resources on behalf of users without compromising their credentials. It centralizes authentication and authorization responsibilities, enabling applications to request access to specific resources using access tokens with limited permissions. This approach enhances security, simplifies access control, and facilitates auditing and compliance.]]></description><link>https://asurainsights.com/p/never-roll-your-own-auth-part-1</link><guid isPermaLink="false">https://asurainsights.com/p/never-roll-your-own-auth-part-1</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 01 Dec 2025 14:03:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!34-M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>Introduction</strong></h1><p>Conceptualized in the early 90s, HTTP was introduced as a lightweight, stateless application protocol for retrieving static hypertext (HTML) documents over a network. A client would issue a GET request, the server would return the content, and then the connection would be closed. Once closed any memory of the requester was lost making HTTP a quick and efficient transfer mechanism without built-in session state in a world with limited &#8220;website&#8221; interaction.</p><p>In more modern implementations we still use the base HTTP protocol, but web applications are now tasked with storing sensitive information that must be accessible to some users and not others. Limiting this access requires verifying what a requester has been granted permission to access and reliably differentiating one requester from another, a complex task layered on top of a stateless protocol with many opportunities for oversight or misconfiguration.</p><p>Due to this complexity the mantra &#8220;Never roll your own auth&#8221; became the recommended guidance, and well-maintained, peer-reviewed frameworks and services became the norm for just about every application because of the risk involved. The motivation to circumvent this obstacle eventually brought about the concept of &#8220;borrowed trust&#8221; a segmentation of duties that allows applications to move the responsibilities for authentication and authorization away from the individual application or potentially even away from the business and into a dedicated, trusted service.</p><h1><strong>OAuth and Authorization</strong></h1><p>By centralizing these responsibilities in a separate authentication and authorization service, any application, inside or outside the organization, can rely on the same source of truth for identity and permissions. That service issues standardized session identifiers or tokens that consistently represent a specific user and what that user is allowed to do at that point in time. When one application calls another, it can pass this token along, allowing the receiving application to verify that it is acting on behalf of the same authenticated user rather than an anonymous system account. Because identity and permissions travel with the request, data custodians can make consistent decisions about what to expose in line with the data owner&#8217;s intent, and applications can enforce access control concepts such as the principle of least privilege across boundaries, whether those are internal APIs, micro services, or third-party services.</p><p>OAuth, since its inception, was never meant for authentication. it is an authorization framework designed for segmented, delegated access. It allows a centralized authorization service to issue tokens that describe exactly what an application is allowed to do on a user&#8217;s behalf. Because those permissions are explicit and tied to the application, development teams can see which systems have access to which data, review and adjust those permissions over time, and quickly revoke or tighten them if something changes. This makes it much easier to keep applications within least-privilege boundaries, support audits, and reduce the blast radius of a compromise without redesigning every individual system.</p><p>Organisations quickly realised that this approach can be further extended to support authentication as well, which was facilitated with the help of OpenID connect service, which is built on top of the OAuth Framework. An external identity provider is involved in this specific case that helps verify the user.</p><h2><strong>Why is OAuth needed then?</strong></h2><p>For a while, third party applications had to store user credentials for other services outside their domain if they had to obtain a protected resource from that service on the user&#8217;s behalf to function. In the modern world where every single application is integrated with one another, one can infer the disadvantage of providing the login credentials for different services to an application that must obtain the protected resource from them. In case of a security breach, it can compromise the user&#8217;s accounts in other platforms as well. Beyond the issue of providing credentials, this also means that servers must support password-based authentication, which is inherently unsafe in comparison to modern solutions.</p><p>Providing the credentials for other platforms to these third-party applications also allows access to permission on an absolute scale of 0 or 1. Either the client gains absolute access to all information and permissions with the credentials, or they have no permission at all. Which is not a good approach compared to the spread of possibilities that come with the restrictive/selective access approach. OAuth is hence needed as a separate layer of authentication to separate the client from the resource owner. By asking the client to contact the resource server and providing a different set of credentials that is restricted for a specific resource. This new credential is called an access token. It is bound by scope, lifetime and other access attributes that provide strictly only the information necessary and gives control to the user without complications.</p><h2><strong>How does it work?</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!34-M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!34-M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!34-M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!34-M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!34-M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!34-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!34-M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!34-M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!34-M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!34-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7005d86-1860-45ed-ba14-5ec1d72fde79_1024x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>From an abstracted view, OAuth works based on providing permissions in the form of tokens. Imagine an example, where you would like to gain some information about a person from a third party who protects their information. The third party will then give you a slip asking you to ask for permission directly from the owner of this information. Once the permission is approved, and is given to you, then you are allowed to access the requested resource. This while being a very simple example of the overall process, does represent the framework well. In the next coming sections, we will dive deep into the roles and the responsibilities of those involved in the framework, and how they interact with each other.</p><h5><strong>Resources</strong></h5><h6><em><strong>Eaton, Brian, et al. &#8220;The OAuth 2.0 Authorization Framework.&#8221; Datatracker.ietf.org, Oct. 2012, datatracker.ietf.org/doc/html/rfc6749.</strong></em></h6><h6><em><strong>OktaDev. &#8220;OAuth 2.0 and OpenID Connect (in Plain English).&#8221; <a href="https://www.youtube.com/">Www.youtube.com</a>, 5 Feb. 2018, <a href="https://www.youtube.com/watch?v=996OiexHze0">www.youtube.com/watch?v=996OiexHze0</a>. Accessed 4 July 2021.</strong></em></h6>]]></content:encoded></item><item><title><![CDATA[What To Do With Pentest Vendor Variance]]></title><description><![CDATA[Is your penetration testing vendor a liability? The answer may shock you!]]></description><link>https://asurainsights.com/p/what-to-do-with-pentest-vendor-variance</link><guid isPermaLink="false">https://asurainsights.com/p/what-to-do-with-pentest-vendor-variance</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Tue, 18 Nov 2025 14:02:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!J_-z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J_-z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J_-z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!J_-z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!J_-z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!J_-z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J_-z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A person in a hoodie with a red triangle and a exclamation mark\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A person in a hoodie with a red triangle and a exclamation mark

AI-generated content may be incorrect." title="A person in a hoodie with a red triangle and a exclamation mark

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!J_-z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!J_-z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!J_-z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!J_-z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf27e98c-de84-4fd7-ade8-6c23b7965bf3_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Penetration testing today faces significant challenges that undermine its effectiveness, including inconsistency among testers, limited scope due to time and resource constraints, and variable methodologies that leave security gaps unexplored. Unlike a penetration test, the OSSTMM applies a scientific method ensuring repeatability and consistency, required to build reliable metrics. Some orgs even allow testers to use different methodologies as results can be standardized and leveled.</p><h1><strong>Challenges of Consistent Penetration Testing</strong></h1><p>Penetration testing often suffers from scope limitations, with tests constrained to time boxes and budgets. Due to testers wildly varying ability and dynamic environments contributing to inconsistent results, penetration testing has become a point-in-time assessment rather than a comprehensive ongoing security evaluation.</p><h1><strong>The Only Scientific Methodology</strong></h1><p>The Open Source Security Testing Methodology Manual (OSSTMM) contrasts standard penetration testing by applying a structured, scientific approach to security assessments. It emphasizes measurable and repeatable testing processes along defined channels (Human, Physical, Wireless, Telecom, Data Networks) and thorough analysis of trust relationships and control effectiveness. This methodology ensures that two different testers, following OSSTMM principles, can be mapped to consistent and repeatable data, reducing human error and inconsistent coverage.</p><h1><strong>Implications for Security Practices</strong></h1><p>OSSTMM&#8217;s approach offers a path toward more reliable, comprehensive security assessments by focusing on harmonization of data and repeatability. This methodology aligns better with regulatory requirements and creates measurable metrics that improve security posture over time rather than merely serving as a compliance checkbox.</p><p>This contrast highlights the growing need for maturity within traditional penetration testing practices and the OSSTMM provides a framework for reliable, consistent security evaluations that leaders require to make actionable decisions.</p><p>Here are some real-world examples and case points where penetration tests missed critical flaws:</p><ul><li><p>A healthcare sector customer had a misconfiguration in Active Directory Certificate Services (AD CS) that allowed privilege escalation through certificate abuse, which went undetected in prior manual penetration tests but was discovered later via automated network testing.</p></li><li><p>The MGM Resorts breach in 2023 involved exploitation of an Insecure Direct Object Reference (IDOR) vulnerability found during a manual penetration test, but the flaw went unremediated and was exploited by attackers, highlighting failure in acting on pen test results.</p></li><li><p>An incident involving physical security bypass was reported where pen testers failed to catch a way attackers physically entered a building by triggering motion sensors with a helium balloon, illustrating gaps in physical security testing.</p></li><li><p>Multiple penetration tests repeatedly miss common but critical flaws like weak passwords with no multi-factor authentication, unpatched systems, and overly permissive cloud storage that lead to real attack vectors. These weaknesses often persist despite frequent pen testing, signaling a systemic issue with scope and thoroughness.</p></li><li><p>Traditional periodic penetration tests tend to miss vulnerabilities emerging between tests, with misconfigurations and legacy protocol weaknesses often overlooked, leading to significant security incidents that were not flagged during testing cycles.</p></li></ul><p>These incidents demonstrate that penetration tests are a solution for gap analysis but alone can miss high-impact vulnerabilities due to limited scope, unaddressed findings, lack of repeatability, and variability in tester approaches.</p><p>Legal and compliance consequences for gaps in security assurance programs can be severe and multifaceted. Organizations may face hefty fines, regulatory penalties, increased scrutiny, reputational damage, and even contractual liabilities when gaps in security assurance are overlooked.</p><h1><strong>Compliance Fines and Penalties</strong></h1><ul><li><p>Failure to meet regulatory requirements such as PCI DSS, HIPAA, GDPR, and CMMC can result in substantial fines. For instance, PCI DSS non-compliance fines can be thousands to hundreds of thousands of dollars, and HIPAA violations related to security failure can result in fines up to $1.5 million annually.</p></li><li><p>Organizations that fail to comply with penetration testing mandates risk losing eligibility for government or defense contracts, such as DoD contracts requiring CMMC compliance.</p></li><li><p>Regulatory bodies may impose sanctions, audits, and ongoing monitoring requirements if security assessments are inadequate or incomplete, leading to operational disruptions and added compliance costs.</p></li><li><p>Additional scrutiny from regulatory bodies such as CFIUS or GDPR can result in the loss of international companies license to operate within critical business markets.</p></li></ul><h1><strong>Legal Risks and Liability</strong></h1><ul><li><p>If penetration testing misses critical flaws that later lead to breaches, organizations can face lawsuits, including class actions from affected customers, partners, or shareholders, and liability for resulting financial and data losses.</p></li><li><p>Penetration testers themselves must operate strictly within agreed scopes to avoid legal issues; organizations bear responsibility for ensuring tests cover necessary areas comprehensively to mitigate risks.</p></li></ul><h1><strong>Reputational and Business Impact</strong></h1><ul><li><p>Failing pen tests or missing vulnerabilities can erode trust with customers, business partners, and regulators, damaging brand reputation and market position.</p></li><li><p>Non-compliance and missed vulnerabilities can lead to costly incident response efforts, loss of business continuity, and potential shutdowns or restrictions in regulated industries.</p></li></ul><p>Overall, while detecting vulnerabilities in penetration testing is expected, failure to detect or rectify critical flaws can expose organizations to severe financial penalties, legal action, and lasting business damage, underpinning the need for rigorous, comprehensive, and repeatable testing methodologies beyond just compliance checkmarks.</p><h1>Harmonizing Penetration Testing Data Using OSSTMM</h1><p>Harmonizing penetration testing data and any other security testing outputs using OSSTMM means treating every assessment input into a common, measurable language rather than a one-off report. By mapping results to OSSTMM&#8217;s defined channels and trust metrics, organizations can normalize findings across different testers, vendors, tools, and timeframes, turning subjective observations into comparable data points. This harmonization enables trend analysis, cross-environment benchmarking, and integration with governance, risk, and compliance processes, instead of leaving results trapped in isolated PDFs or portals. As testing outputs are aligned to a consistent model, leaders can compare like-for-like risk across business units, track the impact of remediation efforts, and prioritize investment based on objective measurements rather than narrative alone. In this way, OSSTMM does not replace penetration testing; it upgrades it into a reliable, data-driven assurance function that can scale with the organization and its threat landscape.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mw1-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mw1-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 424w, https://substackcdn.com/image/fetch/$s_!Mw1-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 848w, https://substackcdn.com/image/fetch/$s_!Mw1-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 1272w, https://substackcdn.com/image/fetch/$s_!Mw1-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mw1-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png" width="125" height="100" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:100,&quot;width&quot;:125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6950,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/179164433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mw1-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 424w, https://substackcdn.com/image/fetch/$s_!Mw1-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 848w, https://substackcdn.com/image/fetch/$s_!Mw1-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 1272w, https://substackcdn.com/image/fetch/$s_!Mw1-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de1a7f9-ca74-4170-ab49-d7d960addab6_125x100.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">An Asura Insights post in collaboration with <a href="http://Griffincybersolutions.com">Griffincybersolutions.com</a></figcaption></figure></div>]]></content:encoded></item><item><title><![CDATA[Impact On The Supply Chain]]></title><description><![CDATA[Gaining a better understanding of the JLR breach impact]]></description><link>https://asurainsights.com/p/impact-on-the-supply-chain</link><guid isPermaLink="false">https://asurainsights.com/p/impact-on-the-supply-chain</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 17 Nov 2025 14:03:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uKbQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uKbQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uKbQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 424w, https://substackcdn.com/image/fetch/$s_!uKbQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 848w, https://substackcdn.com/image/fetch/$s_!uKbQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 1272w, https://substackcdn.com/image/fetch/$s_!uKbQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uKbQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic" width="1024" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:719,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102996,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/178970512?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uKbQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 424w, https://substackcdn.com/image/fetch/$s_!uKbQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 848w, https://substackcdn.com/image/fetch/$s_!uKbQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 1272w, https://substackcdn.com/image/fetch/$s_!uKbQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facc7c7d9-f1ce-4ea9-b1ba-e029d14db2a1_1024x719.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A cyberattack on Jaguar Land Rover (JLR) forced a production shutdown that disrupted more than 5,000 organisations throughout its supply chain.  The widespread impact led the UK government to issue a &#163;1.5 billion loan guarantee to support recovery, with total losses to the wider economy estimated at roughly &#163;1.9 billion. The Cyber Monitoring Centre (CMC), an independent non-profit organisation that monitors and classifies major cyber incidents affecting UK organisations, designated the event a critical systemic incident and deemed it the most economically damaging cyber incident in British history.</p><p>Former National Cyber Security Centre (NCSC) director Ciaran Martin states &#8220;Cybersecurity has become economic security. And Economic security is national security.&#8221; The JLR attack demonstrates that cyber incidents can have significant national repercussions that warrant both governmental and executive attention.</p><h1>Background</h1><p>Upon detecting the compromise in late August 2025 JLR initiated an immediate IT shutdown to prevent further spread into manufacturing systems. The decision to disconnect core networks froze internal operations and supplier interfaces, creating an abrupt standstill across JLR&#8217;s digital infrastructure. Production at the company&#8217;s Solihull, Halewood, and Wolverhampton plants remained suspended for nearly six weeks as engineers rebuilt systems and verified operational safety.</p><p>The UK National Crime Agency launched an investigation, while JLR and parent company Tata Motors have released few technical details regarding event. Analysts estimate the outage cost JLR more than &#163;100 million per week in lost output and fixed costs, while downstream suppliers faced severe liquidity strain as halted production left parts undelivered and payments delayed.</p><p>A controlled, phased restart began in early October 2025, with full production not expected to resume until January 2026 at the earliest. Unlike typical data-theft incidents, this attack&#8217;s primary damage stemmed from JLR&#8217;s precautionary shut down of OT environments and factories to contain the breach, illustrating how modern cyber threats can disable physical production as effectively as they can steal data.</p><h1>Economic shock</h1><p>The CMC estimates that the JLR incident caused between &#163;1.6 - &#163;2.1 billion in total economic damages. Most of the losses came from cumulative lost manufacturing output throughout the shutdown and snowballing idle expenses paid by direct suppliers. Upstream, thousands of Tier 1-3 suppliers faced cancelled orders, idle capacity, and liquidity issues as production stopped. Downstream, dealerships, logistics providers, and local businesses around JLR&#8217;s plants reported reduced sales, delivery delays, and temporary layoffs.</p><p>The disruption rapidly moved down the automotive supply chain, demonstrating how the sector is deeply intertwined with local and national economies. In response, the UK government provided Jaguar Land Rover a &#163;1.5 billion loan guarantee to help stabilize its supplier base and prevent further economic fallout from the shutdown.</p><p>For context, cyber incidents faced by Marks &amp; Spencer and Co-op earlier in 2025 each resulted in losses of &#163;270 &#8211; &#163;440.  However, those events were limited to internal customer-facing systems whereas the JLR attack rippled through its entire manufacturing and supply network, producing far greater macroeconomic consequences.</p><h1>Cybersecurity Impact</h1><p>The incident underscores how interconnected modern environments have become. Large manufacturers no longer operate in isolation; their digital ecosystems include vendor APIs, shared virtual private cloud (VPC) environments, and third-party service integrations that connect internal systems to external partners.</p><p>With such architectures, a breach at one node can quickly cascade. If JLR&#8217;s internal applications maintained direct integrations with dealership networks or vendor management systems, attackers could exploit those same links as lateral movement pathways, pivoting from JLR&#8217;s environment into that of connected suppliers or service partners.</p><p>As Asura Insights writers have previously detailed in a recent post <a href="https://asurainsights.com/p/patching-zero-day-or-outdated-protocols">analysis of zero-day response strategies</a>, risk exposure depends on architectural context, how those weaknesses interact across a system. The same logic applies here, where exposure is defined less by the number of vulnerabilities and more by how the systems are connected.</p><p>This is the same category of risk organizations face when deploying shared cloud applications or API endpoints that bridge production networks to ERP platforms such as SAP. Even if JLR&#8217;s primary systems were contained, any exposed integration could have provided an indirect route to compromise downstream vendors or upstream service providers and their clients.</p><p>The event highlights the importance of architectural segmentation and continuous threat modeling across all integrated systems. Vendors connected through VPCs or API gateways should be contractually obligated to maintain independent access controls, logging, and incident isolation capabilities. In this sense, supply-chain resilience now depends as much on cyber architecture design as it does on operational continuity planning.</p><h2>Attack Vectors and Control Gaps</h2><p>Preliminary analyses indicate that the compromise began with an infostealer infection that harvested credentials and session tokens from an employee device. These stolen credentials, including some dating back several years, remained valid within JLR&#8217;s environment and provided attackers with direct access to internal systems. The absence of consistently enforced multi-factor authentication (MFA) enabled threat actors to log in to services such as Jira project management systems, VPN gateways, and other corporate applications using these previously compromised accounts.</p><p>Once inside the network, excessive permissions and limited segmentation allowed attackers to move across interconnected systems that supported corporate it and production operations. While the full extent of this lateral movement has not been disclosed, the scale of the shutdown indicates that critical functions were closely linked, turning what could have been a contained intrusion into a company-wide outage. Some external technical discussions have speculated about additional exposure through legacy or internet facing applications, but these vectors have not been confirmed by investigators. Inadequate monitoring further prolonged the incident, as large data transfers and system interference went undetected until operational disruption became unavoidable.</p><p>Collectively, these weaknesses reflect gaps in basic controls defined under the Open Source Security Testing Methodology Manual (OSSTMM) notably authentication, segmentation, alarm, and resilience. Stolen credentials persisted without validation, monitoring failed to raise alarms, and dependent systems lacked mechanisms to fail safely under attack. Emerging Zero-Trust isolation technologies, such as containerized browsers that destroy their environment after each session, exemplify practical safeguards that could have disrupted this attack chain and confined its spread.</p><h1>Takeaways</h1><p>The architectural complexity described above reinforces that resilience must be engineered, not improvised. Containment, visibility, and recovery capabilities need to be designed, tested, and rehearsed as core operational functions. Organizations that implement a Zero-Trust architecture across both Information Technology (IT) and Operational Technology (OT) environments can limit lateral movement and maintain production continuity verified through controlled validation exercises to ensure shutdown protocols operate safely under real world conditions.</p><p>Recovery depends on immutable, geographically separated backups and diversified storage. A single environment introduces systemic risk and slows restoration. Firms should also verify that suppliers maintain tested contingency plans and sufficient liquidity to withstand extended downtime, reducing the likelihood of cascading supply-chain failures.</p><p>Visibility completes the picture. Maintaining a comprehensive Software Bill of Materials (SBOM) allows teams to trace dependencies, locate affected components, and contain vulnerabilities with precision. Finally, resilience must be a practiced behaviour, not a written policy. Cross-department training and readiness assessments based on the OSSTMM reinforce shared accountability and embed preparedness as a measurable component of organizational resilience.</p><h2>Cyber incidents as economic events</h2><p>The UK government&#8217;s &#163;1.5 billion loan guarantee to Jaguar Land Rover demonstrates how cyber incidents targeting OT can have far-reaching economic consequences. While not part of the nation&#8217;s designated critical infrastructure,  JLR&#8217;s manufacturing systems represent essential industrial capacity, and their disruption demonstrated how dependent national productivity has become on the security of OT environments.</p><p>The CMC has urged policymakers to establish clear frameworks for when and how government intervention should occur during major cyber events. Recent data from the NCSC show that 204 nationally significant incidents were recorded in the 12 months leading to August 2025, more than double the previous year. Former NCSC Director Ciaran Martin has warned that tactics used in attacks like these are increasingly serving as playbooks for state-sponsored actors, with nations such as China and Russia continuing to target industrial economic assets.</p><p>This growing overlap between private sector risk and national security reinforces the need for stronger public-private collaboration and consistent threat intelligence sharing. Ultimately, national resilience depends on the cumulative strength of its individual enterprises. Each organization&#8217;s ability to anticipate and recover from disruption contributes to the stability of the broader economy</p><h1>Closing</h1><p>The JLR case shows that investments in redundancy, supplier readiness, and recovery capabilities are not just defensive measures; they are the foundation of operational and economic continuity. For boards, these investments protect revenue, reputation, and long-term stability, For policymakers, they reduce the likelihood that government intervention will be needed to contain future crises.</p><p>Corporate incentives and national resilience are closely aligned, even if the motivations differ. Strengthening OT security, supplier visibility, and coordinated recovery planning helps safeguard both shareholder value and the wider economy.</p><p>While the industry clich&#233; holds that it is not &#8220;if&#8221; another major incident occurs but &#8220;when&#8221;, proactive preparedness remains the most effective way to reduce disruption and preserve confidence in critical sectors.</p><h5>Sources</h5><h6>Cyber Monitoring Centre Limited. (n.d.) and Cyber Monitoring Centre: CMC (2025). <em>Cyber Monitoring Centre Statement on the Jaguar Land Rover Cyber Incident &#8211; October 2025 &#8211; CMC</em>. [online] Cybermonitoringcentre.com. Available at: https://cybermonitoringcentre.com/2025/10/22/cyber-monitoring-centre-statement-on-the-jaguar-land-rovercyber-incident-october-2025/.</h6><h6>CYFIRMA (2025). <em>Investigation Report on Jaguar Land Rover Cyberattack - CYFIRMA</em>. [online] CYFIRMA. Available at: https://www.cyfirma.com/research/investigation-report-on-jaguar-land-rover-cyberattack/.</h6><h6>Gal, A. (2025). <em>Jaguar Land Rover Breached by HELLCAT Ransomware Group Using Its Infostealer Playbook&#8212;Then a Second Hacker Strikes</em>. [online] InfoStealers. Available at: https://www.infostealers.com/article/jaguar-land-rover-breached-by-hellcat-ransomware-using-its-infostealer-playbook-then-a-second-hacker-strikes/.</h6><h6>Inagaki, K. and Smith, K. (2025). <em>Jaguar Land Rover cyber attack estimated to have cost the UK &#163;1.9bn</em>. [online] @FinancialTimes. Available at: https://www.ft.com/content/6f2923b3-2a4b-4c9b-9cde-eb5f0d5b9ce3.</h6><h6>Ishwar Singh Sisodiya (2025). <em>How Did Hackers Breach Jaguar Land Rover and What Does It Teach Us?</em>[online] Latest Cybersecurity and Hacking News For You. Available at: https://www.hackers4u.com/how-did-hackers-breach-jaguar-land-rover-and-what-does-it-teach-us.</h6><h6>Kharod, S. (2025). <em>Welcome To Zscaler Directory Authentication</em>. [online] Treblle.com. Available at: https://treblle.com/blog/jlr-breach-breakdown-analysis.</h6><h6>Pearson, J. (2025). Jaguar Land Rover hack cost UK economy an estimated $2.5 billion, report says. <em>Reuters</em>. [online] 22 Oct. Available at: https://www.reuters.com/sustainability/boards-policy-regulation/jaguar-land-rover-hack-cost-uk-economy-25-billion-report-says-2025-10-22/.</h6><h6>Sue, C. (2023). <em>Patching: Zero-Day or Outdated Protocols</em>. [online] Asurainsights.com. Available at: https://asurainsights.com/p/patching-zero-day-or-outdated-protocols.</h6>]]></content:encoded></item><item><title><![CDATA[Building an AI App With Cloudflare Workers Part 3]]></title><description><![CDATA[Part 3 of 3 Tying it all together with Artificial Intelligence]]></description><link>https://asurainsights.com/p/building-an-ai-app-with-cloudflare-574</link><guid isPermaLink="false">https://asurainsights.com/p/building-an-ai-app-with-cloudflare-574</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 03 Nov 2025 17:46:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ITWb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ITWb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ITWb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ITWb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ITWb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ITWb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ITWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg" width="1024" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163738,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/176558670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b81e7c-f7f5-41ab-9424-9052b51b1c86_1024x1024.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ITWb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ITWb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ITWb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ITWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F756820d8-f421-49e0-976a-d3ea24c56bc8_1024x901.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In the first two parts of this series, we built a complete full-stack application. Part 1 covered the React front-end, and Part 2 built the Hono and D1 back-end that lets us save, load, and delete our notes and content.</p><p>Our app &#8220;works&#8221; but, it&#8217;s still missing the core feature that inspired this project: an LLM friend to help with writing guidance. The chat window we built is just a UI element that doesn&#8217;t talk to anything.</p><p>Welcome to Part 3, the final and most exciting piece of the puzzle. This is where we wire up our friend&#8217;s brain.</p><p>We are going to dive into the Cloudflare AI ecosystem. I&#8217;ll walk through adding the AI bindings to our worker, creating a new <code>/aichat</code> endpoint in Hono, and for a little classical fun we&#8217;re using Hono&#8217;s built-in streaming helpers to get that real-time, &#8216;typing&#8217; effect directly from the LLM.</p><p>By the end of this post, our AI-powered text editor will finally be complete.</p><h2><strong>Updating The Backend API To Use Cloudflare</strong></h2><p>Up to this point, our Hono back-end could be developed and tested in a generic local server. This was perfectly fine for our file and database routes in Part 2, as they behave like any standard API.</p><p>However, to add the AI functionality, we need to leverage Cloudflare&#8217;s AI binding. This is a special service provided by the Cloudflare platform that our current local setup has no idea what it is or how to connect to it.</p><p>To use this powerful platform, we must transition our project to run within an actual Cloudflare Workers runtime. We can emulate this environment locally using <strong>Wrangler</strong>, Cloudflare&#8217;s command-line tool. This requires us to reinitialise our <code>server</code> folder as an official Cloudflare Workers project.</p><p>First, <strong>delete the existing </strong><code>server</code><strong> folder</strong> we created in Part 2. Now, from your project&#8217;s root, initialise a new Cloudflare Workers project:</p><pre><code><code>$ bun create cloudflare@latest</code></code></pre><p>The terminal will prompt you to name the project. Name it &#8220;server&#8220; to replace the one you just deleted. When it asks you to choose a framework starter, select Hono. This will set you up with a new &#8220;server&#8221; folder that includes Hono, <code>wrangler</code>, and all the necessary configurations to run on the Cloudflare platform.</p><p>Note: The dependency install step may fail here, that&#8217;s okay. It will be fixed after modifying the <code>package.json</code> and <code>tsconfig.json</code> to include bun in the build scripts instead of npm. Enter the &#8220;server&#8221; directory and change the <a href="https://github.com/haru-02/wraiter/blob/main/server/package.json">package.json</a> and <a href="https://github.com/haru-02/wraiter/blob/main/server/tsconfig.json">tsconfig.json</a> to reflect the given examples. Then, run the following command to install all dependencies and set up the starter project. </p><pre><code><code>$ cd server
$ bun install</code></code></pre><p>This project is now set up to use <code>wrangler</code>, Cloudflare&#8217;s command-line tool, which you can run from this directory. Now using your Cloudflare account, and type the following command to login to your account via wrangler cli.</p><pre><code><code>$ buns wrangler login</code></code></pre><p>The new <code>server/src</code> directory contains a default <code>index.ts</code> file. We&#8217;re going to modify this file and add a new one, <code>types.ts</code>, to create a clean, type-safe structure for our API.</p><p>Here&#8217;s what each file will do:</p><ul><li><p><code>types.ts</code><strong> (New File):</strong> This is a crucial file for a good developer experience. We&#8217;ll use it to define custom TypeScript types for our Cloudflare environment bindings. In simple terms, this file will teach TypeScript what <code>c.env.AI</code> and <code>c.env.DB</code> are, giving us auto-completion and error-checking so we don&#8217;t make mistakes later.</p></li><li><p><code>index.ts</code><strong> (Modified):</strong> This will be the main entry point for our Hono application. Its job is to set up the Hono server, import our custom types, and define the top-level routes for our API (like <code>/files</code> and <code>/aichat</code>). It will then hand off the requests to the correct route-handler files.</p></li></ul><pre><code><code>import type { Env } from &#8220;hono&#8221;;

declare class Ai {
  run(model: string, options: any): Promise&lt;any&gt;;
}

declare class D1Database {
  prepare(query: string): {
    bind(...values: any[]): {
      run(): Promise&lt;any&gt;;
      all(): Promise&lt;any&gt;;
      first(): Promise&lt;any&gt;;
      raw(): Promise&lt;any&gt;;
    };
  };
}

export interface CustomEnv extends Env {
  AI: Ai;
  DB: D1Database;
  FRONTEND: string; // The URL of the frontend application
}</code></code></pre><p>This <code>types.ts</code> file is crucial for a good developer experience. We&#8217;re using it to <em>declare</em> the &#8220;shape&#8221; of the environment bindings Cloudflare will provide at runtime. This teaches TypeScript what our <code>c.env</code> object will contain, giving us auto-completion and error-checking.</p><h3>Declare Class Ai</h3><p>This tells TypeScript that a class named <code>Ai</code> will exist when we deploy our code. We don&#8217;t have to write this class; Cloudflare&#8217;s runtime provides it.</p><ul><li><p><code>run(model: string, options: any): Promise&lt;any&gt;</code>: We&#8217;re defining its primary method, <code>run</code>.</p><ul><li><p>It takes a model identifier (e.g., <code>@cf/meta/llama...</code>) and an <code>options</code> object.</p></li><li><p>We use <code>Promise&lt;any&gt;</code> because the response can vary. We&#8217;re using it for text streaming, but it could also be a simple text response or other data. This <code>any</code> type gives us the flexibility to handle different AI model outputs.</p></li></ul></li></ul><h3>Declare Class D1Database</h3><p>Similarly, this defines the interface for Cloudflare&#8217;s D1 database binding.</p><ul><li><p><code>prepare(query: string)</code>: This is the main method you use. It prepares an SQL query and returns an object with methods to execute it:</p><ul><li><p><code>.run()</code>: Use this for <code>INSERT</code>, <code>UPDATE</code>, or <code>DELETE</code> queries that don&#8217;t return data.</p></li><li><p><code>.all()</code>: Use this for <code>SELECT</code> queries to get an array of all matching rows.</p></li><li><p><code>.first()</code>: Use this to get just the first row from a query, which is useful for fetching by ID.</p></li><li><p><code>.raw()</code>: Use this for accessing the low-level, raw results from the database driver.</p></li></ul></li></ul><h3>Export Interface CustomEnv</h3><p>This interface is the most important part for our code. It&#8217;s the &#8220;glue&#8221; that brings all the bindings together for Hono.</p><ul><li><p><code>extends Env</code>: It &#8220;extends&#8221; Hono&#8217;s base <code>Env</code> type.</p></li><li><p><code>AI: Ai</code>: Binds our <code>Ai</code> class definition. Now, when we type <code>c.env.AI</code>, TypeScript knows it has a <code>.run()</code> method.</p></li><li><p><code>DB: D1Database</code>: Binds our <code>D1Database</code> definition. <code>c.env.DB</code> is now fully typed.</p></li><li><p><code>FRONTEND: string</code>: This defines a string variable for our front-end&#8217;s URL. We will store this as a <strong>secret</strong> in the Cloudflare dashboard. We&#8217;ll use this in our CORS (Cross-Origin Resource Sharing) configuration. This policy instructs the browser to only allow our deployed front-end to read responses from our API, which is a key security measure to prevent malicious websites from making requests and reading our data on a user&#8217;s behalf.</p></li></ul><h2>Cloudflare Environment Configuration</h2><p>To start with storing secrets, enter the following command in the terminal to store all required secrets as environment variables. The terminal will then prompt you to enter the value.</p><pre><code><code>$ wrangler secrets add FRONTEND</code></code></pre><p>Defining the types in <code>types.ts</code> is only half the story. That file tells TypeScript what our environment <em>should</em> look like, but it doesn&#8217;t connect any real services.</p><p>For that, we need to edit <code>wrangler.jsonc</code>. This is the central configuration file for our Worker. Its most important job is to create <strong>bindings</strong>&#8212;links between the variables in our code (like <code>c.env.DB</code> and <code>c.env.AI</code>) and the actual, live Cloudflare services (like a specific D1 database). This file is what ensures that when our code runs, it has real services to talk to.</p><pre><code><code>{
  &#8220;$schema&#8221;: &#8220;../node_modules/wrangler/config-schema.json&#8221;,
  &#8220;name&#8221;: &#8220;server&#8221;,
  &#8220;main&#8221;: &#8220;src/index.ts&#8221;,
  &#8220;compatibility_date&#8221;: &#8220;2025-07-02&#8221;,
  &#8220;ai&#8221;: {
    &#8220;binding&#8221;: &#8220;AI&#8221;
  },
  &#8220;d1_databases&#8221;: [
    {
      &#8220;binding&#8221;: &#8220;DB&#8221;,
      &#8220;database_name&#8221;: &lt;your database name here&gt;
      &#8220;database_id&#8221;: &lt;your generated database id here&gt;
    }
  ]
}</code></code></pre><p>The <code>wrangler.jsonc</code> configuration shown above contains the essential bindings to get your AI and database services operational. You&#8217;ll notice the <code>d1_databases</code> section requires a unique <code>database_name</code> and <code>database_id</code>. To generate these for your project, run the following command in your terminal.</p><h3>Building the Database</h3><pre><code><code>$ bunx wrangler@latest d1 create &lt;databse-name&gt;</code></code></pre><p>The <code>create</code> command initialises a new D1 database This command initialises a new D1 database and outputs its associated <code>database_id</code>. You&#8217;ll then copy both the <code>database_name </code>you chose and this new <code>database_id</code> into your <code>wrangler.jsonc</code> file to complete the D1 binding. With the database created, your next step is to define its table structure. Create a new file named <code>schema.sql</code> in the <code>server/</code>directory and paste in the following SQL queries.</p><pre><code><code>-- here is the default schema for storing the files.
DROP TABLE IF EXISTS files;
CREATE TABLE IF NOT EXISTS files (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL UNIQUE,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);</code></code></pre><p>These SQL commands define the &#8220;blueprint&#8221; for our <code>files</code> table. Let&#8217;s look at the key elements and what they do:</p><ul><li><p><code>DROP TABLE IF EXISTS files;</code> This command makes our script idempotent, meaning it can be run over and over without causing errors. It ensures that every time we apply this schema, we start with a fresh, clean <code>files</code> table, which is perfect for development.</p></li><li><p><code>CREATE TABLE IF NOT EXISTS files (...)</code> This is the main command that creates our table. The definitions inside the parentheses are the most important part:</p><ul><li><p><code>id INTEGER PRIMARY KEY AUTOINCREMENT</code> This creates our unique ID. The <code>PRIMARY KEY</code> ensures every <code>id</code>is unique, and <code>AUTOINCREMENT</code> means we don&#8217;t have to provide an <code>id</code> when we save a note; the database will assign one for us (1, 2, 3, etc.).</p></li><li><p><code>title TEXT NOT-NULL UNIQUE</code> This is for the note&#8217;s filename. <code>NOT NULL</code> means the database will reject any note without a title. <code>UNIQUE</code> is crucial: it prevents two notes from having the same title, which is exactly the behaviour we want.</p></li><li><p><code>content TEXT NOT-NULL</code> This column will store the actual note content (the HTML from our editor). It also cannot be empty.</p></li><li><p><code>created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP</code> This is a great &#8220;housekeeping&#8221; column. We don&#8217;t have to specify the time when we save a note. The database will <em>automatically</em> stamp the new row with the exact time of its creation.</p></li></ul></li></ul><p>Running the following command in the terminal initialises the database locally. Changing the <code>--local</code> tag to <code>--remote</code> creates a database instance in on the workers platform instead of locally on your machine.</p><pre><code><code>$ bunx wrangler d1 execute &lt;database-name&gt; --local --file=./schema.sql</code></code></pre><h2>Talking To The Cloudflare AI Binding</h2><p>With our database schema in place and all our bindings configured in <code>wrangler.jsonc</code>, we&#8217;re ready to write the main logic for our back-end.</p><p>We&#8217;ll do this in <code>server/src/index.ts</code>. This file is the main entry point for our Hono API. By importing the <code>CustomEnv</code> type we defined in <code>types.ts</code>, we&#8217;ll get full type-safety across our application.</p><p>This file will be responsible for two primary tasks:</p><ol><li><p><strong>Handling CORS:</strong> We&#8217;ll apply Hono&#8217;s CORS middleware here. This will use our <code>c.env.FRONTEND</code> secret to ensure that only our deployed front-end application is permitted to read responses from our API.</p></li><li><p><strong>Routing Requests:</strong> This file will act as the main &#8220;switchboard&#8221; for our API. It will inspect the incoming request&#8217;s path and route it to the correct handler file. For example, a request to <code>/files</code> will be forwarded to our file-handling logic, while a request to <code>/aichat</code> will be sent to our new AI logic.</p></li></ol><p>To keep our <code>index.ts</code> clean and organized, we won&#8217;t put all our API logic directly in this file. Instead, we&#8217;ll use Hono&#8217;s <code>app.route()</code> method to delegate groups of requests to specific route handlers.</p><p>Add these two lines to your <code>index.ts</code>:</p><pre><code><code>app.route(&#8221;/files&#8221;, filesRoutes);
app.route(&#8221;/aichat&#8221;, chatRoutes);</code></code></pre><p>This code tells Hono to act like a switchboard:</p><ul><li><p>Any request beginning with <code>/files</code> (like <code>/files</code> or <code>/files/123</code>) will be forwarded to the <code>filesRoutes</code> handler.</p></li><li><p>Any request beginning with <code>/aichat</code> will be forwarded to the <code>chatRoutes</code> handler.</p></li></ul><p>We&#8217;ll define these handlers in their own files inside the <code>server/src/routes/</code> directory: <code>filesRoutes</code> in <code>files.ts</code> and <code>chatRoutes</code> in <code>chat.ts</code>.</p><p>Inside our <code>chat.ts</code> file, the core logic for connecting to Cloudflare AI comes down to this single call:</p><pre><code><code> const response = await ai.run(&#8221;@cf/meta/llama-3.1-8b-instruct&#8221;, {
      messages,
      stream: true,
    });
</code></code></pre><p>This code calls the <code>ai.run()</code> method, which we get from our <code>c.env.AI</code> binding. Let&#8217;s break down the parameters:</p><ul><li><p><code>@cf/meta/llama-3.1-8b-instruct</code>: This is the specific model we&#8217;re asking Cloudflare to use.</p></li><li><p><code>messages</code>: This is the formatted array containing the user&#8217;s prompt (and, as we&#8217;ll see, our editor&#8217;s content as context).</p></li><li><p><code>stream: true</code>: This is the most important parameter for our app&#8217;s user experience. By setting this to <code>true</code>, we are telling the AI agent not to wait until the <em>entire</em> response is generated. Instead, it will send us the response in small chunks, word by word. This allows us to stream the data to our front-end and create that real-time &#8220;typing&#8221; effect, rather than making the user wait for one large block of text.</p></li></ul><p><em>(The full code for the </em><code>chat.ts</code><em> file, which includes all the logic for formatting the </em><code>messages</code><em> object and handling the streaming response, can be found</em> <em><a href="http://github.com/haru-02/wraiter/blob/main/server/src/routes/chat.ts">here</a>.</em>)</p><h3>Defining the File API Using CRUD</h3><p>The <code>files.ts</code> file is where we&#8217;ll define all the API logic for handling our notes. By using <code>app.route(&#8221;/files&#8221;, filesRoutes)</code>, our main <code>index.ts</code> file has already directed all requests starting with <code>/files</code> to this file.</p><p>Here, we&#8217;ll define a set of <strong>CRUD</strong> (Create, Read, Update, Delete) endpoints that match the HTTP methods our front-end is calling:</p><ul><li><p><code>GET /files</code></p><ul><li><p><strong>What it does:</strong> Fetches a list of all files.</p></li><li><p><strong>Why:</strong> This is what our sidebar will call to display the list of saved notes.</p></li></ul></li><li><p><code>POST /files</code></p><ul><li><p><strong>What it does:</strong> Creates a new file (or updates an existing one).</p></li><li><p><strong>Why:</strong> This is the endpoint our <code>handleSave</code> function calls, sending the <code>title</code> and <code>content</code> in the request body.</p></li></ul></li><li><p><code>GET /files/:title</code></p><ul><li><p><strong>What it does:</strong> Fetches the content of a <em>single</em>, specific file.</p></li><li><p><strong>Why:</strong> The <code>:title</code> part of the URL is a <strong>dynamic parameter</strong>. When our front-end calls <code>/files/my-note</code>, this route will &#8220;capture&#8221; <code>my-note</code> and use it to query the database for that specific file&#8217;s content.</p></li></ul></li><li><p><code>DELETE /files/:title</code></p><ul><li><p><strong>What it does:</strong> Deletes a <em>single</em>, specific file.</p></li><li><p><strong>Why:</strong> Just like the <code>GET</code> route, this uses the <code>:title</code> parameter to find and delete one specific file. This is what our &#8220;delete&#8221; button will call.</p></li></ul></li></ul><h2><strong>Wrapping Up and Adding Sidebar Content</strong></h2><p>Now that we have all the endpoints defined, we can wrap up the project by updating <code>App.tsx</code> and <code>AppSideBar.tsx</code>. The code for AppSideBar can be found <a href="https://github.com/haru-02/wraiter/blob/main/client/src/components/AppSidebar.tsx">here</a>. This will allow for all the available files to be displayed in the sidebar. The <code>&lt;SidebarContent&gt;</code> area is populated by mapping over our list of files and rendering a custom <code>FileBar</code> component (defined in <code>FileBar.tsx</code>) for each one. We pass the functions for file deletion and retrieval down from <code>App.tsx</code> as props, allowing each <code>FileBar</code> component to trigger actions on the correct file.</p><p><code>App.tsx</code> serves as the main controller, defining the event handlers for retrieving file content and managing the active filename, as shown in the code <a href="https://github.com/haru-02/wraiter/blob/main/client/src/App.tsx">here</a>.</p><h2><strong>Conclusion</strong></h2><p>And with that, our project is complete. We now have a fully functional, AI-powered text editor built from the ground up.</p><p>Across this three-part series, we&#8217;ve built a React front-end, a Hono API, and connected it all to a Cloudflare D1 database and streaming AI bindings. My hope is that this journey has demystified how these services fit together and shown how powerful the Cloudflare stack is for building modern, full-stack applications.</p><h3>Next Steps &amp; Resources</h3><p>Our application is built, but it&#8217;s not live on the web yet. The next logical step is deployment. For further study and to get your own project online, here are the official resources:</p><ul><li><p><strong><a href="https://github.com/haru-02/wraiter">Project Repository</a>:</strong> Get the complete, finished code for this application.</p></li><li><p><strong><a href="https://bhvr.dev/deployment/server/cloudflare-workers">BHVR Docs</a>:</strong> Learn how to deploy your application to the web.</p></li><li><p><strong><a href="https://developers.cloudflare.com/">Cloudflare Docs</a>:</strong> The official documentation for Workers, D1, and AI.</p></li></ul><p>Thanks for following along!</p><h2>Carl&#8217;s Final Comments</h2><p>Great writeup from Rahul explaining how he used multiple open source and community backed platforms to build a structured application for use within the Cloudflare platform. This journey has been an exercise in how to architect a solution which can be easily retuned and redeployed to any environment with minor changes really showcasing Rahul&#8217;s platform agnostic writing.</p><p>Simplifying this for a production product many organisations might choose to use a more platform specific route. Utilising something like static pages and direct use of Cloudflare workers for a more light weight trade off at the expense of being locked into the Cloudflare platform.</p><p>Rahul&#8217;s path does allow for the option to be more extensive across environments even allowing for easy integration of multiple AI modules to be easily integrated not just the Cloudflare supplied resources. Finally the quality of an AI application written in this way can really depend on the prompting it is using. This example shows how to build a strong platform agnostic back end that gives a good strong foundation for all the AI preprinting that a project like this would benefit from.</p>]]></content:encoded></item><item><title><![CDATA[Advancing Beyond Zero Trust: OSSTMM's Trust Metrics]]></title><description><![CDATA[A Holistic Approach to Security]]></description><link>https://asurainsights.com/p/advancing-beyond-zero-trust-osstmms</link><guid isPermaLink="false">https://asurainsights.com/p/advancing-beyond-zero-trust-osstmms</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Wed, 29 Oct 2025 14:01:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8rMF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8rMF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8rMF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 424w, https://substackcdn.com/image/fetch/$s_!8rMF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 848w, https://substackcdn.com/image/fetch/$s_!8rMF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 1272w, https://substackcdn.com/image/fetch/$s_!8rMF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8rMF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic" width="1024" height="934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:934,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145164,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/177202642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8rMF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 424w, https://substackcdn.com/image/fetch/$s_!8rMF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 848w, https://substackcdn.com/image/fetch/$s_!8rMF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 1272w, https://substackcdn.com/image/fetch/$s_!8rMF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea5d3d59-d608-44f9-859e-bbd7840b31bd_1024x934.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The enterprise security landscape has evolved from perimeter-based defense strategies to more involved approaches that acknowledge the complexity of modern threats. One concept &#8220;Zero Trust&#8221; has gained prominence in boardrooms and among leadership as a response to this changing paradigm. However, Zero Trust&#8217;s methodology only covers deployment. The OSSTMM introduces a groundbreaking stance on &#8220;Trust Metrics&#8221; that redefines how organizations perceive manageable security. In this article, we explore how OSSTMM&#8217;s Trust Metrics fully encompass the idea of Zero Trust while extending a holistic and adaptable approach to assure environment safeguarding.</p><h1>Zero Trust and Its Foundations</h1><p>Rooted in the principle of not trusting any entity by default, regardless of its location or origin. This approach is based on the understanding that threats can emerge from both external and internal sources. To achieve Zero Trust, organizations implement rigorous access controls, least-privilege policies, micro-segmentation, and continuous monitoring. While Zero Trust has transformed security by reducing the attack surface, the OSSTMM extends this foundation by redefining how trust itself is measured and applied. Rather than assuming trust can simply be removed, OSSTMM moves beyond policy-driven access control to a measurable model of &#8220;trust transaction,&#8221; ensuring that every interaction, system, and process can be objectively validated. In doing so, OSSTMM provides a scientific framework that complements Zero Trust with a structured means to test, verify, and continuously calibrate trust in real-world operations.</p><h1>Trust Metrics: Expanding the Zero Trust Paradigm</h1><p>OSSTMM introduces the concept of &#8220;Trust Metrics,&#8221; which introduces a new dimension to the security equation. Trust Metrics bridge the gap between technical security assessments and real-world risk scenarios. Unlike traditional vulnerability-based assessments, Trust Metrics evaluate the potential impact of a vulnerability if exploited by a malicious actor. This approach accounts for variables such as attacker motivations, potential damages, and overall business risk. As a result, Trust Metrics provide a more accurate representation of the actual risk an organization faces, aligning security strategies with business goals.</p><h1>Holistic Understanding of Security</h1><p>Trust Metrics deepen the holistic understanding of security by explicitly evaluating a range of elements that shape an organization&#8217;s security posture. This encompasses technology-related vulnerabilities, such as outdated software, misconfigured systems, or unpatched devices, as well as human factors like employee training, awareness programs, and susceptibility to social engineering attacks. Additionally, Trust Metrics consider organizational processes, including the effectiveness of access control policies and regularity of compliance reviews, and the interconnectedness of systems, which can influence the spread of threats across networks. For example, Trust Metrics may assess the frequency of security audits, the speed of incident response times, or the degree of system interconnectivity to gauge how risk could propagate within the environment. By incorporating these concrete examples and definitions, Trust Metrics ensure that security assessments deliver a more precise and actionable depiction of an organization&#8217;s resilience against potential threats.</p><h1>Quantifiable Risk Measurement</h1><p>Trust Metrics introduce a quantifiable measurement of security trustworthiness. By assigning numerical values to vulnerabilities based on their potential impact, organizations can prioritize their mitigation efforts effectively. This method quantifies the potential risk reduction achieved by addressing specific vulnerabilities, enabling organizations to make informed decisions about resource allocation and risk management strategies.</p><h1>Beyond Technical Assessments</h1><p>While Zero Trust predominantly revolves around technical security measures, Trust Metrics encapsulate a more comprehensive understanding of trust that encompasses human behavior, processes, and the overall organizational culture. This approach aligns with the growing recognition that human error, social engineering, and process vulnerabilities can be just as critical as technical weaknesses.</p><h1>Adaptability and Evolution</h1><p>One of the defining features of OSSTMM&#8217;s Trust Metrics is their adaptability. As threat landscapes evolve, so do the Trust Metrics. This adaptability ensures that organizations can stay ahead of emerging threats and challenges, adjusting their security strategies in response to changing circumstances.</p><h1>Conclusion</h1><p>While Zero Trust strategies have propelled the security landscape forward, OSSTMM&#8217;s Trust Metrics enhance the essence of Zero Trust while expanding assurance that the business is as safeguarded as it claims to be. By considering real-world scenarios, quantifying risk, and acknowledging the interplay of human behavior and processes, Trust Metrics provide a more complete assessment of security posture. As organizations strive to navigate an ever-evolving threat landscape, OSSTMM&#8217;s Trust Metrics offer a comprehensive and adaptable framework that empowers them to take control of their security destiny with a clear understanding of trust and risk.</p>]]></content:encoded></item><item><title><![CDATA[Building an AI App With Cloudflare Workers Part 2]]></title><description><![CDATA[Part 2 of 3 Connecting to the Back End]]></description><link>https://asurainsights.com/p/building-an-ai-app-with-cloudflare-981</link><guid isPermaLink="false">https://asurainsights.com/p/building-an-ai-app-with-cloudflare-981</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 27 Oct 2025 11:56:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!F7Bg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In Part 1, we built the complete front-end for our AI-powered text editor. We have a responsive sidebar, a rich-text editor, and all the buttons in place&#8212;but it&#8217;s currently just a facade. That <code>handleSave</code> function we wrote fires a request into the void, and our file list is empty for a simple reason: there&#8217;s no server.</p><p>Welcome to Part 2, where we build the engine. This post is all about bringing our application to life by building the back-end. We&#8217;ll start by initializing a new Cloudflare Workers project and setting up <strong>Hono</strong> as our API framework. From there, we&#8217;ll create the API endpoints for our files and connect them to a <strong>Cloudflare D1</strong> database. By the end of this article, our app will be able to create, read, and save notes for real.</p><h2><strong>Writer and AI chat UI</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F7Bg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F7Bg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 424w, https://substackcdn.com/image/fetch/$s_!F7Bg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 848w, https://substackcdn.com/image/fetch/$s_!F7Bg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 1272w, https://substackcdn.com/image/fetch/$s_!F7Bg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F7Bg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26370,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/176558480?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!F7Bg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 424w, https://substackcdn.com/image/fetch/$s_!F7Bg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 848w, https://substackcdn.com/image/fetch/$s_!F7Bg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 1272w, https://substackcdn.com/image/fetch/$s_!F7Bg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d3215da-f61c-4668-9542-9cab9e20050f_1919x938.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The next step is to build the text editor and the AI chatbot UI components. The text editor is built using the <a href="https://tiptap.dev">tiptap</a> library, and the rest using <a href="https://ui.shadcn.com">shadcn</a> components. To begin, we&#8217;ll install the necessary components using bun.</p><pre><code><code>$ cd client
$ bun install @tiptap/react @tiptap/pm @tiptap/starter-kit
$ bun shadcn@latest add sonner input scroll-area separator</code></code></pre><p>Using the file <code>writer.tsx</code> in <code>src/components</code> we then start building the writer component as the code given <a href="https://github.com/haru-02/wraiter/blob/main/client/src/components/Writer.tsx">here</a>.</p><p>The writer must have a few props defined which corresponds to the content, save state, filename and the file id of the currently open field in the writer. Upon fetching a file from the sidebar, the file contents must be displayed in the writer, or when the save button is clicked, the current filename and the file contents must be saved to the database. These actions require us to maintain states for the related sub-components. Hence, the need to define props and states.</p><p>All application state, including the note content, will be managed within the main <code>App.tsx</code> component. This centralized approach is critical for passing the editor&#8217;s content as context to the AI chat.</p><p>While we will define the full API functionality later, we&#8217;ll stub out the necessary API calls (like saving notes) for now. We&#8217;ll assume the API&#8217;s base URL is defined in a <code>.env</code> file, but we&#8217;ll use dummy links as our main focus in this section is building the <strong>UI</strong>.</p><pre><code><code>const editor = useEditor({
  extensions: [starterKit],
  content: content,
  editorProps: {
    attributes: {
      class:
        &#8220;prose prose-blue dark:prose-invert max-w-none focus:outline-none min-h-[150px] p-2&#8221;,
    },
  },
  onUpdate: ({ editor }) =&gt; {
    // Notify parent when editor content changes
    onContentChange(editor.getHTML()); // Pass HTML content back to App
  },
});</code></code></pre><p>The code above is the instance of the editor where it takes the input of the content. The <code>onUpdate</code> field will update the content to the parent editor as it changes. The rest of the &#8220;class&#8221; attributes defined within this instance style the component to be responsive to the display device. This instance is then later used within the returned tsx structure in the file.</p><pre><code><code>  const handleSave = async () =&gt; {
    if (!editor) return;
    setSaving(true);
    const editorContent = editor.getHTML(); // Get HTML content from the editor

    // Basic validation
    if (!filename.trim()) {
      toast.error(&#8221;Filename cannot be empty!&#8221;);
      setSaving(false);
      return;
    }
    if (!editorContent.trim()) {
      toast.error(&#8221;Document content cannot be empty!&#8221;);
      setSaving(false);
      return;
    }

    try {
      const res = await fetch(`${API_URL}/files`, {
        method: &#8220;POST&#8221;,
        headers: { &#8220;Content-Type&#8221;: &#8220;application/json&#8221; },
        body: JSON.stringify({
          title: filename, // Use the filename from the input
          content: editorContent,
        }),
      });
      const data = await res.json();
      if (data.success) {
        toast.success(&#8221;File saved successfully!&#8221;);
        onSaveComplete(); // Notify App.tsx to re-fetch files
      } else {
        toast.error(data.error || &#8220;Failed to save file.&#8221;);
      }
    } catch (e) {
      console.error(&#8221;Error saving file:&#8221;, e);
      toast.error(&#8221;Failed to save file. Network error or server issue.&#8221;);
    } finally {
      setSaving(false);
    }
  };
</code></code></pre><p>The handleSave function deals with saving the content once the save button is pressed, by first validating that the content is not empty, and then bundling the filename and content as a json and passing it as the body while issuing a post request to the backend at the <code>/files</code> endpoint, so that it can be saved in the D1 database later on by the backend.</p><p>Now, the next steps involve in creating the AI chat UI. create a file <code>AiChat.tsx</code> in <code>src/components</code> and follow along the code given <a href="https://github.com/haru-02/wraiter/blob/main/client/src/components/AiChat.tsx">here</a>. Similar to the writer, we shall also assume here that AI responses to queries are being passed as a stream of data from the backend endpoint <code>/aichat</code></p><p>The <code>Message</code> is a custom UI component that is as described below. It is placed in <code>Message.tsx</code> in <code>src/components/ui</code></p><pre><code><code>import { Loader2 } from &#8220;lucide-react&#8221;;
import ReactMarkdown from &#8220;react-markdown&#8221;;

interface MessageProps {
  role: &#8220;user&#8221; | &#8220;ai&#8221;;
  content: string;
  isLoading: boolean;
}

const Message: React.FC&lt;MessageProps&gt; = ({
  role,
  content,
  isLoading,
}: MessageProps) =&gt; {
  const isUser = role === &#8220;user&#8221;;
  return (
    // &#8216;justify-end&#8217; for user, &#8216;justify-start&#8217; for AI to align messages to sides
    &lt;div
      className={`flex items-start gap-3 p-2 ${
        isUser ? &#8220;justify-end&#8221; : &#8220;justify-start&#8221;
      }`}
    &gt;
      &lt;div
        className={`max-w-[70%] rounded-lg p-3 shadow-md ${
          isUser
            ? &#8220;bg-primary text-primary-foreground&#8221; // Shadcn primary button colors for user messages
            : &#8220;bg-muted text-muted-foreground&#8221; // Shadcn muted background for AI messages
        }`}
      &gt;
        {isLoading ? (
          &lt;div className=&#8221;flex items-center space-x-2&#8221;&gt;
            &lt;Loader2 className=&#8221;h-4 w-4 animate-spin&#8221; /&gt;
            &lt;span&gt;Thinking...&lt;/span&gt;
          &lt;/div&gt;
        ) : (
          &lt;div className=&#8221;text-sm break-words&#8221;&gt;
            &lt;ReactMarkdown&gt;{content}&lt;/ReactMarkdown&gt;
          &lt;/div&gt;
        )}
      &lt;/div&gt;
    &lt;/div&gt;
  );
};

export default Message;
</code></code></pre><p>Continuing with the AI chat, the main function to focus here will be the <code>handleSendMessage</code> function, which handles with fetching the AI responses. With the helpo of AI Agents in Cloudflare, we can stream the AI responses to better simulate the chat funcitonality so that the user does not have to wait for the backend to collate the data completely before sending the response to render in the frontend, but rather send the data as a stream of bytes. Assuming that we are getting the response as a stream of string from the <code>/aichat</code> endpoint, we code the <code>handleSendMessage</code> as such represented in line 41 in the link given.</p><p>The function first clears the input field and stores the user prompt. If the message contains the key &#8220;@writer&#8221;, it includes the writer content passed to it via props as context, if not, then the context is empty. A state is maintained for the previoulsy updated message to the interface, the current message recieved and the loading state. The response is contantly refreshed by storing the response in a buffer and then displaying it by updating the state maintained by prevMessage and then continuing to wait for the next stream of messages by deading the buffer until the done state is set to &#8220;true&#8221;. All external error cases are then handled by a catch field at the end. With this, the UI is finally complete. We can move on to the backend and start building with cloudflare workers.</p><h1>Next Up: Integrating AI (Part 3)</h1><p>We now have a fully functional, full-stack application. We can create, read, update, and delete notes, with all our data persisting in a Cloudflare D1 database.</p><p>But we&#8217;re still missing the &#8220;AI-powered&#8221; part of the promise.</p><p>In <strong>Part 3, the final part of this series</strong>, we&#8217;ll bring our application to life. We&#8217;ll dive into Cloudflare&#8217;s AI ecosystem, create a new API endpoint, and use Hono&#8217;s streaming capabilities to send our editor&#8217;s content to an LLM and stream the response back in real-time.</p>]]></content:encoded></item><item><title><![CDATA[Building an AI App With Cloudflare Workers]]></title><description><![CDATA[Part 1 of 3 Getting started]]></description><link>https://asurainsights.com/p/building-an-ai-app-with-cloudflare</link><guid isPermaLink="false">https://asurainsights.com/p/building-an-ai-app-with-cloudflare</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 20 Oct 2025 15:46:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!j-Mm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Introduction</strong></h2><p>I&#8217;d like to tell you the story of how I built my first AI application using Cloudflare&#8212;and honestly, I was blown away by how easy the platform is to use.</p><p>While most people know Cloudflare for its CDN and cybersecurity, I dove into its tools for integrating AI models, rapidly prototyping front and backends, and, of course, deploying it all globally.</p><p>This post details that entire process: the design, development, and deployment of a serverless application that even includes AI functionality. I&#8217;m sharing everything&#8212;the successes and the pitfalls I faced while learning the platform. If you are just starting your development journey or building a small services business that will need to scale, I highly recommend checking out what Cloudflare Workers can do for you!</p><h2><strong>Design</strong></h2><p>So, what was I actually building? The goal was to create a simple text editor with an AI assistant (using Cloudflare LLM technology) baked right into it, one that could be queried for general review and information.</p><p>I was driven by a real-world scenario I&#8217;m sure many of us have faced. Picture this:</p><blockquote><p>You&#8217;re a student trying to write a compelling university application, or maybe a developer (like me!) trying to draft clear documentation. You write a few paragraphs, but you&#8217;re stuck. Are you being clear? Is the tone right?</p><p>Normally, you&#8217;d have to copy that text, open a new tab, log into a separate AI service, paste it in, write a prompt, get the answer, and then copy it <em>back</em> to your editor. It&#8217;s clunky and breaks your flow.</p></blockquote><p>My application was designed to solve that. I wanted a simple tool where you could just highlight your text and ask the AI right there: &#8220;Review this for clarity&#8221; or &#8220;Suggest a better way to phrase this.&#8221;</p><p>With that core idea in mind, I was ready to start planning the build.</p><h2>Nailing Down the Scope</h2><p>The first step in any build, especially a personal project where &#8220;feature creep&#8221; is a real danger, is defining a clear scope. It&#8217;s tempting to dream up a hundred cool features, but a tight scope is what makes a project achievable.</p><p>For this project, I wanted to focus purely on the core user experience and the Cloudflare-specific learning. With that in mind, here are the exact features I committed to building for this first version:</p><ul><li><p>Rich text editor that supports markdown syntax</p></li><li><p>Ability to save, delete, retrieve and modify notes across sessions</p></li><li><p>Cloud storage to allow for notes to be accessed across devices</p></li><li><p>AI chatbot that allows general queries from user for writing prompts</p></li><li><p>Tag that allows for passing the content in the text editor as context to the chat</p></li><li><p>Streaming response as a data stream to allow for seamless output from the LLM</p></li></ul><h3>What I Intentionally Left Out</h3><p>Just as important as knowing what to build is knowing what <em>not</em> to build. To keep this project manageable, I intentionally left several big features out of scope.</p><p>The most significant one was Authentication. Building a full user login system is a massive undertaking. It would have added huge complexity and distracted from the main goal, which was to build the editor and learn the Cloudflare stack so I was advised to skip this functionality.</p><p>Other features I avoided for this version included:</p><ul><li><p><strong>Real-time Collaboration:</strong> No Google Docs-style shared editing.</p></li><li><p><strong>Complex File Organization:</strong> I stuck to a simple list of notes, not a system of folders and sub-folders.</p></li><li><p><strong>Detailed Version History:</strong> The app would save the latest version, but not every single change. I can always add these in later</p></li></ul><p>By setting these boundaries, I could concentrate on the real challenge: making Cloudflare Workers, AI, and storage all talk to each other.</p><h2>Designing The Application Architecture</h2><p>To build the features we&#8217;ve scoped, a full-stack application is the best path forward. This just means we&#8217;re splitting the app into two parts:</p><ol><li><p><strong>A Front-End:</strong> The part that runs in your browser. This is the text editor you type in, the buttons you click, and the chat window.</p></li><li><p><strong>A Back-End:</strong> The logic that runs on a server (or, in this case, on Cloudflare&#8217;s network).</p></li></ol><p>You might be thinking, &#8220;Couldn&#8217;t I just do all of this in the browser?&#8221;</p><p>Technically, you could <em>try</em> to have the browser talk directly to a database or an AI API. But that approach gets incredibly complicated, fast. More importantly, the entire point of this project was for me to learn and use the full power of Cloudflare Workers, which is a back-end forward technology. A front-end-only app would completely miss that goal.</p><p>By splitting the app, we get a clean separation of concerns. The front-end handles the user interface, and the back-end handles the &#8220;heavy lifting&#8221;:</p><ul><li><p>Taking a note from the front-end and <strong>saving it to the cloud database</strong>.</p></li><li><p>Receiving a query from the front-end, securely connecting to the AI model, and then streaming the response back.</p></li></ul><h3>The Tech Stack: Why BHVR?</h3><p>While many frameworks can achieve this, I chose the <strong>BHVR (Bun, Hono, Vite+React)</strong> stack.</p><ul><li><p><strong>Vite + React:</strong> This is for our <strong>front-end</strong>. React is perfect for building the interactive text editor and chat interface, and Vite is an incredibly fast build tool that makes development a breeze.</p></li><li><p><strong>Hono (running on Bun):</strong> This is for our <strong>back-end</strong>. Hono is a small, fast, and simple web framework.</p></li></ul><p>The final structure of the project is as listed below.</p><pre><code><code>.
&#9500;&#9472;&#9472; client/               # React frontend
&#9500;&#9472;&#9472; server/               # Hono backend
&#9500;&#9472;&#9472; shared/               # Shared TypeScript definitions
&#9492;&#9472;&#9472; package.json          # Root package.json with workspaces</code></code></pre><p>In addition to the full stack frameworks I will be building the text editor using the tip tap library, while the rest of the components are built with a responsive ui in mind, one that scales with the display, which is achieved using tailwind css and shadcn, as it allows for modular pluggable UI components. </p><p>Any queries to Cloudflare&#8217;s services are handled by an api interface that is built using the hono framework, which allows for handling async requests, with which we can stream AI responses and perform file handling.</p><h2><strong>Initializing The project</strong></h2><p>As we are using bun as the main runtime of the project, all commands in this tutorial will assume that you have bun installed in your system. For further details on installing bun, please refer to the docs <a href="https://bun.sh/docs/installation">here</a>. To initialize a BHVR &#129451; project, run the following command in your projects folder.</p><pre><code>$ bun create bhvr@latest</code></pre><p>The terminal will then prompt you to for choices in setting up the project. you should see something like the screenshot below.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j-Mm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j-Mm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 424w, https://substackcdn.com/image/fetch/$s_!j-Mm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 848w, https://substackcdn.com/image/fetch/$s_!j-Mm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 1272w, https://substackcdn.com/image/fetch/$s_!j-Mm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j-Mm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png" width="1110" height="726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:726,&quot;width&quot;:1110,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123438,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://asurainsights.com/i/176525544?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j-Mm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 424w, https://substackcdn.com/image/fetch/$s_!j-Mm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 848w, https://substackcdn.com/image/fetch/$s_!j-Mm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 1272w, https://substackcdn.com/image/fetch/$s_!j-Mm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c94482-fa0a-48c8-8e2c-8c6757868678_1110x726.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After this, you are set to start the project, In the next section, we can start building the frontend.</p><h2><strong>Theme Toggle and The Sidebar</strong></h2><p>I started by replacing the starter project page in the client folder such that there are no components displayed except the following in the App.tsx file, it should look something like this.</p><pre><code><code>function App(){
  return (
    &lt;h1&gt;hello world&lt;/h1&gt;
  );
  export default App;
}</code></code></pre><p>make sure to change the title tag in the index.html file to your application&#8217;s title or the name of your project, along with any other site metadata.</p><p>Let us now start with building the sidebar and theme provider for the application. The docs for dark mode in shadcn can be found <a href="https://ui.shadcn.com/docs/dark-mode/">here</a>. The tutorial gives you a walkthrough of adding a &#8220;themeProvcider&#8221; and a mode toggle. Add the themeProvider in <code>client/src/components/providers</code> and the mode toggle in <code>client/src/components/ui</code> and update the import paths appropriately. After that, you should be able to toggle light, system and dark mode themes in the web application.</p><p>The next component that we are going to add is the sidebar. The first step is to install the component from shadcn.</p><pre><code>$ cd client
$ bunx --bun shadcn@latest add sidebar button</code></pre><p>With the main editor in place, I needed a sidebar to list saved files and let the user create new ones. I created a new component file at <code>src/components/AppSideBar.tsx</code>.</p><p>To speed up development, I&#8217;m using a pre-styled <code>Sidebar</code> component from the project&#8217;s <code>ui</code> folder (which was added at <code>src/components/ui/sidebar</code>). This is a common workflow: you take a &#8220;dumb&#8221; UI component and wrap it in your own<em> </em>component to add the specific logic it needs.</p><p>Here&#8217;s the starting code for the <code>AppSidebar</code> component:</p><pre><code><code>import {
  Sidebar,
  SidebarContent,
  SidebarFooter,
  SidebarHeader,
} from &#8220;@/components/ui/sidebar&#8221;;
import Header from &#8220;@/components/Header&#8221;;
import { Button } from &#8220;./ui/button&#8221;;

export function AppSidebar({
  return (
    &lt;Sidebar&gt;
      &lt;SidebarHeader&gt;
        &lt;Header /&gt;
        &lt;h1 className=&#8221;text-xl font-semibold leading-6 pt-4 pl-2&#8221;&gt;
          Files
          &lt;hr&gt;&lt;/hr&gt;
        &lt;/h1&gt;
      &lt;/SidebarHeader&gt;
      &lt;SidebarContent&gt;
        {/* we will display the files here later on. */}
      &lt;/SidebarContent&gt;
      &lt;SidebarFooter&gt;
        &lt;Button onClick={}&gt;New File&lt;/Button&gt;
      &lt;/SidebarFooter&gt;
    &lt;/Sidebar&gt;
  );
}</code></code></pre><p>This code is a clean, structural starting point. Here&#8217;s what&#8217;s happening:</p><p><strong>Semantic Imports</strong>: I&#8217;m importing <code>Sidebar</code>, <code>SidebarHeader</code>, <code>SidebarContent</code>, and <code>SidebarFooter</code>. Using these components ensures my sidebar has a consistent structure and appearance.</p><p><strong>Component Structure</strong>: The code is very readable because it&#8217;s broken into three logical parts:</p><ul><li><p><code>&lt;SidebarHeader&gt;</code>: This is the top section. I&#8217;ve placed the main <code>Header</code> (which just has the app&#8217;s logo or title) here, followed by a &#8220;Files&#8221; heading to label the list.</p></li><li><p><code>&lt;SidebarContent&gt;</code>: This middle section is <strong>intentionally left blank</strong>. This is a placeholder. Later, once the back-end is working, I&#8217;ll pass the list of saved files from <code>App.tsx</code> and map over them here to display them.</p></li><li><p><code>&lt;SidebarFooter&gt;</code>: This bottom section holds our main action button.</p></li></ul><p><strong>The &#8220;New File&#8221; Button</strong>: I&#8217;ve added a <code>Button</code> component here. The <code>onClick</code> handler is empty for now. Later, I&#8217;ll pass a function (like <code>createNewFile</code>) down from <code>App.tsx</code> as a prop. When clicked, this button will tell the parent <code>App.tsx</code>component to clear the editor&#8217;s content and filename, getting it ready for a new note.</p><p>Inside the <code>SidebarHeader</code>, I placed a custom <code>&lt;Header /&gt;</code> component. This component, located at <code>src/components/Header.tsx</code>, has two simple jobs: display the application&#8217;s brand and provide the theme-switching button.</p><pre><code><code>import { Link } from &#8220;react-router-dom&#8221;;
import ModeToggle from &#8220;./ui/mode-toggle.tsx&#8221;;

function Header() {
  return (
    &lt;header className=&#8221;relative flex h-24 w-full items-center justify-between bg-secondary rounded px-3 sm:px-8&#8221;&gt;
      &lt;Link className=&#8221;flex items-end gap-2&#8221; to=&#8221;/&#8221;&gt;
        &lt;img
          src=&#8221;../2877073.png&#8221;
          alt=&#8221;Wratier logo&#8221;
          height={40}
          width={40}
          loading=&#8221;eager&#8221;
          className=&#8221;rounded-full&#8221;
        /&gt;
        &lt;h1 className=&#8221;flex flex-col pb-1 text-xl font-semibold leading-6&#8221;&gt;
          Wraiter
        &lt;/h1&gt;
      &lt;/Link&gt;
      &lt;ModeToggle /&gt;
    &lt;/header&gt;
  );
}

export default Header;</code></code></pre><p>Here&#8217;s a practical breakdown of how this component is built:</p><p><strong>The Layout (Flexbox is Key):</strong> The main <code>&lt;header&gt;</code> tag is our container. The layout is controlled by three Tailwind classes:</p><ul><li><p><code>flex</code>: This turns the header into a flexbox container.</p></li><li><p><code>justify-between</code>: This is the magic. It pushes its two children, the <code>&lt;Link&gt;</code> and the <code>&lt;ModeToggle&gt;</code> to the opposite ends of the container.</p></li><li><p><code>items-center</code>: This aligns both children vertically in the middle of the header.</p></li></ul><p><strong>The Brand Link:</strong> I&#8217;m using the <code>&lt;Link&gt;</code> component from <code>react-router-dom</code>.</p><ul><li><p><strong>Why a </strong><code>&lt;Link&gt;</code><strong>?</strong> This makes the entire brand identity&#8212;both the logo <code>&lt;img&gt;</code> and the &#8220;Wraiter&#8221; <code>&lt;h1&gt;</code>&#8212;a single, clickable element.</p></li><li><p>Clicking it navigates the user back to the root URL (<code>/</code>), which is the expected behavior for a site logo.</p></li></ul><p><strong>The Theme Switcher:</strong> The <code>&lt;ModeToggle /&gt;</code> component is just a simple, self-contained component I imported. Its only job is to handle switching between light and dark mode for the application. Placing it here makes it accessible from anywhere in the app.</p><h1>Next Up: Building the Back-End</h1><p>So far, we&#8217;ve built a responsive, functional front-end. It looks the part, but it&#8217;s all just a facade. That <code>handleSave</code> function is firing requests into the void, and our file list is empty.</p><p>In <strong>Part 2 of this series</strong>, we&#8217;ll build the engine. We&#8217;ll dive into the &#8220;H&#8221; of our BHVR stack&#8212;Hono&#8212;to build a serverless back-end. We&#8217;ll set up a Cloudflare Worker, define the API routes for our files, and connect it all to a Cloudflare D1 database. By the end of the next post, our application will be able to save, fetch, and modify notes for real.</p>]]></content:encoded></item><item><title><![CDATA[Code Haystack HEPA Filter ]]></title><description><![CDATA[Using Formal verification tools to find hidden vulnerabilities]]></description><link>https://asurainsights.com/p/code-haystack-hepa-filter</link><guid isPermaLink="false">https://asurainsights.com/p/code-haystack-hepa-filter</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Tue, 29 Jul 2025 08:50:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zPJw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What is it that a HEPA filter does? They remove airborne particles at microscopic sizes, the filter is a binary membrane. It is designed to identify and remove offending dust particles from the air. Like the air coming in from outside of a clean room even a well-designed program commonly includes tech debt and security vulnerabilities. This was a standard expectation in the early days of software development, and nothing new today.</p><p>With the recent surge of LLM integrations in coding environments and the new practice of &#8220;vibe coding&#8221; among developers, an increase in the number of vulnerabilities that can be exploited due to tech debt. LLMs routinely hallucinate answers to code no matter how good the prompts, often based on outdated code they were trained on.</p><p>Regardless of the source of a project&#8217;s tech debt, it is more and more important that technical teams thoroughly test the code base. Not only from a functional standpoint, but also to assure users that security practices are in place to prevent known attacks. Shifting left security tools reduces costly anomalies when they are identified pre-deployment. The importance of system correctness and security is paramount, especially when dealing with critical systems.</p><p>While unit tests drive white-box testing in CI/CD pipelines, adding formal verification practices to the process can have a significant impact in uncovering vulnerabilities that may not be entirely obvious at first.</p><h2>What Is Formal Verification?</h2><p>Within the development lifecycle, formal verification is the act of proving the correctness of a system to a formal specification or property. This is done using formal logic, set theory, and proof techniques. Think of it as turning the program into a switchboard where specific conditions are represented by "switches" that can be turned "on" or "off".</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zPJw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zPJw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 424w, https://substackcdn.com/image/fetch/$s_!zPJw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 848w, https://substackcdn.com/image/fetch/$s_!zPJw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 1272w, https://substackcdn.com/image/fetch/$s_!zPJw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zPJw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png" width="359" height="362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:362,&quot;width&quot;:359,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198425,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.carlsue.com/i/167921321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zPJw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 424w, https://substackcdn.com/image/fetch/$s_!zPJw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 848w, https://substackcdn.com/image/fetch/$s_!zPJw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 1272w, https://substackcdn.com/image/fetch/$s_!zPJw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45d2b8e4-1011-460a-b76a-3434cfa1c925_359x362.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When specific switches of the switchboard (your program) are in the right order of "on" and "off", the pattern of conditions can be compared to patterns that are known to cause vulnerabilities. If they match, the formal verification program provides details of the vulnerability present. To create these switches the program is first converted into logical expression formulas referred to as Satisfiability Modulo Theories (SMT), which are a boolean representation of GOTO statements. An SMT can be thought of as the abstract form of the original byte-code. This SMT formula is then verified against verification conditions indicating a security vulnerability.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Udh8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Udh8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 424w, https://substackcdn.com/image/fetch/$s_!Udh8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 848w, https://substackcdn.com/image/fetch/$s_!Udh8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 1272w, https://substackcdn.com/image/fetch/$s_!Udh8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Udh8!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png" width="1200" height="197.63421292083711" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:181,&quot;width&quot;:1099,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:16148,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.carlsue.com/i/167921321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Udh8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 424w, https://substackcdn.com/image/fetch/$s_!Udh8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 848w, https://substackcdn.com/image/fetch/$s_!Udh8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 1272w, https://substackcdn.com/image/fetch/$s_!Udh8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52e579df-31a6-4d39-aff6-5762c1afb8aa_1099x181.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">General workflow of formal verification tools</figcaption></figure></div><p>Of course when asked to add a workflow to a project the initial worry is how much additional work this will cause the technical teams. Luckily the most common tools that perform this task can be automated and integrated into existing CI/CD pipelines. Of course more daring or security-conscious users will be happy to know that open-source options for these tools support high customization adapting to the needs of the project.</p><h2><strong>Expanding Beyond Bug Hunting</strong></h2><p>Applications of these tools go beyond everyday software development. They can also be used to:</p><ul><li><p>Verify adherence to network policies and architectural design requirements.</p></li><li><p>Provide verification of smart contract design and workflows, highlighting anomalies and unexpected behaviors, preventing monetary loss.</p></li><li><p>Assure that the structure of critical environments, such as healthcare or financial systems, is robust and able to handle abnormal behavior.</p></li></ul><p>Let&#8217;s take a look at two examples of different uses for formal verification tools that depict how we can use them for technical projects.</p><h2><strong>A General C Example</strong></h2><p>In this example, a C program was created with intentional pointer-access issues which simulates a core issue for arbitrary code execution is analyzed using Efficient SMT-based Context-Bounded Model Checker (ESBMC).</p><p>ESBMC is a powerful formal verification tool renowned for its ability to detect and better yet prove the absence of various runtime errors in software. Developed as an SMT model checker, ESBMC targets programs written in C, C++, CUDA, CHERI, Kotlin, Python, and Solidity. Its architecture allows it to convert source code into an abstract syntax tree (AST), then into the "GOTO program" intermediate representation, which is then symbolically executed and transformed into logical SMT formulas. These formulas can be fed to off-the-shelf SMT solvers, enabling ESBMC to check for common issues like out-of-bounds array access, improper memory allocation, variable overflows, division by zero, and even concurrency issues such as data races and deadlocks. ESBMC also offers advanced verification techniques using pre-computed model checking known as Incremental Bounded Model Checking (IBMC) and a form of open ended verification called k-induction. This makes it a versatile and efficient tool for ensuring software correctness and provides improved security.</p><pre><code><code># The sample C program used in test.c
# include&lt;bits/stdc++.h&gt;

int main() {
  
  // values stored in a contiguous memory block.
  int arr[3] = {0,1,2};
  int index = 3;
  
  // pointer trying to access value outside the  block in the next line.
  int val = arr[index];
  
  // this assertion will fail as the pointer now holds garbage val.
  assert(val == 2);
  return 0;
}</code></code></pre><p></p><p>While the error of accessing an element at an index that does not exist is trivial, this example simulates the stray pointer and memory mismanagement that often occurs in big projects. The example code when passed to ESBMC, produces the following output.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MrTJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MrTJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 424w, https://substackcdn.com/image/fetch/$s_!MrTJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 848w, https://substackcdn.com/image/fetch/$s_!MrTJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 1272w, https://substackcdn.com/image/fetch/$s_!MrTJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MrTJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png" width="645" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:645,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:438305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.carlsue.com/i/167921321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MrTJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 424w, https://substackcdn.com/image/fetch/$s_!MrTJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 848w, https://substackcdn.com/image/fetch/$s_!MrTJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 1272w, https://substackcdn.com/image/fetch/$s_!MrTJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb28fe96b-9751-40ce-97b1-4af58eebbd98_645x664.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">ESBMC output on analysis of test.c</figcaption></figure></div><p>The highlighted boxes depict the input and output that contains the exact line of code that introduces a vulnerability with a counter-example that provides the misuse case. This proves that such tools can help the development team catch type mismatches and memory management issues like null pointer dereferences and double-free errors before the program is even run.</p><h2><strong>A Smart Contract Example</strong></h2><p>The next example analyzes a crypto currency contract from Ethereum, king_of_ether_throne, which was a popular ponzi scheme from way back in the initial days of Ethereum. The contract was maliciously coded so that any participant in the transaction can siphon all the money or tokens when a certain condition is met. Since the contract byte-codes are publicly available, tools like Mythril that specialize in Ethereum Solidity code analysis can be used to unearth any potential exploits in a contract, or in this case, malicious code that has been placed on purpose.</p><p>Mythril emerged in the early days of ethereum as a pioneering open-source security analysis tool specifically designed for smart contracts. Developed by ConsenSys, a leading blockchain technology company, Mythril quickly gained traction due to its ability to perform deep vulnerability analysis using techniques like symbolic execution and SMT solving on EVM byte-code. Its initial aim was to simplify the complex task of smart contract security, making formal methods more accessible to developers. Over time, it evolved as a core component of the broader MythX security analysis suite, further integrating with various development environments and solidifying its place as a crucial tool for uncovering security flaws in decentralised applications and preventing significant financial losses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g_S5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g_S5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 424w, https://substackcdn.com/image/fetch/$s_!g_S5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 848w, https://substackcdn.com/image/fetch/$s_!g_S5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 1272w, https://substackcdn.com/image/fetch/$s_!g_S5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g_S5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png" width="612" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:668,&quot;width&quot;:612,&quot;resizeWidth&quot;:612,&quot;bytes&quot;:471873,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.carlsue.com/i/167921321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g_S5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 424w, https://substackcdn.com/image/fetch/$s_!g_S5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 848w, https://substackcdn.com/image/fetch/$s_!g_S5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 1272w, https://substackcdn.com/image/fetch/$s_!g_S5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4ffefa6-0ce7-4964-afcd-f6e464c1aedb_612x668.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Mythril output on analysis of king of ether throne contract</figcaption></figure></div><p>The highlighted text in the image above shows the final analysis of the given Solidity contract. Along with an explanation of the vulnerability, it also gives us the potential resource consumption of the contract in terms of estimated gas usage.</p><h2><strong>A Call For Inclusion of Cybersecurity in Software Development</strong></h2><p>CI/CD pipelines allow developers, testers, and DevOps teams to work cohesively. Including the cybersecurity team&#8217;s tools in this process can significantly benefit delivery by identifying design flaws earlier and reducing the cost of late-stage rework. In line with the &#8220;shift left&#8221; philosophy, integrating formal verification tools improves testing coverage and strengthens system resilience.</p><p>For non-technical stakeholders or product owners, formal verification may seem like an added complexity&#8212;but it&#8217;s a strategic investment. These tools offer mathematical assurance that key properties of a system hold true, reducing the likelihood of critical security issues, logic errors, or unstable behaviors making it into production. This not only minimizes long-term operational risk but also supports smoother audits, fewer hotfixes, and better trust in releases.</p><p>Beyond traditional software engineering, formal verification extends to validating configuration files, network architectures, and communication protocols with strong guarantees. While adopting these methods may require tighter collaboration between teams and slightly more design discipline up front, the payoff is a more stable, secure, and maintainable product.</p><p>Embracing advanced methodologies like formal verification adds confidence&#8212;both for engineers and for leadership&#8212;against emerging threats and the growing complexity of modern development practices.</p><h2><strong>Additional References</strong></h2><ul><li><p>ESBMC: <a href="https://github.com/esbmc/esbmc">https://github.com/esbmc/esbmc</a></p></li><li><p>Mythril: <a href="https://github.com/ConsenSysDiligence/mythril">https://github.com/ConsenSysDiligence/mythril</a></p></li><li><p>King Of The Ether Throne: <a href="https://www.kingoftheether.com/thrones/kingoftheether/index.html">https://www.kingoftheether.com/thrones/kingoftheether/index.html</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Patching: Zero-Day or Outdated Protocols]]></title><description><![CDATA[If you only had time for one which would you choose?]]></description><link>https://asurainsights.com/p/patching-zero-day-or-outdated-protocols</link><guid isPermaLink="false">https://asurainsights.com/p/patching-zero-day-or-outdated-protocols</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Mon, 10 Apr 2023 20:59:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AbxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Almost every other week, a fresh zero-day vulnerability grabs headlines on major tech websites like TechCrunch, The Verge, and arsTechnica. When the threat level escalates, even mainstream publications like Forbes and Business Insider take notice, while cybersecurity expert Dave Kennedy may appear on Fox News, emphasizing the importance of timely updates. However, with limited resources, organizations often struggle to address every new bug that makes the news. So, how do they prioritize? What criteria do they use to evaluate the urgency of these emerging threats against the backlog of issues identified in their latest vulnerability scan?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AbxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AbxU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AbxU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AbxU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AbxU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AbxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg" width="670" height="446.6666666666667" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:750,&quot;resizeWidth&quot;:670,&quot;bytes&quot;:89486,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AbxU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AbxU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AbxU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AbxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4555ae88-c648-4300-a47e-d869f74f5204_750x500.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Day Zero - When a zero-day bug hits the news</h2><p>When a zero-day vulnerability emerges in the news cycle, it usually begins with a security researcher discovering a bug in a software component that necessitates a patch. The researcher might announce the bug in collaboration with the software developers, often providing proof of concept. This initial disclosure sparks a series of reactions within the cybersecurity community as the gravity of the situation becomes apparent.</p><p>As the news spreads, information security enthusiasts on Twitter and tech bloggers weigh in with their opinions on the potential impact of the vulnerability across the internet. The discourse surrounding the bug grows in intensity, with experts debating the extent of the risk it poses. In extreme cases, such as the recent Log4J incident, the situation escalates as security advisories are issued, and mainstream media outlets start covering the story. This heightened awareness and concern among the general public underscores the urgent need for companies to address the vulnerability and protect their digital assets.</p><h3>Media Hype Train</h3><p>While it is crucial to emphasize the importance of patching publicly exposed Log4J vulnerabilities in a well-designed and managed environment, it is also worth noting that, for many organizations, addressing Log4J was more of an inconvenient patch fire drill than a catastrophic event. But what made this vulnerability a less dire threat for certain environments? A closer examination of the vulnerability's characteristics, as well as the role media plays in shaping public perception, can shed light on this question.</p><p>Companies with a strong security foundation typically have limited external security footprints, significantly reducing their exposure to threats like Log4J. However, when vulnerabilities like Log4J are discovered, media coverage can sometimes blow the issue out of proportion. Sensational headlines and alarming news stories often paint a picture of widespread chaos, contributing to a heightened sense of urgency and fear among the public.</p><p>While the media must raise awareness about cybersecurity issues, it is also important to provide balanced and accurate reporting. Exaggerating the severity of a vulnerability can lead to unnecessary panic and may cause organizations to divert valuable resources away from other critical security initiatives. This is not to downplay the significance of addressing vulnerabilities like Log4J but to emphasize the need for a measured response based on a thorough understanding of the threat landscape.</p><p>By maintaining a comprehensive and proactive approach to cybersecurity, companies with a strong security foundation and limited external security footprints can better safeguard their digital assets and minimize the impact of future vulnerabilities. At the same time, the media plays a crucial role in informing the public about emerging threats but should strive for accuracy and context to avoid causing undue panic.</p><h2>Global Critical vs. Enterprise Critical</h2><p>Jen Easterly, in an interview with CNBC, claimed that Log4J was the "most serious vulnerability [of her] career." While Easterly's statement undoubtedly carries weight, it is crucial to consider the context that the average CNBC viewer might overlook. Easterly is the head of the Cybersecurity and Infrastructure Security Agency (CISA), a government agency responsible for leading national efforts to understand, manage, and reduce cybersecurity risks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OZX9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OZX9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 424w, https://substackcdn.com/image/fetch/$s_!OZX9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 848w, https://substackcdn.com/image/fetch/$s_!OZX9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 1272w, https://substackcdn.com/image/fetch/$s_!OZX9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OZX9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png" width="1225" height="666" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:666,&quot;width&quot;:1225,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1055533,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OZX9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 424w, https://substackcdn.com/image/fetch/$s_!OZX9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 848w, https://substackcdn.com/image/fetch/$s_!OZX9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 1272w, https://substackcdn.com/image/fetch/$s_!OZX9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16ee7e3-58c0-471b-a700-8af956b9936b_1225x666.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As a government employee focusing on safeguarding critical infrastructure, Easterly's perspective on the severity of Log4J is shaped by her responsibility to ensure the security and resilience of the nation's most vital assets. It is also important to take into account that human attention tends to be more focused on active threats compared to historical events. Easterly was mid-career during previously identified massive threats such as Shellshock, BlueKeep, and the widespread use of tools like LOIC for NTP denial-of-service attacks, which arguably caused more damage than Log4J in certain instances.</p><p>This context is essential for understanding why Easterly might view the Log4J vulnerability as the most serious in her career, as recency bias may play a role in shaping perceptions of the severity of a cybersecurity threat. While it is crucial to acknowledge and address the vulnerability, it is equally important to consider the varying degrees of risk it poses to different environments, both in the public and private sectors, and to maintain a historical perspective on past threats.</p><p>The media's role in informing the public about emerging threats is crucial, but accuracy and context should be prioritized to avoid causing undue panic. By maintaining a comprehensive and proactive approach to cybersecurity, organizations can better safeguard their digital assets and minimize the impact of future vulnerabilities, regardless of their size or sector. Balancing the attention given to active threats with lessons learned from historical events helps to ensure a more informed and effective response to cybersecurity challenges.</p><h2>Ranking vulnerabilities</h2><p>Understanding the risk rankings associated with vulnerabilities is crucial for effectively prioritizing and addressing security issues within an organization. The commonly used five-point ranking system classifies vulnerabilities into five categories: informational, low, medium, high, and critical. Each category corresponds to the severity of the risk posed by a vulnerability, as well as the urgency with which it should be addressed.</p><h3>Informational</h3><p>These findings highlight areas of potential concern or best practices that may not be followed but do not necessarily represent an immediate security threat. They serve as recommendations for improving an organization's overall security posture and reducing the likelihood of future vulnerabilities. These findings typically pertain to enhancing situational awareness within the organization's environment, rather than directly leading to improvements in the security posture. Such findings serve as valuable insights that can inform decision-making and help identify areas where security measures can be further strengthened or optimized.</p><h3>Low</h3><p>Low-risk vulnerabilities pose a minimal threat to an organization's security and typically require less urgent attention. These issues may be easier to exploit but often have a limited impact on confidentiality, integrity, or availability of the affected system. </p><p>Many security experts recommend a one-year timeline for addressing low-risk findings, as they represent a roadmap for long-term security improvement rather than immediate enhancements to the security posture or the termination of an advanced persistent attack. This timeline acknowledges the relatively lower severity of these issues while still emphasizing the importance of continuous security improvement efforts.</p><h3>Medium</h3><p>Medium-risk vulnerabilities represent a moderate threat to an organization's security. They may require more skill or resources to exploit and can have a more significant impact on the affected system. These vulnerabilities should be addressed in a timely manner, but they may not be the highest priority. </p><p>In addition to being more urgent, medium-risk findings often involve complex remediation requirements or necessitate major changes to an organization's architecture and design. These modifications may require careful planning, resource allocation, and coordination among different teams within the organization. By addressing medium-risk issues within a six-month timeframe, organizations can effectively balance the urgency of these vulnerabilities with the time and effort needed to implement comprehensive and well-planned solutions that enhance their overall security posture.</p><h3>High</h3><p>High-risk vulnerabilities pose a serious threat to an organization's security and often require immediate attention. They may be more easily exploitable or have a widespread impact on the affected system, potentially compromising sensitive data or disrupting critical services.</p><p>High-risk findings typically represent vulnerabilities that are relatively easy to exploit; however, mitigations may be in place that limit the potential damage or accessibility for performing the exploit. For these findings, security experts recommend remediation within the next patching cycle or within a month, whichever comes first. This timeline emphasizes the importance of addressing high-risk vulnerabilities quickly to prevent exploitation while acknowledging the presence of existing mitigations that help protect the organization in the interim.</p><h3>Critical</h3><p>Critical vulnerabilities represent the most severe security threats and demand urgent remediation. These issues typically involve easily exploitable vulnerabilities that have the potential to cause extensive damage to an organization's infrastructure, compromise sensitive data, or disrupt essential services.</p><p>Critical-risk findings demand immediate attention, as they typically involve vulnerabilities that actively expose systems or information to the public internet, or multiple issues that can be chained together to gain access to restricted resources. Security experts recommend remediating critical vulnerabilities within a week or even during the testing phase, if possible. This urgent timeline underscores the need to address critical risks swiftly in order to prevent significant damage to an organization's infrastructure, sensitive data, or essential services.</p><p>By understanding these risk rankings, organizations can more effectively prioritize and allocate resources to address vulnerabilities, ensuring that the most pressing security threats are dealt with swiftly and appropriately.</p><h2>Context changes risk</h2><p>When evaluating vulnerabilities, security consultants and vulnerability reporting teams often employ a variation of a five-point ranking system to quantify the severity of a finding. The scope of testing may or may not take context into account; however, when assessed independently, a newly discovered vulnerability is typically rated based on the gravest possible context, without considering any mitigating factors such as access restrictions, existing security measures, or network segmentation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NI-b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NI-b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NI-b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NI-b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NI-b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NI-b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg" width="1456" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8587343,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NI-b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NI-b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NI-b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NI-b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e4a426d-c82c-4754-9ec5-3adc3b885047_6000x2637.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These mitigating factors can significantly impact the actual risk posed by a vulnerability within a specific organization. For example, strong user authentication protocols, intrusion detection systems, and timely patch management can help reduce the likelihood of a successful exploit. Additionally, network segmentation can limit the potential damage caused by a compromised system, preventing an attacker from gaining unrestricted access to an entire network.</p><p>Implementing strategic access controls can have a significant impact on the severity of a vulnerability within an organization. For instance, moving a vulnerable service from the DMZ or public internet to a more restricted environment, where access is limited to only other hosts within the network, can effectively reduce the risk associated with the vulnerability. By restricting public access, a critical finding can be downgraded to a high-level risk.</p><p>This reduction in severity is due to the added layer of protection that results from limiting the potential attack surface. By confining access to the internal network, the likelihood of an attacker exploiting the vulnerability from the outside is significantly diminished. However, it is essential to recognize that this approach does not entirely eliminate the risk, as threats may still originate from within the network.</p><h2>So which would you choose?</h2><h2>Final Thoughts</h2><p>In an ideal world, organizations would have the resources and capacity to address all security threats, whether it's a sensationalized zero-day vulnerability or an outdated protocol exposed to the internet. However, the reality is that organizations must prioritize and make strategic decisions about allocating their limited resources to address these risks effectively.</p><p>When faced with the choice between addressing a highly-publicized zero-day vulnerability and remediating an outdated protocol exposed to the internet, organizations must carefully weigh the potential impact of each threat in the context of their unique environment. This requires a deep understanding of the organization's infrastructure, systems, and existing security measures.</p><p>By evaluating the risks posed by both the zero-day vulnerability and the exposed outdated protocol, organizations can make informed decisions about which threat should be prioritized for remediation. This process involves considering the potential damage each vulnerability could cause, the likelihood of exploitation, and the resources required for effective mitigation.</p><p>In some cases, addressing the sensationalized zero-day vulnerability might indeed be the most critical course of action, as it could pose a significant risk to the organization's assets and operations. However, in other situations, remediating the exposed outdated protocol may prove to be more impactful, particularly if it represents a known and easily exploitable vulnerability that has been left unaddressed.</p><p>Ultimately, the key to making the right decision lies in having a thorough understanding of the organization's security posture and the risk landscape. By maintaining a comprehensive and proactive approach to cybersecurity, organizations can better prioritize their efforts, ensuring that the most pressing threats are addressed in a timely and effective manner. In doing so, they can strike a balance between addressing the latest high-profile vulnerabilities and managing the ongoing risks associated with outdated protocols and other long-standing security concerns.</p>]]></content:encoded></item><item><title><![CDATA[AI Is Killing This Business, And It's Glorious]]></title><description><![CDATA[Security is about to lose a service line to a mix of AI functions, and it's a good thing.]]></description><link>https://asurainsights.com/p/ai-is-killing-this-business-and-its</link><guid isPermaLink="false">https://asurainsights.com/p/ai-is-killing-this-business-and-its</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Thu, 06 Apr 2023 17:44:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t-kD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t-kD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t-kD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!t-kD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!t-kD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!t-kD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t-kD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:873952,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t-kD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!t-kD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!t-kD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!t-kD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64c59e44-876f-4ac8-b58d-ac13e96377a2_6000x3000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8220;AI is coming for jobs&#8221; seems to be a common theme in the news these days. I&#8217;ve even been playing with ChatGPT to augment my report writing and documentation. I firmly believe that ChatGPT will diligently review and potentially revise specific sections of this writing to enhance its clarity and cohesiveness. But let&#8217;s talk about things it&#8217;s doing, which are genuinely changing and improving security. </p><h2>Preventing Spam And Phishing</h2><p>Just 15 years ago, Social Engineering was in its infancy as a penetration testing service and anti-spam measures were primarily based on simple blacklisting and spam list services. The concept of authenticated domain and cryptographic filtering had yet to enter the picture. Recently, with the rapid advancements in AI technology, we are on the verge of transforming the landscape, prompting enterprise mail service providers to adopt and implement the next generation of mail filtering solutions.</p><p>These cutting-edge mail filtering systems are game changers for clients not using SaaS mail services or those who desire additional security. Companies such as Checkpoint have been leading this revolution, pioneering the development of AI-driven mail-filtering appliances to bolster email security.</p><p>While it remains possible to circumvent authenticated sender technical controls, the continuous advancements in AI technology will make e-mail-based Social Engineering efforts increasingly futile. As a result, today's penetration testers are conducting Social Engineering assessments that, in many ways, lag nearly a generation behind. The introduction and widespread adoption of these innovative technologies threaten to push the industry back even further.</p><p>In light of these developments, it's becoming increasingly crucial for companies to adapt their methodologies to stay ahead of the curve. In some cases, this may include considering the sunset process as the dynamic cybersecurity landscape demands constant evolution and vigilance.</p><h2>Training And Testing Staff</h2><p>Addressing the threat of social engineering from an alternative perspective, companies such as KnowBe4, ThriveDX, and other specialized training services have begun to focus on providing comprehensive phishing training programs, which include realistic simulations. These programs equip employees with the knowledge and skills to identify and respond to phishing attempts effectively.</p><p>In addition to offering in-depth education, these training services incorporate periodic testing as a crucial element of their approach. The tests are intentionally configured to bypass technical controls, ensuring that all targeted staff members are thoroughly assessed and observed in real-world scenarios. This hands-on methodology helps reinforce the training content. It allows organizations to identify potential gaps in their staff training, empowering them to take proactive steps to strengthen their overall security posture.</p><h2>The Problem For Professional Services Providers</h2><p>The common use and need for modern Social Engineering services play a vital role in uncovering weaknesses in employee training programs and enhancing staff preparedness for real-world attacks. Combined with well-implemented technical controls, these services contribute to a robust security posture.</p><p>However, once an organization successfully integrates employee readiness with next-generation technical safeguards, the ability to perform realistic Social Engineering simulations decreases. In this case, allocating resources to these engagements becomes less efficient, as the organization has already laid a solid foundation for addressing potential threats. </p><p>From the perspective of a professional services consultancy, projects are inherently constrained by the amount of effort the client purchases. Services are typically scoped with the understanding that an attacker possessing unlimited resources and time could potentially identify novel techniques or bypass technical controls. In the context of Social Engineering, this could involve adopting a more targeted approach or employing social engineering tactics to escalate privileges rather than establishing an initial foothold.</p><p>As technology advances, it is increasingly likely that Social Engineering tactics will shift away from email and explore other avenues, such as vishing. The rapid improvement of AI-driven deep fake audio technology further reinforces this possibility. Consequently, organizations must remain vigilant and adaptive to address the evolving landscape of cybersecurity threats.</p><h2>Where Do We Go From Here</h2><p>Security is just as much about allocating resources appropriately as preventing active breaches. Continued testing using "realistic" scenarios described by many consultancies, similar to how Optiv describes their process&nbsp;<a href="https://www.optiv.com/insights/source-zero/blog/spear-phishing-modern-platforms">here</a>, will become less of an option.&nbsp;</p><p>As mass phishing campaigns lose effectiveness due to AI-driven security measures and advanced spam filters, businesses must reassess their security budgets and allocate resources to alternative services that offer better value and efficacy. Likewise, consultancies need to modify their offerings to reflect these changes, ensuring that they provide services that make financial sense for their businesses.</p><p>Investing in targeted employee training and threat intelligence services, alongside Red Team spear phishing engagements, can bolster an organization's defenses against increasingly sophisticated cybercriminals. These training programs and Red Team services work together to ensure end-to-end testing coverage and identify any gaps in training where mass email testing in the older style, similar to how Optiv describes its process&nbsp;<a href="https://www.optiv.com/insights/source-zero/blog/spear-phishing-modern-platforms">here</a>, is no longer feasible. By engaging in low and slow testing methods and leveraging their expertise in crafting personalized attacks, Red Teams can better understand vulnerabilities and strengthen defenses accordingly.</p><p>Integrated training and testing programs, which combine education and assessment, are an effective way to identify users who require additional training and support. By creating a more comprehensive and targeted approach to enhancing their cybersecurity posture, organizations can foster a culture of security awareness while ensuring that employees have the skills and knowledge necessary to protect their digital assets from ever-evolving threats.</p><p>Technical controls testing is another critical component of an organization's cybersecurity strategy. By assessing the effectiveness of older protocols (such as SPF, DKIM, and DMARC) and newer security measures (like Darktrace's AI filtering or advanced mail flow filtering offered by service providers like Microsoft), consultants can help organizations identify vulnerabilities, prioritize improvements, and allocate resources efficiently. Regularly conducting technical controls testing enables organizations to proactively identify and address potential issues, staying ahead of the curve and maintaining a strong security posture.</p><p>All these changes require a change to a multi-faceted approach to testing a robust security posture. As traditional mass phishing campaigns lose effectiveness due to AI-driven measures and advanced spam filters, organizations must reassess their security budgets and adapt their methodologies. Investing in targeted employee training, Red Team spear phishing engagements, integrated training and testing programs, and technical controls testing allows organizations to stay ahead of emerging threats and optimize their security spending. Equally important, organizations seeking these services should recognize that traditional methods are becoming less effective. Adopting new methodologies is essential for maintaining robust security as the landscape shifts.</p><p>Consultancies must adapt service offerings to provide better value and efficacy in this dynamic environment. The security industry needs to engage in ongoing conversations about the evolution of technology and how to effectively adapt and maintain intended security coverage. By embracing these changes, fostering a culture of security awareness, and actively participating in dialogues about the future of cybersecurity, organizations can proactively defend their digital assets and mitigate the impact of ever-evolving cyber threats. This collaborative mindset will help businesses and consultancies thrive in a rapidly changing industry and maintain a strong security posture.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://asurainsights.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Occasional Security Ramblings! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Rule #2 of Zombie Protocol Land: The Double Tap]]></title><description><![CDATA[This is a repost from my previous blog written on MARCH 5, 2015]]></description><link>https://asurainsights.com/p/rule-2-of-zombie-protocol-land-the</link><guid isPermaLink="false">https://asurainsights.com/p/rule-2-of-zombie-protocol-land-the</guid><dc:creator><![CDATA[Carl Sue]]></dc:creator><pubDate>Fri, 28 Jan 2022 18:12:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_wLP!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f9ccc76-5838-4922-9989-faee0f4b81d4_608x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is a repost from my previous blog written on MARCH 5, 2015</p><p>As a young security professional, I've always been aware&nbsp;of SSL's status as a legacy protocol.&nbsp;TLS was proposed as a replacement before I entered&nbsp;High School. For me, it was little&nbsp;surprise that in mid-2014 a&nbsp;Padding Oracle On Downgraded Legacy Encryption vulnerability surfaced.&nbsp;Better known as POODLE, this vulnerability dealt&nbsp;a death blow to SSL, and it wasn't long before TLS felt its sting. The&nbsp;removal of SSL from environments has been&nbsp;reluctantly accepted by most&nbsp;systems administrators.&nbsp;TLS on the other hand&nbsp;survived, now in the light and scrutiny of nervous security professionals.&nbsp;Businesses&nbsp;needed&nbsp;to know&nbsp;if&nbsp;TLS was&nbsp;strong&nbsp;enough to meet compliance needs and lower&nbsp;risk. Systems administrators wanted to know, how hard a replacement is&nbsp;to implement.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l5ts!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l5ts!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l5ts!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l5ts!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l5ts!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l5ts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg" width="300" height="98" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:98,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tunnel&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tunnel" title="Tunnel" srcset="https://substackcdn.com/image/fetch/$s_!l5ts!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l5ts!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l5ts!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l5ts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1f7d9edd-da20-42f1-a752-4c73d9f51aa6_300x98.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h2>Risk</h2><p>Industry-standard security models&nbsp;used in&nbsp;enterprise environments are often modeled after an onion. This onion is comprised of layers of security technologies&nbsp;working together to protect the whole. TLS provides identity validation and transport protection for data as it moves through the internet. This limits the risk created by POODLE&nbsp;to man-in-the-middle attacks or eavesdropping.</p><p>A successful attack using the POODLE vulnerability allows an attacker to bypass encryption provided by TLS. Sensitive data captured by an attacker can be&nbsp;read in plain text and even altered without alerting the victims. This attack can be performed on any captured or replayed data collected by an attacker. Local network attacks are a more common environment for this vulnerability.</p><h2>You can't patch a protocol, but you can update it</h2><p>SSL and TLS are IETF protocols that provide a framework for developing compatible applications to provide transport layer security. When developers write software these protocols dictate input and output a different platform will provide or require.</p><p>In their RFCs, definition documentation, SSL, and TLS, cipher suites are defined. A cipher suite is a mathematical model used by the protocol to convert data between encrypted and plain text. The major component for defining&nbsp;encryption in a cipher suite is the encryption mode. SSL and TLS each provide similar definitions for Cipher Block Chaining encryption modes. POODLE specifically exploits functionality implemented improperly&nbsp;in the SSL definition of this encryption mode. In TLS CBC is expanded with controls&nbsp;to prevent exploitation of this functionality.</p><h2>So what is a padding oracle attack anyway</h2><p>CBC encryption as defined by SSL (RFC 6101) encrypts data by separating a message into blocks of equal size and performing chained encryption not covered by the MAC. The length value of the padding is added to the end of the plain text as padding. To encrypt a&nbsp;plain text message CBC uses the plain text value from the end of the previous block to encrypt the block with a xor operation.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gpr3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gpr3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 424w, https://substackcdn.com/image/fetch/$s_!Gpr3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 848w, https://substackcdn.com/image/fetch/$s_!Gpr3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 1272w, https://substackcdn.com/image/fetch/$s_!Gpr3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gpr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png" width="569" height="71" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/db23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:71,&quot;width&quot;:569,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;SSL CBC Padding&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="SSL CBC Padding" title="SSL CBC Padding" srcset="https://substackcdn.com/image/fetch/$s_!Gpr3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 424w, https://substackcdn.com/image/fetch/$s_!Gpr3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 848w, https://substackcdn.com/image/fetch/$s_!Gpr3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 1272w, https://substackcdn.com/image/fetch/$s_!Gpr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb23ce43-946b-45c3-bae3-67f908c88a0d_569x71.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">SSL CBC Padding</figcaption></figure></div><p>The initialization vector is the backbone of the cipher&nbsp;an attacker only requires finding it&nbsp;to remove encryption from&nbsp;a whole message is guess the xor result from the block before. This can then be used to create a padding oracle that can then remove encryption from&nbsp;all following blocks.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LBdz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LBdz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LBdz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LBdz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LBdz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LBdz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg" width="300" height="138" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/ad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:138,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;CBC encryption used in SSL/TLS&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="CBC encryption used in SSL/TLS" title="CBC encryption used in SSL/TLS" srcset="https://substackcdn.com/image/fetch/$s_!LBdz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LBdz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LBdz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LBdz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fad987ed3-62cb-47da-a8ec-176fa6194456_300x138.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">CBC encryption used in SSL/TLS</figcaption></figure></div><p>TLS makes this a little harder by separating the padding at the end of the message and placing it at the end of each block. Defined in RFC 5246 the amount of padding added to the block is a multiple of the plain text message's length. This makes it harder to know&nbsp;which piece of the block is used as the&nbsp;initialization vector for the next block.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cpNY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cpNY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 424w, https://substackcdn.com/image/fetch/$s_!cpNY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 848w, https://substackcdn.com/image/fetch/$s_!cpNY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 1272w, https://substackcdn.com/image/fetch/$s_!cpNY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cpNY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png" width="600" height="62" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/b2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:62,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;TLS CBC Padding&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="TLS CBC Padding" title="TLS CBC Padding" srcset="https://substackcdn.com/image/fetch/$s_!cpNY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 424w, https://substackcdn.com/image/fetch/$s_!cpNY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 848w, https://substackcdn.com/image/fetch/$s_!cpNY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 1272w, https://substackcdn.com/image/fetch/$s_!cpNY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2ec9577-4e8c-4949-a26a-3616c2863e3a_600x62.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em>TLS CBC Padding</em></figcaption></figure></div><h2>If TLS is not vulnerable then why was it affected?</h2><p>Aside from expanded CBC protections TLS&nbsp;also has added functionality to allow it to function alongside&nbsp;older SSL protocols. When TLS was released&nbsp;older browsers didn't have support for it. This required TLS&nbsp;software&nbsp;to perform&nbsp;SSL functionality&nbsp;as needed for backward comparability. In fact, only very recently have browsers had support enabled by default.</p><p>To aid in the migration to the TLS protocol the majority of TLS definitions were copied from SSL and expanded on. However, some changes&nbsp;made were enough that&nbsp;the protocol was no longer compatible with SSL.&nbsp;The attack On Downgraded Legacy Encryption comes from this final addition to the first version of TLS for compatibility. TLS version one states that if the browser doesn't specify the use of TLS SSL is used. This allows servers to run both TLS and SSL services on the same port without conflicts or stability issues.</p><p>POODLE is an attack on outdated SSL ciphers leveraging functionality in TLS designed to ease the transition to the new protocol.&nbsp;When SSL is removed from an&nbsp;environment TLS is now forced to use the&nbsp;TLS defined cipher suites.</p><p>While SSL has other issues in it the CBC issues could be remediated with the removal of CBC ciphers.&nbsp;This would force SSL to use RC4 stream cipher suites. Unfortunately, TLS doesn't handle RC4 stream ciphers properly leaving any server disabling the CBC ciphers, in SSL, vulnerable to a similar attack on TLS.</p><h2>The double-tap</h2><p>In October&nbsp;of 2014, SSL lay&nbsp;dead, most businesses&nbsp;finished removing SSL from vulnerable&nbsp;web servers. Brian Smith stumbled upon the corpse of SSL hiding in TLS. It is said&nbsp;the first rule of cryptography is don't write your own, and the second rule of course is don't write your own. However, this does not apply to the authors of cryptography software as they have to write the functionality. Unfortunately,&nbsp;TLS was ported from SSL and some of the functionality that was found to be weak was not properly expanded on when ported.</p><p>Many manufacturers of TLS software were quick to add in missing functionality. Windows libraries were found to be not vulnerable as binaries&nbsp;were either outdated or built correctly by Microsoft. This finding mainly&nbsp;affected Linux servers and&nbsp;many security vendors released custom patches while waiting on&nbsp;the distribution&nbsp;updates.</p><h2>How to avoid this in the future</h2><p>POODLE provided&nbsp;an example of the danger&nbsp;outdated protocols and legacy software poses to an environment. TLS had been available to use for 15 years before it finally replaced&nbsp;SSL. Reluctance to remove support for outdated software was a major factor&nbsp;in its length of service. The&nbsp;lesson that should be&nbsp;learned is&nbsp;the importance of staying updated and current with software and protocols. It should also be pointed out that SSL should have been depreciated much earlier.</p><p>Poor porting of TLS from SSL exposed problems with porting and performing all the changes requested by the new spec. If it fits it ships is a common phrase in development, however, in this case,&nbsp;the product fit the mold&nbsp;it was just not the right size.</p><p>Simply stated update early, often, and code review, code review, code review.</p>]]></content:encoded></item></channel></rss>