March 30, 2026
๐ฅ Palette Cleanser
This week's big story is one of the best credential cascade attacks I've seen in a while. The threat actor TeamPCP started with a single set of stolen CI/CD credentials from the Trivy security scanner (yes, the security tool), and then proceeded to use those credentials to hop across the open source ecosystem. Trivy on March 19, the Checkmarx KICS GitHub Action on March 23 (35 tags hijacked in under four hours), LiteLLM on PyPI on March 24, and Telnyx on March 27. Each compromise fed the next. Wiz's analysis of the LiteLLM malware found that versions 1.82.7 and 1.82.8 contained a payload that harvested AWS credentials, SSH keys, Kubernetes tokens, and cloud credentials, while Datadog traced the full campaign back through the CI/CD chain to the original Trivy compromise. With LiteLLM pulling 95 million monthly downloads and deployed in an estimated 36% of cloud environments according to Wiz telemetry, this wasn't a niche hit. LiteLLM CEO Krrish Dholakia and CTO Ishaan Jaff published a rapid response, paused all new releases, rotated credentials, and brought in Google's Mandiant team for forensic analysis, which is a mature response to an incident that most projects would quietly bury. One fun detail buried in the malware is the backdoor's kill switch is triggered if the C2 server returns the string "youtube.com." The internet ruins everything, including attack infrastructure.
Back in early March, AWS's ME-CENTRAL-1 region went down after what the status page initially called "a localized power issue." The updated explanation was that "objects struck the datacenter, creating sparks and fire." AWS never disclosed what the objects were or where they came from, though given the timing and location - UAE, during the Iran conflict - the likely cause wasn't hard to guess. Anyway, if you enjoy informed gossip, an AWS SRE shared more details on Instagram.
AWS also announced general availability of visible services and visible regions account settings in the Management Console, letting you hide services and regions your team doesn't use. Worth noting, as Ian McKay pointed out, this is not a security control. The Console fetches these customizations from uxc.us-east-1.api.aws client-side, so blocking that request in a browser restores full visibility. Treat it as a UX convenience for reducing noise, not a guardrail. IAM is still doing the actual work.
Have feedback about AWS Security Digest? Tell us here. This issue is also available to share online.
๐ Chef's selections
-
"But without PassRole it should be fine", Lambda edition by Daniel Grzelak
The conventional wisdom is that iam:PassRole is the gatekeeper for privilege escalation via Lambda. If an attacker doesn't have it, they can't assign a more privileged execution role. I wrote up two smooth ways to make that assumption wrong. With only lambda:UpdateFunctionConfiguration, an attacker can attach a cross-account malicious layer and either drop an executable into /opt/extensions/ (which Lambda auto-runs during the Init phase as a Lambda Extension) or set AWS_LAMBDA_EXEC_WRAPPER to a wrapper script that runs before the runtime starts. Either way, code executes under the target function's role with zero changes to the handler, so nothing in your code diff or UpdateFunctionCode alerts fires. One of these was already abused for persistence in Stratus Red Team
-
Local File Inclusion in AWS Remote MCP Server via CLI Shorthand Syntax by Coby Abrams
Coby found a Local File Inclusion vulnerability (CVE-2026-4270) in the official AWS Remote MCP Server that bypasses the FileAccessMode=NO_ACCESS security setting entirely. The AWS CLI has a built-in feature for loading local file contents into command parameters, and the MCP server passes these commands through without sanitizing inputs. Point it at a sensitive file, let the command error, and the file contents come back in the error message. It was reproducible against AWS's own hosted endpoint at aws-mcp.us-east-1.api.aws. AWS patched it in version 1.3.9. If you're running the MCP server or any forks of it, update now.
-
AWS Keeps Breaking Its Own Trust Boundaries by Daniel Grzelak
This quick analysis of 20 AWS security bulletins from October 2025 to March 2026 found that trust boundary failures are the dominant vulnerability class, not memory corruption or crypto bugs. Seven of the twenty bulletins fit the pattern. Something assumes a principal is trustworthy when it isn't, and privilege escalation or lateral movement follows. The examples are instructive: an EKS provisioning role with arn:aws:iam::ACCOUNT:root in its trust policy, a SageMaker read-only API that leaked HMAC signing keys enabling forged payloads, and so on. The main point is that a permission's danger isn't determined by its IAM action name but by what it can reach through credential chains, resource-based policies, and service integrations. If AWS keeps making this mistake in its own services, your environment almost certainly has the same patterns.
๐ฅ AWS security blogs
- ๐ฃ Amazon CloudWatch Logs now supports data protection, OpenSearch PPL and OpenSearch SQL for the Infrequent Access ingestion class
- ๐ฃ Palmyra Vision 7B from Writer now available on Amazon Bedrock
- ๐ฃ AWS Lambda increases the file descriptor limit to 4,096 for functions running on Lambda Managed Instances
- ๐ฃ The AWS Advanced JDBC Wrapper now supports automatic query caching with Valkey
- ๐ฃ AWS Firewall Manager launches in AWS Asia Pacific (New Zealand) Region
- ๐ฃ AWS Batch now provides AMI status and supports AWS Health Planned Lifecycle Events
- ๐ฃ AWS Batch now supports quota management and preemption for SageMaker Training jobs
- ๐ฃ Amazon Quick Now Available in the AWS Tokyo Region
- ๐ฃ Amazon Quick Now Available in the AWS Frankfurt Region
- ๐ฃ Amazon Quick Now Available in the AWS London Region
- Preparing for agentic AI: A financial services approach by Raphael Fuchs
- IAM policy types: How and when to use them by Matt Luttrell
๐ Reddit threads on r/aws
-
No threads this week.
๐ธ 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.
๐ค Dessert
Dessert is made by robots, for those that enjoy the industrial content.
๐ง IAM permission changes
๐ช API changes
- Amazon Bedrock AgentCore Control
- Amazon Bedrock AgentCore
- Amazon Omics
- AWS Billing and Cost Management Data Exports
- Amazon EMR
- Amazon CloudWatch Logs
- Amazon SageMaker Service
- Timestream InfluxDB
- AmazonApiGatewayV2
- Amazon CloudWatch Application Signals
- AWS Marketplace Agreement Service
- Amazon Polly
- AWS User Experience Customization
- Amazon Bedrock AgentCore Control
- OpenSearch Service Serverless
- AWS Parallel Computing Service
- Amazon Relational Database Service
- AWS Batch
- Amazon Connect Cases
- Amazon Lightsail
- Amazon Omics
๐น IAM managed policy changes
-
No changes this week.
โ CloudFormation resource changes
๐ฎ Amazon Linux vulnerabilities
- CVE-2026-21717: nodejs - DoS (hash collision)
- CVE-2026-21714: nodejs - DoS (HTTP/2 memory leak)
- CVE-2026-33937: rust/handlebars - RCE (CVSS 8.1)
- CVE-2026-33747: docker/BuildKit - arbitrary file write (CVSS 8.2)
- CVE-2026-21711: nodejs - privilege escalation (permission model bypass)
- CVE-2026-24031: dovecot - authentication bypass
- CVE-2026-21712: nodejs - DoS (assertion failure on malformed IDN)
- CVE-2026-0394: dovecot - info disclosure (path traversal)
- CVE-2025-59031: dovecot - info disclosure (FTS index exposure)
- CVE-2026-21713: nodejs - info disclosure (HMAC timing side-channel)
- CVE-2026-21715: nodejs - info disclosure (permission model bypass)
- CVE-2026-21710: nodejs - DoS (uncaught TypeError on __proto__ header)
- CVE-2026-27855: dovecot - OTP replay attack
- CVE-2026-34353: ocaml - info disclosure (integer overflow in Bigarray)
- CVE-2026-27857: dovecot - DoS (memory exhaustion via malformed NOOP)
- CVE-2026-27860: dovecot - LDAP filter injection
- CVE-2026-21716: nodejs - privilege escalation (incomplete permission model fix)
- CVE-2026-4948: firewalld - privilege escalation (D-Bus misauthorization)
- CVE-2026-33982: freerdp - info disclosure (heap OOB read)
- CVE-2026-33535: ImageMagick - DoS (OOB write)
- CVE-2026-4897: polkit - DoS (OOM via oversized input)
- CVE-2026-33987: freerdp - heap OOB write (persistent cache desync)
- CVE-2026-4887: gimp - DoS/info disclosure (heap buffer over-read in PCX loader)
- CVE-2026-33977: freerdp - DoS (assert in IMA ADPCM decoder)
- CVE-2026-33986: freerdp - heap OOB write (H.264 buffer desync)
- CVE-2026-34352: tigervnc - privilege escalation/info disclosure (incorrect permissions)
- CVE-2026-33515: squid - info disclosure (OOB read on ICP traffic)
- CVE-2026-33526: squid - DoS (heap use-after-free in ICP)
- CVE-2026-3836: dnf - DoS (path traversal crash in D-Bus locale config)
- CVE-2026-32748: squid - DoS (heap use-after-free in ICP)
- CVE-2026-33536: ImageMagick - DoS (OOB write stack overflow)
- CVE-2026-33636: libpng/firefox/thunderbird - OOB read/write (ARM Neon palette expansion)
- CVE-2026-33985: freerdp - info disclosure (heap OOB read in ClearCodec)
- CVE-2026-33984: freerdp - heap OOB write (ClearCodec resize desync)
- CVE-2026-33983: freerdp - DoS (Progressive Codec underflow/CPU exhaustion)
- CVE-2026-33995: freerdp - DoS (double free in Kerberos)
- CVE-2026-33952: freerdp - DoS (assert in RTS auth verifier)
- CVE-2026-33416: libpng/firefox/thunderbird - use-after-free (memory corruption)
- CVE-2026-3591: bind - access control bypass (ACL IP mismatch)
- CVE-2026-3104: bind - DoS (memory leak via crafted domain)
- CVE-2026-25645: python-requests - privilege escalation (predictable temp filename)
- CVE-2026-3119: bind - DoS (named crash on TKEY+TSIG query)
- CVE-2026-1519: bind - DoS (excessive CPU in DNSSEC validation)
- CVE-2025-67030: plexus-utils - RCE (directory traversal in zip extraction) (CVSS 8.3)
- CVE-2026-33809: golang - DoS (OOM on malicious TIFF)
- CVE-2026-34085: fontconfig - RCE (off-by-one OOB write in sfnt handling)
- CVE-2026-32853: libvncserver - info disclosure/DoS (heap OOB read in UltraZip)
- CVE-2026-4686: firefox/thunderbird - DoS (Canvas2D boundary conditions)
- CVE-2026-4701: firefox/thunderbird - use-after-free (JavaScript engine)
- CVE-2026-4684: firefox/thunderbird - use-after-free (WebRender race condition)
- CVE-2026-4727: firefox/thunderbird - DoS (NSS library)
- CVE-2026-4726: firefox/thunderbird - DoS (XML component)
- CVE-2026-27784: nginx - DoS (OOB read/write in mp4 module on 32-bit)
- CVE-2026-32854: libvncserver - DoS (null pointer dereference in HTTP proxy)
- CVE-2026-4699: firefox/thunderbird - DoS (Layout: Text and Fonts boundary conditions)
- CVE-2026-4696: firefox/thunderbird - use-after-free (Layout: Text and Fonts)
- CVE-2026-28753: nginx - header injection (CRLF in mail SMTP LDAP DNS response)
- CVE-2026-4704: firefox/thunderbird - DoS (WebRTC signaling)
- CVE-2026-4775: libtiff - RCE (signed integer overflow, heap OOB write)
- CVE-2026-4718: firefox/thunderbird - DoS (undefined behavior in WebRTC)
- CVE-2026-4702: firefox/thunderbird - RCE (JIT miscompilation in JavaScript engine)
- CVE-2026-4692: firefox/thunderbird - sandbox escape (Responsive Design Mode) (CVSS 8.3)
- CVE-2026-4710: firefox/thunderbird - DoS (Audio/Video boundary conditions)
- CVE-2026-4688: firefox/thunderbird - sandbox escape (use-after-free in Accessibility APIs)
- CVE-2026-4714: firefox/thunderbird - DoS (Audio/Video boundary conditions)
- CVE-2026-4685: firefox/thunderbird - DoS (Canvas2D boundary conditions)
- CVE-2026-4715: firefox/thunderbird - info disclosure (uninitialized memory in Canvas2D)
- CVE-2026-4728: firefox/thunderbird - spoofing (Anti-Tracking component)
- CVE-2026-32647: nginx - RCE/DoS (buffer over-read/write in mp4 module)
- CVE-2026-4725: firefox/thunderbird - sandbox escape (use-after-free in Canvas2D)
- CVE-2026-4707: firefox/thunderbird - DoS (Canvas2D boundary conditions)
- CVE-2026-4712: firefox/thunderbird - info disclosure (Widget: Cocoa)
- CVE-2026-3889: thunderbird - spoofing
- CVE-2026-4698: firefox/thunderbird - RCE (JIT miscompilation in JavaScript engine)
- CVE-2026-4722: firefox/thunderbird - privilege escalation (IPC component)
- CVE-2026-4700: firefox/thunderbird - mitigation bypass (Networking: HTTP)
- CVE-2026-4709: firefox/thunderbird - DoS (Audio/Video: GMP boundary conditions)
- CVE-2026-33412: vim - command injection (newline in glob)
- CVE-2026-4690: firefox/thunderbird - sandbox escape (XPCOM integer overflow)
- CVE-2026-4719: firefox/thunderbird - DoS (Graphics: Text boundary conditions)
- CVE-2026-27654: nginx - buffer overflow/DoS (DAV module MOVE/COPY with alias) (CVSS 8.2)
- CVE-2026-4708: firefox/thunderbird - DoS (Graphics boundary conditions)
- CVE-2026-4705: firefox/thunderbird - DoS (undefined behavior in WebRTC)
- CVE-2026-4729: firefox/thunderbird - RCE (memory corruption) (CVSS 8.8)
- CVE-2026-4713: firefox/thunderbird - DoS (Graphics boundary conditions)
- CVE-2026-4693: firefox/thunderbird - DoS (Audio/Video: Playback boundary conditions)
- CVE-2026-4716: firefox/thunderbird - info disclosure/DoS (uninitialized memory in JavaScript engine)
- CVE-2026-4695: firefox/thunderbird - DoS (Audio/Video: Web Codecs boundary conditions)
- CVE-2026-4689: firefox/thunderbird - sandbox escape (XPCOM integer overflow)
- CVE-2026-4697: firefox/thunderbird - DoS (Audio/Video: Web Codecs boundary conditions)
- CVE-2026-4691: firefox/thunderbird - use-after-free (CSS parsing)
- CVE-2026-4371: thunderbird - info disclosure (OOB read in mail server string parser)
- CVE-2026-4723: firefox/thunderbird - use-after-free (JavaScript engine)
- CVE-2026-4687: firefox/thunderbird - sandbox escape (Telemetry boundary conditions)
- CVE-2026-4721: firefox/thunderbird - RCE (memory safety bugs) (CVSS 8.8)
- CVE-2026-4717: firefox/thunderbird - privilege escalation (Netmonitor component)
- CVE-2026-27651: nginx - DoS (worker process crash in mail auth HTTP module)
- CVE-2026-4706: firefox/thunderbird - DoS (Canvas2D boundary conditions)
- CVE-2026-4711: firefox/thunderbird - use-after-free (Widget: Cocoa)
- CVE-2026-4720: firefox/thunderbird - RCE (memory safety bugs) (CVSS 8.8)
๐บ AWS security bulletins
-
No bulletins this week.
๐ฌ Security documentation changes
- Corretto rotated signing key to A122542AB04F24E3
- Corretto rotated signing key to A122542AB04F24E3
- Corretto rotated signing key to A122542AB04F24E3
- Corretto rotated signing key to A122542AB04F24E3
- Corretto rotated signing key to A122542AB04F24E3
- Inspector SBOM Generator added findings for CVE-2026-33747 and CVE-2026-33748
- Redshift renamed IAM docs section to "Cross-service confused deputy prevention"
- RES Dec 2025: S3 access logging, SSL/TLS, and permission fixes
- RES Sep 2025: session isolation and IAM role naming bug fixes
- RES fixed incorrect IAM policy example for cross-account S3 access
- RES troubleshooting: certificate expiry and Windows VDI admin login issues
- RES known issues: CVE-2024-6387 (RegreSSHion) and AD/VDI edge cases
- RES troubleshooting: CVE-2024-6387 (RegreSSHion) and certificate/login issues
- RES Mar 2026: security fixes for privilege escalation and RCE
- VPN Client 5.3.4: improved security posture and SHA256 checksums
- Batch: Amazon Linux 2 AMI support ended, migration required
- Batch: Amazon Linux 2 AMIs no longer receive security patches
- Managed Services: control 6.11 now allows cross-account write access with risk acceptance
- WAF new rule: PHPHighRiskMethodsVariables_URIPATH detects PHP injection in request paths
- WAF PHP Application rule group released as static version 2.2