<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mark Kiss</title>
    <description>The latest articles on DEV Community by Mark Kiss (@invadel).</description>
    <link>https://dev.to/invadel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4103903%2F204a3ce7-3b46-4f51-b9d0-4f4fe7794cfa.webp</url>
      <title>DEV Community: Mark Kiss</title>
      <link>https://dev.to/invadel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/invadel"/>
    <language>en</language>
    <item>
      <title>AWS Penetration Testing: Rules, Scope, Attack Paths and How to Prepare</title>
      <dc:creator>Mark Kiss</dc:creator>
      <pubDate>Mon, 14 Sep 2026 20:14:16 +0000</pubDate>
      <link>https://dev.to/invadel-cybersecurity/aws-penetration-testing-rules-scope-attack-paths-and-how-to-prepare-4pfj</link>
      <guid>https://dev.to/invadel-cybersecurity/aws-penetration-testing-rules-scope-attack-paths-and-how-to-prepare-4pfj</guid>
      <description>&lt;p&gt;Cloud breaches rarely start with a kernel exploit. They start with an over-permissive IAM role, a public S3 bucket, a leaked access key in a repository, or a metadata service reachable from a vulnerable application. &lt;strong&gt;AWS penetration testing&lt;/strong&gt; targets exactly those paths: the configuration and identity layer where real cloud compromises happen, plus, since 2025, the unpatched third-party software running on the instances.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed in 2026
&lt;/h2&gt;

&lt;p&gt;The entry point moved. Exploitation of vulnerabilities in third-party software was the primary entry vector in &lt;strong&gt;44.5%&lt;/strong&gt; of cloud intrusions in the second half of 2025, up from 2.9% in the first half, overtaking weak or absent credentials (down from 47.1% to 27.2%) for the first time since Google began publishing the report. The window from a vulnerability's disclosure to mass exploitation shrank from weeks to days; React2Shell (CVE-2025-55182) was being exploited within 48 hours. (&lt;a href="https://cloud.google.com/security/report/resources/cloud-threat-horizons-report-h1-2026" rel="noopener noreferrer"&gt;Google Cloud Threat Horizons Report, H1 2026&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Cloud-conscious intrusions rose &lt;strong&gt;37%&lt;/strong&gt; in 2025 and the average time from initial access to lateral movement fell to &lt;strong&gt;29 minutes&lt;/strong&gt;. (&lt;a href="https://www.crowdstrike.com/en-us/press-releases/2026-crowdstrike-global-threat-report/" rel="noopener noreferrer"&gt;CrowdStrike 2026 Global Threat Report&lt;/a&gt;) And &lt;strong&gt;27%&lt;/strong&gt; of breaches that targeted AI models or applications came through cloud misconfigurations affecting AI workloads. (&lt;a href="https://www.ibm.com/reports/data-breach" rel="noopener noreferrer"&gt;IBM Cost of a Data Breach Report 2026&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The practical consequence for an AWS test: identity and configuration review is still the core, but every internet-facing workload and the software version on it is now in scope from the first day. Our &lt;a href="https://invadel.com/blog/cloud-security-statistics/" rel="noopener noreferrer"&gt;cloud security statistics&lt;/a&gt; page has the full set of figures.&lt;/p&gt;

&lt;h2&gt;
  
  
  The shared responsibility model decides what you can test
&lt;/h2&gt;

&lt;p&gt;AWS secures the cloud; you secure what you run in it. That line determines your entire scope.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS's responsibility:&lt;/strong&gt; the hypervisor, physical hardware, and the underlying service infrastructure. You cannot test it, and you have no reason to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your responsibility:&lt;/strong&gt; IAM policies and roles, security groups and network ACLs, S3 bucket policies, Lambda functions and their execution roles, EC2 operating systems and the applications on them, RDS configuration, EKS and ECS workloads, secrets management, and logging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Effectively everything worth testing in your AWS account is on your side of the line. AWS's own compliance reports (SOC, PCI, ISO) cover their infrastructure, never your configuration of it, and auditors are explicit about the distinction.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS's penetration testing policy, as published
&lt;/h2&gt;

&lt;p&gt;AWS publishes a &lt;a href="https://aws.amazon.com/security/penetration-testing/" rel="noopener noreferrer"&gt;customer support policy for penetration testing&lt;/a&gt;. The current version says the following; check the page before every engagement, because the lists change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permitted without prior approval&lt;/strong&gt;, against your own resources: Amazon EC2 instances, WAF, NAT Gateways and Elastic Load Balancers; Amazon RDS; Amazon CloudFront; Amazon Aurora; Amazon API Gateways; AWS AppSync; AWS Lambda and Lambda Edge functions; Amazon Lightsail resources; Amazon Elastic Beanstalk environments; Amazon Elastic Container Service; AWS Fargate; Amazon OpenSearch Service; Amazon FSx; Amazon Transit Gateway; Amazon Bedrock AgentCore; AWS Global Accelerator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prohibited:&lt;/strong&gt; DNS zone walking via Amazon Route 53 hosted zones; denial of service and distributed denial of service; port flooding; protocol flooding; request flooding (including login and API request flooding); S3 bucket takeover; subdomain takeover.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requires a Simulated Events request, at least two weeks in advance:&lt;/strong&gt; command and control (C2) infrastructure, DDoS simulations, red, blue and purple team exercises, network stress testing, iPerf testing, phishing simulations, and malware testing. That covers a &lt;a href="https://invadel.com/services/red-teaming/" rel="noopener noreferrer"&gt;red team engagement&lt;/a&gt; and a &lt;a href="https://invadel.com/services/phishing-testing/" rel="noopener noreferrer"&gt;phishing test&lt;/a&gt; that touches AWS-hosted mail or infrastructure, so those are scheduled with the form in mind.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If the test finds a vulnerability in AWS itself:&lt;/strong&gt; the policy asks you to contact AWS Security immediately and report it within 24 hours of completing the test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two liability points:&lt;/strong&gt; you are responsible for any damage your testing causes to AWS or to other customers, and resellers are responsible for their customers' testing. If a vendor manages the account, their written permission is part of the scope.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually gets tested
&lt;/h2&gt;

&lt;h3&gt;
  
  
  IAM, the highest-value target
&lt;/h3&gt;

&lt;p&gt;IAM is where cloud compromises escalate. Testing looks for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Over-permissive policies:&lt;/strong&gt; wildcard actions and resources (&lt;code&gt;"Action": "*"&lt;/code&gt;), or &lt;code&gt;AdministratorAccess&lt;/code&gt; attached to roles that need three permissions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privilege escalation paths:&lt;/strong&gt; a role that can call &lt;code&gt;iam:PassRole&lt;/code&gt;, &lt;code&gt;iam:CreatePolicyVersion&lt;/code&gt;, &lt;code&gt;iam:AttachUserPolicy&lt;/code&gt;, &lt;code&gt;lambda:UpdateFunctionCode&lt;/code&gt;, or &lt;code&gt;ec2:RunInstances&lt;/code&gt; with a privileged instance profile can often bootstrap itself to full administrator. There are dozens of documented chains, and finding them means reading the policy graph, not running a scanner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unused and stale credentials:&lt;/strong&gt; long-lived access keys, users who left, roles created for a migration two years ago, keys with no rotation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-account trust:&lt;/strong&gt; roles trusted by third-party accounts more broadly than intended, or trust policies without an external ID.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing MFA&lt;/strong&gt; on privileged principals, and root account usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 2026 identity data is why this section comes first: &lt;strong&gt;79%&lt;/strong&gt; of ransomware attacks began with an identity-based approach and &lt;strong&gt;97%&lt;/strong&gt; of victims whose credentials were stolen had MFA enabled somewhere, just not on the account that was used. (&lt;a href="https://www.sophos.com/en-us/blog/sophos-state-of-ransomware-2026" rel="noopener noreferrer"&gt;Sophos State of Ransomware 2026&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Compute and the software on it
&lt;/h3&gt;

&lt;p&gt;This is the part that grew in 2026. EC2 instances, containers on ECS and EKS, and Lambda functions run third-party software: web frameworks, application servers, admin consoles, agents. The test inventories what is reachable from the internet, fingerprints versions, and checks them against known exploited vulnerabilities before anything else, because that is now the leading way in. Security groups exposing management ports (SSH, RDP, database ports) to &lt;code&gt;0.0.0.0/0&lt;/code&gt;, exposed container registries, and Kubernetes control planes reachable from the internet belong in the same pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  S3 and data storage
&lt;/h3&gt;

&lt;p&gt;Public buckets remain a leading cause of data exposure, but the subtler issues matter more: bucket policies granting access to &lt;code&gt;AllAuthenticatedUsers&lt;/code&gt; (every AWS account in the world, not just yours), missing default encryption, disabled versioning and access logging, and pre-signed URL patterns that expose more than intended. Only about half of sensitive data stored in the cloud is encrypted, &lt;strong&gt;47%&lt;/strong&gt;, and only &lt;strong&gt;34%&lt;/strong&gt; of organizations say they know where all their data resides. (&lt;a href="https://cpl.thalesgroup.com/data-threat-report" rel="noopener noreferrer"&gt;Thales 2026 Data Threat Report&lt;/a&gt;) The test finds the buckets nobody remembered.&lt;/p&gt;

&lt;h3&gt;
  
  
  The metadata service: where an application flaw becomes an account compromise
&lt;/h3&gt;

&lt;p&gt;A server-side request forgery flaw in an application becomes a full account compromise when it can reach &lt;code&gt;169.254.169.254&lt;/code&gt; and retrieve the instance role's credentials. &lt;strong&gt;IMDSv2&lt;/strong&gt; mitigates this by requiring a session token; instances still allowing IMDSv1 are a standing risk. This is the clearest example of why cloud testing and &lt;a href="https://invadel.com/services/web-application-penetration-testing/" rel="noopener noreferrer"&gt;web application penetration testing&lt;/a&gt; belong in one engagement: the vulnerability is in the application, the impact is in the cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lambda, API Gateway and the serverless surface
&lt;/h3&gt;

&lt;p&gt;Execution roles with more permissions than the function uses, secrets in environment variables, event sources anyone can trigger, and API Gateway stages without authorizers. Serverless removes the server from scope and adds the permission model in its place. An &lt;a href="https://invadel.com/services/api-penetration-testing/" rel="noopener noreferrer"&gt;API penetration test&lt;/a&gt; covers the gateway itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Secrets and CI/CD
&lt;/h3&gt;

&lt;p&gt;Hard-coded keys in code, container images or environment variables; over-privileged CI/CD roles; and the supply-chain path from a compromised pipeline into production. &lt;strong&gt;48%&lt;/strong&gt; of breaches involved a third party in 2025, including cloud platforms and OAuth integrations. (&lt;a href="https://www.verizon.com/business/resources/reports/dbir/" rel="noopener noreferrer"&gt;Verizon 2026 Data Breach Investigations Report&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  Logging and detection
&lt;/h3&gt;

&lt;p&gt;The test records whether CloudTrail, GuardDuty and Config would have caught each step. A finding that says "we reached the database" is less useful than one that says "we reached the database and nothing fired."&lt;/p&gt;

&lt;h2&gt;
  
  
  The two halves of a good AWS engagement
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Half one: configuration review against the CIS AWS Foundations Benchmark.&lt;/strong&gt; Identity and access management, logging, monitoring, networking and storage, checked against the benchmark with a read-only role. This is where the tooling earns its keep: Prowler, ScoutSuite, and AWS's own Config, Security Hub and IAM Access Analyzer enumerate misconfigurations at a scale no human can match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Half two: exploitation from a realistic starting point.&lt;/strong&gt; A compromised developer credential, an over-permissive role, or a foothold on one instance, then an attempt to escalate, move and reach data, with every action logged for your defenders. This is where a tester earns their keep. A scanner reports "role X can pass role Y" and "Lambda Z is invokable" as two separate medium findings; a tester recognizes that together they take an ordinary developer account to administrator, and proves it.&lt;/p&gt;

&lt;p&gt;Most AWS engagements should be &lt;strong&gt;credentialed&lt;/strong&gt;. A black box test of a cloud environment mostly proves what is publicly exposed, which is useful but a small slice of the risk. A typical setup provides a &lt;code&gt;SecurityAudit&lt;/code&gt; or &lt;code&gt;ReadOnlyAccess&lt;/code&gt; role for the configuration review, plus a standard user role that models the realistic starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compliance and AWS
&lt;/h2&gt;

&lt;p&gt;Running in AWS does not remove your testing obligations; it relocates them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PCI DSS&lt;/strong&gt; requires penetration testing of the cardholder data environment wherever it runs, including cloud-hosted segments and the segmentation controls between them. See &lt;a href="https://invadel.com/compliance/pci-dss/" rel="noopener noreferrer"&gt;PCI DSS penetration testing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SOC 2&lt;/strong&gt; auditors expect testing that covers the infrastructure the service runs on, not only the application. See &lt;a href="https://invadel.com/compliance/soc-2/" rel="noopener noreferrer"&gt;SOC 2 penetration testing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HIPAA&lt;/strong&gt; requires an evaluation of safeguards for systems that process electronic protected health information, including the S3 buckets and RDS instances that hold it. See &lt;a href="https://invadel.com/compliance/hipaa/" rel="noopener noreferrer"&gt;HIPAA penetration testing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NYDFS Part 500&lt;/strong&gt; requires annual penetration testing of the covered entity's information systems, which for most New York financial firms now means their cloud accounts. See &lt;a href="https://invadel.com/compliance/nydfs-23-nycrr-500/" rel="noopener noreferrer"&gt;NYDFS penetration testing&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to scope an AWS engagement
&lt;/h2&gt;

&lt;p&gt;Have these ready and scoping takes one conversation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How many AWS accounts&lt;/strong&gt; are in scope, and is Organizations or Control Tower in use?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which regions&lt;/strong&gt; hold in-scope resources?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rough resource counts:&lt;/strong&gt; EC2 instances, S3 buckets, Lambda functions, RDS instances, EKS or ECS clusters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which applications&lt;/strong&gt; are hosted there, and should they be tested in the same engagement?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access model:&lt;/strong&gt; what roles can you provide for the credentialed halves?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-cloud?&lt;/strong&gt; Azure or GCP alongside AWS changes the scope and the price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance driver&lt;/strong&gt;, if any; it determines what the report must map to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anything that needs the Simulated Events form&lt;/strong&gt; (red team, phishing), so the two-week lead time is built into the schedule.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fixed prices for the standard scopes are on the &lt;a href="https://invadel.com/pricing/cloud-penetration-testing/" rel="noopener noreferrer"&gt;cloud penetration testing pricing&lt;/a&gt; page; a typical engagement is five to ten testing days plus a free retest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need AWS's permission to run a penetration test?&lt;/strong&gt; Not for the services on the permitted list, tested against your own resources. Red team exercises, phishing simulations, stress testing and anything involving C2 infrastructure need a Simulated Events request at least two weeks ahead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can the test include S3?&lt;/strong&gt; Yes, testing the security of your buckets and their policies is normal. S3 bucket takeover and subdomain takeover as techniques are on AWS's prohibited list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is a cloud configuration scan a penetration test?&lt;/strong&gt; No. The scan is half one. Without half two, nobody has shown what an attacker can reach, and SOC 2 and PCI DSS assessors know the difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long does it take?&lt;/strong&gt; Five to ten testing days for a single organization's accounts, plus the retest. Multi-account, multi-region estates take longer; see &lt;a href="https://invadel.com/blog/how-long-does-a-penetration-test-take/" rel="noopener noreferrer"&gt;how long a penetration test takes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will the test affect production?&lt;/strong&gt; Configuration review is read-only. Exploitation is scoped to agreed accounts and hours, avoids anything on the prohibited list, and leaves nothing persistent behind; every action is logged with timestamps for your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;AWS penetration testing is an identity and configuration exercise with, as of 2026, a software-inventory exercise bolted to the front. The findings that matter are IAM escalation chains, exposed workloads running exploitable software, storage exposure, and the bridge between an application flaw and cloud credentials. Tooling gives you breadth; a human proving the path from one developer credential to the data gives you the finding that changes what you fix first.&lt;/p&gt;

&lt;p&gt;If you run on AWS and want to know what an attacker could reach, &lt;a href="https://invadel.com/scope/" rel="noopener noreferrer"&gt;scope a cloud assessment&lt;/a&gt;, or read our overview of &lt;a href="https://invadel.com/blog/cloud-security-best-practices/" rel="noopener noreferrer"&gt;cloud security best practices&lt;/a&gt; first.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Updated September 14, 2026 with AWS's current testing policy and the 2026 threat data. The canonical version of this article lives on &lt;a href="https://invadel.com/blog/aws-penetration-testing/" rel="noopener noreferrer"&gt;invadel.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>security</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
