惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
J
Java Code Geeks
博客园_首页
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
Intezer
P
Palo Alto Networks Blog
V
Vulnerabilities – Threatpost
雷峰网
雷峰网
O
OpenAI News
SecWiki News
SecWiki News
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
N
News | PayPal Newsroom
Project Zero
Project Zero
Forbes - Security
Forbes - Security
IT之家
IT之家
A
Arctic Wolf
WordPress大学
WordPress大学
Jina AI
Jina AI
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
博客园 - 聂微东
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy International News Feed
Cloudbric
Cloudbric
G
GRAHAM CLULEY
博客园 - 叶小钗
H
Hacker News: Front Page
腾讯CDC
量子位
Help Net Security
Help Net Security
人人都是产品经理
人人都是产品经理
C
Cyber Attacks, Cyber Crime and Cyber Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
爱范儿
爱范儿
L
Lohrmann on Cybersecurity
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recorded Future
Recorded Future
C
CERT Recently Published Vulnerability Notes

Sysdig Blog

Masterclass: AI is more than ChatGPT and LLMs CVE-2026-39987 update: How attackers weaponized marimo to deploy a blockchain botnet via HuggingFace Kubernetes 1.36 - New security features 5 steps to securing AI workloads Marimo OSS Python Notebook RCE: From Disclosure to Exploitation in Under 10 Hours Security briefing: March 2026 The Sysdig MCP server is now available in AWS Marketplace Risk isn’t reduced until you take action: How teams resolve issues in the cloud AI infrastructure security: Why it deserves its own category Three pillars for building effective runtime-powered cloud defense, the right way Closing the cloud security gap with runtime security Seeing risk isn’t stopping it: Why visibility alone isn’t enough TeamPCP expands: Supply chain compromise spreads from Trivy to Checkmarx GitHub Actions AI coding agents are running on your machines — Do you know what they're doing? Runtime security for AI coding agents: Protecting AI-assisted development How runtime insights power every cloud security use case CVE-2026-33017: How attackers compromised Langflow AI pipelines in 20 hours Inline Cloud Response: Accelerating AWS threat containment for SOC teams Runtime malware detection for AWS Fargate Malware detection with Sysdig Security briefing: February 2026 Leveling up Kubernetes Posture: From baselines to risk-aware admission Eliminating runtime blind spots: How CleanStart and Sysdig build continuous trust across the container lifecycle LLMjacking: From Emerging Threat to Black Market Reality Real risks live at runtime: Why CISOs must care about deep telemetry in 2026 Sysdig named a Leader in the Forrester Wave™: Cloud Native Application Protection Solutions, Q1 2026 How to run rootless containers AI-assisted cloud intrusion achieves admin access in 8 minutes Security briefing: January 2026 Securing GPU-accelerated AI workloads in Oracle Kubernetes Engine Bringing OSS runtime security to AWS: Falco integration with AWS Security Hub CSPM Our customers have spoken: Sysdig rated a Strong Performer in Gartner® Voice of the Customer for Cloud-Native Application Protection Platforms Protecting sensitive business data in preparation for the organization's Gen AI VoidLink threat analysis: Sysdig discovers C2-compiled kernel rootkits AI is still a workload: A practical guide to securing AI workloads How threat actors are using self-hosted GitHub Actions runners as backdoors How Sysdig Sage delivers AI-powered, real-world vulnerability management Security briefing: December 2025 Top 10 ways to get breached in 2026 EtherRAT dissected: How a React2Shell implant delivers 5 payloads through blockchain C2 Introducing runtime file integrity monitoring and response with Sysdig FIM How to detect multi-stage attacks with runtime behavioral analytics EtherRAT: DPRK uses novel Ethereum implant in React2Shell attacks Detecting React2Shell: The maximum-severity RCE vulnerability affecting React Server Components and Next.js The rise of AI agents: How autonomous AI Is transforming cloud security Kubernetes 1.35 - New security features The Urgency of Securing AI Workloads for CISOs Security briefing: November 2025 Quantum and the cloud: Science fiction turned security strategy Cloud security, the right way: What the industry should demand (and why "good enough" isn't) Return of the Shai-Hulud worm affects over 25,000 GitHub repositories Detecting CVE-2024-1086: The decade-old Linux kernel vulnerability that’s being actively exploited in ransomware campaigns What’s old is new again: How to demystify AI security with AIBOMs Securing Kubernetes with agentic cloud security How agentic cloud security reduces real risks Hunting reverse shells: How the Sysdig Threat Research Team builds smarter detection rules Shifting left with AI and MCP: Sysdig + Amazon Q Developer How Falco and Stratoshark close the gap between open source runtime detection and deep forensic analysis Investigating security issues with ChatGPT and the GitHub MCP server New runc vulnerabilities allow container escape: CVE-2025-31133, CVE-2025-52565, CVE-2025-52881 Harden your LLM security with OWASP Security briefing: October 2025 How agentic AI is changing cloud security Kubernetes Incident Response: Detect, investigate, and contain in under 10 minutes Sysdig recognized as a Cloud Security Leader in Latio Tech Cloud Security Market Report AI echolocation of cloud risks using Sysdig & Snyk MCP servers Sysdig MCP Server: Bridging AI and cloud security insights Understanding CVE-2025-49844: “RediShell” Critical Remote Code Execution in Redis How Sysdig secures your containers and Kubernetes Sysdig Security Briefing: September 2025 Cloud security, the right way: The 3 pillars of real-time defense Open source spotlight: Bringing web application security to Falco with Falcoya's Nginx plugin Malicious NPM packages: Are you exposed? AI for SOC teams: 5 cloud security prompts to start your day with Sysdig Sage™ Shai-Hulud: The novel self-replicating worm infecting hundreds of NPM packages ZynorRAT technical analysis: Reverse engineering a novel, Turkish Go-based RAT Modern vulnerability management, built for the cloud Build your AWS incident response playbook with open source tools 2025 Gartner® CNAPP Market Guide: Runtime visibility is no longer optional Threat hunting with Sysdig: Uncovering “IngressNightmare” Open source spotlight: From alerts to action with AI-powered Falco Vanguard From triage to action: How Sysdig’s agentic cloud security platform slashes noise and accelerates remediation The vision comes to life: Agentic cloud security with Sysdig Sage™ Data security findings: A technical deep dive Connecting runtime to source: Sysdig and Semgrep integration Fix what matters, faster: How Sysdig and Semgrep are unifying security without silos – from code to runtime Defending sensitive data with Sysdig Secure Redefining cloud security, the right way Join the movement: The Sysdig Open Source Community is live A smarter, safer cloud in the age of AI Unifying detection and response: Sysdig + Cortex XSOAR for security at cloud speed The future of security is open, and it needs a unified hub: The Sysdig Open Source Community is here CVE-2025-53104: Command injection via GitHub Actions workflow in gluestack-ui Why MCP server security is critical for AI-driven enterprises What’s new in Sysdig — June 2025 AI-powered CNAPP with Sysdig Sage™ Revolutionizing Cybersecurity Search with Sysdig Sage™ Sysdig Threat Bulletin: Iranian Cyber Threats The end of the prioritization-only era: Vulnerability management needs action Dangerous by default: Insecure GitHub Actions found in MITRE, Splunk, and other open source repositories
Detecting CVE-2026-3288 & CVE-2026-24512: Ingress-nginx configuration injection vulnerabilities for Kubernetes
Michael Clark · 2026-03-17 · via Sysdig Blog

On March 9, 2026, the Kubernetes ingress-nginx project merged a fix for CVE-2026-3288 (CVSS 8.8 HIGH), a configuration injection vulnerability in the NGINX Ingress Controller. The vulnerability allows any user with permission to create or modify Ingress resources by inserting a double-quote character (“) into the Ingress path field. Because the field does not properly sanatize input, an attacker can break the expected syntax with a quotation mark and inject arbitrary nginx configuration directives into the generated configuration. The official advisory states that the vulnerability can lead to remote code execution (RCE) and the disclosure of secrets accessible to the controller.

CVE-2026-3288 is also closely related to CVE-2026-24512, a path injection vulnerability fixed one month prior. The fix for CVE-2026-24512 introduced the sanitizeQuotedRegex() function and applied it to buildLocation(), but missed buildProxyPass(), leaving the rewrite directive vulnerable to the same class of injection. These vulnerabilities are the latest in a string of ingress-nginx security challenges, which precipitate the project's coming retirement at the end of the month.

The Sysdig Threat Research Team (TRT) has analyzed the root cause of both CVEs and built a Falco detection rule that alerts users to exploitation attempts via Kubernetes audit logs. The Sysdig TRT’s full analysis and findings of the vulnerabilities are detailed below.

Affected Versions

  • Affected: NGINX Ingress Controller versions before v1.13.8, v1.14.4, and v1.15.0
  • Fixed: v1.13.8, v1.14.4, v1.15.0 (released March 9, 2026)
  • Fix commit: PR #14667
  • Related: CVE-2026-24512 (path injection via buildLocation(), fixed in v1.13.7 and v1.14.3 by PR #14501)

Root cause: Missing sanitization

The NGINX Ingress Controller translates Kubernetes Ingress objects into nginx configuration. When an Ingress includes a rewrite-target annotation, the controller generates a rewrite directive inside the corresponding location block via the buildProxyPass() function in template.go, as seen below:

return fmt.Sprintf(`
rewrite "(?i)%s" %s break;
%v%v %s%s;`, path, location.Rewrite.Target, xForwardedPrefix, proxyPass, proto, upstreamName)

The path variable comes directly from the Ingress spec.rules.http.paths.path field and is interpolated into a double-quoted nginx string without any escaping. If the path contains a (") character, it closes the quoted regex prematurely, and everything after it is interpreted as raw nginx configuration.

The companion function buildLocation() was fixed one month earlier as part of CVE-2026-24512. That fix (PR #14501) introduced the sanitizeQuotedRegex() function, which escapes \ and " characters, and applied it to buildLocation():

func buildLocation(input interface{}, enforceRegex bool) string {
    path := sanitizeQuotedRegex(location.Path)
    if enforceRegex {
        return fmt.Sprintf(`~* "^%s"`, path)
    }
    // ...
}

However, the same fix was not applied to buildProxyPass(). The fix for CVE-2026-3288 in PR #14667 adds the same sanitizeQuotedRegex() call to buildProxyPass(). It is a one-line change to avoid the arbitrary code execution flaw.

Bypassing the inspector

The NGINX Ingress Controller includes a DeepInspect function that validates Ingress objects before processing them. This inspector runs each path through CheckRegex, which matches against a blocklist of known-dangerous nginx directives:

invalidAliasDirective = regexp.MustCompile(`(?s)\s*alias\s*.*;`)
invalidRootDirective  = regexp.MustCompile(`(?s)\s*root\s*.*;`)
invalidEtcDir         = regexp.MustCompile(`/etc/(passwd|shadow|group|nginx|ingress-controller)`)
invalidSecretsDir     = regexp.MustCompile(`/var/run/secrets`)
invalidByLuaDirective = regexp.MustCompile(`.*_by_lua.*`)

This blocklist is incomplete. Directives such as return, set, and try_files are not checked and pass through without error. We confirmed that return bypasses the inspector and executes successfully with injected payloads.

Additionally, the inspector defines a validPathType regex that would enforce alphanumeric-only paths:

validPathType = regexp.MustCompile(`(?i)^/[[:alnum:]._\-/]*$`)

This regex is never called. It exists as dead code, meaning the inspector accepts paths containing characters such as ("), (,), and (;), spaces, #, and other special characters without restriction.

Exploitation

Prerequisites

The attacker must have permission to create or modify Ingress resources in any namespace on a cluster running a vulnerable NGINX Ingress Controller. 

Impact

The official advisory states this vulnerability can lead to arbitrary code execution and disclosure of secrets accessible to the controller. In the default installation, the NGINX Ingress Controller can access all secrets cluster-wide. The inspector’s blocklist does not cover directives such as include or ssl_engine, which could provide paths to code execution or file disclosure beyond what we tested.

During our testing, the Sysdig TRT confirmed that the following attack scenarios are possible using the return directive, which the inspector does not block:

  • Hijack responses by serving attacker-controlled content on any path.
  • Redirect users to phishing pages or credential harvesting sites.
  • Steal credentials by using nginx variables such as $http_authorization to reflect Bearer tokens, API keys, or Basic auth credentials back in the response body.
  • Leak internal state by returning nginx variables such as $server_addr to expose the controller pod’s internal IP address.
  • Deny service by injecting an invalid configuration that prevents nginx from reloading.

Sysdig threat intelligence

Detection of this vulnerability has been added to the Sysdig Secure Threat Intelligence page, accessible at Home -> Threat Intelligence or by searching for “Remote Code Execution Vulnerabilities in NGINX Ingress Controller.”

Detection with Falco

The following Falco rule detects creation or modification of Ingress resources containing a double quote in the path, using Kubernetes audit log data:

rule: Ingress-NGINX Path Configuration Injection
  desc: >
    Detects Kubernetes Ingress resources where the path field contains a
    double-quote character, indicating potential ingress-nginx configuration
    injection via CVE-2026-3288 (buildProxyPass) or CVE-2026-24512
    (buildLocation). Both vulnerabilities use the path field as the
    injection vector.
  condition: >
    kevt and ingress and kmodify and response_successful
    and jevt.value[/requestObject/spec/rules/0/http/paths/0/path] contains "\""
  output: >
    Suspicious ingress path with config injection characters detected -
    possible CVE-2026-3288 / CVE-2026-24512
    (user=%ka.user.name
     verb=%ka.verb
     ingress=%ka.target.name
     ns=%ka.target.namespace
     path=%jevt.value[/requestObject/spec/rules/0/http/paths/0/path])
  priority: CRITICAL
  source: k8s_audit
  tags: [k8s, cve-2026-3288, cve-2026-24512, ingress-nginx, config-injection]


Both CVE-2026-3288 and CVE-2026-24512 require a (") character in the Ingress path field, which is never present in legitimate Ingress definitions. This makes it a high-fidelity detection signal that covers both vulnerabilities with a single rule.

Sysdig Secure customers are automatically protected with the Ingress-NGINX Malicious Annotation or Path Injection in the Sysdig K8s Notable Events, and any questions should be directed toward users’ Sysdig account teams.

How the detection works

Sysdig and Falco monitor Kubernetes audit events for Ingress create, update, or patch operations (kmodify) that completed successfully (response_successful). It then inspects the raw request body via jevt.value[/requestObject/spec/rules/0/http/paths/0/path], which extracts the path value from the first HTTP path in the Ingress spec. If that value contains a (") character, the detection sends an alert.

During validation, we deployed both a benign Ingress (path: /app) and the exploit Ingress on the same cluster. The alert fired exclusively on the exploit Ingress across create and update operations, with zero false positives on the benign resource.

Recommendations

  • Update ingress-nginx to v1.13.8, v1.14.4, or v1.15.0, which include the sanitizeQuotedRegex() fix in buildProxyPass().
  • Deploy the Falco rule above to detect exploitation attempts via Kubernetes audit logs.
  • Restrict Ingress creation permissions using rule-based access control (RBAC), limiting which users and service accounts can create or modify Ingress resources.
  • Verify the ingress-nginx admission webhook is enabled (it is on by default in the Helm chart), which runs nginx -t against the generated configuration and rejects Ingress objects that produce an invalid configuration.
  • Audit existing Ingress resources for paths containing special characters: kubectl get ingress -A -o json | jq '.items[].spec.rules[].http.paths[].path' | grep '[";\\#]'.
  • Monitor NGINX Ingress Controller logs for "received invalid ingress" messages, which indicate the inspector rejected a potentially malicious Ingress.

Mitigations

Several layers of defense reduce the likelihood of successful exploitation in production environments.

  • This is not an internet-facing vulnerability. The attacker must be authenticated to the Kubernetes API and have permissions to create or modify Ingress resources. The most realistic threat is a compromised CI/CD pipeline or a malicious insider with namespace-level access.
  • The admission webhook catches some payloads. The ingress-nginx Helm chart enables the admission webhook by default, which validates the generated nginx configuration before accepting an Ingress. During testing, we had to delete the webhook to deploy the exploit. However, payloads that produce valid nginx syntax (such as return 200) pass this check and are not blocked.
  • A second sanitization function limits reachability on newer versions. On clusters running v1.13.7 or v1.14.3 (where the CVE-2026-24512 fix is applied), the companion function buildLocation() correctly escapes the path, producing a location regex that no normal HTTP request can match. The injected directives exist in the nginx configuration but cannot be triggered. However, for organizations still running older versions where buildLocation() is also unsanitized, the location regex is matchable, and the injected code is directly reachable via HTTP requests.

Conclusion

CVE-2026-3288 is a configuration injection vulnerability that stems from an incomplete fix for CVE-2026-24512. When sanitizeQuotedRegex() was introduced to protect buildLocation() in February 2026, the same sanitization was not applied to buildProxyPass(), leaving the rewrite directive vulnerable to the same class of path injection. The inspector’s reliance on a blocklist of known-dangerous directives, combined with dead validation code that is never called, means that a wide range of injection payloads pass through without detection.

This vulnerability follows a pattern seen in previous ingress-nginx configuration injection CVEs, including CVE-2026-24512 (path injection via buildLocation()), CVE-2021-25742 (snippet injection), and CVE-2024-7646 (annotation-based injection via \r). Each instance highlights the difficulty of safely interpolating user-controlled input into nginx configuration templates. 

Organizations running ingress-nginx should prioritize updating to v1.14.4 or later and deploy the Sysdig Secure or the Falco detection rule to catch exploitation attempts in environments where immediate patching is not possible.