Issue #286
Monday · November 09, 2026
🥖 Palate Cleanser
As the saying goes, good things come to those who nag me. The results are in for the inaugural Top 10 AWS Security Research of 2026. Congrats to the winners! Eduard Agavriloae did an amazing job making it happen (thank you). We even recorded a video sharing our takes on the process and each of the top 10 items.
There was a point during the year I was worried cloud was becoming less relevant, as every story seemed to be about AI. I was even scared the newsletter might have to become AI-focused to survive. But reviewing all the nominations for the top 10, it quickly became apparent how unfounded those worries were. There was so much great AWS research this year. And it seems AgentCore is finally becoming ready for prime time, so for those focused strictly on AI, there has been plenty to find.
More DEF CON 34 talks went up this week:
- Tag, You're It: Authorization Traps in AWS ABAC
- Microsoft and Amazon are my Favorite C2 Providers
- Enclave Is Lying to You: Breaking TEE Trust Through Boot-Time State
This issue is also available to share online. Got feedback? Tell us here.
📋 Chef's selections
Training on Enemy Ground: Cross-Tenant RCE in Amazon SageMaker
by Dan Gansel
Remember all that awesome shadow resources research? Turns out there's more juice to squeeze. SageMaker Python SDK's default_bucket() helper, used in over 200 of AWS's own example notebooks, writes to sagemaker-{region}-{account_id}. AWS added a bucket ownership check back in 2023, but it only ran when the bucket showed up in your own bucket list, which a squatted bucket never does (duh). With the bucket squatted, an attacker can swap processing scripts before the container pulls them, or plant code in an endpoint's serving bundle. Lots of fun details here.
Athena's Trojan Horse: Cross-Tenant Data Poisoning and Exfiltration via AWS Athena
by Dan Gansel
More bucket squatting from Dan. aws-sdk-pandas, AWS's official pandas library for Athena and friends, sends query results to a default bucket called aws-athena-query-results-{account_id}-{region} if you don't name one. AWS already fixed this exact squatting target in the Athena service, but the SDK builds the same name on its own. When it tries to create the bucket, it treats "someone else owns this" like "you must already own this" and writes your results to the existing bucket. Dan also wrote up a related aws-sdk-pandas issue with EMR logs.
Things LLMs get wrong about AWS IAM
by Alex Smolen
Alex reviews a lot of IAM policies written by coding agents, and they keep making the same mistakes. Agents love adding a Deny next to an Allow to "lock things down", which often adds complexity without improving security much. Apparently they also try to sprinkle permissions boundaries around as defence in depth. I'd be interested to see what mistakes other people see. His Van Halen test is seeing an explicit Allow for sts:GetCallerIdentity, an action that never needed an Allow and can't be blocked anyway. Maybe it's worth pointing your LLM at it before starting on any IAM writing tasks.
🥗 AWS security blogs
- 📢 Amazon Redshift expands SUPER data type to store strings up to 16 million bytes
- 📢 AWS Security Hub now provides an SBOM inventory for your compute resources
- 📢 Amazon Cognito announces 99.99% Service Level Agreement for the Plus feature plan
- 📢 IAM Roles Anywhere now supports automatic certificate revocation checking
- 📢 Amazon RDS for Oracle now supports Kerberos authentication with self-managed Active Directory
- 📢 AWS Security Hub Network Scanning now available in AWS GovCloud (US)
- 📢 Amazon DocumentDB (with MongoDB compatibility) is now available in the Asia Pacific (Taipei) and Asia Pacific (New Zealand) Regions
- 📢 AWS Transform for mainframe improves the reimagine modernization workflow
- 📢 AWS Lambda now supports queues for Apache Kafka in self-managed Kafka event sources
- 📢 Amazon Connect Customer now supports Cases and External Tool events in the Wait block
- 📢 EC2 Amazon Machine Images can now be scanned for vulnerabilities through Amazon Inspector
- 📢 Amazon Textract now available in Asia Pacific (Tokyo) and Europe (Zurich)
- Amazon SES features for Protective Markings by Shashikant Sharma
- Email security deep dive: Manual DKIM signing through Amazon SES by Sourabh Sharma
- Addressing protocol security gaps in multi-tenant Kubernetes by Ajinkya Patil
- Introducing AWS account access manager: IAM role flexibility with centralized workforce access by Moumita Saha
- Beyond DKIM key rotation: understanding email replay attacks by Michael Araba
🍛 Reddit threads on r/aws
- What can an AgentCore Code Interpreter in Sandbox mode reach, if the docs allow S3 and Security Hub control BedrockAgentCore.7 fails it as internet-exposed?
- Is guardDuty runtime monitoring enough for EKS + Lambda, or do you still need a cnapp on top?
- AWS CLI – AdministratorAccess attached, but EC2 and S3 are still blocked by an Organizations SCP. Do I need to upgrade my account to Paid and activate Advanced Features?
- Think twice before choosing AWS. Account locked, support ignores repeated messages, closes tickets without answering, and suspends my account for not submitting documents they CONFIRMED receiving.
🤖 Dessert
Every machine-tracked change this week. Nobody else assembles this.
🧁 IAM permission changes
🍪 API changes
- Amazon Athena
- Auto Scaling
- Agents for Amazon Bedrock
- Amazon Connect Service
- Amazon Connect Cases
- Amazon DataZone
- Amazon EKS Auth
- AWS Glue
- AWS Elemental MediaConvert
- AWS Resource Access Manager
- Amazon Simple Systems Manager (SSM)
- Account Access Runtime
- Amazon AppIntegrations Service
- Agents for Amazon Bedrock Runtime
- AWS DataSync
- AWS Glue
- Lambda MicroVMs
- Amazon CloudWatch Logs
- Amazon Q Connect
- Amazon QuickSight
- Amazon Route 53 Domains
- AWS Security Agent
- AWS WAFV2
- Amazon Connect Contact Lens
- Amazon Connect Service
- Amazon DynamoDB
- Amazon Elastic Compute Cloud
- Amazon EC2 Container Service
- AWS Elastic Beanstalk
- Amazon EMR
- AWS IoT SiteWise
- AWS Marketplace Discovery
- Application Migration Service
- AmazonMWAAServerless
- Amazon Polly
- Amazon Relational Database Service
- IAM Roles Anywhere
- Amazon S3 Tables
- AWS SecurityHub
- Tax Settings
- Amazon WorkSpaces
🍹 IAM managed policy changes
- AmazonSageMakerClusterInstanceRolePolicy
- AmazonBioDiscoveryFullAccess
- AIDevOpsOrganizationsAccessPolicy
- AIDevOpsAgentAccessPolicy
- ComputeOptimizerServiceRolePolicy
- AmazonRedshiftServiceLinkedRolePolicy
- AmazonConnectSynchronizationServiceRolePolicy
- AWSCODAPermissionsBoundary
- AssuranceOperatorPolicy
- AWSPartnerCentralOpportunityManagement
- AWSCompromisedKeyQuarantineV4
- AmazonConnectServiceLinkedRolePolicy
- AWSPartnerCentralFullAccess
- SageMakerStudioDomainExecutionRolePolicy
- AWSWAFFullAccess
- NetworkSecurityManagerServiceRolePolicy
- SupportUser
- AWSBackupOperatorAccess
- AWSBackupFullAccess
- AIDevOpsOperatorAppAccessPolicy
- AmazonInspector2FullAccess_v2
- AWSPartnerCentralAccountManagementServiceRolePolicy
- SageMakerStudioDomainExecutionRolePolicy
- ROSANodePoolManagementPolicy
- AssuranceOperatorPolicy
- AWSBatchFullAccess
- AIDevOpsAgentAccessPolicy
- CloudWatchAgentServerPolicy
- CloudWatchAgentAdminPolicy
- CloudWatchAPIKeyAccess
- AWSMarketplaceSellerFullAccess
☕ CloudFormation resource changes
No resource updates this week.
📺 AWS security bulletins
- CVE-2026-119085 - Template injection in the publishing component of Virtual Engineering Workbench
- CVE-2026-121652 - Stored cross-site scripting (XSS) in AWS Amplify maplibre-gl-js-amplify popup rendering
- CVE-2026-122266 - Improper isolation of shared resources in aws-network-policy-agent in Amazon EKS
- CVE-2026-119923 and CVE-2026-119924: Issues with Babelfish for Aurora PostgreSQL
- CVE-2026-120497 - Stored cross-site scripting in the HTML report generator of aidlc-traceability in AWS AI-DLC Workflows
- CVE-2026-119083 - GluonTS arbitrary file write during archive extraction
- CVE-2026-122193 - Issue with Trusted Remote Execution Setup Guide - OS command injection in the example SSM documents in Trusted Remote Execution (REX)
- CVE-2026-116635 - Improper limitation of a pathname to a restricted directory in the deployment status component of the AWS Serverless MCP Server
- CVE-2026-109518 - APT package manager that affects Ubuntu and Debian operating systems
- CVE-2026-119084 - Remote Code Execution via Unsafe Class Loading in Amazon Redshift JDBC Driver Connection Parameters
- CVE-2026-115413 - AWS API MCP Server OAuth token audience validation bypass
- CVE-2026-119301 - Improper neutralization of quoting syntax in Apache Iceberg SQL identifier generation in AWS SDK for pandas
- CVE-2026-119922 - Babelfish for PostgreSQL Privilege Escalation
- CVE-2026-122192 - Guest Access to Firecracker Process Memory After a Failed Memory Discard
🚬 Security documentation changes
- STS documents GetWebIdentityToken JWT claims usable in trust policies
- SSM DeleteParameter: denying it doesn't block DeleteParameters
- SSM DeleteParameters bypasses a deny on ssm:DeleteParameter
- SSM GetParameterHistory reads values despite a GetParameter deny
- SSM GetParameter: denying it alone doesn't block other reads
- SSM GetParametersByPath ignores sub-path denies when recursive
- SSM GetParameters bypasses a deny on ssm:GetParameter
- Inspector SBOM Generator may flag CVE-2026-116591
- Session Manager example policies now use session-id tag conditions
- Session Manager SSH example policies now use session-id tag conditions
- Session Manager command examples now use session-id tag conditions
- Connect ClickStream user ID must come from JWT claims
- Tape Gateway urgent kernel patch fixes CVE-2026-98432
- Volume Gateway urgent kernel patch fixes CVE-2026-98432
- App Mesh Envoy image updated for vulnerability fixes
- App Mesh Envoy image references updated
- App Mesh Envoy image references updated
- App Mesh Envoy image references updated
- App Mesh Envoy image references updated
- MWAA: don't put secrets in env vars, GetWorkflow returns them in plain text
- Inspector SBOM Generator 1.17.4 fixes false CVE findings
- Inspector SBOM Generator 1.17.4 released
- Tape Gateway urgent kernel patch released
- Volume Gateway urgent kernel patch released
🎮 Amazon Linux vulnerabilities
- CVE-2026-19688: Keycloak Admin API token audience not checked, admin takeover
- CVE-2026-122053: Symfony Serializer property path bypasses #[Ignore]
- CVE-2026-123824: Symfony Config XmlUtils XXE
- CVE-2026-118515: Symfony Serializer builds file objects from untrusted paths
- CVE-2026-73472: GStreamer avidemux integer overflow
- CVE-2026-123876: Podman default seccomp profile deny rules bypassable
- CVE-2026-121623: Symfony Serializer data: URI case bypass
- CVE-2026-118514: Symfony YAML parsing DoS
- CVE-2026-120749: D-Bus local user can disrupt monitoring clients
- CVE-2026-104786: Squid HTTP auth stack buffer overflow
- CVE-2026-92856: Keycloak SAML brokering ignores ProxyRestrictions
- CVE-2026-119923: Babelfish for PostgreSQL TDS prelogin heap overflow (CVSS 9.8)
- CVE-2026-119924: Babelfish for PostgreSQL TDS RPC OOB read
- CVE-2026-73471: GStreamer avidemux Nikon tag NULL deref
- CVE-2026-123037: ansible-core user module SSH key symlink race
- CVE-2026-73473: GStreamer avidemux excessive memory allocation
- CVE-2026-93998: Keycloak SAML adapter skips assertion issuer check
- CVE-2026-123125: Symfony IpValidator misses some internal addresses
- CVE-2026-49272: OAuthLib device flow skips device_code validation
- CVE-2026-112907: filelock Windows soft lock oplock DoS
- CVE-2026-112913: filelock Windows ReadWriteLock side-file DoS
- CVE-2026-112908: filelock POSIX lock dirs left world-writable
- CVE-2026-121949: Symfony HtmlSanitizer misses srcset URLs
- CVE-2026-102523: MariaDB partition name path traversal
- CVE-2026-112902: Pillow TIFF save OOB read info leak
- CVE-2026-96453: Keycloak kcadm accepts any self-signed cert
- CVE-2026-112938: filelock POSIX symlink race
- CVE-2026-123158: OpenSSH on musl accepts any long password (CVSS 9.8)
- CVE-2026-123273: ImageMagick SVG decoder infinite loop
- CVE-2026-76181: LibreOffice dBASE index heap overflow
- CVE-2026-123119: Symfony HttpClient DNS rebinding bypass
- CVE-2026-118517: Symfony YAML parsing DoS
- CVE-2026-111253: dnf5daemon D-Bus session caller not verified
- CVE-2026-120644: Perl CGI::Cookie attribute injection
- CVE-2026-120632: Perl CGI regex DoS
- CVE-2026-120642: Perl CGI values returned untainted
- CVE-2026-121954: FreeRDP planar codec heap OOB write
- CVE-2026-120648: Perl CGI HTML comment injection
- CVE-2026-120643: Perl CGI XSS in url and self_url
- CVE-2026-120650: Perl CGI missing request size limits DoS
- CVE-2026-118513: Symfony X509 authentication bypass
- CVE-2026-100408: Git for Windows wincred erase buffer overflow
- CVE-2026-122299: Dulwich duplicate tree header lets commits hide code
- CVE-2026-120640: Perl CGI POSTDATA set from query string
- CVE-2026-121950: FreeRDP surface size integer overflow
- CVE-2026-108946: ActiveMQ authenticated client can spoof other users' ids
- CVE-2026-112899: Pillow EPS decompression bomb check bypass
- CVE-2026-121953: FreeRDP rdpgfx UAF
- CVE-2026-121959: FreeRDP websocket infinite loop
- CVE-2026-118516: Symfony Routing path authorization bypass
- CVE-2026-120634: Perl CGI::Carp leaks warnings across requests
- CVE-2026-120647: Perl CGI Content-Disposition injection
- CVE-2026-120631: Perl CGI::Cookie regex DoS
- CVE-2026-107479: Qt5 QTextCodec integer truncation
- CVE-2026-121963: FreeRDP rdpsnd UAF
- CVE-2026-122054: glibc iconv BIG-HKSCS hang
- CVE-2026-120637: Perl CGI reads params from command line
- CVE-2026-120651: Perl CGI infinite loop on short body
- CVE-2026-121961: FreeRDP proxy UAF
- CVE-2026-120635: Perl CGI multipart smuggling past WAFs
- CVE-2026-120645: Perl CGI regex DoS in scrolling_list
- CVE-2026-120639: Perl CGI HTTP header injection
- CVE-2026-122132: go-chi open redirect
- CVE-2026-120633: Perl CGI trusts X-Forwarded-Host
- CVE-2026-120638: Perl CGI open redirect
- CVE-2026-121952: FreeRDP proxy OOB write
- CVE-2026-120646: Perl CGI uploadInfo DoS
- CVE-2026-120636: Perl CGI open redirect and script injection
- CVE-2026-111821: ActiveMQ KahaDB long subscription name kills broker
- CVE-2026-100407: Git for Windows wincred store buffer overflow
- CVE-2026-120641: Perl CGI upload filename path traversal
- CVE-2026-121040: Chromium authorization bypass (Thunderbird)
- CVE-2026-121388: FreeRDP resource allocation DoS
- CVE-2026-63418: Monitoring Plugins check_icmp OOB write
- CVE-2026-121402: FreeRDP NULL deref
- CVE-2026-121141: Chromium origin policy bypass (Thunderbird)
- CVE-2026-121184: Chromium media OOB read (Firefox, Thunderbird)
- CVE-2026-121400: FreeRDP RD Gateway CPU DoS
- CVE-2026-121386: FreeRDP image decoding DoS
- CVE-2026-121189: Chromium browser UAF (Firefox, Thunderbird)
- CVE-2026-120831: QEMU libslirp queue corruption DoS
- CVE-2026-121393: FreeRDP assertion DoS
- CVE-2026-120930: Chromium Blink origin policy bypass (Thunderbird)
- CVE-2026-121506: NTPsec NTS client OOB read and write
- CVE-2026-121259: GStreamer JPEG 2000 integer overflow
- CVE-2026-65160: NVIDIA nvJPEG divide-by-zero DoS
- CVE-2026-121396: FreeRDP assertion DoS
- CVE-2026-121412: FreeRDP proxy memory DoS
- CVE-2026-121440: Wasmtime wasi-http forbidden header bypass
- CVE-2026-121438: Mistune link parsing DoS
- CVE-2026-121389: FreeRDP rdpdr DoS
- CVE-2026-121394: FreeRDP RemoteFX assertion DoS
- CVE-2026-121241: Chromium navigation UAF (Thunderbird)
- CVE-2026-121520: BuildKit xattr write outside state dir
- CVE-2026-121522: BuildKit daemon crash on repeated Git source
- CVE-2026-121541: Docker Buildx Bake file exposure
- CVE-2026-121398: FreeRDP proxy UAF
- CVE-2026-121395: FreeRDP RemoteFX assertion DoS
- CVE-2026-121410: FreeRDP RDPGFX DoS
- CVE-2026-120971: RESTEasy leaks exception messages in 500 responses
- CVE-2026-120931: Chromium WebGL OOB write (CVSS 9.6)
- CVE-2026-121054: Chromium XML origin policy bypass (Firefox, Thunderbird)
- CVE-2026-119922: Babelfish for PostgreSQL privilege escalation
- CVE-2026-120830: QEMU libslirp ICMP OOB read leaks host memory
- CVE-2026-121408: FreeRDP USB redirection UAF
- CVE-2026-121403: FreeRDP drive redirection DoS
- CVE-2026-121406: FreeRDP rdpgfx assertion DoS
- CVE-2026-121404: FreeRDP shadow server DoS
- CVE-2026-121405: FreeRDP serial device memory DoS
- CVE-2026-121390: FreeRDP ARM gateway assertion DoS
- CVE-2026-121037: Chromium ANGLE OOB write (Firefox, Thunderbird)
- CVE-2026-121399: FreeRDP RD Gateway memory DoS
- CVE-2026-121437: Mistune emphasis parsing DoS
- CVE-2026-121401: FreeRDP RD Gateway DoS
- CVE-2026-120572: Firefox layout boundary bug
- CVE-2026-121542: Docker Buildx Bake file exposure
- CVE-2026-121397: FreeRDP PNG heap over-read
- CVE-2026-121392: FreeRDP TLS cert check bypass enables MITM
- CVE-2026-121439: Wasmtime wasi-http response splitting
- CVE-2026-121391: FreeRDP file descriptor leak
- CVE-2026-119741: rsync delta-transfer DoS
- CVE-2026-121387: FreeRDP GSM decoder OOB read