Issue #270
Monday · July 20, 2026
🥖 Palate Cleanser
Maybe AWS' AI capex is much bigger than they are letting on... For a few hours on July 16, AWS told customers they owed them many many monies. One Redditor whose real spend was $0.19 got an estimate near $2.5 billion, and the numbers climbed as high as $2.5 trillion, comfortably more than most countries' GDP. On its status page AWS insisted only estimated billing data was affected and real invoices were never touched, blaming "an issue with unit pricing within the estimated billing computation subsystem." Translation: a recent change dropped in a wrong unit price and multiplied everyone's usage into Monopoly money. The first fix flopped, and corrected numbers didn't land until noon Pacific on Saturday. Just a display bug, but the fake numbers fired budget alarms into finance and security teams, and a cost anomaly looks exactly like a compromise until someone opens CloudTrail.
Less fun but more useful, on July 14 AWS pushed GuardDuty AI Protection to general availability, extending threat detection to AI workloads on Amazon Bedrock and SageMaker. Like the rest of GuardDuty it reads CloudTrail management and data events, flagging anomalous model invocations, "cost harvesting" attacks where stolen credentials fire expensive inputs to burn your tokens and GPU time, and direct prompt injection caught through Amazon Bedrock Guardrails, an integration available only for Bedrock. It arrives as part of a broader Security Hub retooling for AI and multicloud threats, and echoes June's investigations preview that auto-triages findings with confidence scores and MITRE ATT&CK mapping, the same "point a reasoning agent at your telemetry" bet Victor's ClickOps Sentinel makes in this week's Chef's Selection.
This issue is also available to share online. Got feedback? Tell us here.
📋 Chef's selections
OIDC tokens can now restrict which AWS roles they assume
by Aidan Steele
Aidan (self-proclaimed squirrel on meth) went digging into a barely-documented new STS condition key, sts:RoleAuthorizedByIdp, and reverse-engineered how it actually works. An OIDC token can now carry a https://aws.amazon.com/roles claim listing one or more role ARNs it is permitted to assume, and AssumeRoleWithWebIdentity checks that allow-list before it even looks at the role's trust policy. Put role X's ARN in the token, ask for role Y, and STS rejects you with InvalidIdentityToken regardless of what Y's trust policy allows. It's near-useless today unless you run your own IdP (matches must be literal ARNs, no wildcards, and CloudTrail only logs the field when it's present), but it hands identity providers a real veto over role selection that a misconfigured trust policy can't undo.
Introducing ClickOps Sentinel: AI Context for AWS Console Changes
by Victor Grenu
Even in shops that live by IaC, someone eventually opens the console and clicks stuff. Victor's open-source ClickOps Sentinel catches those moments off the CloudTrail sessionCredentialFromConsole flag, which AWS sets server-side for every console-session API call. Each triggered detection is handed to a Claude agent on Bedrock that retraces the whole console session via LookupEvents, checks adjacent activity from the same IP, and emits a reasoned verdict (manual-change-confirmed / likely-sanctioned-activity / suspicious) with security and FinOps implications. I'm not sure how good this will be in a large environment but seems better than another "someone changed a security group" ping.
Investigating Persistence Mechanisms in AWS
by Jan Blažek
Jan walks the four persistence techniques that can survive long after you think an incident is closed. 1. backdoor IAM users, 2. iam:UpdateAssumeRolePolicy to whitelist an external account, 3. malicious Lambda code, and 4. sts:GetFederationToken sessions. He pairs each with queries (over ingested CloudTrail data, not native CloudTrail) to hunt them, including pivoting from a federated session back to the source IAM user. It's a reference guide rather than novel research, but it's a clean, AWS-native investigation playbook worth keeping around.
💸 Sponsor shoutout
Meet Pleri: your AI security engineer. She’s not a chatbot. Pleri proactively finds meaningful security work and fixes issues before they become problems. Learn more about Pleri and see her in action.
🥗 AWS security blogs
- 📢 Amazon GameLift Streams now supports IAM role credentials for stream sessions
- 📢 Amazon CloudWatch Logs announces intelligent tiering for storage
- 📢 Amazon Cognito now supports importing users with password hashes
- 📢 Amazon CloudWatch announces lookup processor for log enrichment
- 📢 AWS IAM Identity Center achieves FedRAMP Class C Certification
- 📢 Introducing Amazon GuardDuty AI Protection for AWS AI workloads
- 📢 AWS Security Hub now provides AI inventory for organization-wide visibility of AI assets
- 📢 Amazon WorkSpaces Personal simplifies bulk PCoIP to DCV protocol migration
- 📢 OpenAI GPT-5.6 Sol, Terra, and Luna now generally available on Amazon Bedrock
- AWS Weekly Roundup: AWS Builder Center at 1 year, Network Scanning in Security Hub, Loom for AWS, and more (July 13, 2026) by Esra Kayabali
- Integrate Amazon Connect with AWS Managed AD via IAM Identity Center by Makendran Gunasekaran
- Fine-grained Amazon Route 53 access with IAM condition keys (Part 3) by Daniel Yu
- ICYMI: June 2026 @AWS Security by Rodolfo Brenes
- Security Hub adds AI workload protection and multicloud support for Microsoft Azure by Michael Fuller
- Authenticate legitimate AI agent traffic with AWS WAF Bot Control by Harith Gaddamanugu
- New compliance guidance available: HITRUST i1 on AWS by Abdul Javid
🍛 Reddit threads on r/aws
🤖 Dessert
Every machine-tracked change this week. Nobody else assembles this.
🧁 IAM permission changes
🍪 API changes
- Amazon Cognito Identity Provider
- Amazon GameLift Streams
- Amazon Kinesis Analytics
- odb
- Amazon Relational Database Service
- Amazon Chime SDK Voice
- Amazon Omics
- Amazon SageMaker Service
- AWS Sustainability
- Amazon Bedrock AgentCore Control
- Elastic Load Balancing
- Amazon HealthLake
- Payment Cryptography Data Plane
- Amazon Relational Database Service
- Amazon Connect Service
- Elastic Disaster Recovery Service
- Amazon EMR Containers
- AWS Lambda
- AmazonMQ
- AWS SecurityHub
- Amazon Elasticsearch Service
- Amazon GameLift
- Amazon GuardDuty
- AWS Lambda
- Redshift Serverless
🍹 IAM managed policy changes
- AWSBudgetsSpendLimitMemberRolePolicy
- AWSApplicationMigrationServiceRolePolicy
- AWSManagedBudgetsSpendLimitManagementAccess
- AWSManagedAccountUserEntitlementAccess
- AmazonDataZoneSageMakerEnvironmentRolePermissionsBoundary
- AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy
- AmazonPrometheusScraperServiceRolePolicy
- WellArchitectedAgentResourceScanning
- AWSThinkboxDeadlineResourceTrackerAdminPolicy
- AWSIAMRoleManagerServiceRolePolicy
- SecurityLakeServiceLinkedRole
- EC2ApplicationStatusChecksServiceRolePolicy
- SageMakerStudioUserIAMPermissiveExecutionPolicy
- SageMakerStudioUserIAMDefaultExecutionPolicy
- SageMakerStudioProjectUserRolePolicy
- SageMakerStudioAdminIAMPermissiveExecutionPolicy
- SageMakerStudioAdminIAMDefaultExecutionPolicy
- AWSObservabilityAdminServiceRolePolicy
☕ CloudFormation resource changes
No resource updates this week.
🎮 Amazon Linux vulnerabilities
- 7-Zip: archive-parsing vulnerability
- Libreswan: malformed X.509 cert DoS in FIPS mode
- xdgmime: heap buffer overflow (glib2/webkitgtk)
- Perl YAML::Syck: use-after-free
- Cyrus IMAP: LOCALDELETE ACL bypass
- Cyrus IMAP: push hijack and existence oracle
- Perl YAML::Syck: out-of-bounds read
- Perl YAML::Syck: out-of-bounds read
- Perl YAML::Syck: use-after-free and double-free
- Cyrus IMAP: LISTRIGHTS access-control flaw
- Sigstore Timestamp Authority: unauthenticated DoS
- Cyrus IMAP: URLAUTH revocation bypass
- Cyrus IMAP: ESEARCH cross-user content oracle
- PipeWire: sandbox escape (CVSS 8.8)
- Cyrus IMAP: GENURLAUTH ACL bypass
- Cyrus IMAP: URLAUTH token forgery
- Cyrus IMAP: vacation fcc skips mailbox ACL
- Cyrus IMAP: heap exposure in MIME parsing
- Fulcio OIDC client: SSRF (Go toolchain, CVSS 8.2)
- oras-go: registry auth realm validation flaw
- Keycloak: FGAP group-search flaw
- Rekor: APK gzip decompression DoS
- ImageMagick: ASHLAR coder memory leak
- ImageMagick: hough-lines memory leak
- ImageMagick: TIFF encoder memory leak
- ImageMagick: ICON decoder memory leak
- ImageMagick: TIFF encoder memory leak
- Dulwich: missing SSH host key verification
- ImageMagick: freetype-init use-after-free
- ImageMagick: -script policy bypass
- ImageMagick: X11 import heap overflow
- ImageMagick: JNG encoder memory leak
- ImageMagick: profile info disclosure
- Samba: pam_winbind unsafe homedir chown
- ImageMagick: log-colorspace memory leak
- NGINX: slice module unnamed-regex flaw (CVSS 8.2)
- QEMU guest agent: symlink privilege escalation
- ImageMagick: MIFF encoder memory leak
- oras-go: symlink path-confinement bypass
- ImageMagick: YUV decoder memory leak
- ImageMagick: TIFF encoder memory leak
- Perl Mojolicious: CSRF-token BREACH oracle
- Python Tornado: redirect credential leak (CVSS 8.6)
- libsoup: permessage-deflate DoS
- Python Pillow: McIdas AREA parsing flaw
- Rclone: restic serve auth flaw (CVSS 8.8)
- ASP.NET Core: resource-exhaustion DoS
- ASP.NET Core: auth-algorithm privesc (CVSS 8.8)
- Puma: source-IP spoofing
- .NET: type-confusion DoS
- Jetty: path-normalization access bypass
- .NET: deserialization code execution
- sigstore-js: preAuthEncoding flaw
- Apache Tomcat: rewrite-valve constraint bypass
- .NET: resource-exhaustion DoS
- .NET Framework: code injection privesc
- sigstore-js: certificateOIDs verification flaw
- Python pyasn1: BER decoder DoS
- Python Tornado: speedups WebSocket flaw
- libsoup: HTTP/2 GOAWAY heap over-read
- libsoup: incomplete CVE-2026-0716 fix
- .NET: symlink-following tampering
- Puma: PROXY protocol v1 spoofing
- Perl DBI: statement-handle consistency flaw
- .NET: resource-exhaustion DoS
- Perl DBD::File: symlink table flaw
- sigstore-js: transparency-log timestamp flaw
- Python Pillow: rank-filter heap OOB write (CVSS 8.2)
- .NET Framework: resource-exhaustion DoS
- Python Pillow: JPEG2000 integer overflow
- Python Pillow: TGA RLE out-of-bounds read
- Firefox: code execution, exploit public (CVSS 8.8)
- .NET: authorization bypass (CVSS 8.2)
- Apache Tomcat: EncryptInterceptor doc gap
- grpc-js: compressed-message DoS
- Python Pillow: EPS negative byte-count flaw
- Symfony: security flaw (CVSS 8.2)
- Perl DBI::ProfileData: unbounded path index
- Rclone: archive extract path traversal
- Python pyasn1: OID decoder DoS
- Python pyasn1: Real-type float DoS
- Rclone: unsafe symlink handling
- Python Pillow: ImageCms heap corruption
- Python Tornado: gzip decompression DoS
- Python Pillow: coordinate heap OOB write
- .NET: resource-exhaustion DoS
- jackson-databind: data-binding flaw
- .NET Framework: input-validation DoS
- .NET Framework: stack buffer overflow DoS
- Firefox: flaw, exploit public
- jackson-databind: data-binding flaw
- ASP.NET Core: auth bypass privesc (CVSS 8.8)
- libsoup: multipart out-of-bounds read
- Perl DBI::SQL::Nano: inverted SQL operators
- libsoup: HTTP/2 memory-release flaw
- libsoup: WebSocket frame validation flaw
- grpc-js: HTTP/2 stream-init DoS
- .NET Framework: local code execution
- Jetty: request-authority validation flaw
- .NET: signature-verification bypass (CVSS 8.1)
- Python Pillow: PDF FlateDecode memory exhaustion
- gawk: use-after-free in getline
- gawk: integer overflow in builtin.c
- gawk: buffer overflow in readdir extension
- Perl Storable: integer overflow on deserialize
- Perl: integer overflow in S_measure_struct
- gawk: integer overflow in do_sub
- Perl: silently incorrect regex matches
- ImageMagick: heap overflow in magnify operation
- ImageMagick: use-after-free in caption formatter
- ImageMagick: VIFF encoder memory leak
- ImageMagick: missing memory-allocation limit check
- ImageMagick: APNG encoder policy bypass
- ImageMagick: heap use-after-free
📺 AWS security bulletins
- CVE-2026-15895: OS command injection in jsii-diff in AWS jsii
- CVE-2026-15746 - Credential disclosure in Strands Agents Tools elasticsearch_memory tool
- CVE-2026-12283 - Issue with Athena Federated Query Synapse Connector
- CVE-2026-15737 - Sensitive content disclosure via OpenTelemetry spans in AgentCore Python SDK
- CVE-2026-15415 - Path traversal and arbitrary file write in the workflow linters of aws-healthomics-mcp-server
- CVE-2026-15643 - AWS HealthLake MCP Server SSRF via Unvalidated Pagination URL
- CVE-2026-15738 - Issue with AWS Load Balancer Controller Cross-Namespace Traffic Interception via HTTPRoute/GRPCRoute Priority Ordering