<?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[Architecting Security]]></title><description><![CDATA[Providing engineers, architects, and tech leaders with actionable insights to master product security and create resilient software products.]]></description><link>https://architectingsecurity.com</link><image><url>https://architectingsecurity.com/img/substack.png</url><title>Architecting Security</title><link>https://architectingsecurity.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 03 Apr 2026 19:43:52 GMT</lastBuildDate><atom:link href="https://architectingsecurity.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Andrzej Dyjak]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[architectingsecurity@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[architectingsecurity@substack.com]]></itunes:email><itunes:name><![CDATA[Andrzej Dyjak]]></itunes:name></itunes:owner><itunes:author><![CDATA[Andrzej Dyjak]]></itunes:author><googleplay:owner><![CDATA[architectingsecurity@substack.com]]></googleplay:owner><googleplay:email><![CDATA[architectingsecurity@substack.com]]></googleplay:email><googleplay:author><![CDATA[Andrzej Dyjak]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Build vs. Buy and Why "I Can Just Build That" Is Costing The Business More Than You Think]]></title><description><![CDATA[When should you build vs. buy software solutions? Learn why "I can just build it" thinking usually costs more than commercial solutions and how to make smart technology decisions.]]></description><link>https://architectingsecurity.com/p/build-vs-buy</link><guid isPermaLink="false">https://architectingsecurity.com/p/build-vs-buy</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Tue, 11 Nov 2025 17:20:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3f96bf9e-38c8-47bf-9449-027f0131b5a5_5355x4016.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The motivation for this article came from a recent LinkedIn encounter with my former colleague, Kasper Lindgaard, now the founder of <a href="https://apor.io">Aporio</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7roS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7roS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 424w, https://substackcdn.com/image/fetch/$s_!7roS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 848w, https://substackcdn.com/image/fetch/$s_!7roS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 1272w, https://substackcdn.com/image/fetch/$s_!7roS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7roS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic" width="1084" height="844" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:844,&quot;width&quot;:1084,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109746,&quot;alt&quot;:&quot;Kasper's post on Linkedin&quot;,&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://architectingsecurity.com/i/178333587?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Kasper's post on Linkedin" title="Kasper's post on Linkedin" srcset="https://substackcdn.com/image/fetch/$s_!7roS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 424w, https://substackcdn.com/image/fetch/$s_!7roS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 848w, https://substackcdn.com/image/fetch/$s_!7roS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.heic 1272w, https://substackcdn.com/image/fetch/$s_!7roS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bba26a-fb51-41ad-bae2-e07bc96e4916_1084x844.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>As you can see Kasper shared a provocative post about the never-ending debate in tech: should you build software solutions in-house or purchase them from the market? His post, discussing the common engineer mindset of &#8220;just scripting it in [insert any technology you choose],&#8221; struck a nerve with me because it&#8217;s a mindset I have observed repeatedly&#8212;and rarely with successful outcomes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.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 Architecting Security! 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><p>For starters, let me share a personal story.</p><h2>When &#8220;Free&#8221; Becomes the Most Expensive Option</h2><p>A while back, a software engineer reached out to pitch his project to me, which was a custom Application Security Posture Management (ASPM) solution. Of course, there was more to this story (no one builds an ASPM just for fun), and the full picture looked like this: his company needed to secure their software, looked at commercial options, and decided they were &#8220;too expensive.&#8221; So he decided to build one himself after hours, then his company deployed it for free, and he framed his arrangement as being a &#8220;design partner&#8221; (although to me, that seemed like a generous way to describe working for free).</p><p>Now, in order to secure ongoing support and maintenance for his recently developed ASPM, he wanted to take it to market and was looking for a partner or investor. One of the first questions I asked was this: &#8220;If your company wouldn&#8217;t pay for an existing ASPM solution because it was too expensive, then why would another similar company pay for yours?&#8221; This question might seem harsh, but it came from a place of sincerity.</p><p>Anyhow, as you may guess, he didn&#8217;t have a clear answer, as the economics of his own story contradicted the business plan. And I&#8217;ve noticed a deeper issue here.</p><h2>Why Companies Buy Software (Hint: It&#8217;s Not Because They Can&#8217;t Build It)</h2><p>At the beginning of working on any solution to the problem in tech, it&#8217;s easy to assume that &#8220;build it yourself&#8221; is free because you already know how to do that. However, the true cost of building isn&#8217;t in the actual building itself, but in the ongoing maintenance of the solution. Most of the time, this cost far exceeds the apparent price tag of vendor products.</p><p>So let me state frankly what many engineers fail to understand: <strong>you don&#8217;t buy software because you can&#8217;t build it. You buy it because maintaining, securing, and evolving it isn&#8217;t free, </strong><em><strong>and</strong></em><strong> it doesn&#8217;t make you money.</strong> In other words, it&#8217;s not your business.</p><p>But what is your business? Let&#8217;s say that we&#8217;re talking about a SaaS company building accounting software for small consultancies. Its core competency should be understanding accounting workflows, tax regulations, what makes bookkeepers&#8217; lives easier, <em>et cetera</em>. Building own security solutions? That&#8217;s about as relevant to this business as baking own bread would be.</p><p>Which brings me to an important concept in economics that somehow gets lost in the &#8220;we can build anything&#8221; mindset: <strong>the division of labor</strong>.</p><h2>The Economics of the Buy or Build Decision</h2><p>Speaking of bread, could I bake my own? Absolutely! Would it be fresh, warm, and taste better than store-bought? <em>Maybe</em>. But here&#8217;s what I&#8217;d lose: the time and focus I could spend working on what I&#8217;m actually good at&#8212;helping companies secure their products.</p><p>So instead of baking bread, I buy bread. In this way, the baker is happy because they do what they like and know how to do well. I&#8217;m happy because I can also focus on things I like and know how to do well, while still having fresh bread. In short, we&#8217;re both better off because we&#8217;ve specialized.</p><p>Which makes <em>so much</em> sense that it is in fact the foundation of how the economy works. Yet in tech, I constantly see this principle ignored. Engineers look at a problem and think, &#8220;I could knock that out in a weekend.&#8221; But what they don&#8217;t calculate is:</p><ul><li><p>The <strong>opportunity cost</strong> of not working on core product features that differentiate the business</p></li><li><p>The <strong>ongoing maintenance cost</strong> as dependencies update, security vulnerabilities emerge, and requirements change</p></li><li><p>The <strong>knowledge transfer cost</strong> when that engineer inevitably leaves and nobody knows how &#8220;that weekend project&#8221; works</p></li><li><p>The <strong>scale and reliability cost</strong> of running it in production at enterprise scale</p></li></ul><h2>When to Build In-House: A lesson from Boeing</h2><p>Now, to be clear, I&#8217;m not advocating for outsourcing everything to the bone. The pendulum can swing too far in the other direction, and it has for various companies many times.</p><p>A prime example is Boeing, whose own experience demonstrates that the buy vs. build decision isn&#8217;t binary. When companies outsource core competencies (what makes them unique), they lose competitive advantage. Conversely, when they insist on building everything in-house, they waste resources on solved problems.</p><p>There is a balance to be found here, which requires understanding what is core to the business and what isn&#8217;t. And as it often is for such matters&#8212;it sounds easy, but it is hard.</p><blockquote><p>For an elaborate critique of Boeing, read the excellent paper <a href="https://techrights.org/wp-content/uploads/2022/06/2014130646.pdf">&#8220;Outsourced Profits &#8211; The Cornerstone of Successful Subcontracting&#8221;</a>.</p></blockquote><h2>Why Engineering Should Advise, Not Decide</h2><p>Engineers will almost always <em>believe</em> they can &#8220;just build it.&#8221; I don&#8217;t think it&#8217;s malice or arrogance&#8212;I think it&#8217;s professional optimism. You know what I mean&#8212;give me six engineers and a pizza budget, and we could build a basic version of most SaaS products over a few weekends. (Especially now with AI, am I right?)</p><p>But &#8220;can we build it?&#8221; is the wrong question to ask. The right questions to ask are:</p><ul><li><p><strong>Should</strong> we build it?</p></li><li><p>What&#8217;s the total cost over 3-5 years?</p></li><li><p>What core business value are we deferring to build this?</p></li><li><p>Who will own it when the original builder leaves?</p></li><li><p>What happens when it needs to scale 10x?</p></li></ul><p>These are business questions that require business thinking, which in the long-term is a competitive advantage over those who think strictly in engineering terms.</p><blockquote><p>BTW, I also don&#8217;t believe that this is an instance of <a href="https://en.wikipedia.org/wiki/Not_invented_here">NIH Syndrome</a>, which in my mind is a separate, deeper issue.</p></blockquote><h2>Build What Makes You Unique, Buy Everything Else</h2><p>The build vs. buy decision ultimately comes down to understanding your core business. Build the solutions that give you a competitive advantage (security is not it unless you&#8217;re a security startup). Buy everything else, even if you <em>could</em> build it. Focus your engineering talent on innovation, not on reinventing solved problems.</p><p>Getting this right isn&#8217;t just about saving money&#8212;it&#8217;s about strategic focus. Those who master it move faster, innovate more, and compete better.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architectingsecurity.com/subscribe?"><span>Subscribe now</span></a></p><p><em>P.S. If you&#8217;re interested in learning more about Kasper&#8217;s work, check out <a href="https://apor.io">Aporio</a>, where he&#8217;s building an enterprise identity intelligence platform.</em></p><p><em>P.P.S. Recent article by </em><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Ross Haleliuk&quot;,&quot;id&quot;:2607604,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fa0e73b-27de-49eb-a585-393f1add9ab8_1500x1000.jpeg&quot;,&quot;uuid&quot;:&quot;5ea8cdf4-0e60-4e5f-a5dd-eb7b79f10931&quot;}" data-component-name="MentionToDOM"></span> <em>also touched upon this subject with an excellent passage: &#8220;People who believe enterprises buy software only because they can&#8217;t build it in-house fundamentally misunderstand how large organizations operate.&#8221; You can <a href="https://ventureinsecurity.net/p/ai-doesnt-make-it-much-easier-to">read the full article here</a>.</em></p>]]></content:encoded></item><item><title><![CDATA[Security Audits Explained: Understanding Compliance-Focused Security Assessments]]></title><description><![CDATA[Most organizations confuse security audits with pentests. Learn why audits measure compliance, not security&#8212;and why you still need them anyway.]]></description><link>https://architectingsecurity.com/p/security-audits-compliance-not-security</link><guid isPermaLink="false">https://architectingsecurity.com/p/security-audits-compliance-not-security</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Mon, 03 Nov 2025 16:16:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cc3b2b1d-e5bb-4e80-b29f-a597716c0dd1_6000x3376.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Here&#8217;s a common problem: the term &#8220;security audit&#8221; gets thrown around so loosely that it&#8217;s become a catch-all label for virtually any security assessment activity. This isn&#8217;t just sloppy terminology&#8212;it&#8217;s actively harmful. When everything is an &#8220;audit,&#8221; the word loses its meaning, and organizations end up expecting one type of assessment to serve five different purposes. That confusion doesn&#8217;t facilitate cooperation either between teams or service providers.</p><p>An audit is a specific type of assessment with a specific purpose, and that&#8217;s what I&#8217;ll be unpacking today.</p><p>Throughout this series, I examine security assessment methods through five key characteristics:</p><ul><li><p><strong>Goal.</strong> What are we trying to achieve?</p></li><li><p><strong>Scope.</strong> What falls within our assessment boundaries?</p></li><li><p><strong>Time.</strong> What&#8217;s our timeline?</p></li><li><p><strong>Effort.</strong> How much resource investment delivers adequate ROI?</p></li><li><p><strong>Automation.</strong> What portions of this work can we automate?</p></li></ul><p>These five dimensions naturally reveal the contrasts between assessment types. They help you understand not just what makes an audit different from a pentest or threat modeling, but more importantly, when to deploy each method within your organization.</p><p>Because here&#8217;s the thing: calling everything a &#8220;pentest&#8221; or labeling every assessment an &#8220;audit&#8221; creates dysfunction. You need different tools for different stages. Sometimes you need an audit. Other times you need vulnerability assessment, threat modeling, or penetration testing. Knowing which stage calls for which method requires understanding the fundamental differences between them.</p><p>And yes, &#8220;all models are wrong, but some are useful&#8221;&#8212;this one included.</p><p><strong>This article series includes:</strong></p><ul><li><p><a href="https://architectingsecurity.com/p/security-assessment-types-guide">Part 1: Security Assessment Types Overview</a></p></li><li><p><a href="https://architectingsecurity.com/p/threat-modeling-proactive-security-assessment">Part 2: Threat Modeling</a></p></li><li><p><strong>Part 3: Security Audits</strong> <em>(you are here)</em></p></li><li><p>Part 4: Vulnerability Assessments <em>(coming soon)</em></p></li><li><p>Part 5: Penetration Testing <em>(coming soon)</em></p></li><li><p>Part 6: Red Teaming <em>(coming soon)</em></p></li></ul><p><strong>TL;DR:</strong> Security audits evaluate compliance with standards rather than directly measuring security effectiveness. They provide essential benefits: establishing your current security position, ensuring alignment with industry standards, and enabling progress tracking through repeatable assessments. While compliant doesn&#8217;t always mean secure, audits remain crucial for understanding where you stand and planning improvements.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.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 Architecting Security! 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><h2>What is a Security Audit? Definition and Purpose</h2><p>The word &#8220;audit&#8221; originates from the Latin term &#8220;auditor,&#8221; which means listener. This word was historically associated with the &#8220;hearing of accounts&#8221; in ancient Rome, where one official would listen to another reading documents to compare them and identify any discrepancies.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6UXS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6UXS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 424w, https://substackcdn.com/image/fetch/$s_!6UXS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 848w, https://substackcdn.com/image/fetch/$s_!6UXS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 1272w, https://substackcdn.com/image/fetch/$s_!6UXS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6UXS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic" width="1456" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:340921,&quot;alt&quot;:&quot;Cicero Denounces Catiline by Maccari&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/177881286?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cicero Denounces Catiline by Maccari" title="Cicero Denounces Catiline by Maccari" srcset="https://substackcdn.com/image/fetch/$s_!6UXS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 424w, https://substackcdn.com/image/fetch/$s_!6UXS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 848w, https://substackcdn.com/image/fetch/$s_!6UXS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 1272w, https://substackcdn.com/image/fetch/$s_!6UXS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35356ec5-3c37-4a9b-8f1d-2eeb5e75f316_1600x963.heic 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">Figure 1: I&#8217;ll spare you any AI slop; instead, let&#8217;s admire the real deal, like &#8220;Cicero Denounces Catiline&#8221; by Cesare Maccari.</figcaption></figure></div><p>To this day audits remain a cornerstone of the financial world and while I do enjoy discussing financial and investment topics, I&#8217;ll set that aside for now. Today, we&#8217;ll focus on the realm of security audits.</p><p>So, what is a security audit then? In its broadest definition, a security audit is an independent evaluation of a system against a standard in order to verify and/or ensure compliance. <strong>Not security, compliance.</strong></p><p>The system mentioned in the definition could be a product, an IT system, or even an entire organization. In turn, the standard might encompass an industry standard, a norm, a legal regulation, or even an internal policy.</p><p>I&#8217;d like to reiterate a hidden point from above&#8212;the goal of an audit is not to confirm the <em>effectiveness</em> of security measures or prove that a control is <em>actively fulfilling its intended purpose</em>. The goal of an audit, its strategic objective, is compliance.</p><p>Consider the following example: During an audit, if a control specifies that my web applications must be protected by a Web Application Firewall (WAF), the auditor usually will not examine whether my WAF configuration is correct or incorrect. As long as a WAF is present, the assumption is that applications are <em>in fact</em> &#8220;protected by it&#8221; (i.e., the control is considered satisfied). So, even if the WAF is improperly configured and thus ineffective, it does not impact the audit results.</p><p>And this approach is appropriate because assessing the <em>effectiveness</em> of the WAF should be part of a penetration test, which itself can be part of a larger audit. In fact, performing one security assessment type on behalf of another is a standard way of doing things (e.g., threat modeling done at the beginning of a pentest; pentesting performed as part of a larger audit effort; <em>et cetera</em>). I call it the Matryoshka Effect of Security Assessments&#8482;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yte3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yte3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 424w, https://substackcdn.com/image/fetch/$s_!yte3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 848w, https://substackcdn.com/image/fetch/$s_!yte3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 1272w, https://substackcdn.com/image/fetch/$s_!yte3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yte3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic" width="1456" height="985" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:985,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:866350,&quot;alt&quot;:&quot;Matryoshka set&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/177881286?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Matryoshka set" title="Matryoshka set" srcset="https://substackcdn.com/image/fetch/$s_!yte3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 424w, https://substackcdn.com/image/fetch/$s_!yte3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 848w, https://substackcdn.com/image/fetch/$s_!yte3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 1272w, https://substackcdn.com/image/fetch/$s_!yte3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83db92cf-197b-4830-82d8-6af018711594_3086x2087.heic 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">Figure 2: A matryoshka, also known as a Russian nesting doll, is a set of wooden dolls of decreasing size placed one inside another. Each doll splits into two halves to reveal a smaller doll within.</figcaption></figure></div><p>Anyway, the point I tried to make by consistently emphasizing compliance over security is this: <strong>results of an audit can be manipulated</strong> (and they often are, but that&#8217;s a topic for another discussion).</p><p>The need for compliance, and therefore an audit, is usually external. It might be driven by changes in the regulatory landscape (e.g., regulatory requirements like DORA, CRA, or NIS2), or it could be due to business needs, such as when a European SaaS company wants to gain clients in the US and is required to comply with SOC 2. Ultimately, being compliant with a specific standard makes it easy to conduct apples-to-apples comparisons, which is one of the primary goals of any regulation or standard.</p><p>For example, in my backyard (Poland), companies typically start considering ISO 27001 when they begin sales to international clients. For these clients, compliance with this standard serves as proof that the company meets the minimum baseline for information security necessary to become their business partner.</p><blockquote><p>BTW, I was once told by an experienced auditor that <em>&#8220;not every organization compliant with ISO 27001 is secure, but every secure organization is compliant with ISO 27001&#8221;</em>, which perfectly captures the point I wanted to make earlier: <strong>an audit can only confirm compliance, and it&#8217;s possible to be compliant while not being secure. </strong>(Warm regards, Jakub! &#128522;)</p></blockquote><p>And while we&#8217;re still on the topic of standards&#8212;it&#8217;s worth noting that some of them are stricter than others (e.g., FedRAMP vs. SOC 2), which of course has an impact on scope&#8230;</p><h2>How Long Do Security Audits Take? Scope, Timeline, and Resource Requirements</h2><p>An audit can be broad, encompassing various aspects such as people, processes, and IT. But it can also be narrow. The scope is determined by the standard against which we are auditing.</p><p>However, regardless of the scope, for an auditor to perform a reliable and trustworthy audit, they must have access to all the necessary information to carry out their task effectively. In fact, unless we are doing shady things, it&#8217;s in our own best interest to help the auditor. (<a href="https://levin-center.org/what-is-oversight/portraits/congress-and-the-enron-scandal/">The Enron case</a> could serve here as a classic counterexample.)</p><p>An audit can focus exclusively on policies or on technical aspects. However, most audits are a combination of both&#8212;an audit against industry-accepted standards and norms involves a review of policies alongside a technical evaluation. For example, ISO 27001 involves policy validation, vulnerability assessments, and penetration testing.</p><p>Internally, audits are managed by the Governance, Risk, and Compliance (GRC) unit, if one exists, or by a special task group formed specifically for the audit if the GRC unit is not available.</p><p>The time needed to conduct an audit depends on the standards being audited against and the size of the organization undergoing the audit. An audit could take a couple of weeks, such as auditing a small or medium-sized business (SMB) against ISO 27001. However, it might take several months when auditing the same SMB against SOC 2 Type 2 due to the need for extensive proof of controls.</p><p>This is related to the demand for resources&#8212;the larger the audit, the more people are needed. In theory, even the largest audit could be performed by just one person; however, in practice, this would be unfeasible. In practice, audits are conducted by small teams of auditors and&#8212;similar to Red Teaming&#8212;domain experts can be utilized &#8220;on the fly,&#8221; so they don&#8217;t need to be full-time team members.</p><p>Conversely, from the perspective of the organization being audited, engaging a broader range of individuals in various roles can help prevent <strong>the problem of tunnel vision</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vUIG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vUIG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 424w, https://substackcdn.com/image/fetch/$s_!vUIG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 848w, https://substackcdn.com/image/fetch/$s_!vUIG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 1272w, https://substackcdn.com/image/fetch/$s_!vUIG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vUIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93674,&quot;alt&quot;:&quot;The Phoenix Project Cover&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/177881286?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Phoenix Project Cover" title="The Phoenix Project Cover" srcset="https://substackcdn.com/image/fetch/$s_!vUIG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 424w, https://substackcdn.com/image/fetch/$s_!vUIG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 848w, https://substackcdn.com/image/fetch/$s_!vUIG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 1272w, https://substackcdn.com/image/fetch/$s_!vUIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e64d44-9382-44a3-9af5-2b5b87cc3ebb_1200x630.heic 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>A great example of this is found in the book <a href="https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592">The Phoenix Project</a>, where John, the security expert at Parts Unlimited, falls victim to tunnel vision during the &#8220;SOX404 audit&#8221;. To John&#8217;s great surprise, the this audit was passed successfully despite his conviction of a lack of security controls in the IT systems under his watch. The twist was that John had only focused on his own area of expertise and failed to consider the entire business. As a result, he was unaware that certain controls he deemed critical were actually unnecessary because other business processes already covered them. Thus, while the goals of the audit were being met, they were not being fulfilled in the exact area John had anticipated, which is a textbook example (he, he) of tunnel vision during an audit.</p><h2>Automation Capabilities in Security Audits</h2><p>When it comes to audits, the feasibility of automation depends on the subject of the audit and the standards being evaluated against. </p><p>For example, automating an audit of an entire organization can be challenging. On the other hand, automating an audit of a Kubernetes platform against <a href="https://www.cisecurity.org/cis-benchmarks">CIS Benchmarks</a> can be done quite easily (although it might cause some pain in the beginning).</p><p>Both of these are audits, but their scope is entirely different. So, since I <em>am</em> a consultant, with regard to automation, I&#8217;d simply say that <em>it depends</em>.</p><blockquote><p>Yes, I&#8217;m aware of companies such as Vanta or Drata; they do help with <em>automation of certain parts of the process for certain standards</em>, but I wouldn&#8217;t call it automation in the engineering sense (set it and forget it). At best, it&#8217;s semi-automation.</p></blockquote><h2>Summary: Why Security Audits Matter</h2><p>Security audits operate at a broader and higher altitude than vulnerability assessments or penetration tests. Yet, they play an essential role in security. And I&#8217;m using &#8220;security&#8221; deliberately here, not limiting it to cybersecurity alone, but encompassing the wider domains of security and safety.</p><p>Why do audits matter? Because they answer a fundamental question: <strong>Where are we right now?</strong></p><p>Think of it as navigation. To reach any destination, you need three things in order: (1) know where you&#8217;re going, (2) understand where you currently are, and (3) plot the route between them. Skip step two and you&#8217;re navigating blind. You can&#8217;t chart a meaningful course without knowing your starting coordinates.</p><p>But audits deliver two additional strategic benefits beyond establishing your baseline.</p><p>First, they enable you to leverage collective intelligence. Aligning with industry standards means you&#8217;re tapping into accumulated market insights and battle-tested practices rather than reinventing the wheel.</p><p>Second, audits are inherently repeatable. This replicability is what transforms a single assessment into a measurement system. You can conduct the same audit quarterly, annually, or on whatever cadence makes sense&#8212;and each iteration reveals whether you&#8217;re actually moving forward or just running in place.</p><p>This last point about tracking progress over time is particularly important, and I&#8217;ll be returning to it in future articles. Subscribe to receive updates directly in your inbox.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architectingsecurity.com/subscribe?"><span>Subscribe now</span></a></p><h2>Addendum: How to Challenge Auditor Requirements Effectively</h2><p>I have one more thing to say about audits: Auditors should not be viewed as the ultimate authority. There may be instances where the auditor does not completely understand the purpose of a particular requirement. This issue is related to tunnel vision, but this time it affects the auditor and not the party being audited.</p><p>This is because, often, a given control requires domain knowledge to grasp its underlying purpose. In such cases, the auditor might interpret the control too literally, missing this hidden objective&#8212;specifically, why the control exists and what it&#8217;s intended to achieve.</p><p>Consider this scenario: An auditor requires you to conduct periodic vulnerability scans of your infrastructure using a market-recognized tool, let&#8217;s say Nessus. This is a control that needs to be satisfied, but the problem is that your infrastructure consists of ephemeral Docker containers that are part of a cloud-based cluster. So, do you really need to periodically run Nessus on this cluster? Certainly not, that would be absurd!</p><p>The objective of the control is to ensure that everything within your infrastructure is up-to-date and free from known vulnerabilities. This is an actual purpose of these scans. So, in the environment I described, achieving this goal isn&#8217;t about scanning live infrastructure and performing security patching. Instead, it is about ensuring that your images are up-to-date and free from known vulnerabilities <strong>before</strong> they enter the cluster. Which is important because this goal is accomplished by a different team, using a different tool, and at a different point in the software development lifecycle.</p><p>Now, let&#8217;s return to the topic of manipulating audit results because sometimes&#8212;even when you&#8217;re correct&#8212;strict compliance is still an obligation. And on this topic, I remember the epic way Cloudflare bypassed the audit requirement very similar to our example.</p><p>In a nutshell: Cloudflare is one of those edge cases that doesn&#8217;t fit into the cookie-cutter approach required by a typical audit. Consequently, they weren&#8217;t fully satisfied with the offerings from market leaders in vulnerability scanning and the capabilities of their tools. So, with the help of an intern, they developed their own vulnerability scanner, <a href="https://blog.cloudflare.com/introducing-flan-scan/">FLAN Scan</a>. This scanner uses <a href="https://nmap.org">Nmap</a> as the network scanning engine and incorporates the <a href="https://nmap.org/nsedoc/scripts/vulners.html">Vulners script</a> to provide vulnerability references. They enhanced the tool by adding detailed PDF reporting and <a href="https://github.com/cloudflare/flan">released it as an open-source project</a>. Cloudflare saved a significant amount of money with this approach while satisfying the audit requirement for vulnerability scans. </p><p>A similar scenario might occur when the auditor relies on a set of specific answers, requiring additional justification for any answers outside that framework.</p><p>On several occasions, I have had to challenge the auditor&#8217;s assessment, which ultimately benefited my clients. One such instance involved contesting the implementation of a static analysis. The client was using SonarQube, but the auditor deemed it an unacceptable substitute for solutions like Checkmarx or Veracode. I stepped in and argued that, in my SME opinion&#8212;based on my knowledge of how static analysis works, my experience with various tools, and my understanding of its objectives&#8212;SonarQube is indeed a suitable and more cost-effective alternative. The argument I made won, but it was only because I had all the necessary background to understand it and then make it.</p>]]></content:encoded></item><item><title><![CDATA[Threat Modeling: The Only Proactive Security Assessment]]></title><description><![CDATA[Learn how threat modeling prevents security vulnerabilities before they happen. Discover why it's the only proactive security assessment, plus practical guidance on implementation, tools, and ROI.]]></description><link>https://architectingsecurity.com/p/threat-modeling-proactive-security-assessment</link><guid isPermaLink="false">https://architectingsecurity.com/p/threat-modeling-proactive-security-assessment</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Mon, 20 Oct 2025 15:44:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/14dbf275-13b6-411d-86f7-6363fc84d7db_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous article, we explored <a href="https://architectingsecurity.com/p/security-assessment-types-guide">the landscape of security assessment types</a> and introduced five key features that distinguish them: Goal, Scope, Time, Effort, and Automation. Today, we&#8217;ll examine threat modeling through this lens&#8212;arguably the most unique assessment type in our toolkit.</p><p>What makes threat modeling special? Unlike other security assessments that find problems after they exist, threat modeling prevents them from occurring in the first place. It&#8217;s the only truly proactive security practice in the SDLC, allowing teams to identify and address potential vulnerabilities before writing a single line of code.</p><p>In this article, I&#8217;ll demystify threat modeling by covering:</p><ul><li><p>What threat modeling actually is and what it produces</p></li><li><p>The strategic objectives it helps achieve</p></li><li><p>How scope affects implementation across different organizational levels</p></li><li><p>Practical considerations for time, effort, and automation</p></li><li><p>Why it&#8217;s foundational to modern secure development practices</p></li></ul><p>Whether you&#8217;re implementing threat modeling for compliance, cost reduction, or genuine security improvement, understanding these fundamentals will help you navigate the practice effectively.</p><p><strong>This article series includes:</strong></p><ul><li><p><a href="https://architectingsecurity.com/p/security-assessment-types-guide">Part 1: Security Assessment Types Overview</a></p></li><li><p><strong>Part 2: Threat Modeling</strong> <em>(you are here)</em></p></li><li><p><a href="https://architectingsecurity.com/p/security-audits-compliance-not-security">Part 3: Security Audits</a></p></li><li><p>Part 4: Vulnerability Assessment Guide <em>(coming soon)</em></p></li><li><p>Part 5: Penetration Testing Deep Dive <em>(coming soon)</em></p></li><li><p>Part 6: Red Teaming for Organizations <em>(coming soon)</em></p></li></ul><p><strong>TL;DR:</strong> Threat modeling is the only proactive security assessment&#8212;it prevents vulnerabilities rather than finding them. By answering &#8220;What are we working on?&#8221;, &#8220;What can go wrong?&#8221;, and &#8220;What are we going to do about it?&#8221;, teams identify and address security issues before implementation. It serves two strategic goals: reducing defect costs and demonstrating compliance. Scope varies from entire organizations to individual features, with time requirements scaling accordingly. Best conducted with 3-6 diverse participants in focused sessions. While tools can help, the real value lies in embedding security thinking into teams through repeated practice. Unlike other assessments that verify security after the fact, threat modeling builds it in from the start.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.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 Architecting Security! 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><h2>What is Threat Modeling? Definition and Core Concepts</h2><p>For starters, let&#8217;s define what threat modeling actually is. The best definition I know comes from the <a href="https://www.threatmodelingmanifesto.org">Threat Modeling Manifesto</a> and goes like this: &#8220;Threat modeling is analyzing <strong>representations of a system</strong> to highlight concerns about <strong>security</strong> and <strong>privacy</strong> characteristics.&#8221;</p><p>This analysis occurs during a threat modeling session, where we address three fundamental questions:</p><ul><li><p>What are we working on?</p></li><li><p>What can go wrong?</p></li><li><p>What are we going to do about it?</p></li></ul><p>To these three fundamental questions, we can add a bonus one: Did we do a good enough job?</p><p>Our analysis ends with an artifact in the form of a threat model. Such a threat model can look like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hyNy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hyNy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 424w, https://substackcdn.com/image/fetch/$s_!hyNy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 848w, https://substackcdn.com/image/fetch/$s_!hyNy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 1272w, https://substackcdn.com/image/fetch/$s_!hyNy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hyNy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic" width="1456" height="863" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:863,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158805,&quot;alt&quot;:&quot;DFD with threat model&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176629147?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DFD with threat model" title="DFD with threat model" srcset="https://substackcdn.com/image/fetch/$s_!hyNy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 424w, https://substackcdn.com/image/fetch/$s_!hyNy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 848w, https://substackcdn.com/image/fetch/$s_!hyNy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 1272w, https://substackcdn.com/image/fetch/$s_!hyNy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F803fa7ba-533e-4e0e-8888-0377528a02f8_2496x1480.heic 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">Figure 1: A threat model in the form of a DFD for a simple payment system. Made with <a href="https://www.drawio.com/blog/threat-modelling">Draw.io</a>.</figcaption></figure></div><p>Or like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_shp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_shp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 424w, https://substackcdn.com/image/fetch/$s_!_shp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 848w, https://substackcdn.com/image/fetch/$s_!_shp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 1272w, https://substackcdn.com/image/fetch/$s_!_shp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_shp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic" width="1456" height="1700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1700,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:385691,&quot;alt&quot;:&quot;Attack Tree for S3 Bucket&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176629147?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Attack Tree for S3 Bucket" title="Attack Tree for S3 Bucket" srcset="https://substackcdn.com/image/fetch/$s_!_shp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 424w, https://substackcdn.com/image/fetch/$s_!_shp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 848w, https://substackcdn.com/image/fetch/$s_!_shp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 1272w, https://substackcdn.com/image/fetch/$s_!_shp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974c9d5b-aa99-498e-b174-f3638d3b2cb9_3120x3642.heic 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">Figure 2: A threat model in the form of an attack tree for an S3 bucket with video recordings. Made with <a href="https://kellyshortridge.com/blog/posts/deciduous-attack-tree-app/">Deciduous App</a>.</figcaption></figure></div><p>Or even like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IBHG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IBHG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 424w, https://substackcdn.com/image/fetch/$s_!IBHG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 848w, https://substackcdn.com/image/fetch/$s_!IBHG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 1272w, https://substackcdn.com/image/fetch/$s_!IBHG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IBHG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic" width="1456" height="1011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1011,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:200996,&quot;alt&quot;:&quot;Written threat model for Ledger Hardware Wallet&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176629147?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Written threat model for Ledger Hardware Wallet" title="Written threat model for Ledger Hardware Wallet" srcset="https://substackcdn.com/image/fetch/$s_!IBHG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 424w, https://substackcdn.com/image/fetch/$s_!IBHG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 848w, https://substackcdn.com/image/fetch/$s_!IBHG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 1272w, https://substackcdn.com/image/fetch/$s_!IBHG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffae211b8-fda8-4204-a66f-2b7c6304fe8b_2358x1638.heic 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">Figure 3: A threat model in the form of a written document for a Ledger Hardware Wallet. Made by <a href="https://donjon.ledger.com/threat-model/">Ledger&#8217;s Donjon</a>.</figcaption></figure></div><p>The form of the resulting threat model isn&#8217;t important, as there are many ways it can be represented. However, what <em>is</em> important is that by conducting threat modeling, you deliberately create a threat model that can later be used to prevent issues, demonstrate compliance, or serve as a baseline for further verification (i.e., answering the bonus question&#8212;did we do a good enough job)&#8230; but I got ahead of myself here, so let&#8217;s step back.</p><h2>Why Use Threat Modeling: Strategic Benefits and ROI</h2><p>Now that we know what threat modeling is and what are its products, we can dive deeper and answer questions like <strong>when, where, and why</strong> we would use it. Among these, answering <em>the why question</em> seems like a good first step.</p><p>So, why would we bother with threat modeling in the first place? Or, to put it more professionally: What are the strategic objectives we might want to achieve with threat modeling?</p><p>While working on implementing this process, I identified only two such objectives:</p><ol><li><p><strong>Reducing the cost of software defects and security verification</strong></p></li><li><p><strong>Demonstrating compliance</strong></p></li></ol><p>As I already mentioned, we can use threat modeling to prevent issues from escalating into vulnerabilities. We can also use the resulting threat models to serve as a baseline for further verification through other assessments (e.g., penetration testing). Both of these reduce the overall cost of the SDLC:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ifS6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ifS6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 424w, https://substackcdn.com/image/fetch/$s_!ifS6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 848w, https://substackcdn.com/image/fetch/$s_!ifS6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 1272w, https://substackcdn.com/image/fetch/$s_!ifS6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ifS6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic" width="1256" height="676" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b02a8174-d101-4158-b316-c948a6869420_1256x676.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:676,&quot;width&quot;:1256,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37132,&quot;alt&quot;:&quot;Relative Cost of Fixing Defects&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176629147?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Relative Cost of Fixing Defects" title="Relative Cost of Fixing Defects" srcset="https://substackcdn.com/image/fetch/$s_!ifS6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 424w, https://substackcdn.com/image/fetch/$s_!ifS6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 848w, https://substackcdn.com/image/fetch/$s_!ifS6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 1272w, https://substackcdn.com/image/fetch/$s_!ifS6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb02a8174-d101-4158-b316-c948a6869420_1256x676.heic 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">Figure 4: Relative cost of fixing a bug at various stages of SDLC taken from <a href="https://www.researchgate.net/publication/255965523_Integrating_Software_Assurance_into_the_Software_Development_Life_Cycle_SDLC">IBM&#8217;s research study</a>.</figcaption></figure></div><p>As for compliance with regulations or industry standards, performing threat modeling and storing the resulting threat models is direct proof of the practice. Furthermore, if compliance is the sole reason for the practice of threat modeling, then we could perform it retroactively (i.e., after the thing we are building is built). Of course, working retroactively decreases ROI, but it often meets regulatory obligations and might be a good first step in initiating threat modeling as a practice.</p><h2>Threat Modeling Scope: From Features to Enterprise</h2><p>The scope of threat modeling can vary significantly, which is why it is often challenging to understand for newcomers. To clarify this matter, let&#8217;s consider a typical tech-savvy organization as an example to illustrate how we could approach threat modeling.</p><p>To begin, we could perform threat modeling for the entire organization to identify potential threats, such as advanced persistent threats (APTs) that could lead to serious incidents. This process would consider all aspects, including people, processes, and IT. Subsequently, we could intensify our focus by conducting threat modeling exclusively on the IT infrastructure. We could then analyze a specific network segment, such as a Kubernetes cluster, or an individual system within that segment, like a group of microservices. From there, we could further narrow our focus to a specific application within the system, like an individual microservice. Finally, we could zero in on specific features within this application, such as a feature developed during the current sprint.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ttGB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ttGB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 424w, https://substackcdn.com/image/fetch/$s_!ttGB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 848w, https://substackcdn.com/image/fetch/$s_!ttGB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 1272w, https://substackcdn.com/image/fetch/$s_!ttGB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ttGB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic" width="1456" height="612" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:612,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41654,&quot;alt&quot;:&quot;Various POVs for threat modeling&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176629147?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Various POVs for threat modeling" title="Various POVs for threat modeling" srcset="https://substackcdn.com/image/fetch/$s_!ttGB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 424w, https://substackcdn.com/image/fetch/$s_!ttGB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 848w, https://substackcdn.com/image/fetch/$s_!ttGB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 1272w, https://substackcdn.com/image/fetch/$s_!ttGB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8ecd16f-4441-41d9-b887-ddb57ed96384_1770x744.heic 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">Figure 5: Different POVs in which threat modeling can be used&#8212;from an organization to an application.</figcaption></figure></div><p>In all these cases, we would perform threat modeling, but since our POV is changing, we would require different people and different tools for each perspective.</p><h2>How Long Does Threat Modeling Take? Time Requirements by Scope</h2><p>Time depends on the scope, meaning the breadth and depth of the perspective we take&#8212;if we&#8217;re talking about threat modeling for a specific feature, it will take less time than threat modeling for the entire IT infrastructure. There is a simple relation here: </p><p><code>more elements to analyze = more time required</code>.</p><blockquote><p>In one of the gazillion podcasts I listen to, I learned that threat modeling for the Xbox ecosystem took several months, which is entirely feasible considering its scope. This doesn&#8217;t mean all work stopped while everyone focused solely on threat modeling. Rather, I assume it was part of a larger architectural design process for the solution considering <a href="https://www.microsoft.com/en-us/securityengineering/sdl/about">Microsoft SDL</a>.</p></blockquote><p>One thing to keep in mind is that scope and time required significantly affect the frequency of threat modeling. So, how often should it occur? It depends on what is being modeled.</p><p>For example, if we&#8217;re talking about threat modeling at the feature level and we&#8217;re using Agile methodology, then each sprint could include a dedicated threat modeling session to focus on the security aspects of what we intend to build. However, this doesn&#8217;t mean that each time we need to create a comprehensive threat model for the entire system. Instead, we could allocate 45-60 minutes to address the questions &#8220;what can go wrong&#8221; and &#8220;what are we going to do about it&#8221; with regard to the scope defined by the sprint itself (&#8220;what are we working on&#8221;). These insights can then be documented and added to the relevant tasks within the backlog.</p><p>On the other hand, if we were to perform threat modeling for an entire organization, then it would take more time and could be more infrequent (e.g., annually).</p><h2>Who Should Participate in Threat Modeling Sessions?</h2><p>When considering the size of the working group conducting threat modeling, it is recommended to keep it small.</p><p>Avoiding overly large groups is important because each additional member increases communication issues non-linearly. Based on my experience, the ideal group size for a single threat modeling session is 3 to 6 people, including the facilitator who leads the discussion.</p><p>I&#8217;d also like to emphasize <strong>the crucial role of having a diverse array of roles involved in a threat modeling session</strong>. For example, when conducting threat modeling for an application&#8217;s features, the working group might include developers, architects, QA engineers, and even product owners. On the other hand, modeling threats for infrastructure requires the involvement of security professionals and operations staff, rather than software engineers.</p><h2>Can You Automate Threat Modeling? Tools vs. Human Analysis</h2><p>Threat modeling can be enhanced with the use of specialized tools. A popular choice is the <a href="https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool">Microsoft Threat Modeling Tool</a> or its OWASP counterpart, <a href="https://owasp.org/www-project-threat-dragon/">Threat Dragon</a>. Both of these tools are available for free, alongside various commercial alternatives. These tools primarily aim to automate certain aspects of the threat modeling process. However, it is important to understand that this semi-automation cannot yet replace the analysis performed by those who build and maintain the system. It remains fundamentally limited since it often generates only generic threats and frequently results in false positives.</p><p>The advancements in LLMs offer a promising future, but based on my experience and that of others (warm regards, Filip &#128522;), they work best with an operator who is already proficient in threat modeling and knows what to ask for.</p><p>So, while certain aspects of threat modeling can be automated, I believe its primary value lies in raising the baseline for security awareness. When a team actively engages in these sessions, security thinking gradually becomes embedded in their daily work through repeated iterations. As a result, during feature implementation, team members instinctively start to consider potential issues and what might go wrong.</p><blockquote><p>A similar effect on the improvement of security awareness can be observed with a well-executed SAST process, which not only establishes guardrails but at the same time gradually elevates the team&#8217;s baseline security awareness.</p></blockquote><h2>Bottom Line: Threat Modeling as Your Security Foundation</h2><p>In the <a href="https://architectingsecurity.com/i/176015867/understanding-security-testing-a-simple-analogy-for-stakeholders">home building analogy</a> I introduced in the first post of this series, threat modeling takes place at the very beginning; we conduct it before we start constructing anything in order to understand the threats we need to consider. Here, we answer, &#8220;What are we working on?&#8221;&#8212;which is our home. We address &#8220;What can go wrong?&#8221; in the context of our property, location, and fence, and finally we determine &#8220;What are we going to do about it?&#8221;</p><p>This process helps us avoid potential vulnerabilities, both architectural and implementation-related. Furthermore, we can later utilize this threat model to verify our assumptions during other types of assessments. Additionally, the threat model can serve compliance purposes during a security audit.</p><p>In my opinion, threat modeling is one of the fundamental practices in the SDLC because it enables you to avoid mistakes, setting it apart from other security assessment types as the only <strong>proactive</strong> action.</p><p>That&#8217;s all for today. Next, I&#8217;ll concentrate on security audits. Subscribe to receive updates directly in your inbox.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architectingsecurity.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Security Assessment Types: A Complete Guide for Tech Leaders]]></title><description><![CDATA[Learn the 5 key security assessment methods&#8212;from threat modeling to red teaming. Discover when to use each type in your organization's road to security for maximum ROI.]]></description><link>https://architectingsecurity.com/p/security-assessment-types-guide</link><guid isPermaLink="false">https://architectingsecurity.com/p/security-assessment-types-guide</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Mon, 13 Oct 2025 08:09:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6ba0f214-2a13-4700-97cc-fc2bb6deb518_5980x3665.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Security assessment types confuse many tech leaders. In my daily work with clients, I frequently encounter organizations struggling to choose between threat modeling, penetration testing, vulnerability assessments, and other security evaluation methods for their IT systems.</p><p>The goal of this series is to improve this state of affairs. Today, we&#8217;ll take a high-level overview of the taxonomy for security assessments, and in subsequent parts, we&#8217;ll examine each one of them in more detail.</p><p>Continue reading if you&#8217;re interested in topics like Product Security, Secure SDLC, DevSecOps, or security automation. Subscribe if you want to receive updates straight into your mailbox.</p><p><strong>This article series includes:</strong></p><ul><li><p><strong>Part 1: Security Assessment Types Overview</strong> <em>(you are here)</em></p></li><li><p><a href="https://architectingsecurity.com/p/threat-modeling-proactive-security-assessment">Part 2: Threat Modeling</a></p></li><li><p><a href="https://architectingsecurity.com/p/security-audits-compliance-not-security">Part 3: Security Audits</a></p></li><li><p>Part 4: Vulnerability Assessment <em>(coming soon)</em></p></li><li><p>Part 5: Penetration Testing <em>(coming soon)</em></p></li><li><p>Part 6: Red Teaming <em>(coming soon)</em></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.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 Architecting Security! 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><p><strong>TL;DR:</strong> Security assessments fall into 5 types: Threat Modeling (design phase), Security Audit (compliance), Vulnerability Assessment (finding issues), Penetration Testing (exploiting issues), and Red Teaming (full attack simulation). Each serves different goals on your organization&#8217;s road to security.</p><h2>The Business Case for Security Assessment Taxonomy</h2><p>Before diving into the details, I will take a little detour and first answer the following question: How can we differentiate between various types of security assessments?</p><p>We can do that by zooming in on certain features and using them to highlight differences. This will enable us to develop a <strong>coherent model of security assessments</strong> that can be used to integrate them into the organization.</p><p>I will return to these features, but for now, an even more important question arises: Why does it matter to have a coherent model of security assessments? It&#8217;s important because without it, implementing or maintaining<em> effective</em> cybersecurity program becomes harder than it should be (unless your focus is solely on compliance rather than security engineering). This is due to two main challenges.</p><h3>Matching Security Assessments to Development Stages</h3><p>Different types of assessments provide different insights, making them suitable for achieving different goals. So, the first challenge is <strong>determining the type of security assessment one wants to use</strong>, along with choosing when and where it should be used. This is hard when you don&#8217;t have a coherent taxonomy.</p><p>Let&#8217;s take a quick look at vulnerability assessment versus penetration testing &#8211; both can be used within the broader Software Development Lifecycle. However, the highest ROI comes from continuous vulnerability assessment executed in pre-release phase and point-in-time penetration testing performed in post-release phase.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b0Dn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b0Dn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 424w, https://substackcdn.com/image/fetch/$s_!b0Dn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 848w, https://substackcdn.com/image/fetch/$s_!b0Dn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 1272w, https://substackcdn.com/image/fetch/$s_!b0Dn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b0Dn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic" width="1456" height="1498" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1498,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:402933,&quot;alt&quot;:&quot;Security Testing vs Penetration Testing in SDLC phases - BSIMM report data&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176015867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Security Testing vs Penetration Testing in SDLC phases - BSIMM report data" title="Security Testing vs Penetration Testing in SDLC phases - BSIMM report data" srcset="https://substackcdn.com/image/fetch/$s_!b0Dn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 424w, https://substackcdn.com/image/fetch/$s_!b0Dn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 848w, https://substackcdn.com/image/fetch/$s_!b0Dn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 1272w, https://substackcdn.com/image/fetch/$s_!b0Dn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3cba401-1245-46ab-90bd-1c276c108b99_2028x2086.heic 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"><strong>Figure 1:</strong> Optimal timing for vulnerability assessments (pre-release) vs penetration testing (post-release). Source: BSIMM 15 Report.</figcaption></figure></div><p>This is closely linked to the teams that carry out the work at the ground level. While basic security testing, such as vulnerability assessment, can be conducted by non-professionals (e.g., QA/SDET), penetration testing requires subject-matter experts.</p><p>And the human aspect is crucial not only because of labor costs but also because of the long-term morale of the team. In my experience, penetration testers excel when faced with challenges and tend to dislike reporting simple vulnerabilities repeatedly (which is typical for vulnerability assessments). Meanwhile, engineers resent having to demonstrate the business impact (which is crucial for penetration testing).</p><p>One example of this fundamental difference in character between security and engineering is this classic response by the creator of Linux:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6fTM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6fTM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 424w, https://substackcdn.com/image/fetch/$s_!6fTM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 848w, https://substackcdn.com/image/fetch/$s_!6fTM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 1272w, https://substackcdn.com/image/fetch/$s_!6fTM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6fTM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic" width="1456" height="1217" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1217,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:185210,&quot;alt&quot;:&quot;Linus Torvalds response about security vs engineering mindset&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176015867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Linus Torvalds response about security vs engineering mindset" title="Linus Torvalds response about security vs engineering mindset" srcset="https://substackcdn.com/image/fetch/$s_!6fTM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 424w, https://substackcdn.com/image/fetch/$s_!6fTM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 848w, https://substackcdn.com/image/fetch/$s_!6fTM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 1272w, https://substackcdn.com/image/fetch/$s_!6fTM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8acf5c12-33c6-499f-9349-bb88eafc5f7e_1508x1260.heic 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"><strong>Figure 2:</strong> Different perspectives between security professionals and engineers.</figcaption></figure></div><h3>Measuring Security Progress Over Time</h3><p>Imagine you order a penetration test for your system from an external service provider, but instead of receiving a penetration testing report, you receive something more similar to a vulnerability assessment.</p><p>This happens very often and is a problem in itself. However, what&#8217;s even more problematic is the following: If you later decide to order another penetration test for the same system but from a different provider, and this time you receive the results of service acquired, you won&#8217;t be able to compare the current state with the previous one. It would be like comparing apples to oranges &#8211; the goals and effects of a penetration test are different from those of vulnerability assessment (regardless of the quality of the service itself).</p><p>That&#8217;s why you need to fully understand what you want to achieve and ensure that your service provider&#8217;s understanding aligns with yours. You need to do that in order to solve the second challenge, which is <strong>progress over time</strong>. This may not seem like a big deal, but repeatedly fixing the same issues is both inefficient and can eventually lead to burnout.</p><p>Also, with regard to progress, there is one additional factor to consider: automation. Any process that can be automated should be automated. But without a clear understanding of the process itself (where does it fit? what does it produce? <em>et cetera</em>), automation becomes challenging.</p><h2>5 Types of Security Assessments Explained</h2><p>Now that we understand why this matters, let&#8217;s examine how you can actually assess the security of an IT system. To accomplish this task, you can employ five distinct assessment types:</p><ul><li><p>Threat Modeling</p></li><li><p>Security Audit</p></li><li><p>Vulnerability Assessment</p></li><li><p>Penetration Test</p></li><li><p>Red Teaming</p></li></ul><p>This list can be translated into following diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!25PG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!25PG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 424w, https://substackcdn.com/image/fetch/$s_!25PG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 848w, https://substackcdn.com/image/fetch/$s_!25PG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 1272w, https://substackcdn.com/image/fetch/$s_!25PG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!25PG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic" width="1456" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39367,&quot;alt&quot;:&quot;Security assessment types spectrum from threat modeling to red teaming&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://architectingsecurity.com/i/176015867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Security assessment types spectrum from threat modeling to red teaming" title="Security assessment types spectrum from threat modeling to red teaming" srcset="https://substackcdn.com/image/fetch/$s_!25PG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 424w, https://substackcdn.com/image/fetch/$s_!25PG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 848w, https://substackcdn.com/image/fetch/$s_!25PG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 1272w, https://substackcdn.com/image/fetch/$s_!25PG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F667e6ca4-5952-4154-a2a9-c44e60bdf3f4_2048x585.heic 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"><strong>Figure 3:</strong> The five types of security assessments arranged by complexity (left-to-right).</figcaption></figure></div><p>The order is intentional and should be viewed as a gradient without clear boundaries in-between. Furthermore, each subsequent type can be seen as a progression from the previous one as you &#8211;generally&#8211; wouldn&#8217;t want to perform red teaming exercise before penetration testing, nor would you do penetration testing before doing vulnerability assessment.</p><p>Also, it&#8217;s worth pointing out that the complexity of the entire exercise increases from left to right. Along with it, the security level of the component, system, or the entire organization might increase as well.</p><p>The taxonomy outlined above is based on the features I previously mentioned, and although there can be more such features, I will focus on the five I consider to be the most important. These are:</p><ul><li><p><strong>Goal.</strong> What is our objective? For example, although vulnerability assessment and penetration testing are similar at the tactical level, they differ significantly from a strategic perspective.</p></li><li><p><strong>Scope.</strong> What will be considered during the assessment? In threat modeling, for instance, we analyze the system from a different perspective compared to a vulnerability assessment. Subsequently, with a vulnerability assessment, we might look at the system differently than with penetration testing.</p></li><li><p><strong>Effort.</strong> How many people do we need to engage to achieve a satisfactory return on investment? Vulnerability assessment or security audit requires less effort in terms of people than penetration testing or red teaming exercise.</p></li><li><p><strong>Time.</strong> How much time can we allocate? Typically, one would allocate different amounts of time for a vulnerability assessment or a penetration test compared to an audit or threat modeling.</p></li><li><p><strong>Automation.</strong> To what extent can we automate the work? While we can automate vulnerability assessment or an audit to a considerable extent, threat modeling or penetration testing are harder to automate.</p></li></ul><h2>Understanding Security Testing: A Simple Analogy for Stakeholders</h2><p>As I mentioned in the introduction, I quite often encounter a lack of solid understanding of the various ways one can use to assess the security of an IT system. In fact, I encounter it so often that I managed to come up with a useful analogy for non-technical people.</p><p>Imagine you bought a plot of land with the goal of building a house. How would you approach securing such a project? What would you do? When would you do it? Let&#8217;s walk through it.</p><p>You&#8217;ll start with threat modeling during the design phase for your new home and plot of land. At this point, your focus is on identifying and understanding the various threats that could cause harm to you, your family, or your property. This process aims to help you prevent potential problems and vulnerabilities, both in terms of architecture and implementation. Moreover, you can utilize the resulting threat model in other assessments as a guiding tool to verify the assumptions made during this stage.</p><p>Once the house is built, you can conduct a security audit to ensure that your home and property comply with applicable standards. If you&#8217;re required you can then present the resulting audit report as proof of compliance with the specified standard.</p><p>After building the house, you&#8217;ll also conduct a vulnerability assessment, focusing on identifying as many security issues as possible in the house and overall property (e.g., its fence). However, this assessment will not delve into the specifics of whether or how these vulnerabilities can be exploited. The primary goal of the vulnerability assessment is to identify and manage issues that are moderately easy to discover.</p><blockquote><p>By the way, you might consider conducting periodic threat modeling, auditing, and vulnerability assessments during the construction phase of your house. This is because all of them can be performed without the entire system being fully operational; you can focus on specific components and evaluate their threats, compliance issues, or vulnerabilities.</p></blockquote><p>Finally, you&#8217;ll commission both penetration testing and red teaming from an external provider that specializes in these activities. This will be done after conducting several iterations of vulnerability assessments. In both cases, the task will be to emulate a real attacker to verify the effectiveness of your current defensive capabilities (e.g., alarm system) and understand attack chains. Both of these approaches aim to show you how different vulnerabilities can be combined to achieve a specific outcome, such as car theft, rather than just identifying individual problems. By undertaking these actions, you aspire not only to become secure or compliant but also resilient (or even antifragile).</p><h2>Summary: Building Your Security Assessment Strategy</h2><p>Effective cybersecurity programs require a clear understanding of different security assessment types and how they complement each other. The five key methods&#8212;Threat Modeling, Security Audit, Vulnerability Assessment, Penetration Testing, and Red Teaming&#8212;each serve a distinct purpose.</p><p>By understanding their differences in terms of goals, scope, effort, time, and automation potential, we will be able to:</p><ul><li><p>Deploy the right assessment at the right time within SDLC</p></li><li><p>Track meaningful progress by comparing like-to-like results over time</p></li><li><p>Optimize resources by matching assessment complexity to organizational needs</p></li><li><p>Build toward resilience through a progressive, layered approach to security</p></li></ul><p>Without a coherent model, there&#8217;s a risk of inefficient security spending, team burnout from dealing with repetitive issues, and difficulty in demonstrating improvement. The proposed taxonomy offers a foundation for effectively integrating security assessments into your organization&#8217;s processes.</p><p>In future articles, I will explore each assessment type in detail, examining practical implementation strategies and common pitfalls to avoid.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.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 Architecting Security! 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><h2>Addendum</h2><p>I have three additional points I&#8217;d like to make that are more peripheral than central to the main issue; hence, I include them only at the end.</p><p>First, I&#8217;m not the first to highlight the significant linguistic issues in cybersecurity, where certain keywords are used liberally, and their meaning heavily depends on the context in which they are used. For example, you might notice that I have intentionally avoided using <em>risks</em> in this article, even though it&#8217;s often used interchangeably with <em>threats</em>. This deliberate choice illustrates that, while these terms might be treated as synonyms in casual conversations among experts who quickly grasp their intended meaning from context, they aren&#8217;t truly interchangeable.</p><p>Secondly, I&#8217;m well aware that there are numerous definitions for all the assessment types I listed in my article. For example, one might use the <a href="https://csrc.nist.gov/glossary/">definitions provided by NIST</a>. So, why do I bother writing about this matter? Well, even though one could use the definitions provided by NIST, this approach is problematic because truly understanding them requires extensive experience at the ground level&#8212;experience that many lack and will never gain.</p><p>Third and final point is the answer to the following question: But surely you&#8217;re not the first one writing about this topic? Of course not. As is often the case, I&#8217;m standing on the shoulders of giants&#8212;one of them is Daniel Miessler, whom I&#8217;ve been following for more than a decade. He <a href="https://danielmiessler.com/blog/security-assessment-types">wrote about this topic</a> years ago, but the problem with his take is that it only scratched the surface. So, even though I&#8217;m sure Daniel has a coherent model of security assessments, I still found it necessary to extend some points in his public writing for myself. My aim is to save the reader this effort.</p>]]></content:encoded></item><item><title><![CDATA[OWASP ASVS: A Blueprint for Verifying and Engineering Secure Applications]]></title><description><![CDATA[How can you verify that your application is truly secure? The OWASP ASVS provides an answer to this question with its systematic approach to application security.]]></description><link>https://architectingsecurity.com/p/owasp-asvs-a-blueprint-for-secure-applications</link><guid isPermaLink="false">https://architectingsecurity.com/p/owasp-asvs-a-blueprint-for-secure-applications</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Sun, 19 Jan 2025 07:31:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/66ed801d-1b0a-47a5-9c67-3a76f8c561c5_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whether you're an architect designing software systems, a developer implementing features, a QA engineer ensuring requirements are met, or a security professional conducting security assessment, you've likely grappled with questions like:</p><ul><li><p>How do you design a system that's secure by default?</p></li><li><p>How do you ensure your code isn't vulnerable to injection attacks?</p></li><li><p>How do you verify that authentication controls work as intended?</p></li><li><p>And &#8212;maybe most importantly&#8212; how do we know if our security measures are appropriate for our specific context?</p></li></ul><p>ASVS answers all these questions with a systematic approach that adapts to your security needs, whether you're building a simple CRUD application or a critical financial system.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architectingsecurity.com/subscribe?"><span>Subscribe now</span></a></p><p>In this deep dive, we'll explore how ASVS can help you approach application security in a systematic way. We'll break down its structure, understand its levels, and learn how to apply it practically in your projects. Let's begin!</p><h2>Understanding ASVS</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f28e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f28e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 424w, https://substackcdn.com/image/fetch/$s_!f28e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 848w, https://substackcdn.com/image/fetch/$s_!f28e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 1272w, https://substackcdn.com/image/fetch/$s_!f28e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f28e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic" width="1456" height="364" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:364,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:242190,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f28e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 424w, https://substackcdn.com/image/fetch/$s_!f28e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 848w, https://substackcdn.com/image/fetch/$s_!f28e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 1272w, https://substackcdn.com/image/fetch/$s_!f28e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b471946-9a89-46ea-a3b7-ce99d87589f6_3300x825.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>The <a href="https://owasp.org/www-project-application-security-verification-standard/">Application Security Verification Standard (ASVS)</a> is a comprehensive standard that transforms application security into a structured, verifiable process. Through its three-level approach, it provides specific, actionable requirements&#8212;both functional and non-functional&#8212;that scale with your security needs.</p><p>ASVS has evolved significantly since its first release in 2009. The current version (4.0), released in 2019, reflects more than a decade of real-world application security experience and community feedback.</p><h2>The 14 Security Domains</h2><p>At its core, ASVS is organised into 14 security domains:</p><ul><li><p>Architecture, Design and Threat Modeling</p></li><li><p>Authentication</p></li><li><p>Session Management</p></li><li><p>Access Control</p></li><li><p>Validation, Sanitisation and Encoding</p></li><li><p>Stored Cryptography</p></li><li><p>Error Handling and Logging</p></li><li><p>Data Protection</p></li><li><p>Communications</p></li><li><p>Malicious Code</p></li><li><p>Business Logic</p></li><li><p>File and Resources</p></li><li><p>API and Web Service</p></li><li><p>Configuration</p></li></ul><p>Each domain provides an overview, specific security controls, and detailed references. What makes ASVS particularly powerful is its modular structure&#8212;domains are further divided into focused sub-areas that can be applied selectively based on your application's architecture.</p><p>Take the API and Web Services domain, for instance. It includes sub-areas for:</p><ul><li><p>Generic Web Service Security</p></li><li><p>RESTful Web Service</p></li><li><p>SOAP Web Service</p></li><li><p>GraphQL</p></li></ul><p>This modular approach makes ASVS highly practical. For example, if you're building a modern application using REST and GraphQL (but not SOAP), you can focus specifically on:</p><ol><li><p>Core API security requirements that apply universally</p></li><li><p>REST-specific security controls</p></li><li><p>GraphQL-specific security measures</p></li></ol><p>This targeted approach ensures you implement precisely the security controls relevant to your technology stack, without getting bogged down in inapplicable requirements.</p><h2>ASVS Security Levels</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rr58!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rr58!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 424w, https://substackcdn.com/image/fetch/$s_!Rr58!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 848w, https://substackcdn.com/image/fetch/$s_!Rr58!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 1272w, https://substackcdn.com/image/fetch/$s_!Rr58!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rr58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic" width="1456" height="395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71018,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!Rr58!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 424w, https://substackcdn.com/image/fetch/$s_!Rr58!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 848w, https://substackcdn.com/image/fetch/$s_!Rr58!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 1272w, https://substackcdn.com/image/fetch/$s_!Rr58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a2acc6f-6e3e-4acd-811f-57311ad60cb4_2472x670.heic 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>In the introduction, we mentioned security levels, and that wasn't a casual reference&#8212;each ASVS control belongs to one of three levels, where each subsequent level raises the security bar higher.</p><p>Let's look at a practical example. Control 13.2.2 states that "when using JSON, schema validation must occur before accepting input data" and is required from level one upward:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xJbP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xJbP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 424w, https://substackcdn.com/image/fetch/$s_!xJbP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 848w, https://substackcdn.com/image/fetch/$s_!xJbP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 1272w, https://substackcdn.com/image/fetch/$s_!xJbP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xJbP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic" width="1456" height="310" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:310,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52984,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!xJbP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 424w, https://substackcdn.com/image/fetch/$s_!xJbP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 848w, https://substackcdn.com/image/fetch/$s_!xJbP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 1272w, https://substackcdn.com/image/fetch/$s_!xJbP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F189d5ebe-112f-4b22-8906-1b5795b054b5_1932x412.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>However, control 13.2.5, which requires "REST services must verify the expected Content-Type," only applies at levels 2 and 3. This means applications targeting only level 1 compliance can skip this requirement:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Nps!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Nps!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 424w, https://substackcdn.com/image/fetch/$s_!9Nps!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 848w, https://substackcdn.com/image/fetch/$s_!9Nps!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 1272w, https://substackcdn.com/image/fetch/$s_!9Nps!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Nps!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic" width="1456" height="113" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:113,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27556,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!9Nps!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 424w, https://substackcdn.com/image/fetch/$s_!9Nps!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 848w, https://substackcdn.com/image/fetch/$s_!9Nps!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 1272w, https://substackcdn.com/image/fetch/$s_!9Nps!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F877a2fab-d855-4162-9562-960dee9e12f5_1884x146.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You might be wondering, "What determines the appropriate level for my application?" The consultant in me wants to say "It depends!"&#8212;and it does&#8212;but let me give you some concrete guidance.</p><h3>Level 1: The Security Baseline</h3><p>Level 1 (L1) requirements target projects with basic security needs. Think of it as your essential security baseline&#8212;one that can be largely (though not entirely) verified through automated testing. Importantly, <strong>L1 requirements cover most of the OWASP Top 10 vulnerabilities</strong>. (This means implementing ASVS L1 as part of your secure development process effectively addresses nearly all OWASP Top 10 risks.)</p><blockquote><p><strong>&#128161; NOTE:</strong> See our <a href="https://architectingsecurity.com/p/owasp-top-10-what-every-developer-should-know">previous article</a> if you aren&#8217;t familiar with OWASP Top 10.</p></blockquote><p>A crucial point about <strong>L1: it's the only level that can be fully tested using a black-box approach</strong>&#8212;testing without access to documentation, source code, or the development team. However, the ASVS authors (with whom we agree 100%) strongly caution against relying solely on black-box testing. Here's why:</p><ul><li><p>In the real world, attackers have unlimited time while security testers face strict deadlines</p></li><li><p>Effective testing requires maximum insight into the application</p></li></ul><p>Consider this: Would you trust a financial audit where the auditor couldn't access accounting records or talk to the finance team? Yet this scenario plays out regularly in application security testing. That's why ASVS promotes comprehensive security testing that combines traditional testing with code reviews, architectural analysis, and direct collaboration with development teams.</p><h3>Level 2: Business-Critical Security</h3><p>Level 2 (L2) targets applications handling important business operations&#8212;like processing personal data under GDPR. In practice, L2 is recommended for most applications with user data. Meeting L2 requirements means your application has effective controls against common security issues (e.g. you shouldn&#8217;t find basic vulnerabilities like XSS in a search bar).</p><h3>Level 3: High-Security Applications</h3><p>Level 3 (L3), the highest tier, is designed for critical applications&#8212;think financial systems or medical data processors. These are applications that demand the highest level of trust. L3-compliant applications must excel not just in implementation security but also in architectural design, incorporating secure architecture principles like Defense in Depth or Least Privilege.</p><h3>Choosing the Right Level</h3><p>Ultimately, choosing the right ASVS level depends on two contexts: your system's requirements and your organisation's environment. It's simple logic&#8212;you expect different security levels from a banking application compared to a meme-sharing website.</p><h2>Related Standards and Alignment</h2><p>While ASVS is unique in its domain, as there are no other similar industry standards, OWASP itself maintains several complementary verification standards:</p><ul><li><p><a href="https://mas.owasp.org/MASVS/">OWASP Mobile Application Security Verification Standard (MASVS)</a>, which adapts ASVS principles for mobile applications</p></li><li><p><a href="https://owasp.org/www-project-iot-security-verification-standard/">OWASP Internet of Things Verification Standard (ISVS)</a>, which extends ASVS concepts to IoT and embedded systems</p></li><li><p><a href="https://owasp.org/www-project-software-component-verification-standard/">OWASP Software Component Verification Standard (SCVS)</a> addresses supply chain security; however, for practical supply chain security, consider the <a href="https://slsa.dev/">SLSA framework</a> instead</p></li></ul><p>Also, it&#8217;s worth pointing out that ASVS doesn't exist in isolation&#8212;it's carefully aligned with established industry standards like PCI DSS and NIST frameworks. Most notably, ASVS controls map to the Common Weakness Enumeration (CWE), providing a bridge between ASVS and the vulnerability classifications discussed in the OWASP Top 10.</p><blockquote><p><strong>&#128161; NOTE:</strong> See our <a href="https://architectingsecurity.com/p/owasp-top-10-what-every-developer-should-know">previous article</a> if you aren&#8217;t familiar with OWASP Top 10 or CWE.</p></blockquote><h2>Practical <em>Applications</em> of ASVS</h2><h3>Role-Based Implementation</h3><p>ASVS serves as a versatile tool that can be utilised throughout the entire software development lifecycle. For example:</p><ul><li><p><strong>Architects</strong> can leverage ASVS during the design phase to establish secure architecture foundations and define comprehensive security requirements.</p></li><li><p><strong>Developers</strong> can integrate ASVS into the implementation phase through Secure Code Checklists, making security verification a natural part of code reviews.</p></li><li><p><strong>QA Engineers</strong> can utilise ASVS Level 1 requirements to validate fundamental security properties, incorporating security testing into standard quality assurance.</p></li><li><p>Last, but not least, <strong>Security Teams</strong> can conduct thorough security assessments using ASVS Levels 2 and 3, ensuring applications meet advanced security requirements.</p></li></ul><p>But ASVS can go beyond the development teams, as <strong>Project Managers</strong> can incorporate ASVS into third-party software contracts, using specified ASVS levels as concrete acceptance criteria for the software delivered.</p><h3>Measuring Security Progress</h3><p>What makes ASVS particularly valuable is its ability to track security progress over time. Unlike broader frameworks such as OWASP Top 10, ASVS provides detailed, measurable criteria that enable organisations to:</p><ul><li><p>Monitor security improvements across development cycles</p></li><li><p>Maintain consistent security standards across projects</p></li><li><p>Demonstrate concrete security progress to stakeholders</p></li></ul><div><hr></div><p>Aaaand that&#8217;s all for today. Best regards and see you next week!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architectingsecurity.com/subscribe?"><span>Subscribe now</span></a></p><p>BTW. If you found this article useful, please <em>pay the fee</em> by sharing it with someone you know will also benefit from it. Thank you very much! &#128591;</p>]]></content:encoded></item><item><title><![CDATA[OWASP Top 10: What Every Developer Should Know About It]]></title><description><![CDATA[Web security can feel like an alphabet soup of acronyms: CVE, XSS, SSRF, etc. It's easy to get lost in the maze of terminology. Yet, among all these, one stands out as particularly crucial: OWASP.]]></description><link>https://architectingsecurity.com/p/owasp-top-10-what-every-developer-should-know</link><guid isPermaLink="false">https://architectingsecurity.com/p/owasp-top-10-what-every-developer-should-know</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Fri, 10 Jan 2025 07:30:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a56a9b28-c1bf-460b-97c7-d0f4e1be6e95_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whether you're a seasoned software engineer who has seen the Tannh&#228;user Gate or are just starting your journey in security, you've probably encountered references to OWASP and its most famous project: the Top 10.</p><p>But what exactly is it? Is there just one definitive Top 10 list? How does it relate to other security standards? And perhaps most importantly, how can you actually use it to make your applications more secure?</p><p>In this deep dive, we'll cut through the confusion and explore the world of web application security through the lens of the OWASP Top 10. We'll unpack not just what it is, but why it matters and how it shapes the security landscape of modern web development.</p><p>No jargon, no complexity&#8212;just clear, practical insights into one of the most important security frameworks for building secure software products. Let's begin!</p><h1>First things first: What is OWASP?</h1><p>Before we discuss the Top 10, let's clarify what OWASP actually is. It's a detail that many people get wrong, even in the tech industry.</p><p><a href="https://owasp.org/">OWASP (Open Web Application Security Project)</a> is a global organization that unites individuals who are committed to making software safer. Think of it as a worldwide community where security experts and developers collaborate to help others build secure software.</p><p>Here's what makes OWASP special: it's a non-profit organization that shares all its knowledge freely. They create guides, tools, and resources that anyone can use to make their software more secure. The Top 10 is just one of their many projects.</p><p>There's one common mistake I often hear in meetings and conferences. People refer to the "OWASP methodology"&#8212;but that's not quite right. It's like saying "Toyota methodology" when you mean Lean or Kanban. <strong>OWASP isn't a methodology; it's an organization that creates security guidelines and tools.</strong></p><p>Now that we're clear on what OWASP is, let's look at their most famous project: the OWASP Top 10.</p><h1>So What is Top 10?</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1lsk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1lsk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 424w, https://substackcdn.com/image/fetch/$s_!1lsk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 848w, https://substackcdn.com/image/fetch/$s_!1lsk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 1272w, https://substackcdn.com/image/fetch/$s_!1lsk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1lsk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic" width="1246" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1246,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19663,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!1lsk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 424w, https://substackcdn.com/image/fetch/$s_!1lsk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 848w, https://substackcdn.com/image/fetch/$s_!1lsk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 1272w, https://substackcdn.com/image/fetch/$s_!1lsk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F906fad1b-3878-4f57-8b50-28b8f6c915d5_1246x704.heic 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 <a href="https://owasp.org/www-project-top-ten/">OWASP Top 10</a> is exactly what it sounds like: a list of the ten biggest security problems that affect web applications today. But there's more to it than just a simple countdown.</p><p>You can think of it as a ranked list, where the position of each security problem shows how severe it is for a <em>typical </em>organisation.</p><p>For example, when you see "A1: Broken Access Control" at the top of the list, it means this issue typically causes more trouble than "A10: Server-Side Request Forgery" which sits at the bottom.</p><p>Here's where things get interesting: while the Top 10 talks about risks, it's not really a risk list. Why? <strong>Because risk always depends on context.</strong></p><p>Let me give you a real-world example: imagine finding the same vulnerability, like Cross-Site Scripting, in two different places:</p><ol><li><p>In an internal tool that only employees can access.</p></li><li><p>On your public website that thousands of customers use every day.</p></li></ol><p>Same vulnerability, same severity, but very different risk levels. (The public website version is much more dangerous because it's exposed to more potential attackers and affects more users.)</p><h2>Top 10 Evolves Over Time</h2><p>The security landscape is always changing, and the Top 10 changes with it. Since its first release in 2003, the list has been regularly updated to reflect new security problems and changing security patterns.</p><p>Let me show you how this works with a real example:</p><ul><li><p>In the 2017 version, Cross-Site Scripting (XSS) was listed as a separate problem.</p></li><li><p>But in the current 2021 version, XSS became part of a larger category called "A3: Injections."</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zr-h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zr-h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 424w, https://substackcdn.com/image/fetch/$s_!zr-h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 848w, https://substackcdn.com/image/fetch/$s_!zr-h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 1272w, https://substackcdn.com/image/fetch/$s_!zr-h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zr-h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic" width="936" height="258" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:258,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56112,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!zr-h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 424w, https://substackcdn.com/image/fetch/$s_!zr-h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 848w, https://substackcdn.com/image/fetch/$s_!zr-h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 1272w, https://substackcdn.com/image/fetch/$s_!zr-h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e7035a2-164f-4dea-aa54-23bfdcb563ce_936x258.heic 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">Changes from the 2017 version to the 2021 version.</figcaption></figure></div><p>Right now, we're using the 2021 version, which makes it 4 years old in 2025. Based on the past, we're likely to see a new update this year (work is being done as you read this).</p><h2>How is the Top 10 Created?</h2><p>The process of updating the Top 10 is quite interesting. Here's how it works:</p><ul><li><p>First, the security community provides real-world data about vulnerabilities they find in their day-to-day work.</p></li><li><p>Then, OWASP selects the 8 most common problems from this data.</p></li><li><p>Finally, the community votes through an open survey to add 2 more issues.</p></li></ul><p>You might wonder: Why not just pick the top 10 most common issues? Well, even with data from over <strong>200,000 vulnerabilities</strong> (that's what they had for the 2021 version), some important problems might not show up often enough in the statistics.</p><p>So think of the community survey as a safety net. It helps catch new or emerging security threats that might not yet show up in the data but could be major problems in the future.</p><h2>There is no <em>one</em> Top 10 list</h2><p>The Top 10 tries to reflect reality in most cases, but different types of applications face different security challenges. For instance:</p><ul><li><p>A PHP application might face different security issues than a Ruby on Rails application.</p></li><li><p>Different development teams tend to make different types of security mistakes.</p></li></ul><p>This is why the <strong>Top 10 is skewed towards enterprise-level technology stacks</strong> (that&#8217;s where the data is coming from), and it&#8217;s also why you can create custom Top 10 lists.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ypD1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ypD1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 424w, https://substackcdn.com/image/fetch/$s_!ypD1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 848w, https://substackcdn.com/image/fetch/$s_!ypD1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 1272w, https://substackcdn.com/image/fetch/$s_!ypD1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ypD1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic" width="1456" height="792" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:792,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!ypD1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 424w, https://substackcdn.com/image/fetch/$s_!ypD1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 848w, https://substackcdn.com/image/fetch/$s_!ypD1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 1272w, https://substackcdn.com/image/fetch/$s_!ypD1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb636509e-9bae-4313-88cd-89b4f6c5117e_2070x1126.heic 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">Different types of attackers also find different types of vulnerabilities. This is taken from the HackerOne Top 10, which I&#8217;ll come back to later.</figcaption></figure></div><p>Indeed, OWASP itself has created additional Top 10 lists for different needs. Examples include:</p><ul><li><p><a href="https://owasp.org/API-Security/">OWASP Top 10 for APIs</a></p></li><li><p><a href="https://owasp.org/www-project-serverless-top-10/">OWASP Top 10 for Serverless Applications</a></p></li><li><p><a href="https://genai.owasp.org/llm-top-10/">OWASP Top 10 for Large Language Models</a> (like ChatGPT)</p></li></ul><p>Think of these specialised lists as focused security guidelines for specific types of applications. While the main Top 10 works as a good general benchmark for a typical web application, these specialised lists can help you focus on security issues most relevant to your specific domain.</p><h2>From Awareness Tool to Industry Standard?</h2><p>The OWASP Top 10 has an interesting story. It started as a simple way to help developers and managers understand security vulnerabilities affecting web applications. But over time, it became something bigger&#8212;many organisations now treat it as an industry standard.</p><p>Here's the catch, though: <strong>the Top 10 isn't meant to be a complete security standard.</strong> Even its creators are clear about this. When organisations need a proper security standard, OWASP itself recommends using the <a href="https://owasp.org/www-project-application-security-verification-standard/">Application Security Verification Standard (ASVS)</a> instead.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xllU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xllU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 424w, https://substackcdn.com/image/fetch/$s_!xllU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 848w, https://substackcdn.com/image/fetch/$s_!xllU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 1272w, https://substackcdn.com/image/fetch/$s_!xllU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xllU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic" width="1456" height="1487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1487,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109486,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!xllU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 424w, https://substackcdn.com/image/fetch/$s_!xllU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 848w, https://substackcdn.com/image/fetch/$s_!xllU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 1272w, https://substackcdn.com/image/fetch/$s_!xllU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bcebb59-dbf6-49f2-9da9-3b07db7efa5d_1512x1544.heic 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">How can one use the Top 10 according to the authors?</figcaption></figure></div><p>The creators also suggest that organisations should:</p><ul><li><p>Use ASVS for detailed security requirements.</p></li><li><p>Build a complete security program using the <a href="https://owaspsamm.org/">Software Assurance Maturity Model (SAMM)</a>.</p></li></ul><p>By the way, we will cover both of them in the future. Subscribe below &amp; stay tuned! &#9786;&#65039;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://architectingsecurity.com/subscribe?"><span>Subscribe now</span></a></p><h1>Top 10 2021: The List Itself</h1><p>We've talked a lot about what the Top 10 is, but let's get to the heart of it: what are these top security problems? Here's the current list from 2021, with plain English explanations of each:</p><ol><li><p><strong>Broken Access Control</strong> involves managing who can access what in your application. A good example is when users can view other users' private data simply by changing numbers in the URL. This is known as Insecure Direct Object Reference and is one of the most dangerous and common vulnerabilities in web applications.</p></li><li><p><strong>Cryptographic Failures</strong> cover problems with how applications protect sensitive data. A classic example is when applications use outdated methods like MD5 or SHA-1 to store user passwords. <a href="https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html">Yes, there are much better ways to do that!</a></p></li><li><p><strong>Injections</strong> happen when applications don't properly check what users type in. The well-known Cross-Site Scripting (XSS) falls into this category, allowing attackers to inject and run malicious JavaScript code on your website. It's worth noting that this particular problem has been haunting web applications for over 20 years and still persists.</p></li><li><p><strong>Insecure Design</strong> refers to security flaws that exist in the basic design of applications. These problems run deeper than simple coding mistakes&#8212;think of a banking app that doesn't properly verify fund transfers. This is about fundamental design flaws rather than bugs at the implementation layer.</p></li><li><p><strong>Security Misconfiguration</strong> occurs when security settings aren't set up correctly. Often, these are just default settings that nobody changed. These problems affect both applications and their infrastructure, such as when security headers are misconfigured or missing entirely.</p></li><li><p><strong>Vulnerable and Outdated Components</strong>&#8212;a fascinating category that doesn't directly involve application code but rather the libraries that applications use. This problem can affect everything: front-end, back-end, and even the infrastructure serving them.</p></li><li><p><strong>Identification and Authentication Failures</strong> is a broad category that involves problems with how users prove who they are. In extreme cases, vulnerabilities in this category can have truly catastrophic consequences, such as allowing attackers to bypass login completely.</p></li><li><p><strong>Software and Data Integrity Failures</strong> involve problems with keeping code and data safe from tampering. A common example is when applications load external scripts from CDNs without verifying their integrity, potentially allowing attackers to inject malicious code.</p></li><li><p><strong>Security Logging and Monitoring Failures</strong> refer to the issue of not maintaining proper records of activities within your application. A typical example is when applications fail to detect and block automated attacks, leaving them vulnerable to sustained malicious activity.</p></li><li><p><strong>Server-Side Request Forgery (SSRF)</strong> is the only stand-alone vulnerability on the list, rather than a broad category. It occurs when attackers can make your server send requests it shouldn't, potentially exposing internal systems to attacks from outside world.</p></li></ol><p>Here's something crucial to understand: while earlier versions of the Top 10 focused on specific vulnerabilities, the 2021 version mostly deals with broader categories of problems (except for SSRF at number 10).</p><p>This makes the list more comprehensive but also makes it impossible to definitively say an application is "free from OWASP Top 10 problems" because each category contains many specific vulnerabilities. Some categories, like Insecure Design, are so broad that they're almost philosophical in nature. Authors seem to agree:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!URqA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!URqA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 424w, https://substackcdn.com/image/fetch/$s_!URqA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 848w, https://substackcdn.com/image/fetch/$s_!URqA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 1272w, https://substackcdn.com/image/fetch/$s_!URqA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!URqA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic" width="1456" height="245" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:245,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!URqA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 424w, https://substackcdn.com/image/fetch/$s_!URqA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 848w, https://substackcdn.com/image/fetch/$s_!URqA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 1272w, https://substackcdn.com/image/fetch/$s_!URqA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa62c98e2-2610-4dce-993e-f5c04568db8e_1520x256.heic 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>Internal Structure</h2><p>When we look inside, we'll see that each position from the Top 10 list has a broader description that contains the following sections:</p><ol><li><p>A brief summary of the problem.</p></li><li><p>A broader, but not too broad, description of the given problem (for example, a short list of situations that can lead to the application being vulnerable).</p></li><li><p>A concise description of how to prevent the given problem.</p></li><li><p>Several examples of typical attacks (i.e., exploitation of vulnerabilities) in the form of scenarios.</p></li><li><p>References, most often to other OWASP projects such as the previously mentioned ASVS, but also to Cheat Sheets Series or Proactive Controls.</p></li><li><p>And finally, a list of CWEs that are part of the given problem class.</p></li></ol><p>And you might wonder: What is CWE? <a href="https://cwe.mitre.org/">CWE (Common Weakness Enumeration)</a> is a separate project from the MITRE organisation, whose authors set themselves the goal of enumerating all specific, individual weaknesses that can occur in software.</p><h1>Are There Any Alternatives?</h1><p>We&#8217;ve covered the most important aspects of the OWASP Top 10, and perhaps now you're wondering, "Are there any alternatives?" Of course! There are definitely similar non-OWASP lists.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hdVP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hdVP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 424w, https://substackcdn.com/image/fetch/$s_!hdVP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 848w, https://substackcdn.com/image/fetch/$s_!hdVP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 1272w, https://substackcdn.com/image/fetch/$s_!hdVP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hdVP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic" width="1456" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112275,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!hdVP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 424w, https://substackcdn.com/image/fetch/$s_!hdVP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 848w, https://substackcdn.com/image/fetch/$s_!hdVP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 1272w, https://substackcdn.com/image/fetch/$s_!hdVP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab1f8faa-2ef1-40a4-8cec-c8e1355cdd47_1876x720.heic 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>A good example is the <a href="https://www.hackerone.com/top-ten-vulnerabilities">HackerOne Top 10</a>, which is a Top 10 created by the world's largest Bug Bounty platform, through which almost 200,000 reports of <strong>actual</strong> vulnerabilities pass annually (along with probably the same amount of false positives&#8230;).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6lrI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6lrI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 424w, https://substackcdn.com/image/fetch/$s_!6lrI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 848w, https://substackcdn.com/image/fetch/$s_!6lrI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 1272w, https://substackcdn.com/image/fetch/$s_!6lrI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6lrI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic" width="900" height="449" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:449,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!6lrI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 424w, https://substackcdn.com/image/fetch/$s_!6lrI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 848w, https://substackcdn.com/image/fetch/$s_!6lrI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 1272w, https://substackcdn.com/image/fetch/$s_!6lrI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7185dd-6bf2-43c8-902c-edeb62342bae_900x449.heic 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>Another well-known market list of common security problems affecting all kinds of software is the <a href="https://cwe.mitre.org/top25/">CWE Top 25</a>. As I mentioned earlier, a significant advantage of CWE is its attention to the level of abstraction. Each weakness listed in the CWE Top 25 is a specific issue, unlike the OWASP Top 10, which represents a class of problems. On the other hand, a downside is that it groups all weaknesses together regardless of application type.</p><p>For example, in the <em>latest</em> CWE Top 25 (which also changes over time), you&#8217;ll find Use-After-Free. This is fine, but this weakness is typical for applications written in low-level languages such as C++ (e.g., browsers). So, if you&#8217;re working in web development&#8212;and that's where most work is done&#8212;then Use-After-Free doesn't really concern you because it doesn't affect you.</p><h1>Next Steps</h1><p>Now that you know what the Top 10 is, you probably have a question forming in your head: How can it be used? I'll give you two directions:</p><ol><li><p>The Top 10 works great in <strong>building basic awareness about web application security problems among development teams</strong>. Here I talk the talk and walk the walk&#8212;OWASP Top 10 is one of the foundations of my own training programmes with which I have had great success in Poland.</p></li><li><p>The Top 10 can be used in early development phases, e.g., as an <strong>attack library in Threat Modeling sessions</strong> and/or as a <strong>checklist baseline during the implementation phase in the Secure Code Review process</strong>. There are better tools for both these areas, but the Top 10 can definitely be a starting point there.</p></li></ol><p>That's all for today folks. Best regards, and see you next week!</p><div><hr></div><p>P.S. If you found this article useful, please <em>pay the fee</em> by sharing it with someone you know will also benefit from it. Thank you very much! &#128591;</p>]]></content:encoded></item><item><title><![CDATA[Hello World!]]></title><description><![CDATA[New year, new beginnings.]]></description><link>https://architectingsecurity.com/p/hello-world</link><guid isPermaLink="false">https://architectingsecurity.com/p/hello-world</guid><dc:creator><![CDATA[Andrzej Dyjak]]></dc:creator><pubDate>Wed, 01 Jan 2025 21:02:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/00149744-9b43-41fb-8248-38524f79e152_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today I'm launching "Architecting Security" - a newsletter focused on helping {Software, QA, DevOps} engineers, architects, and tech leaders build more secure software products.</p><p>My first deep dive lands next week. Looking forward to sharing actionable insights on creating resilient, secure-by-default systems with you!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://architectingsecurity.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 Architecting Security! 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></channel></rss>