<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>AWS Security on ZX Cloud Security</title><link>https://zxcloudsecurity.co.uk/tags/aws-security/</link><description>Recent content in AWS Security on ZX Cloud Security</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Thu, 18 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zxcloudsecurity.co.uk/tags/aws-security/index.xml" rel="self" type="application/rss+xml"/><item><title>Cloud Security Vulnerability Management: A Practitioner's Guide for 2026</title><link>https://zxcloudsecurity.co.uk/guides/cloud-security-vulnerability-management/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://zxcloudsecurity.co.uk/guides/cloud-security-vulnerability-management/</guid><description>A practical guide to cloud security vulnerability management in 2026: covering AWS Inspector, risk-based prioritisation, common pitfalls, and the new AWS Continuum platform.</description><content:encoded><![CDATA[<h1 id="cloud-security-vulnerability-management-a-practitioners-guide-for-2026">Cloud security vulnerability management: a practitioner&rsquo;s guide for 2026</h1>
<p>Cloud security vulnerability management has never been harder to get right. With 131 new CVEs disclosed every day and the median time to exploit now under five days, the question for security teams in 2026 is no longer whether vulnerabilities will be targeted, but whether the right ones are being fixed fast enough. If you are responsible for an AWS estate serving UK financial services or government workloads, that statistic should be sitting uncomfortably with you right now. This guide covers how to build a programme that actually keeps pace with the threat, not one that produces dashboards nobody acts on.</p>
<!-- INTERNAL_LINK: AWS Security Posture Baseline | aws-security-posture-baseline -->
<!-- INTERNAL_LINK: Amazon GuardDuty Configuration Guide | amazon-guardduty-configuration -->
<hr>
<h2 id="why-the-traditional-patching-model-is-structurally-broken">Why the traditional patching model is structurally broken</h2>
<p>For years, vulnerability management meant: run a scan, export a CSV, hand it to the ops team, wait 30 days. That model is dead.</p>
<p>Mandiant&rsquo;s M-Trends 2026 puts the mean time to exploit at negative seven days. Exploitation is routinely occurring before a patch is released. You are already behind before a CVE is even published.</p>
<p>CrowdStrike&rsquo;s 2026 Global Threat Report documents a 42 percent increase in zero-day vulnerabilities exploited before public disclosure. The backlog is compounding too: in 2025, the public CVE programme published 48,185 new vulnerabilities, a 20.6 percent jump on top of the record 38 percent surge in 2024.</p>
<p>The consequence for cloud teams is straightforward. A reactive, scan-and-patch cycle built around monthly Patch Tuesdays cannot close that gap. You need continuous detection, context-aware prioritisation, and automation from discovery through to remediation.</p>
<p>A recent example makes this concrete. A zero-day called RoguePlanet dropped on 10 June 2026, hours after Microsoft rolled out its largest-ever Patch Tuesday update. The proof-of-concept targets a race condition in Microsoft Defender and grants SYSTEM-level shell access on fully patched Windows 10 and Windows 11 machines. Microsoft has acknowledged CVE-2026-50656 and confirmed a fix is in development, but as of 18 June 2026 has not announced a release timeline. This is a Windows endpoint vulnerability rather than a cloud-native one, but the escalation path matters for hybrid AWS environments where developer workstations and EC2 instances share the same credential plane.</p>
<!-- INTERNAL_LINK: Protecting Developer Workstations in Hybrid AWS Environments | hybrid-aws-developer-workstation-security -->
<p>CISA&rsquo;s Known Exploited Vulnerabilities catalogue also recently gained a maximum-severity entry for CVE-2026-48907 (CVSS 10.0), an improper access control flaw in Widget Factory Joomla Content Editor that enables arbitrary code execution. Working exploit code is public, attacks are automated, and a site with no public registration is not safe. Joomla instances turn up on AWS more than most people expect: spun up by a marketing team on an EC2 instance, forgotten, and never patched. That is a real attack surface.</p>
<hr>
<h2 id="the-attack-surface-reality-in-2026">The attack surface reality in 2026</h2>
<p>Before you can manage vulnerabilities, you need to know what you have. Most organisations dramatically underestimate their internet-facing footprint.</p>
<p>Intruder&rsquo;s 2026 Attack Surface Management Index found that 60 percent of organisations had at least one HTTP panel exposed, 49 percent exposed a risky port or service, 42 percent had an exposed database, and 30 percent had files or information publicly accessible that should not have been.</p>
<p>Most teams treat patching as the priority. But for a lot of what appears on that list, databases, admin panels, legacy services, the better question is why they are reachable at all. A CVE in a database that has no business being internet-facing is not primarily a patching problem. It is an architecture problem. Cloud security vulnerability management must be paired with continuous asset discovery and exposure reduction, not just patch velocity.</p>
<p>Remediation speed varies significantly by organisation size. Small organisations remove exposures fastest, averaging 14 to 18 days. Remediation slows as companies grow into the midmarket, peaking at 56 days for organisations with 5,000 to 10,000 employees, before improving again at enterprise scale. Midmarket organisations have large attack surfaces but lack the headcount, budget, and tooling maturity of enterprise security teams. That is a predictable gap, and it is worth being honest about.</p>
<p>For UK organisations, the FCA&rsquo;s operational resilience rules and the NCSC&rsquo;s Cyber Assessment Framework both expect demonstrable visibility over your asset inventory. You cannot make a credible argument for proportionate risk management if you do not know what is internet-facing.</p>
<hr>
<h2 id="amazon-inspector-your-cloud-native-scanning-foundation">Amazon Inspector: your cloud-native scanning foundation</h2>
<p>For AWS environments, Amazon Inspector is the baseline. It automatically discovers workloads including EC2 instances, container images, Lambda functions, and code repositories, then scans them for software vulnerabilities and unintended network exposure.</p>
<p>The operational advantages over third-party scanners are continuous re-scanning and native integration with AWS Organisations. All resources are rescanned when new CVEs are published or when changes occur, such as new software being installed on an EC2 instance or updates to a code repository. You are not dependent on a scheduled scan window. A new finding triggers assessment automatically.</p>
<p>Inspector also removes the operational overhead of deploying and configuring a standalone vulnerability management solution. You can deploy it across all accounts in a single step via a Delegated Administrator account, and it produces a contextualised risk score for each finding rather than raw CVSS. That score correlates CVE information with factors including network access and exploitability, which is what makes it useful for prioritisation rather than just reporting.</p>
<h3 id="enabling-inspector-across-an-aws-organisation">Enabling Inspector across an AWS organisation</h3>
<p>Enable Inspector from your Security Tooling (or Audit) account, delegated as administrator via AWS Organisations. Here is the CLI approach to enable scanning for EC2, ECR, and Lambda across all member accounts:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable Amazon Inspector for EC2 and ECR in the delegated admin account</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Run from the Security Tooling account with appropriate IAM permissions</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">aws inspector2 <span class="nb">enable</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --resource-types EC2 ECR LAMBDA <span class="se">\
</span></span></span><span class="line"><span class="cl">  --region eu-west-2
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify organisational coverage</span>
</span></span><span class="line"><span class="cl">aws inspector2 list-coverage-statistics <span class="se">\
</span></span></span><span class="line"><span class="cl">  --filter-criteria <span class="s1">&#39;{
</span></span></span><span class="line"><span class="cl"><span class="s1">    &#34;scanStatusCode&#34;: [{&#34;comparison&#34;: &#34;EQUALS&#34;, &#34;value&#34;: &#34;ACTIVE&#34;}]
</span></span></span><span class="line"><span class="cl"><span class="s1">  }&#39;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">  --group-by RESOURCE_TYPE <span class="se">\
</span></span></span><span class="line"><span class="cl">  --region eu-west-2
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Gate CI/CD pipeline: block deployment on CRITICAL findings</span>
</span></span><span class="line"><span class="cl">check_ecr_image_before_deploy<span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">  <span class="nv">IMAGE_DIGEST</span><span class="o">=</span><span class="nv">$1</span>
</span></span><span class="line"><span class="cl">  <span class="nv">REPO_NAME</span><span class="o">=</span><span class="nv">$2</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="nv">CRITICAL_COUNT</span><span class="o">=</span><span class="k">$(</span>aws inspector2 list-findings <span class="se">\
</span></span></span><span class="line"><span class="cl">    --filter-criteria <span class="s2">&#34;{
</span></span></span><span class="line"><span class="cl"><span class="s2">      \&#34;ecrImageHash\&#34;: [{\&#34;comparison\&#34;: \&#34;EQUALS\&#34;, \&#34;value\&#34;: \&#34;</span><span class="si">${</span><span class="nv">IMAGE_DIGEST</span><span class="si">}</span><span class="s2">\&#34;}],
</span></span></span><span class="line"><span class="cl"><span class="s2">      \&#34;severity\&#34;: [{\&#34;comparison\&#34;: \&#34;EQUALS\&#34;, \&#34;value\&#34;: \&#34;CRITICAL\&#34;}]
</span></span></span><span class="line"><span class="cl"><span class="s2">    }&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">    --query <span class="s1">&#39;length(findings)&#39;</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">    --output text <span class="se">\
</span></span></span><span class="line"><span class="cl">    --region eu-west-2<span class="k">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="o">[</span> <span class="s2">&#34;</span><span class="si">${</span><span class="nv">CRITICAL_COUNT</span><span class="si">}</span><span class="s2">&#34;</span> -gt <span class="m">0</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;DEPLOY BLOCKED: </span><span class="si">${</span><span class="nv">CRITICAL_COUNT</span><span class="si">}</span><span class="s2"> CRITICAL vulnerabilities in </span><span class="si">${</span><span class="nv">REPO_NAME</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;Review findings in the Inspector console or Security Hub before proceeding.&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl">  <span class="k">fi</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="nb">echo</span> <span class="s2">&#34;No CRITICAL findings. Proceeding with deployment.&#34;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Usage: check_ecr_image_before_deploy &#34;sha256:abc123...&#34; &#34;my-api-service&#34;</span>
</span></span></code></pre></div><p>Inspector integrates with AWS Security Hub and Amazon EventBridge, which means you can pipe findings directly into your ITSM (ServiceNow, Jira) and set SLA clocks running automatically. For FCA-regulated environments, that audit trail of discovery-to-remediation timestamps is not optional.</p>
<h3 id="what-inspector-does-not-cover">What Inspector does not cover</h3>
<p>Inspector does not scan everything. It will not catch IAM misconfigurations, overly permissive Security Group rules, or S3 bucket policies. That is the remit of AWS Config, Security Hub, and tools like Prowler mapped to the CIS AWS Foundations Benchmark. Treat Inspector as the CVE and network-exposure layer, and Config as the compliance and misconfiguration layer. You need both.</p>
<!-- INTERNAL_LINK: AWS Config Rules and CIS Benchmarks | aws-config-cis-benchmarks -->
<hr>
<h2 id="risk-based-prioritisation-moving-beyond-cvss">Risk-based prioritisation: moving beyond CVSS</h2>
<p>With 131 new CVEs every day, manual triage is not viable. Teams that rely on raw CVSS scores are working from delayed, incomplete risk signals. Prioritisation that factors in exploitability, network exposure, and asset criticality is the minimum viable approach in 2026.</p>
<p>The CISA KEV catalogue is your highest-signal input. Binding Operational Directive 26-04 requires US federal agencies to prioritise rapid remediation of KEV-listed vulnerabilities on publicly exposed assets that grant total control post-exploitation. The UK public sector should treat that framing as directly applicable. The NCSC&rsquo;s own vulnerability management guidance aligns with this risk-based, exploitation-evidence approach.</p>
<p>CISA also encourages all organisations, not just federal agencies, to adopt risk-based vulnerability management and prioritise KEV catalogue entries. In practice, a KEV entry should trigger an emergency change window, not sit in the queue until the next Patch Tuesday.</p>
<p>A workable prioritisation structure looks like this:</p>
<table>
	<thead>
			<tr>
					<th>Priority</th>
					<th>Criteria</th>
					<th>Target SLA</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>P0 - Emergency</td>
					<td>CISA KEV + internet-facing + exploitable</td>
					<td>24 hours</td>
			</tr>
			<tr>
					<td>P1 - Critical</td>
					<td>CVSS &gt;= 9.0 + reachable from internet</td>
					<td>72 hours</td>
			</tr>
			<tr>
					<td>P2 - High</td>
					<td>CVSS &gt;= 7.0 + internal-only exposure</td>
					<td>7 days</td>
			</tr>
			<tr>
					<td>P3 - Medium</td>
					<td>CVSS 4.0-6.9 + no known exploit</td>
					<td>30 days</td>
			</tr>
			<tr>
					<td>P4 - Low</td>
					<td>CVSS &lt; 4.0 + compensating controls exist</td>
					<td>90 days</td>
			</tr>
	</tbody>
</table>
<p>These SLAs should be codified in your vulnerability management policy, reviewed annually, and tested by your internal audit function. Under GDPR and NIS2 (as transposed into UK law post-Brexit), a systematic, documented response process is part of your accountability obligation, not a nice-to-have.</p>
<hr>
<h2 id="aws-continuum-where-cloud-vulnerability-management-is-heading">AWS Continuum: where cloud vulnerability management is heading</h2>
<p>AWS announced AWS Continuum on 17 June 2026. It discovers, prioritises, validates, and remediates security risks at machine speed within guardrails you define. Frontier models have made finding software vulnerabilities faster and cheaper, but the harder work comes after: deciding which vulnerabilities matter to your business, proving which are exploitable, and fixing them without days of cross-team coordination.</p>
<p>Continuum operates in four continuous phases for code vulnerabilities. It starts by ingesting your existing backlog and performing its own scan, building a more complete view of vulnerabilities and associated attack paths. It then uses environmental context to evaluate every finding: is the affected component deployed, is it reachable, is it in a production path, and what is the business impact if exploited? Before surfacing a finding to your team, it validates it to filter false positives, constructing working exploit examples in a sandboxed environment with concrete, reproducible evidence of the issue. Remediation recommendations arrive with the reasoning behind them.</p>
<p>Continuum starts in learn mode with a human reviewing its work. Customers can move it to enforce mode, where remediation becomes increasingly automated according to categories and risk profiles they define.</p>
<p>This is currently in gated preview. I would caution against treating it as a replacement for the foundational stack: Inspector, Security Hub, Config, and EventBridge remain your production-grade continuous scanning layer. Continuum&rsquo;s value is in closing the triage-to-fix loop at scale. Evaluate it on a non-production workload first and validate its remediation recommendations against your change management process before allowing it to operate in enforce mode.</p>
<!-- INTERNAL_LINK: AWS Security Hub Configuration Guide | aws-security-hub-setup -->
<hr>
<h2 id="common-pitfalls-in-cloud-security-vulnerability-management">Common pitfalls in cloud security vulnerability management</h2>
<p>These are the patterns I see repeatedly in assessments and red-team engagements.</p>
<h3 id="1-treating-inspector-coverage-as-automatic">1. Treating Inspector coverage as automatic</h3>
<p>Inspector is not enabled by default. If you have added new accounts to your AWS Organisation without explicitly delegating and enabling Inspector, those accounts are dark. Inspector provides a coverage dashboard showing which accounts and resources are actively scanned, and highlights those that are not. Check it weekly. Dark accounts are the most common coverage gap I find.</p>
<h3 id="2-ignoring-cms-and-third-party-software-running-on-ec2">2. Ignoring CMS and third-party software running on EC2</h3>
<p>Inspector scans OS packages and Lambda runtimes well. It does not scan PHP application code, WordPress plugins, or Joomla extensions running on your web servers. A 2025 study found that over 40 percent of Joomla sites run at least one extension with a known vulnerability, and only 30 percent of those were patched within 30 days of disclosure. Application-layer scanning via AWS WAF, Burp Suite Enterprise, or equivalent is a separate requirement alongside Inspector.</p>
<h3 id="3-cvss-score-theatre">3. CVSS score theatre</h3>
<p>A CVSS 10.0 finding on an instance with no network path to it is lower priority than a CVSS 7.8 on a public-facing API endpoint. A high severity score can overstate risk for an unreachable component. A medium score can understate it for a bug that is actively weaponised against exposed systems. Build network reachability context into your triage process from day one, not as an afterthought.</p>
<h3 id="4-closing-tickets-without-verifying-remediation">4. Closing tickets without verifying remediation</h3>
<p>Inspector automatically closes a finding when it detects a patch has been applied, but only if the SSM Agent is functioning and inventory collection is working. That automatic closure depends on accurate inventory. Verify SSM Agent health as part of your operational runbook, not just when something breaks.</p>
<h3 id="5-no-compensating-controls-for-unpatched-zero-days">5. No compensating controls for unpatched zero-days</h3>
<p>When a patch does not exist, as with RoguePlanet (CVE-2026-50656) right now, you need a documented compensating control, not a deferred ticket. The current guidance for that specific CVE includes monitoring Windows Event Logs for unexpected SYSTEM-level process creation, deploying EDR detections for rapid file-substitution activity, enforcing least-privilege access controls, restricting unnecessary development tools, enabling Attack Surface Reduction rules in block mode, and applying Microsoft&rsquo;s fix as soon as it is available. The same principle applies to any unpatched vulnerability affecting your cloud-adjacent endpoints: compensate, detect, document.</p>
<h3 id="6-leaving-nvd-as-your-sole-intelligence-source">6. Leaving NVD as your sole intelligence source</h3>
<p>As of April 2026, NVD operates effectively as a triage queue. Approximately 29,000 legacy CVEs are marked &ldquo;Not Scheduled&rdquo; and only an estimated 15 to 20 percent of new CVEs are receiving full enrichment. Vulnerability programmes that rely on NVD CPE matching alone are blind to a substantial portion of the population. Supplement NVD with CISA KEV, vendor advisories, and a commercial threat intelligence feed.</p>
<hr>
<h2 id="key-takeaways">Key takeaways</h2>
<p>Assume you are already behind. Mandiant&rsquo;s M-Trends 2026 puts estimated mean time to exploit at negative seven days. Your programme must assume exploitation can precede patch availability, and invest accordingly in detection and compensating controls.</p>
<p>Enable Amazon Inspector across your entire AWS Organisation from a delegated admin account. Gate container deployments on CRITICAL findings, automate findings into Security Hub, and set SLA clocks via EventBridge. Verify coverage weekly. Dark accounts are a persistent failure mode.</p>
<p>Prioritise by exploitation evidence, not CVSS alone. CISA KEV entries on internet-facing assets should trigger emergency change windows within 24 hours. CVSS without network reachability context is noise.</p>
<p>Inspector does not cover everything. It scans OS packages, Lambda runtimes, and ECR images. Application-layer vulnerabilities in CMS plugins, custom code, and IAM misconfigurations require additional tooling: AWS WAF, Prowler or Config Rules, and application security testing in CI/CD.</p>
<p>Document compensating controls for unpatched vulnerabilities. When no patch exists, a scenario that is now routine, you need a recorded interim control, not an open ticket. This is a UK GDPR Article 32 obligation as much as a security one.</p>
<p>Watch AWS Continuum. Evaluate it on non-production workloads now so you understand its behaviour before it reaches enforce mode in production. The gap between vulnerability discovery and remediation is where most organisations lose time, and that is exactly where Continuum is designed to operate.</p>
]]></content:encoded></item></channel></rss>