<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Security Updates on KnightLi Blog</title>
        <link>https://knightli.com/en/categories/security-updates/</link>
        <description>Recent content in Security Updates on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Thu, 21 May 2026 09:30:01 +0800</lastBuildDate><atom:link href="https://knightli.com/en/categories/security-updates/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>The AI Vulnerability Discovery Era Has Arrived: Why Copy Fail, Dirty Frag, Fragnesia, and ssh-keysign-pwn Clustered Together</title>
        <link>https://knightli.com/en/2026/05/21/linux-vulnerability-surge-ai-security-impact/</link>
        <pubDate>Thu, 21 May 2026 09:30:01 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/21/linux-vulnerability-surge-ai-security-impact/</guid>
        <description>&lt;p&gt;In recent weeks, Linux kernel vulnerabilities have appeared in rapid succession: Copy Fail, Dirty Frag, Fragnesia, and ssh-keysign-pwn have all entered security discussions. Some allow local privilege escalation, some can expose highly sensitive files, and some affect container hosts and multi-tenant environments. Many people&amp;rsquo;s first reaction is: why did Linux suddenly become so insecure?&lt;/p&gt;
&lt;p&gt;A more accurate answer is: Linux did not suddenly get worse. Long-hidden problems are being found faster and more systematically.&lt;/p&gt;
&lt;p&gt;What really matters in this wave is not just the fixes for a few CVEs, but the change in how vulnerabilities are discovered. In the past, only a small number of top researchers could spend a long time connecting cross-subsystem logic bugs. Now AI-assisted auditing, automated static analysis, fuzzing, and security research platforms are amplifying that work. The vulnerabilities did not appear overnight, but the speed at which they are found, reproduced, and spread has increased.&lt;/p&gt;
&lt;h2 id=&#34;what-these-vulnerabilities-have-in-common&#34;&gt;What These Vulnerabilities Have in Common
&lt;/h2&gt;&lt;p&gt;First, put the recent incidents side by side.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Vulnerability&lt;/th&gt;
          &lt;th&gt;Main Impact&lt;/th&gt;
          &lt;th&gt;Key Characteristics&lt;/th&gt;
          &lt;th&gt;Risk Focus&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Copy Fail / CVE-2026-31431&lt;/td&gt;
          &lt;td&gt;Local privilege escalation&lt;/td&gt;
          &lt;td&gt;Linux crypto / AF_ALG related path, involving a page cache write issue&lt;/td&gt;
          &lt;td&gt;Ordinary user to root; especially sensitive in container environments&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Dirty Frag / CVE-2026-43284, CVE-2026-43500&lt;/td&gt;
          &lt;td&gt;Local privilege escalation&lt;/td&gt;
          &lt;td&gt;Page cache write primitive in XFRM/ESP, RxRPC, and related paths&lt;/td&gt;
          &lt;td&gt;Chainable exploitation; affects host and container boundaries&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fragnesia / CVE-2026-46300&lt;/td&gt;
          &lt;td&gt;Local privilege escalation&lt;/td&gt;
          &lt;td&gt;Logic issue in the XFRM ESP-in-TCP subsystem&lt;/td&gt;
          &lt;td&gt;Related attack surface to Dirty Frag&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ssh-keysign-pwn / CVE-2026-46333&lt;/td&gt;
          &lt;td&gt;Local sensitive information disclosure and privilege escalation risk&lt;/td&gt;
          &lt;td&gt;Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; logic flaw&lt;/td&gt;
          &lt;td&gt;Risk to SSH host keys, &lt;code&gt;/etc/shadow&lt;/code&gt;, and other sensitive files&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;They are not the same vulnerability, but several patterns repeat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They are not traditional remote RCE issues, but local privilege escalation or local sensitive information disclosure.&lt;/li&gt;
&lt;li&gt;They require attackers to first obtain some kind of local execution, such as a normal shell, command execution inside a container, CI task permissions, or a low-privilege account.&lt;/li&gt;
&lt;li&gt;Most of the risk sits at kernel boundaries: page cache, crypto/network subsystems, ptrace permission checks, and container-shared kernels.&lt;/li&gt;
&lt;li&gt;Modern cloud-native environments amplify the blast radius, because containers are not a strong security boundary and the host kernel remains the shared base.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the question is not only &amp;ldquo;is there a patch?&amp;rdquo; The deeper question is: why did these low-level, hidden, long-dormant issues appear in such a short period?&lt;/p&gt;
&lt;h2 id=&#34;first-reason-many-bugs-are-historical-debt-not-newly-written-code&#34;&gt;First Reason: Many Bugs Are Historical Debt, Not Newly Written Code
&lt;/h2&gt;&lt;p&gt;When people see a vulnerability disclosure date, they often assume the bug was introduced recently. That is often not true.&lt;/p&gt;
&lt;p&gt;The key point of issues like Copy Fail is that a vulnerability can remain dormant for years until someone connects the right call path, permission boundary, and memory semantics. Public information indicates that Copy Fail relates to kernel optimization history around 2017. Dirty Frag and Fragnesia also point to deep cross-paths involving networking, crypto, and page cache.&lt;/p&gt;
&lt;p&gt;The scary part is not that one line of code obviously looks dangerous. It is that several assumptions happen to overlap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A subsystem performs in-place processing for performance.&lt;/li&gt;
&lt;li&gt;An interface allows unprivileged users to reach kernel functionality.&lt;/li&gt;
&lt;li&gt;A path connects read-only file pages, page cache, network fragments, and crypto buffers.&lt;/li&gt;
&lt;li&gt;An implicit invariant was never written into types, assertions, or documentation.&lt;/li&gt;
&lt;li&gt;The result becomes a path where an ordinary user can affect kernel state that should be out of reach.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not the kind of issue ordinary code review is best at finding. One reviewer may understand the crypto subsystem, another the network subsystem, and a third memory management. The bug lives at their intersection.&lt;/p&gt;
&lt;h2 id=&#34;second-reason-linux-kernel-complexity-has-outgrown-manual-review&#34;&gt;Second Reason: Linux Kernel Complexity Has Outgrown Manual Review
&lt;/h2&gt;&lt;p&gt;Linux&amp;rsquo;s strengths are openness, generality, broad hardware support, and a powerful ecosystem. Those strengths also carry costs.&lt;/p&gt;
&lt;p&gt;The modern Linux kernel is not a small kernel. It includes scheduling, memory management, filesystems, network protocols, crypto frameworks, drivers, virtualization, container-related mechanisms, eBPF, LSM, security modules, and hardware platform support. Each subsystem has its own history, maintainers, performance goals, and compatibility baggage.&lt;/p&gt;
&lt;p&gt;The problem is that vulnerabilities often do not live inside one module. They live where modules intersect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;splice()&lt;/code&gt; connects file pages and pipes.&lt;/li&gt;
&lt;li&gt;AF_ALG connects user space to the kernel crypto API.&lt;/li&gt;
&lt;li&gt;XFRM/ESP connects network packets, crypto, and memory pages.&lt;/li&gt;
&lt;li&gt;RxRPC and ESP-in-TCP make the network stack more complex.&lt;/li&gt;
&lt;li&gt;Containers make low-privilege local execution a much more common real-world precondition.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From an engineering perspective, the Linux kernel is no longer small enough for &amp;ldquo;many eyes&amp;rdquo; to reliably inspect every corner. Open source makes problems easier to fix and review, but it does not mean every corner receives continuous security review. Very few people can understand cross-subsystem vulnerabilities, and those are exactly the bugs that can have large impact.&lt;/p&gt;
&lt;h2 id=&#34;third-reason-performance-optimizations-often-thin-the-security-boundary&#34;&gt;Third Reason: Performance Optimizations Often Thin the Security Boundary
&lt;/h2&gt;&lt;p&gt;One theme appears repeatedly in this wave: reducing copies, reusing buffers, and processing data in place for performance.&lt;/p&gt;
&lt;p&gt;These optimizations are reasonable. The kernel is infrastructure. A small performance loss can affect cloud providers, databases, networking, storage, and container platforms. One fewer copy, faster encryption/decryption, or one fewer memory allocation can matter in production.&lt;/p&gt;
&lt;p&gt;But the security cost is also clear. When the boundaries between read-only data, shared pages, user-controlled input, kernel buffers, and crypto output become thin, one subsystem&amp;rsquo;s misunderstanding of input/output contracts can cause unauthorized writes or reads.&lt;/p&gt;
&lt;p&gt;In other words, performance optimization itself is not wrong, but it creates more fragile combinations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In-place encryption/decryption reduces copying, but relies more on correct isolation of input and output buffers.&lt;/li&gt;
&lt;li&gt;Page cache improves file access performance, but can also become attack surface.&lt;/li&gt;
&lt;li&gt;Zero-copy improves throughput, but lets different subsystems share the same memory objects.&lt;/li&gt;
&lt;li&gt;Containers improve deployment efficiency, but shared kernels make the blast radius of local privilege escalation larger.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Security boundaries cannot rely on everyone remembering not to make a mistake. They have to be enforced through types, permission checks, immutability constraints, tests, fuzzing, and continuous auditing. Otherwise, the more performance optimizations and implicit assumptions accumulate, the more likely these bugs are to be found.&lt;/p&gt;
&lt;h2 id=&#34;fourth-reason-containers-raise-the-value-of-local-vulnerabilities&#34;&gt;Fourth Reason: Containers Raise the Value of Local Vulnerabilities
&lt;/h2&gt;&lt;p&gt;In the past, &amp;ldquo;local privilege escalation&amp;rdquo; often sounded less urgent than remote vulnerabilities because the attacker already needed local access. Cloud-native environments changed that judgment.&lt;/p&gt;
&lt;p&gt;Today, local execution can come from many places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A web application turns into a normal shell.&lt;/li&gt;
&lt;li&gt;A CI/CD task executes untrusted code.&lt;/li&gt;
&lt;li&gt;A container runs user-uploaded workloads.&lt;/li&gt;
&lt;li&gt;A multi-tenant platform lets users run notebooks, plugins, scripts, or build jobs.&lt;/li&gt;
&lt;li&gt;AI code execution environments, sandboxes, and online judges are becoming more common.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once an attacker has execution inside a container, kernel LPE is no longer just a &amp;ldquo;local machine&amp;rdquo; issue. Containers share the host kernel, so a kernel vulnerability can cross the container boundary and affect the host and other tenants.&lt;/p&gt;
&lt;p&gt;This is why Copy Fail and Dirty Frag attract so much attention from cloud, security, and container teams. They can upgrade &amp;ldquo;low-privilege local code execution&amp;rdquo; into &amp;ldquo;host-level risk.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;ais-impact-the-cost-of-finding-vulnerabilities-has-dropped&#34;&gt;AI&amp;rsquo;s Impact: The Cost of Finding Vulnerabilities Has Dropped
&lt;/h2&gt;&lt;p&gt;The most era-defining part of this wave is AI-assisted vulnerability discovery.&lt;/p&gt;
&lt;p&gt;Public information about Copy Fail mentions Theori&amp;rsquo;s Xint Code participating in the discovery process. Whatever the exact tool capabilities, this represents a trend: AI does not necessarily invent vulnerabilities out of thin air, but it is very good at helping researchers shorten the search path.&lt;/p&gt;
&lt;p&gt;AI affects vulnerability research in several ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Faster reading of unfamiliar code&lt;br&gt;
Kernel subsystem codebases are large. Researchers cannot manually read every path. AI can help summarize functions, call chains, input/output relationships, and suspicious patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Easier discovery of cross-module connections&lt;br&gt;
Many vulnerabilities hide in chains such as &amp;ldquo;user-space entry -&amp;gt; network stack -&amp;gt; crypto framework -&amp;gt; memory pages -&amp;gt; file cache.&amp;rdquo; AI can help map these cross-file, cross-directory, cross-subsystem paths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Easier generation of audit hypotheses&lt;br&gt;
Questions like &amp;ldquo;which paths write user-controlled data into page cache,&amp;rdquo; &amp;ldquo;which APIs let unprivileged users reach crypto subsystems,&amp;rdquo; and &amp;ldquo;which functions assume input and output buffers never overlap&amp;rdquo; can now be enumerated more systematically.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Easier conversion into reproducible examples&lt;br&gt;
AI cannot replace the judgment of kernel researchers, but it can help write validation code, organize PoC ideas, explain faulty paths, and generate tests.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The result is a lower unit cost for vulnerability discovery.&lt;/p&gt;
&lt;p&gt;In the past, a high-quality kernel vulnerability might take elite researchers a long time to find. Now, someone who understands systems and has AI tools can triage suspicious paths faster. The ceiling on vulnerability supply has risen, making clustered disclosures more likely.&lt;/p&gt;
&lt;h2 id=&#34;but-ai-is-not-the-only-reason&#34;&gt;But AI Is Not the Only Reason
&lt;/h2&gt;&lt;p&gt;There is another extreme to avoid: blaming everything on AI.&lt;/p&gt;
&lt;p&gt;AI is an accelerator, not the root cause. The real roots are still:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long accumulation of historical code.&lt;/li&gt;
&lt;li&gt;Implicit contracts in performance optimizations that were never enforced.&lt;/li&gt;
&lt;li&gt;Excessive cross-subsystem complexity.&lt;/li&gt;
&lt;li&gt;Too much kernel functionality exposed by default.&lt;/li&gt;
&lt;li&gt;Security tests that do not cover all combined paths.&lt;/li&gt;
&lt;li&gt;Containers, multi-tenancy, and automated execution environments raising the value of local vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without those conditions, even powerful AI would not find so many high-impact bugs. Conversely, as long as these conditions exist, more mature AI will make vulnerabilities easier to find systematically.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-defenders&#34;&gt;What This Means for Defenders
&lt;/h2&gt;&lt;p&gt;For operations, security, and platform teams, this wave has several direct lessons.&lt;/p&gt;
&lt;p&gt;First, stop treating local privilege escalation as low priority.&lt;br&gt;
If your environment has containers, CI, online execution, plugins, notebooks, or multi-tenant workloads, local privilege escalation can become host risk.&lt;/p&gt;
&lt;p&gt;Second, kernel patch cadence must get faster.&lt;br&gt;
Critical hosts, Kubernetes nodes, CI runners, AI sandboxes, and virtualization hosts should not stay on old kernels for long periods. Kernel updates, reboot windows, live patching, and rollback plans need explicit processes.&lt;/p&gt;
&lt;p&gt;Third, reduce unnecessary kernel attack surface.&lt;br&gt;
Protocols, modules, user namespaces, special sockets, and debugging interfaces that are not needed should be tightened according to business needs. Enabled by default does not mean exposed by default.&lt;/p&gt;
&lt;p&gt;Fourth, container security should assume the kernel may be broken.&lt;br&gt;
Running containers as non-root, minimizing capabilities, using seccomp, AppArmor/SELinux, read-only filesystems, and isolating sensitive mounts remain important. They may not stop every kernel bug, but they reduce preconditions and follow-on damage.&lt;/p&gt;
&lt;p&gt;Fifth, monitoring should focus on privilege escalation chains.&lt;br&gt;
Do not only watch remote entry points. Also watch abnormal processes, sensitive file reads, kernel module loading, container escape signals, CI runner anomalies, and access to high-value files such as &lt;code&gt;/etc/shadow&lt;/code&gt; and SSH host keys.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-open-source-communities&#34;&gt;What This Means for Open Source Communities
&lt;/h2&gt;&lt;p&gt;For Linux and large open source projects, AI-assisted vulnerability discovery creates a two-sided pressure.&lt;/p&gt;
&lt;p&gt;On one hand, AI can help defenders find old problems faster. More latent vulnerabilities being publicly fixed is good in the long run.&lt;/p&gt;
&lt;p&gt;On the other hand, AI also creates noise. Low-quality automated reports, false positives, duplicates, and &amp;ldquo;AI found a bug&amp;rdquo; claims without context consume maintainer time. The real challenge is not whether to use AI, but how to bring AI output into responsible security processes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reports need minimal reproduction.&lt;/li&gt;
&lt;li&gt;Reports must define impact scope and threat model.&lt;/li&gt;
&lt;li&gt;Reports must distinguish theoretical issues, triggerable bugs, and exploitable vulnerabilities.&lt;/li&gt;
&lt;li&gt;Embargoes, distribution coordination, and fix windows must be respected.&lt;/li&gt;
&lt;li&gt;Maintainers need better automated tests, fuzzing, static analysis, and regression validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI makes vulnerability discovery faster, and that requires more mature repair and coordination mechanisms. Otherwise, higher security research productivity becomes maintainer pressure and user panic.&lt;/p&gt;
&lt;h2 id=&#34;conclusion-not-myth-collapse-but-a-changed-security-reality&#34;&gt;Conclusion: Not Myth Collapse, But a Changed Security Reality
&lt;/h2&gt;&lt;p&gt;Linux remains one of the most transparent, controllable, fixable, and hardenable foundations in mainstream operating system infrastructure. The issue is not that Linux suddenly became insecure. It is that modern kernel complexity, cloud-native usage patterns, and AI-assisted vulnerability discovery are changing the speed of vulnerability exposure.&lt;/p&gt;
&lt;p&gt;Similar events are likely to appear again. Not because every time is a new disaster, but because complex paths accumulated in the past are now being searched more efficiently.&lt;/p&gt;
&lt;p&gt;The security assumptions need to change:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not treat &amp;ldquo;no disclosed vulnerability&amp;rdquo; as &amp;ldquo;no vulnerability.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Do not treat local privilege escalation as low risk.&lt;/li&gt;
&lt;li&gt;Do not treat container isolation as a strong security boundary.&lt;/li&gt;
&lt;li&gt;Do not rely only on manual review for systems with tens of millions of lines of code.&lt;/li&gt;
&lt;li&gt;Do not wait only for patches; shrink attack surface, speed up patching, and build defense in depth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI has pushed vulnerability discovery into a higher-output era. That is true for attackers and defenders. The difference is whether defenders can turn that capability into faster auditing, earlier fixes, and more stable infrastructure governance.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.zhihu.com/question/28339369/answer/2039681587684586658&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zhihu discussion: Linux kernel vulnerability wave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/theori-io/copy-fail-CVE-2026-31431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Theori: Copy Fail / CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/copy-fail-vulnerability-fixes-available&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu: Copy Fail vulnerability fixes available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Security Blog: CVE-2026-31431 Copy Fail vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.qualys.com/misc/2026/05/20/cve-2026-46333-local-root-privilege-escalation-and-credential-disclosure-in-the-linux-kernel-ptrace-path&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qualys: CVE-2026-46333 Linux kernel ptrace path advisory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/ssh-keysign-pwn-linux-vulnerability-fixes-available&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu: CVE-2026-46333 mitigations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.helpnetsecurity.com/2026/05/08/dirty-frag-linux-vulnerability-cve-2026-43284-cve-2026-43500/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Help Net Security: Dirty Frag Linux vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techradar.com/pro/security/another-major-linux-security-issue-uncovered-new-fragnesia-flaw-allows-attackers-to-run-malicious-code-as-root&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechRadar: Fragnesia CVE-2026-46300 report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Impact Summary of Four Recent Linux Local Security Issues: Copy Fail, Dirty Frag, Fragnesia, and ssh-keysign-pwn</title>
        <link>https://knightli.com/en/2026/05/20/linux-lpe-four-vulnerabilities-impact-summary/</link>
        <pubDate>Wed, 20 May 2026 23:00:37 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/20/linux-lpe-four-vulnerabilities-impact-summary/</guid>
        <description>&lt;p&gt;Several high-profile local security issues have appeared in the Linux ecosystem recently. Individually, they involve different areas: crypto interfaces, network and IPsec paths, page cache handling, and ptrace access checks. Together, they point to the same operational lesson: once an attacker has a low-privilege local execution point, the risk to Linux hosts, container nodes, CI machines, and multi-user servers increases sharply.&lt;/p&gt;
&lt;p&gt;This article does not repeat all technical details of each vulnerability. Instead, it summarizes their practical impact and links to four separate articles on this site for deeper reading.&lt;/p&gt;
&lt;h2 id=&#34;what-the-four-events-affect&#34;&gt;What the Four Events Affect
&lt;/h2&gt;&lt;p&gt;The four risks worth tracking are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Copy Fail (CVE-2026-31431): a low-privilege local user may affect the page cache through kernel crypto-related paths and expand privileges.&lt;/li&gt;
&lt;li&gt;Dirty Frag (related to CVE-2026-43284 / CVE-2026-43500): risk centers on xfrm/ESP, RxRPC, and related network and kernel data paths, making it dangerous in post-compromise scenarios.&lt;/li&gt;
&lt;li&gt;Fragnesia (CVE-2026-46300): close to Dirty Frag, involving XFRM ESP-in-TCP, shared fragments, and page-cache write risk.&lt;/li&gt;
&lt;li&gt;ssh-keysign-pwn (CVE-2026-46333): not a direct root-shell bug, but a local information disclosure risk that may expose SSH host private keys, &lt;code&gt;/etc/shadow&lt;/code&gt;, and other sensitive files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The entry points differ, and so do the mitigations. Fixing Copy Fail does not automatically cover Dirty Frag or Fragnesia. Disabling some network modules does not automatically remove the information disclosure risk around ssh-keysign-pwn.&lt;/p&gt;
&lt;h2 id=&#34;copy-fail-high-priority-for-containers-and-ci-nodes&#34;&gt;Copy Fail: High Priority for Containers and CI Nodes
&lt;/h2&gt;&lt;p&gt;The key impact of Copy Fail is not an application crash. It is that low-privilege execution may be turned into root privileges. It is especially sensitive in these environments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CI/CD nodes that allow users to upload or run code.&lt;/li&gt;
&lt;li&gt;Container hosts running untrusted workloads.&lt;/li&gt;
&lt;li&gt;Development machines, jump hosts, and shared servers.&lt;/li&gt;
&lt;li&gt;Cloud hosts running older kernels with slower patch cycles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The danger is that Copy Fail has a relatively low exploitation threshold and combines easily with container scenarios. Many teams treat containers as a strong isolation boundary, but ordinary containers still share the host kernel by default. If an attacker gets a shell inside a container, a kernel LPE can turn a container issue into a host issue.&lt;/p&gt;
&lt;p&gt;Detailed analysis: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/&#34; &gt;Copy Fail CVE-2026-31431: Container Escape Risk in a Linux Kernel File-Copy Path&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;dirty-frag-a-post-compromise-amplifier&#34;&gt;Dirty Frag: A Post-Compromise Amplifier
&lt;/h2&gt;&lt;p&gt;Dirty Frag is more like a privilege amplifier after an attacker has entered a system. It is not a typical remote unauthenticated vulnerability. The usual prerequisite is that the attacker already has local execution through a weak password, WebShell, low-privilege service account, container task, or another foothold.&lt;/p&gt;
&lt;p&gt;Its practical impact appears in several places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A compromised low-privilege account may become root.&lt;/li&gt;
&lt;li&gt;A low-privilege execution point inside a container may threaten the host.&lt;/li&gt;
&lt;li&gt;Systems using IPsec, ESP, RxRPC, or related kernel networking capabilities need careful patch and mitigation review.&lt;/li&gt;
&lt;li&gt;Security teams should look beyond perimeter defense and include post-compromise privilege escalation chains.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dirty Frag reminds operations teams that local privilege escalation may not be the first entry point, but it can decide how far an intrusion goes. Once a low-privilege foothold exists, attackers will look for kernel bugs to push privileges to the highest level.&lt;/p&gt;
&lt;p&gt;Detailed analysis: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/&#34; &gt;Dirty Frag CVE-2026-43284: Linux Local Privilege Escalation Risk and Mitigation Guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;fragnesia-similar-attack-surfaces-are-not-cleaned-up-all-at-once&#34;&gt;Fragnesia: Similar Attack Surfaces Are Not Cleaned Up All at Once
&lt;/h2&gt;&lt;p&gt;Fragnesia matters because it shows that the attack surface near Dirty Frag is not an isolated one-off issue. Even if one bug is fixed, neighboring paths, similar data structures, and related module combinations may still contain new exploitable points.&lt;/p&gt;
&lt;p&gt;Its operational impact is mainly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not handle only the vulnerability name once. Keep checking by attack surface.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, &lt;code&gt;rxrpc&lt;/code&gt;, XFRM, and ESP-in-TCP should be evaluated against actual business dependencies.&lt;/li&gt;
&lt;li&gt;If a system does not depend on the related network capabilities, temporary disabling may be considered, but it must be tested first to avoid breaking VPN, IPsec, tunnels, or internal networking.&lt;/li&gt;
&lt;li&gt;Page-cache pollution risks can create detection blind spots where files appear unchanged, but the execution path is affected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For enterprises, the biggest lesson is that patch management should not look only at a single CVE. A safer approach is to build an inventory around subsystems and attack surfaces, then identify which machines expose the relevant capabilities and which services truly need those modules.&lt;/p&gt;
&lt;p&gt;Detailed analysis: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/&#34; &gt;Fragnesia (CVE-2026-46300): Linux Kernel Local Privilege Escalation Impact and Mitigation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ssh-keysign-pwn-not-direct-root-still-dangerous&#34;&gt;ssh-keysign-pwn: Not Direct Root, Still Dangerous
&lt;/h2&gt;&lt;p&gt;ssh-keysign-pwn differs from the previous three. It is more of a local sensitive information disclosure issue than a direct root-shell vulnerability. But in real attacks, sensitive information disclosure can quickly become a larger incident.&lt;/p&gt;
&lt;p&gt;The main impacts include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leaked SSH host private keys may damage host identity trust.&lt;/li&gt;
&lt;li&gt;Access to files such as &lt;code&gt;/etc/shadow&lt;/code&gt; can lead to offline cracking and account takeover.&lt;/li&gt;
&lt;li&gt;Multi-user servers, jump hosts, build machines, and shared development machines carry higher risk.&lt;/li&gt;
&lt;li&gt;Even without immediate privilege escalation, attackers may obtain credential material useful for lateral movement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This type of issue is easy to underestimate because it does not look as dramatic as a direct root shell. In enterprise environments, however, key and password-hash exposure often means a longer cleanup cycle: rotating SSH host keys, reviewing trust relationships, checking account passwords, and auditing login logs.&lt;/p&gt;
&lt;p&gt;Detailed analysis: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/17/ssh-keysign-pwn-cve-2026-46333/&#34; &gt;ssh-keysign-pwn (CVE-2026-46333): Linux Local Information Disclosure, SSH Host Keys, and /etc/shadow Risk&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;shared-impact-containers-are-not-a-strong-boundary-by-default&#34;&gt;Shared Impact: Containers Are Not a Strong Boundary by Default
&lt;/h2&gt;&lt;p&gt;Taken together, these four events make one point clear: ordinary container isolation is not virtual-machine isolation.&lt;/p&gt;
&lt;p&gt;Docker, containerd, and Kubernetes use namespaces, cgroups, capabilities, seccomp, AppArmor, and SELinux to reduce attack surface, but they usually still share the host kernel. If the vulnerability is in the shared kernel, a low-privilege execution point inside a container can become an entry point.&lt;/p&gt;
&lt;p&gt;High-risk environments should check:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether untrusted code is allowed to run on shared hosts.&lt;/li&gt;
&lt;li&gt;Whether containers run as root by default.&lt;/li&gt;
&lt;li&gt;Whether unnecessary capabilities are granted.&lt;/li&gt;
&lt;li&gt;Whether seccomp policies are too broad.&lt;/li&gt;
&lt;li&gt;Whether multi-tenant workloads should move to gVisor, Kata Containers, Firecracker microVM, dedicated virtual machines, or dedicated nodes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CI/CD platforms deserve special attention. Build jobs naturally run external code, dependency install scripts, test scripts, and temporary binaries. If these jobs share hosts with long-running services, one local privilege escalation can affect much larger infrastructure.&lt;/p&gt;
&lt;h2 id=&#34;shared-impact-patches-must-reach-the-running-kernel&#34;&gt;Shared Impact: Patches Must Reach the Running Kernel
&lt;/h2&gt;&lt;p&gt;A common Linux kernel patching mistake is assuming that an installed package means the machine is running the fixed kernel.&lt;/p&gt;
&lt;p&gt;At minimum, operations teams should verify three things:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Check the currently running kernel.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dpkg -l &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep linux-image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or on RHEL-family distributions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -qa &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep kernel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Check installed kernel packages.&lt;/p&gt;
&lt;p&gt;Finally, confirm that the machine has rebooted into the fixed kernel. For core services that cannot reboot immediately, evaluate livepatch, hot patching, or short-term isolation, but do not treat temporary mitigation as the final fix.&lt;/p&gt;
&lt;h2 id=&#34;shared-impact-attack-surface-reduction-must-be-specific&#34;&gt;Shared Impact: Attack Surface Reduction Must Be Specific
&lt;/h2&gt;&lt;p&gt;These vulnerabilities remind us that Linux hardening cannot stop at &amp;ldquo;update the system&amp;rdquo; and &amp;ldquo;enable a firewall.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;More specific checks include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether AF_ALG / &lt;code&gt;algif_aead&lt;/code&gt; is used by business workloads.&lt;/li&gt;
&lt;li&gt;Whether XFRM, ESP, ESP-in-TCP, and IPsec are required by VPNs, tunnels, or security gateways.&lt;/li&gt;
&lt;li&gt;Whether RxRPC is needed.&lt;/li&gt;
&lt;li&gt;Whether unprivileged user namespaces must be enabled.&lt;/li&gt;
&lt;li&gt;Whether containers can create overly broad socket types.&lt;/li&gt;
&lt;li&gt;Whether ptrace access policies are too loose.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the business does not need certain capabilities, evaluate disabling modules, adjusting sysctl settings, tightening seccomp, and reducing capabilities. Do not blindly copy commands into production. Inventory dependencies first, then roll out changes gradually.&lt;/p&gt;
&lt;h2 id=&#34;suggested-response-order&#34;&gt;Suggested Response Order
&lt;/h2&gt;&lt;p&gt;First, prioritize machines where local code execution is exposed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Container hosts.&lt;/li&gt;
&lt;li&gt;CI/CD runners.&lt;/li&gt;
&lt;li&gt;Jump hosts.&lt;/li&gt;
&lt;li&gt;Multi-user servers.&lt;/li&gt;
&lt;li&gt;Hosts running external-facing services.&lt;/li&gt;
&lt;li&gt;Systems running untrusted plugins, scripts, or extensions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Second, confirm distribution advisories and the actual running kernel. Do not rely only on upstream version numbers. Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, SUSE, openEuler, and other distributions may backport security fixes.&lt;/p&gt;
&lt;p&gt;Third, tighten container runtime policies. Prefer non-root users, minimal capabilities, &lt;code&gt;no-new-privileges&lt;/code&gt;, read-only filesystems, and explicit seccomp plus AppArmor or SELinux policies.&lt;/p&gt;
&lt;p&gt;Fourth, review key and credential exposure. Especially for environments affected by ssh-keysign-pwn, evaluate whether SSH host keys, &lt;code&gt;/etc/shadow&lt;/code&gt;, jump-host credentials, and CI secrets need rotation.&lt;/p&gt;
&lt;p&gt;Fifth, improve monitoring. Watch for abnormal root shells, suspicious local LPE PoCs, critical file changes, abnormal ptrace behavior, container processes accessing host paths, and unusual network connections from CI nodes.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;The point of these four events is not &amp;ldquo;Linux is insecure.&amp;rdquo; The point is that default trust is no longer enough.&lt;/p&gt;
&lt;p&gt;Linux remains transparent, fixable, configurable, and hardenable. But in environments where containers, CI, multi-tenancy, and AI-driven code execution are increasingly common, a low-privilege execution point can no longer be treated as a minor issue. If the kernel contains exploitable local privilege escalation or sensitive information disclosure bugs, a partial intrusion can become host control, credential exposure, or lateral movement.&lt;/p&gt;
&lt;p&gt;A more realistic approach is to treat these four events as a reminder: patch quickly, confirm rebooted kernels, enable modules only when needed, tighten containers, make key rotation possible, and reassess isolation levels for multi-tenant workloads.&lt;/p&gt;
&lt;p&gt;Further Reading on This Site:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/&#34; &gt;Copy Fail CVE-2026-31431: Container Escape Risk in a Linux Kernel File-Copy Path&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/&#34; &gt;Dirty Frag CVE-2026-43284: Linux Local Privilege Escalation Risk and Mitigation Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/&#34; &gt;Fragnesia (CVE-2026-46300): Linux Kernel Local Privilege Escalation Impact and Mitigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/17/ssh-keysign-pwn-cve-2026-46333/&#34; &gt;ssh-keysign-pwn (CVE-2026-46333): Linux Local Information Disclosure, SSH Host Keys, and /etc/shadow Risk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Next.js High-Severity SSRF CVE-2026-44578: Impact Scope and Upgrade Guidance</title>
        <link>https://knightli.com/en/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</link>
        <pubDate>Sun, 17 May 2026 17:27:13 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</guid>
        <description>&lt;p&gt;Next.js disclosed a high-severity SSRF vulnerability in May 2026: CVE-2026-44578.&lt;/p&gt;
&lt;p&gt;According to the GitHub / Vercel advisory &lt;code&gt;GHSA-c4j6-fc7j-m34r&lt;/code&gt; and the NVD record, the issue affects self-hosted Next.js applications that use the built-in Node.js server and are exposed to malicious WebSocket upgrade requests. An attacker may cause the server to proxy requests to arbitrary internal or external destinations, exposing internal services or cloud metadata endpoints.&lt;/p&gt;
&lt;p&gt;Vercel-hosted deployments are not affected. The fixed versions are &lt;code&gt;15.5.16&lt;/code&gt; and &lt;code&gt;16.2.5&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;short-version&#34;&gt;Short Version
&lt;/h2&gt;&lt;p&gt;If you run Next.js on your own servers, containers, Kubernetes, ECS, VPS, bare metal, or a self-managed PaaS, check this first.&lt;/p&gt;
&lt;p&gt;Affected ranges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 13.4.13 &amp;lt; 15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 16.0.0 &amp;lt; 16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unaffected or lower-risk cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Applications deployed on Vercel.&lt;/li&gt;
&lt;li&gt;Applications upgraded to &lt;code&gt;15.5.16&lt;/code&gt;, &lt;code&gt;16.2.5&lt;/code&gt;, or later.&lt;/li&gt;
&lt;li&gt;Deployments that do not expose the built-in Node.js server.&lt;/li&gt;
&lt;li&gt;Environments where reverse proxies or load balancers already block unnecessary WebSocket upgrades and outbound access is restricted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recommended response order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirm the &lt;code&gt;next&lt;/code&gt; version actually running in production.&lt;/li&gt;
&lt;li&gt;Upgrade self-hosted applications to a patched version as soon as possible.&lt;/li&gt;
&lt;li&gt;If you cannot upgrade immediately, block unnecessary WebSocket upgrades at the reverse proxy or load balancer.&lt;/li&gt;
&lt;li&gt;Restrict application servers from reaching cloud metadata, internal admin panels, and sensitive internal services.&lt;/li&gt;
&lt;li&gt;Review recent WebSocket upgrade requests and internal access logs.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;what-the-vulnerability-is&#34;&gt;What the Vulnerability Is
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 is a Server-Side Request Forgery vulnerability, or SSRF.&lt;/p&gt;
&lt;p&gt;The core risk of SSRF is that an attacker does not access internal systems directly. Instead, they make your server send requests on their behalf. Servers often sit closer to private networks, cloud platforms, and internal services, so if a server becomes a proxy, it may reach resources the attacker could not otherwise access.&lt;/p&gt;
&lt;p&gt;In this Next.js case, the issue is in the WebSocket upgrade handling path. The advisory says that self-hosted applications using the built-in Node.js server can be made to proxy requests to arbitrary internal or external destinations through crafted WebSocket upgrade requests.&lt;/p&gt;
&lt;p&gt;Risk areas include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internal HTTP services.&lt;/li&gt;
&lt;li&gt;Admin panels.&lt;/li&gt;
&lt;li&gt;Cloud metadata endpoints.&lt;/li&gt;
&lt;li&gt;Container or cluster-internal services.&lt;/li&gt;
&lt;li&gt;Internal APIs that only the server can reach.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The CVSS v3.1 score is &lt;code&gt;8.6 High&lt;/code&gt;, with this vector:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That means the attack is network reachable, low complexity, requires no privileges or user interaction, and primarily affects confidentiality.&lt;/p&gt;
&lt;h2 id=&#34;why-self-hosting-is-riskier&#34;&gt;Why Self-Hosting Is Riskier
&lt;/h2&gt;&lt;p&gt;The advisory explicitly states that Vercel-hosted deployments are not affected.&lt;/p&gt;
&lt;p&gt;The focus is self-hosted deployments. Their network environments vary widely: some expose the origin server directly, some sit behind Nginx, Traefik, Ingress, Cloudflare, ALB, or a custom gateway, and some run in cloud VMs, container networks, or Kubernetes clusters.&lt;/p&gt;
&lt;p&gt;If outbound traffic is not restricted, the Next.js process may be able to reach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cloud metadata addresses such as &lt;code&gt;169.254.169.254&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Private IP ranges.&lt;/li&gt;
&lt;li&gt;Services exposed only inside a VPC.&lt;/li&gt;
&lt;li&gt;Internal Redis, Elasticsearch, Prometheus, Grafana, and similar components.&lt;/li&gt;
&lt;li&gt;Kubernetes Services, Pods, or management endpoints.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the danger is not only in Next.js itself. It depends on what the Next.js server can access from its network position.&lt;/p&gt;
&lt;h2 id=&#34;how-to-check-exposure&#34;&gt;How to Check Exposure
&lt;/h2&gt;&lt;p&gt;First, check the &lt;code&gt;next&lt;/code&gt; version.&lt;/p&gt;
&lt;p&gt;Run this in the project directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm ls next
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm why next
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also inspect:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package-lock.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat pnpm-lock.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat yarn.lock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If the version falls in these ranges, you need to act:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 13.4.13 &amp;lt; 15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 16.0.0 &amp;lt; 16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Second, check the deployment model.&lt;/p&gt;
&lt;p&gt;Pay close attention to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Production services started with &lt;code&gt;next start&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Custom Node.js servers hosting Next.js.&lt;/li&gt;
&lt;li&gt;Docker images that start a Next.js server directly.&lt;/li&gt;
&lt;li&gt;Kubernetes / ECS / VPS / bare-metal self-hosting.&lt;/li&gt;
&lt;li&gt;A Next.js origin still reachable behind a reverse proxy.&lt;/li&gt;
&lt;li&gt;Application networks that can reach internal services or cloud metadata.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the application is deployed on Vercel, the official advisory says it is not affected by this vulnerability. Still, keep Next.js updated, because adjacent releases may contain other security fixes.&lt;/p&gt;
&lt;h2 id=&#34;what-version-to-upgrade-to&#34;&gt;What Version to Upgrade To
&lt;/h2&gt;&lt;p&gt;The official patched versions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Upgrade example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install next@15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or, if you are on 16.x:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install next@16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;pnpm:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add next@15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add next@16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then rebuild and redeploy:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or follow your CI/CD process to rebuild and publish the Docker image.&lt;/p&gt;
&lt;p&gt;If your project is pinned to 14.x or 15.x, do not rush into a major upgrade to 16.x just for this fix. A safer path is to upgrade to the &lt;code&gt;15.5.16&lt;/code&gt; patch line first, test and release, then plan a major-version migration separately.&lt;/p&gt;
&lt;h2 id=&#34;temporary-mitigations&#34;&gt;Temporary Mitigations
&lt;/h2&gt;&lt;p&gt;If you cannot upgrade immediately, the advisory&amp;rsquo;s core guidance is: do not expose the origin server directly to untrusted networks; block WebSocket upgrades at the reverse proxy or load balancer if they are not required; and restrict outbound access from the origin where possible.&lt;/p&gt;
&lt;p&gt;Consider these mitigations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Do not expose the Next.js origin server directly.&lt;/li&gt;
&lt;li&gt;Filter unnecessary WebSocket upgrades at Nginx, Ingress, ALB, Cloudflare, or similar entry points.&lt;/li&gt;
&lt;li&gt;If the business does not use WebSockets, reject requests with upgrade semantics.&lt;/li&gt;
&lt;li&gt;Apply egress restrictions to block access to cloud metadata and sensitive internal ranges.&lt;/li&gt;
&lt;li&gt;Use safer cloud metadata modes where available, such as token-required metadata services.&lt;/li&gt;
&lt;li&gt;Add authentication and network isolation around admin panels, databases, caches, and monitoring systems.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Reverse proxy rules are temporary mitigations, not a replacement for upgrading. Framework vulnerabilities should ultimately be fixed by moving to patched versions.&lt;/p&gt;
&lt;h2 id=&#34;operational-review&#34;&gt;Operational Review
&lt;/h2&gt;&lt;p&gt;Because this issue mainly affects confidentiality, the key question is whether the server was used to reach internal resources.&lt;/p&gt;
&lt;p&gt;Review:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web logs for abnormal &lt;code&gt;Upgrade&lt;/code&gt;, &lt;code&gt;Connection&lt;/code&gt;, &lt;code&gt;Host&lt;/code&gt;, paths, and source IPs.&lt;/li&gt;
&lt;li&gt;Reverse proxy or load balancer logs for unusual WebSocket upgrade requests.&lt;/li&gt;
&lt;li&gt;Abnormal outbound connections near the Next.js service.&lt;/li&gt;
&lt;li&gt;Cloud metadata access logs or credential usage records.&lt;/li&gt;
&lt;li&gt;Unusual access to internal admin services, monitoring, caches, or search systems.&lt;/li&gt;
&lt;li&gt;Abnormal IAM temporary credential, access key, or token usage.&lt;/li&gt;
&lt;li&gt;Suspicious processes, downloads, or lateral movement on containers or hosts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If exploitation is suspected:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preserve logs and evidence.&lt;/li&gt;
&lt;li&gt;Rotate potentially exposed cloud credentials, API keys, database passwords, and session secrets.&lt;/li&gt;
&lt;li&gt;Review recent cloud account API calls.&lt;/li&gt;
&lt;li&gt;Check internal service access records.&lt;/li&gt;
&lt;li&gt;Rebuild affected containers or hosts.&lt;/li&gt;
&lt;li&gt;Revisit egress controls and metadata protection.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;not-the-same-as-the-reactnextjs-rce&#34;&gt;Not the Same as the React/Next.js RCE
&lt;/h2&gt;&lt;p&gt;One common source of confusion: CVE-2026-44578 is a Next.js WebSocket upgrade SSRF, not the earlier React Server Components RCE.&lt;/p&gt;
&lt;p&gt;Its core impact is making the server request attacker-chosen internal or external addresses. The main risk is information exposure and internal resource probing.&lt;/p&gt;
&lt;p&gt;React Server Components RCE issues are code execution risks, with different consequences and patch ranges.&lt;/p&gt;
&lt;p&gt;So do not stop at the headline &amp;ldquo;Next.js has a vulnerability.&amp;rdquo; Map the exact CVE to the affected versions, deployment model, and fixed versions.&lt;/p&gt;
&lt;h2 id=&#34;teams-that-should-prioritize-this&#34;&gt;Teams That Should Prioritize This
&lt;/h2&gt;&lt;p&gt;Highest priority:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Self-hosted Next.js production sites.&lt;/li&gt;
&lt;li&gt;Deployments on cloud VMs, containers, Kubernetes, or internal networks.&lt;/li&gt;
&lt;li&gt;Application servers that can access cloud metadata services.&lt;/li&gt;
&lt;li&gt;Application servers that can reach internal admin panels, databases, caches, or monitoring systems.&lt;/li&gt;
&lt;li&gt;Directly exposed &lt;code&gt;next start&lt;/code&gt; origin servers.&lt;/li&gt;
&lt;li&gt;Older &lt;code&gt;next&lt;/code&gt; versions with unclear upgrade ownership.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lower priority:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Applications fully deployed on Vercel.&lt;/li&gt;
&lt;li&gt;Applications already upgraded to patched versions.&lt;/li&gt;
&lt;li&gt;Origins not directly exposed, with entry layers blocking unnecessary WebSocket upgrades.&lt;/li&gt;
&lt;li&gt;Strict outbound network control preventing access to sensitive internal resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lower priority does not mean &amp;ldquo;do not upgrade.&amp;rdquo; Next.js is a high-exposure framework, and long-stale framework versions accumulate risk quickly.&lt;/p&gt;
&lt;h2 id=&#34;developer-checklist&#34;&gt;Developer Checklist
&lt;/h2&gt;&lt;p&gt;Use this checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Confirm the &lt;code&gt;next&lt;/code&gt; version in every repository.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Identify all self-hosted deployments, not only Vercel projects.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Mark services using &lt;code&gt;next start&lt;/code&gt; or the built-in Node.js server.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Upgrade to &lt;code&gt;15.5.16&lt;/code&gt;, &lt;code&gt;16.2.5&lt;/code&gt;, or later.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Rebuild and publish production images.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Block unnecessary WebSocket upgrades at the entry layer.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Restrict application server access to cloud metadata and sensitive internal ranges.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Review recent abnormal upgrade requests and outbound access.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Rotate credentials that may have been exposed.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add Next.js security updates to the dependency update process.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 is a high-severity Next.js SSRF vulnerability that deserves prompt attention.&lt;/p&gt;
&lt;p&gt;It does not affect Vercel-hosted deployments, but it covers a broad range of self-hosted Next.js applications: from &lt;code&gt;13.4.13&lt;/code&gt; up to before &lt;code&gt;15.5.16&lt;/code&gt;, and from &lt;code&gt;16.0.0&lt;/code&gt; up to before &lt;code&gt;16.2.5&lt;/code&gt;. The trigger is the WebSocket upgrade handling path. An attacker may cause the server to proxy requests to internal or external addresses, potentially exposing internal services or cloud metadata endpoints.&lt;/p&gt;
&lt;p&gt;The direct fix is to upgrade to &lt;code&gt;15.5.16&lt;/code&gt; or &lt;code&gt;16.2.5&lt;/code&gt;. Temporary mitigations are to avoid exposing the origin server directly, block unnecessary WebSocket upgrades, and restrict outbound access from the application server.&lt;/p&gt;
&lt;p&gt;For operations teams, the important point is not only the CVE score. It is what your Next.js server can reach from its network position. With SSRF, the real impact often depends on internal resources and cloud permissions behind the server.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Advisory: GHSA-c4j6-fc7j-m34r&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-44578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD: CVE-2026-44578&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security.snyk.io/vuln/SNYK-JS-NEXT-16638682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snyk: SNYK-JS-NEXT-16638682&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ssh-keysign-pwn (CVE-2026-46333): Linux Local Information Disclosure, SSH Host Keys, and /etc/shadow Risk</title>
        <link>https://knightli.com/en/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</link>
        <pubDate>Sun, 17 May 2026 09:29:03 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</guid>
        <description>&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt; refers to a set of exploitation paths around a logic flaw in Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt;, assigned &lt;code&gt;CVE-2026-46333&lt;/code&gt;. It is not a remote unauthenticated flaw and it does not directly hand out a root shell, but the risk is still high: a low-privileged local user may read root-owned sensitive files that should be inaccessible, such as SSH host private keys or &lt;code&gt;/etc/shadow&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For operations teams, the priority is not reproducing a PoC. The priority is to identify affected machines, upgrade the kernel, reboot into the fixed kernel, and rotate SSH host keys or reset passwords when necessary.&lt;/p&gt;
&lt;h2 id=&#34;bottom-line&#34;&gt;Bottom line
&lt;/h2&gt;&lt;p&gt;This vulnerability deserves high handling priority for four reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It can be triggered by a low-privileged local user and does not require root.&lt;/li&gt;
&lt;li&gt;Public PoC code is available, lowering the exploitation barrier.&lt;/li&gt;
&lt;li&gt;The potential targets are not ordinary files, but SSH host private keys and &lt;code&gt;/etc/shadow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The fix requires a kernel patch and reboot; installing packages without rebooting is not enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your servers have multiple users, local shell access, shared hosting, CI runners, container hosts, student lab machines, bastion hosts, or any local users you do not fully trust, handle this first.&lt;/p&gt;
&lt;h2 id=&#34;what-the-vulnerability-is&#34;&gt;What the vulnerability is
&lt;/h2&gt;&lt;p&gt;Qualys disclosed details on oss-security on May 15, 2026. They had previously reported a Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; logic issue to &lt;code&gt;security@kernel.org&lt;/code&gt;, and the upstream fix had already been merged by Linus. Public exploit code then appeared, so Qualys posted the details to oss-security.&lt;/p&gt;
&lt;p&gt;The Linux kernel CVE team later assigned &lt;code&gt;CVE-2026-46333&lt;/code&gt;. The NVD page lists kernel.org as the source, and the description maps to the kernel commit &lt;code&gt;ptrace: slightly saner &#39;get_dumpable()&#39; logic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In simple terms, the bug sits in a process exit path. When some privileged processes are exiting, ptrace-related access-check logic in the kernel may bypass a dumpable check that should have applied because the target task no longer has an &lt;code&gt;mm&lt;/code&gt;. An attacker can race a very narrow timing window and obtain file descriptors that the exiting privileged process still has open.&lt;/p&gt;
&lt;p&gt;That is why the issue is called &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;: one public exploitation path uses &lt;code&gt;ssh-keysign&lt;/code&gt; to read SSH host private keys.&lt;/p&gt;
&lt;h2 id=&#34;why-ssh-host-private-keys-and-etcshadow-may-be-exposed&#34;&gt;Why SSH host private keys and /etc/shadow may be exposed
&lt;/h2&gt;&lt;p&gt;At its core, this is a local information disclosure issue. It abuses a window during privileged process exit where the memory descriptor is gone, but file descriptors have not yet been closed.&lt;/p&gt;
&lt;p&gt;The AlmaLinux advisory explains the risk clearly: if a privileged program opened sensitive files before dropping privileges, and an attacker successfully grabs the corresponding file descriptor during the exit window, those sensitive files may become readable.&lt;/p&gt;
&lt;p&gt;Two commonly discussed targets are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ssh-keysign&lt;/code&gt;: may involve SSH host private keys such as &lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chage&lt;/code&gt;: may involve &lt;code&gt;/etc/shadow&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If SSH host private keys leak, an attacker may impersonate the host and undermine SSH host identity trust. If &lt;code&gt;/etc/shadow&lt;/code&gt; leaks, an attacker can crack password hashes offline and expand the compromise later.&lt;/p&gt;
&lt;p&gt;That is why this should be treated as high priority even though it is not a &amp;ldquo;direct root shell&amp;rdquo; bug.&lt;/p&gt;
&lt;h2 id=&#34;how-to-assess-exposure&#34;&gt;How to assess exposure
&lt;/h2&gt;&lt;p&gt;From the upstream perspective, this is a Linux kernel vulnerability. NVD records show the issue entered the NVD dataset on May 15, 2026, with no CVSS score assigned at that time.&lt;/p&gt;
&lt;p&gt;Distribution status should be checked against each vendor&amp;rsquo;s own advisory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AlmaLinux 8, 9, and 10 published guidance and updated it on May 16, 2026 to say patched kernels had reached production repositories.&lt;/li&gt;
&lt;li&gt;Debian Security Tracker lists vulnerable and fixed states, plus fixed versions, for bullseye, bookworm, trixie, sid, and other branches.&lt;/li&gt;
&lt;li&gt;For other distributions, check the official security pages or repositories for Ubuntu, Red Hat, SUSE, Arch, Alpine, and so on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do not judge safety only by the upstream kernel version. Distributions backport fixes, so the same upstream-looking version number may mean different patch states across distributions.&lt;/p&gt;
&lt;h2 id=&#34;which-machines-to-prioritize&#34;&gt;Which machines to prioritize
&lt;/h2&gt;&lt;p&gt;Prioritize remediation in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Multi-user servers and shared hosts.&lt;/li&gt;
&lt;li&gt;Bastion hosts, teaching machines, development machines, and other systems with normal shell accounts.&lt;/li&gt;
&lt;li&gt;CI runners, build machines, and hosting platform nodes.&lt;/li&gt;
&lt;li&gt;Container and virtualization hosts, especially where not-fully-trusted workloads coexist.&lt;/li&gt;
&lt;li&gt;Public service machines. The vulnerability needs local access, but the risk compounds once a web bug, RCE, weak password, or similar path gives an attacker a low-privileged foothold.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pure single-user desktop systems are lower risk, but they should still be updated. Local low-privileged code execution is common on desktops through browsers, developer tools, scripts, and third-party software.&lt;/p&gt;
&lt;h2 id=&#34;remediation-guidance&#34;&gt;Remediation guidance
&lt;/h2&gt;&lt;p&gt;The preferred fix is to install the fixed kernel supplied by your distribution and reboot.&lt;/p&gt;
&lt;p&gt;Commands differ by distribution, but the principle is the same:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Refresh package metadata.&lt;/li&gt;
&lt;li&gt;Install the kernel package containing the &lt;code&gt;CVE-2026-46333&lt;/code&gt; fix.&lt;/li&gt;
&lt;li&gt;Reboot into the new kernel.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;uname -r&lt;/code&gt; and the distribution security advisory to verify the running kernel is fixed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The AlmaLinux advisory says fixed kernels are available in production repositories and users can run the usual &lt;code&gt;dnf upgrade&lt;/code&gt; and reboot. The Debian tracker also lists fixed versions for multiple branches.&lt;/p&gt;
&lt;p&gt;Important: if you only install a new kernel package but do not reboot, the old vulnerable kernel is still running.&lt;/p&gt;
&lt;h2 id=&#34;temporary-mitigation-tighten-ptrace_scope&#34;&gt;Temporary mitigation: tighten ptrace_scope
&lt;/h2&gt;&lt;p&gt;If you cannot reboot immediately, tighten Yama &lt;code&gt;ptrace_scope&lt;/code&gt; first.&lt;/p&gt;
&lt;p&gt;Qualys confirmed in a follow-up oss-security reply that setting &lt;code&gt;/proc/sys/kernel/yama/ptrace_scope&lt;/code&gt; to &lt;code&gt;2&lt;/code&gt; (admin-only attach) or &lt;code&gt;3&lt;/code&gt; (no attach) blocks the public exploitation paths they know about. They also noted that other theoretical exploitation paths may exist, so this is only a mitigation, not a fix.&lt;/p&gt;
&lt;p&gt;Temporary setting:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w kernel.yama.ptrace_scope&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Persistent setting:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;kernel.yama.ptrace_scope = 3&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/sysctl.d/99-ssh-keysign-pwn.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;ptrace_scope=3&lt;/code&gt; disables ptrace attach and may affect debugging workflows such as &lt;code&gt;gdb&lt;/code&gt; and &lt;code&gt;strace -p&lt;/code&gt;. If production debugging is required, evaluate &lt;code&gt;2&lt;/code&gt;. Either way, schedule the kernel upgrade and reboot as soon as possible.&lt;/p&gt;
&lt;h2 id=&#34;should-ssh-host-keys-be-rotated&#34;&gt;Should SSH host keys be rotated?
&lt;/h2&gt;&lt;p&gt;Use a conservative approach if the machine had any of the following conditions around the disclosure window:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Untrusted local users.&lt;/li&gt;
&lt;li&gt;Shared hosting or container/CI multi-tenant environments.&lt;/li&gt;
&lt;li&gt;Web vulnerabilities, weak passwords, supply-chain scripts, or other paths that could give an attacker a local foothold.&lt;/li&gt;
&lt;li&gt;Suspicious local processes, unusual debugging behavior, or public PoC files in logs.&lt;/li&gt;
&lt;li&gt;Long exposure before patching.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conservative handling includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rotate SSH host keys after patching and rebooting.&lt;/li&gt;
&lt;li&gt;Update known-host fingerprint management systems.&lt;/li&gt;
&lt;li&gt;Notify automation that depends on the host fingerprint.&lt;/li&gt;
&lt;li&gt;Review SSH connection alerts so legitimate fingerprint changes are not mistaken for man-in-the-middle attacks, and real risks are not ignored.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If &lt;code&gt;/etc/shadow&lt;/code&gt; may have leaked, also evaluate password resets, weak-password bans, and whether old hashes could be cracked offline.&lt;/p&gt;
&lt;h2 id=&#34;what-to-monitor&#34;&gt;What to monitor
&lt;/h2&gt;&lt;p&gt;The exploitation window is short, so traditional logs may not capture everything. Still, watch for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Files such as &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;, &lt;code&gt;chage_pwn&lt;/code&gt;, or similar PoC artifacts in normal user directories.&lt;/li&gt;
&lt;li&gt;Suspicious compilation activity, such as unfamiliar C programs compiled in a short window.&lt;/li&gt;
&lt;li&gt;Signs of abnormal access to &lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt; or &lt;code&gt;/etc/shadow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Unusual &lt;code&gt;pidfd_getfd&lt;/code&gt;, &lt;code&gt;ptrace&lt;/code&gt;, or debugger-related activity.&lt;/li&gt;
&lt;li&gt;External reports of unexpected SSH host fingerprint changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These signals cannot prove exploitation occurred, and their absence cannot prove it did not. The real priorities remain patching, rebooting, credential rotation, and risk isolation.&lt;/p&gt;
&lt;h2 id=&#34;common-misconceptions&#34;&gt;Common misconceptions
&lt;/h2&gt;&lt;p&gt;First: this is not an OpenSSH remote vulnerability. The name includes &lt;code&gt;ssh-keysign&lt;/code&gt;, but the root cause is Linux kernel ptrace access-check logic, not the remote authentication path in &lt;code&gt;sshd&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Second: no local users does not mean no risk. The bug does require local execution, but real attack chains often obtain a low-privileged local foothold first through web services, CI, scripts, weak passwords, or container escape paths.&lt;/p&gt;
&lt;p&gt;Third: setting &lt;code&gt;ptrace_scope&lt;/code&gt; is not enough. It is a temporary mitigation, not the root fix. Kernel update and reboot are still required.&lt;/p&gt;
&lt;p&gt;Fourth: &amp;ldquo;no root shell&amp;rdquo; does not mean &amp;ldquo;no incident.&amp;rdquo; Exposure of SSH host private keys or &lt;code&gt;/etc/shadow&lt;/code&gt; can be enough to enable lateral movement, host impersonation, and offline password cracking.&lt;/p&gt;
&lt;h2 id=&#34;response-checklist&#34;&gt;Response checklist
&lt;/h2&gt;&lt;p&gt;Suggested order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Inventory affected Linux hosts, especially multi-user and shared environments.&lt;/li&gt;
&lt;li&gt;Check distribution security advisories and identify the fixed kernel version.&lt;/li&gt;
&lt;li&gt;Install the fixed kernel and reboot.&lt;/li&gt;
&lt;li&gt;For machines that cannot reboot immediately, set &lt;code&gt;kernel.yama.ptrace_scope=2&lt;/code&gt; or &lt;code&gt;3&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After remediation, verify the running kernel version.&lt;/li&gt;
&lt;li&gt;Rotate SSH host keys on high-risk machines.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;/etc/shadow&lt;/code&gt; exposure is suspected, evaluate password resets and account audits.&lt;/li&gt;
&lt;li&gt;Check for public PoCs, unusual compilation, and suspicious local debugging behavior.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt; (&lt;code&gt;CVE-2026-46333&lt;/code&gt;) is a local information disclosure vulnerability rooted in Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; logic. It does not allow a remote attacker to break in directly and it does not directly grant a root shell, but it may let a low-privileged local user read high-value sensitive files, making it especially important in multi-user, shared hosting, CI, and container-host environments.&lt;/p&gt;
&lt;p&gt;The reliable fix is to upgrade to a distribution-provided fixed kernel and reboot. &lt;code&gt;ptrace_scope=2/3&lt;/code&gt; can be used as a temporary mitigation, but it does not replace patching. Critical hosts exposed during the risk window should also be evaluated for SSH host key rotation and password risk.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security: Qualys disclosure of the __ptrace_may_access() logic issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security: Qualys confirms the CVE-2026-46333 identifier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security: Qualys confirms ptrace_scope temporary mitigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD: CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security-tracker.debian.org/tracker/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Debian Security Tracker: CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/he/blog/2026-05-15-ssh-keysign-pwn-cve-2026-46333/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AlmaLinux: ssh-keysign-pwn (CVE-2026-46333) Patches Released&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/torvalds/linux/commit/31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux upstream fix: ptrace get_dumpable() logic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>How to Check CVE-2026-42945: Nginx Rift Trigger Conditions, Version Checks, and Upgrade Advice</title>
        <link>https://knightli.com/en/2026/05/15/nginx-rift-cve-2026-42945/</link>
        <pubDate>Fri, 15 May 2026 17:55:42 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/nginx-rift-cve-2026-42945/</guid>
        <description>&lt;p&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt; is a security vulnerability in NGINX Open Source and NGINX Plus. It is also being referred to as &lt;code&gt;Nginx Rift&lt;/code&gt;. The issue is in &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt;, and the vulnerability type is heap-based buffer overflow.&lt;/p&gt;
&lt;p&gt;News like this is easy to turn into headlines such as &amp;ldquo;hidden for 18 years&amp;rdquo;, &amp;ldquo;remote control without a password&amp;rdquo;, or &amp;ldquo;30% of servers affected&amp;rdquo;. Those claims travel well, but when reading the patch notes and NVD description, it is better to separate the risk into concrete pieces: the issue is serious, and it does not require a logged-in account; but not every Nginx instance is automatically compromised. Triggering it requires specific rewrite configuration and request conditions.&lt;/p&gt;
&lt;h2 id=&#34;start-with-the-official-description&#34;&gt;Start with the official description
&lt;/h2&gt;&lt;p&gt;The NVD description of &lt;code&gt;CVE-2026-42945&lt;/code&gt; can be summarized as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It affects NGINX Plus and NGINX Open Source.&lt;/li&gt;
&lt;li&gt;The vulnerability is in &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The issue may be triggered when a &lt;code&gt;rewrite&lt;/code&gt; directive is followed by a &lt;code&gt;rewrite&lt;/code&gt;, &lt;code&gt;if&lt;/code&gt;, or &lt;code&gt;set&lt;/code&gt; directive, unnamed PCRE capture groups such as &lt;code&gt;$1&lt;/code&gt; and &lt;code&gt;$2&lt;/code&gt; are used, and the replacement string contains a question mark &lt;code&gt;?&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;An unauthenticated attacker can send a crafted request to trigger the vulnerability.&lt;/li&gt;
&lt;li&gt;The result may be a heap buffer overflow and restart of an NGINX worker process.&lt;/li&gt;
&lt;li&gt;If ASLR is disabled on the system, code execution is possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;F5, as the CNA, gives the following scores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CVSS v4.0: &lt;code&gt;9.2&lt;/code&gt;, Critical.&lt;/li&gt;
&lt;li&gt;CVSS v3.1: &lt;code&gt;8.1&lt;/code&gt;, High.&lt;/li&gt;
&lt;li&gt;CWE: &lt;code&gt;CWE-122 Heap-based Buffer Overflow&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So this is not a routine &amp;ldquo;bad config causes a 404&amp;rdquo; issue. It is a memory safety vulnerability covered by an official Nginx security fix.&lt;/p&gt;
&lt;h2 id=&#34;which-claims-need-context&#34;&gt;Which claims need context
&lt;/h2&gt;&lt;p&gt;First, &amp;ldquo;no password required&amp;rdquo; is best understood as unauthenticated attack. In other words, the attacker does not need to log in to an Nginx admin panel, obtain SSH access, or hold an application account. But that does not mean every public-facing Nginx instance can be casually taken over.&lt;/p&gt;
&lt;p&gt;Second, &amp;ldquo;direct remote control&amp;rdquo; depends on conditions. The more careful official framing is that the vulnerability can cause worker process restarts; on systems where ASLR is disabled, code execution is a possible outcome. On environments with ASLR enabled, proper distribution hardening, and restricted runtime privileges, the exploitation path becomes more complex.&lt;/p&gt;
&lt;p&gt;Third, &amp;ldquo;30% of servers affected&amp;rdquo; should not be treated as &amp;ldquo;all Nginx market share equals exposed attack surface&amp;rdquo;. Real exposure depends on the version, whether the affected module is present, whether the specific rewrite configuration exists, whether the distribution has already backported the patch, and how hardened the Nginx runtime environment is.&lt;/p&gt;
&lt;p&gt;The more accurate approach is simple: if you run Nginx in production, check it quickly; but do not decide whether you are affected based only on a headline percentage.&lt;/p&gt;
&lt;h2 id=&#34;how-to-determine-the-affected-scope&#34;&gt;How to determine the affected scope
&lt;/h2&gt;&lt;p&gt;According to nginx.org release information, the &lt;code&gt;nginx-1.30.1&lt;/code&gt; stable release and &lt;code&gt;nginx-1.31.0&lt;/code&gt; mainline release published on May 13, 2026 include multiple security fixes, including the &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt; buffer overflow tracked as &lt;code&gt;CVE-2026-42945&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you use official Nginx source builds or official packages, focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NGINX Open Source stable: upgrade to &lt;code&gt;1.30.1&lt;/code&gt; or later.&lt;/li&gt;
&lt;li&gt;NGINX Open Source mainline: upgrade to &lt;code&gt;1.31.0&lt;/code&gt; or later.&lt;/li&gt;
&lt;li&gt;NGINX Plus: check the fixed version for your F5-supported branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Alpine, container images, Plesk, control panels, Ingress Controller, or cloud-provider managed components, do not rely only on the upstream version shown by &lt;code&gt;nginx -v&lt;/code&gt;. Many distributions backport security fixes into older package versions. The version string may look old while the patch is already included.&lt;/p&gt;
&lt;h2 id=&#34;one-minute-urgency-check&#34;&gt;One-minute urgency check
&lt;/h2&gt;&lt;p&gt;Use these questions for a quick risk tiering:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Is this Nginx instance directly exposed to the internet, or is it part of an API Gateway, reverse proxy, load balancer, or Ingress entry layer?&lt;/li&gt;
&lt;li&gt;Are you using official Nginx packages, source builds, third-party control panels, or container images without having confirmed the &lt;code&gt;CVE-2026-42945&lt;/code&gt; fix status?&lt;/li&gt;
&lt;li&gt;Does the configuration contain complex &lt;code&gt;rewrite&lt;/code&gt; rules, especially consecutive &lt;code&gt;rewrite&lt;/code&gt;, &lt;code&gt;if&lt;/code&gt;, or &lt;code&gt;set&lt;/code&gt; directives and unnamed captures such as &lt;code&gt;$1&lt;/code&gt; and &lt;code&gt;$2&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Does any rewrite target include request paths, query parameters, or other user-controlled input?&lt;/li&gt;
&lt;li&gt;Is the system weakly hardened, for example with ASLR disabled, overly privileged workers, or overly broad container permissions?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the first two items apply and rewrite configuration has not yet been reviewed, treat it as high priority. Public entry points, shared environments, Kubernetes Ingress, edge proxies, and Nginx instances carrying login or API traffic should be upgraded or replaced with a confirmed fixed package first.&lt;/p&gt;
&lt;h2 id=&#34;how-to-confirm-fixes-on-debian--ubuntu--rhel--alpine&#34;&gt;How to confirm fixes on Debian / Ubuntu / RHEL / Alpine
&lt;/h2&gt;&lt;p&gt;Distribution users should not look only at &lt;code&gt;nginx -v&lt;/code&gt;. Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, and Alpine often backport security patches into stable branches, so the visible version may still be lower than nginx.org&amp;rsquo;s &lt;code&gt;1.30.1&lt;/code&gt; or &lt;code&gt;1.31.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On Debian / Ubuntu, check security advisories, package changelog, and upgrade candidates:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt list --upgradable &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt changelog nginx &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;CVE-2026-42945&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On RHEL / AlmaLinux / Rocky Linux, check security updates and package changelog:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum updateinfo list security &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -q --changelog nginx &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;CVE-2026-42945&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On Alpine, check the installed package version and security branch updates:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk info -v nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk version -v nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If the package manager, distribution security advisory, or vendor advisory explicitly says &lt;code&gt;CVE-2026-42945&lt;/code&gt; is fixed, you can treat it as backported even if the upstream version number looks old. Conversely, if the version looks new but the source is unclear, still confirm the build date and patch source.&lt;/p&gt;
&lt;h2 id=&#34;how-to-check-container-images-and-ingress-controller&#34;&gt;How to check container images and Ingress Controller
&lt;/h2&gt;&lt;p&gt;In container environments, check the Nginx inside the image, not only the host. First confirm the actual embedded version:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm your-nginx-image nginx -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm your-nginx-image nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Also check whether the base image has been updated. If the image is built on Debian, Ubuntu, Alpine, or distribution packages, apply the same advisory and changelog checks for that distribution. Restarting an old image is not useful; the image itself needs to be rebuilt or replaced.&lt;/p&gt;
&lt;p&gt;For Kubernetes Ingress, confirm three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Whether the Ingress Controller project has published an advisory or fixed release for &lt;code&gt;CVE-2026-42945&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Whether the running controller image digest has actually changed, rather than only the tag.&lt;/li&gt;
&lt;li&gt;Whether the controller&amp;rsquo;s embedded Nginx version, build flags, and template configuration still contain high-risk rewrite rules.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Start by checking the running image:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx describe pod &amp;lt;pod-name&amp;gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you use a cloud-provider managed Ingress or gateway, check the corresponding cloud service advisory. Managed components usually cannot be fixed by running &lt;code&gt;apt upgrade&lt;/code&gt; yourself; you need the provider&amp;rsquo;s fix or a switch to a fixed version.&lt;/p&gt;
&lt;h2 id=&#34;which-rewrite-patterns-deserve-attention&#34;&gt;Which rewrite patterns deserve attention
&lt;/h2&gt;&lt;p&gt;This vulnerability is related to &lt;code&gt;rewrite&lt;/code&gt; configuration. Start by searching Nginx configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -R &lt;span class=&#34;s2&#34;&gt;&amp;#34;rewrite&amp;#34;&lt;/span&gt; /etc/nginx -n
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -R &lt;span class=&#34;s2&#34;&gt;&amp;#34;\\&lt;/span&gt;$&lt;span class=&#34;s2&#34;&gt;[0-9]&amp;#34;&lt;/span&gt; /etc/nginx -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Pay attention to patterns like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;rewrite&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^/old/(.*)&lt;/span&gt;$ &lt;span class=&#34;s&#34;&gt;/new/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;permanent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The unnamed captures such as &lt;code&gt;$1&lt;/code&gt; and &lt;code&gt;$2&lt;/code&gt;, plus the &lt;code&gt;?&lt;/code&gt; in the replacement target, are among the key conditions described by the official sources. During review, pay special attention to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;rewrite&lt;/code&gt; followed by another &lt;code&gt;rewrite&lt;/code&gt;, &lt;code&gt;if&lt;/code&gt;, or &lt;code&gt;set&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Broad captures such as &lt;code&gt;(.*)&lt;/code&gt; and &lt;code&gt;(.+)&lt;/code&gt; that are reused as &lt;code&gt;$1&lt;/code&gt; or &lt;code&gt;$2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rewrite targets containing &lt;code&gt;?&lt;/code&gt; to append or discard query parameters.&lt;/li&gt;
&lt;li&gt;Rewrite input coming from public paths, Host, URI, parameters, or upstream-controlled values.&lt;/li&gt;
&lt;li&gt;Rewrite rules generated by panels, gateways, Ingress annotations, or templates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you cannot upgrade immediately, use temporary mitigations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduce complex rewrite rules.&lt;/li&gt;
&lt;li&gt;Replace unnamed captures with clearer named captures.&lt;/li&gt;
&lt;li&gt;Avoid unnecessary &lt;code&gt;?&lt;/code&gt; concatenation in replacement strings.&lt;/li&gt;
&lt;li&gt;Add WAF or reverse-proxy rules for high-risk entry points.&lt;/li&gt;
&lt;li&gt;Confirm that ASLR is enabled.&lt;/li&gt;
&lt;li&gt;Reduce Nginx worker privileges and verify systemd sandboxing, SELinux/AppArmor, and related hardening.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These measures are mitigations, not replacements for patching.&lt;/p&gt;
&lt;h2 id=&#34;remediation-priority&#34;&gt;Remediation priority
&lt;/h2&gt;&lt;p&gt;Prioritize by exposure:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Public-facing Nginx entry points.&lt;/li&gt;
&lt;li&gt;Reverse proxies, API Gateway, and edge gateways.&lt;/li&gt;
&lt;li&gt;Nginx in multi-tenant environments.&lt;/li&gt;
&lt;li&gt;Kubernetes Ingress Controller.&lt;/li&gt;
&lt;li&gt;Plesk, control panels, marketplace images, and other components that bundle Nginx.&lt;/li&gt;
&lt;li&gt;Internal Nginx instances that carry critical business traffic.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;how-to-verify-after-upgrading-nginx--t-reload-and-worker-state&#34;&gt;How to verify after upgrading: nginx -t, reload, and worker state
&lt;/h2&gt;&lt;p&gt;After updating, do not stop at &amp;ldquo;the package manager succeeded&amp;rdquo;. Confirm the configuration, process state, and actual binary have all switched over. First validate the configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If there are no errors, reload smoothly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl reload nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If the package upgrade replaced the binary, confirm old workers have exited:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;You can also inspect the master process start time and binary path to ensure the running service is not an old process still resident in memory. If needed, schedule a maintenance window and restart the service so old workers or old containers do not continue handling requests.&lt;/p&gt;
&lt;p&gt;For containers and Ingress, also confirm the new image rollout has actually completed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx rollout status deployment/&amp;lt;deployment-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The key verification question is not &amp;ldquo;did the command run&amp;rdquo;, but &amp;ldquo;is live traffic now handled by Nginx processes that include the fix&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;do-not-ignore-the-same-nginx-security-batch&#34;&gt;Do not ignore the same Nginx security batch
&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;1.30.1&lt;/code&gt; and &lt;code&gt;1.31.0&lt;/code&gt; releases published by nginx.org on the same day fixed more than &lt;code&gt;CVE-2026-42945&lt;/code&gt;. The release information also mentions HTTP/2 request injection, SCGI/uWSGI buffer overread, charset module buffer overread, HTTP/3 address spoofing, OCSP resolver use-after-free, and other issues.&lt;/p&gt;
&lt;p&gt;That means production environments should not only add a temporary rule for a single CVE. Treat this Nginx security release as an overall upgrade.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The key point of &lt;code&gt;CVE-2026-42945&lt;/code&gt; is not &amp;ldquo;all Nginx instances can be instantly taken over&amp;rdquo;. It is a long-standing memory safety vulnerability in the rewrite module that can be triggered by unauthenticated requests under specific configurations. The most direct result is worker crash and restart; on weaker environments such as systems with ASLR disabled, code execution risk is higher.&lt;/p&gt;
&lt;p&gt;For operations teams, the handling order is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirm the Nginx source and version.&lt;/li&gt;
&lt;li&gt;Check distribution, F5, nginx.org, or cloud-provider advisories.&lt;/li&gt;
&lt;li&gt;Upgrade to a fixed version or distribution security package as soon as possible.&lt;/li&gt;
&lt;li&gt;Review complex rewrite configuration, especially combinations of &lt;code&gt;$1&lt;/code&gt;, &lt;code&gt;$2&lt;/code&gt;, and &lt;code&gt;?&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Confirm ASLR, privilege isolation, and service reload state.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The headline can be scary. The fix should be calm: confirm exposure, upgrade, then clean up high-risk rewrite rules.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-42945&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD: CVE-2026-42945&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nginx.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nginx.org release information&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://my.f5.com/manage/s/article/K000161019&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;F5 Security Advisory K000161019&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://depthfirst.com/nginx-rift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DepthFirst: Nginx Rift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Dirty Frag, Copy Fail, and Fragnesia: Comparing Three Recent Linux Local Privilege Escalation Flaws</title>
        <link>https://knightli.com/en/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</link>
        <pubDate>Fri, 15 May 2026 13:24:04 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</guid>
        <description>&lt;p&gt;Several high-profile Linux kernel local privilege escalation vulnerabilities have appeared recently: Dirty Frag, Copy Fail, and Fragnesia. They look like a single family of events because the end result is similar: a low-privilege local user may be able to become root.&lt;/p&gt;
&lt;p&gt;But from an operations perspective, they should not be treated as one vulnerability. Their entry modules, trigger paths, mitigation options, and patch timelines differ. A better way to understand them is this: they expose a shared risk around the complex boundary between the Linux page cache, &lt;code&gt;splice&lt;/code&gt;, socket buffers, and crypto paths.&lt;/p&gt;
&lt;p&gt;This post only covers risk and response analysis. It does not include reproducible exploitation steps.&lt;/p&gt;
&lt;h2 id=&#34;what-the-three-flaws-are&#34;&gt;What the Three Flaws Are
&lt;/h2&gt;&lt;h3 id=&#34;dirty-frag-cve-2026-43284&#34;&gt;Dirty Frag: CVE-2026-43284
&lt;/h3&gt;&lt;p&gt;Dirty Frag mainly points to a page-cache write issue in the Linux kernel networking path. Public write-ups usually discuss it together with two issues: the &lt;code&gt;xfrm-ESP&lt;/code&gt; side, CVE-2026-43284, and the &lt;code&gt;rxrpc&lt;/code&gt; side, CVE-2026-43500.&lt;/p&gt;
&lt;p&gt;CVE-2026-43284 is related to in-place decryption when ESP handles shared &lt;code&gt;skb&lt;/code&gt; fragments. The key point is not that an attacker directly modifies a disk file, but that the kernel can write to shared pages it should not modify, affecting file contents in the page cache.&lt;/p&gt;
&lt;p&gt;Operationally, remember that Dirty Frag reaches &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, and &lt;code&gt;rxrpc&lt;/code&gt;, a set of kernel modules and networking subsystem paths. It is tied to IPsec, ESP, and RxRPC, so temporary mitigation also focuses on those modules.&lt;/p&gt;
&lt;h3 id=&#34;copy-fail-cve-2026-31431&#34;&gt;Copy Fail: CVE-2026-31431
&lt;/h3&gt;&lt;p&gt;Copy Fail is a Linux kernel local privilege escalation vulnerability disclosed by Theori / Xint Code. Its entry point is not the IPsec networking path, but the kernel userspace crypto API around &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Public explanations describe it as originating from an in-place optimization introduced in 2017. In some cases, the kernel failed to copy data as expected and instead placed page-cache pages into a writable destination path. An attacker can combine &lt;code&gt;AF_ALG&lt;/code&gt; with &lt;code&gt;splice()&lt;/code&gt; to perform a small controlled write to page-cache-backed pages.&lt;/p&gt;
&lt;p&gt;Its risk comes from strong exploitability and broad impact across mainstream distributions. Unlike Dirty Frag, Copy Fail&amp;rsquo;s temporary mitigation focuses on restricting or disabling &lt;code&gt;algif_aead&lt;/code&gt;, and on limiting &lt;code&gt;AF_ALG&lt;/code&gt; socket creation in container and CI environments.&lt;/p&gt;
&lt;h3 id=&#34;fragnesia-cve-2026-46300&#34;&gt;Fragnesia: CVE-2026-46300
&lt;/h3&gt;&lt;p&gt;Fragnesia is another Linux kernel local privilege escalation vulnerability disclosed by V12 Security, and it belongs to a similar attack surface as Dirty Frag. It is not the same bug as Dirty Frag, but it still revolves around IPsec ESP / &lt;code&gt;rxrpc&lt;/code&gt; related modules and page-cache write effects.&lt;/p&gt;
&lt;p&gt;AlmaLinux describes it as the third local-root issue in the same broad code area. The key problem is that &lt;code&gt;skb_try_coalesce()&lt;/code&gt; did not preserve the shared-fragment marker when coalescing socket buffer fragments, which could later let the XFRM ESP-in-TCP receive path decrypt in place over external page-cache pages.&lt;/p&gt;
&lt;p&gt;In short, Fragnesia is closer to Dirty Frag. Both revolve around &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, &lt;code&gt;rxrpc&lt;/code&gt;, &lt;code&gt;skb&lt;/code&gt; fragments, and ESP decryption paths. Their temporary mitigations also overlap heavily.&lt;/p&gt;
&lt;h2 id=&#34;similarities-why-they-are-dangerous&#34;&gt;Similarities: Why They Are Dangerous
&lt;/h2&gt;&lt;p&gt;The common thread is not that the exact code locations are identical, but that the attack outcome and risk model are very similar.&lt;/p&gt;
&lt;p&gt;First, all three are local privilege escalation issues. Attackers usually need ordinary local code execution first, then they can attempt to become root. For a single-user desktop this is not remote one-click compromise; for multi-user servers, CI runners, container hosts, shared development machines, and VPS instances with exposed SSH, low-privilege entry points are not rare.&lt;/p&gt;
&lt;p&gt;Second, all three involve page-cache writes. Attackers may not permanently modify the file on disk; instead, they affect the in-memory page-cache copy. This makes traditional integrity checks less reliable: the disk hash can remain normal while the execution path reads polluted page-cache content.&lt;/p&gt;
&lt;p&gt;Third, they are closer to deterministic logic bugs than timing-sensitive race conditions. Public material repeatedly notes that these issues do not require winning a race condition. Defenders should not underestimate exploit reliability based on older assumptions.&lt;/p&gt;
&lt;p&gt;Fourth, they amplify the risk of container and automation environments. Low-privilege code inside containers, CI jobs, build scripts, or third-party plugins can turn a &amp;ldquo;local issue&amp;rdquo; into a platform-level issue if it can reach the relevant host kernel interfaces.&lt;/p&gt;
&lt;h2 id=&#34;differences-one-mitigation-does-not-cover-all&#34;&gt;Differences: One Mitigation Does Not Cover All
&lt;/h2&gt;&lt;p&gt;The biggest difference is the entry module.&lt;/p&gt;
&lt;p&gt;Copy Fail&amp;rsquo;s critical entry point is &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;, part of the kernel userspace crypto API. Its temporary defense focuses on disabling or restricting &lt;code&gt;algif_aead&lt;/code&gt;, and using seccomp to block containers from creating &lt;code&gt;AF_ALG&lt;/code&gt; sockets.&lt;/p&gt;
&lt;p&gt;Dirty Frag&amp;rsquo;s critical entry point is &lt;code&gt;xfrm-ESP&lt;/code&gt; and &lt;code&gt;rxrpc&lt;/code&gt;. It is closer to protocol and socket buffer handling paths. Temporary defense typically considers disabling &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, and &lt;code&gt;rxrpc&lt;/code&gt;, but that can affect IPsec, VPNs, tunnels, or related networking capabilities.&lt;/p&gt;
&lt;p&gt;Fragnesia sits in a similar region to Dirty Frag, but the concrete issue is that &lt;code&gt;skb_try_coalesce()&lt;/code&gt; did not preserve the shared-fragment marker. It is more like another branch of the Dirty Frag risk surface than a Copy Fail crypto API issue.&lt;/p&gt;
&lt;p&gt;So, fixing Copy Fail does not mean Dirty Frag and Fragnesia are covered. Likewise, disabling &lt;code&gt;esp4&lt;/code&gt; / &lt;code&gt;esp6&lt;/code&gt; does not automatically remove Copy Fail. Their patch state and mitigation strategy must be checked separately.&lt;/p&gt;
&lt;h2 id=&#34;how-to-judge-exposure&#34;&gt;How to Judge Exposure
&lt;/h2&gt;&lt;p&gt;For these vulnerabilities, do not judge only by distribution name or kernel major version. Distributions backport fixes, cloud vendors maintain their own kernel branches, and enterprise distributions may carry additional patches.&lt;/p&gt;
&lt;p&gt;A safer sequence is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the distribution security advisory and kernel package changelog.&lt;/li&gt;
&lt;li&gt;Verify whether the current kernel package fixes the relevant CVE.&lt;/li&gt;
&lt;li&gt;For cloud servers, container hosts, and CI nodes, also check cloud or platform advisories.&lt;/li&gt;
&lt;li&gt;For temporary mitigations, confirm whether the business depends on the affected module.&lt;/li&gt;
&lt;li&gt;After a kernel update, schedule a reboot and confirm the running kernel has changed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The most common trap is &amp;ldquo;the package is updated, but the machine has not rebooted.&amp;rdquo; Kernel vulnerabilities are not like ordinary userspace service updates. Until the system boots into the new kernel, the old kernel may still be running.&lt;/p&gt;
&lt;h2 id=&#34;operational-priority&#34;&gt;Operational Priority
&lt;/h2&gt;&lt;p&gt;The systems that deserve the highest priority are not all Linux machines equally. Start where low-privilege code execution is most likely.&lt;/p&gt;
&lt;p&gt;Highest-priority environments include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-user login servers&lt;/li&gt;
&lt;li&gt;CI / CD runners&lt;/li&gt;
&lt;li&gt;Build and artifact packaging machines&lt;/li&gt;
&lt;li&gt;Container hosts and Kubernetes nodes&lt;/li&gt;
&lt;li&gt;Shared development machines&lt;/li&gt;
&lt;li&gt;Cloud servers and VPS instances exposing SSH&lt;/li&gt;
&lt;li&gt;Platforms running third-party scripts, plugins, or job queues&lt;/li&gt;
&lt;li&gt;Machines with web vulnerabilities, weak passwords, or historical compromise signals&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Closed, single-user machines with no external code execution entry point are still at risk if vulnerable, but they can usually be handled later.&lt;/p&gt;
&lt;h2 id=&#34;how-to-treat-temporary-mitigation&#34;&gt;How to Treat Temporary Mitigation
&lt;/h2&gt;&lt;p&gt;Temporary mitigation is not a replacement for a patch. Its value is reducing exposure when you cannot immediately reboot or are waiting for distribution packages.&lt;/p&gt;
&lt;p&gt;For Copy Fail, focus on &lt;code&gt;algif_aead&lt;/code&gt; and &lt;code&gt;AF_ALG&lt;/code&gt;. If the business does not use the kernel AF_ALG crypto interface, evaluate disabling the related module. In container environments, check seccomp policies first so untrusted workloads cannot freely create the relevant socket.&lt;/p&gt;
&lt;p&gt;For Dirty Frag and Fragnesia, focus on &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, and &lt;code&gt;rxrpc&lt;/code&gt;. If the system does not depend on IPsec ESP, related VPNs, tunnels, or RxRPC, consider temporary disabling. Do not do this blindly in production because these modules may support real networking workloads.&lt;/p&gt;
&lt;p&gt;The final path is still a kernel update. Temporary mitigation can reduce attack surface, but it cannot prove the system is fully safe.&lt;/p&gt;
&lt;h2 id=&#34;what-these-three-flaws-tell-us&#34;&gt;What These Three Flaws Tell Us
&lt;/h2&gt;&lt;p&gt;The important warning is not just the number of CVEs. These flaws all cluster around high-complexity kernel paths: zero-copy, &lt;code&gt;splice&lt;/code&gt;, socket buffers, the page cache, crypto interfaces, and protocol-stack optimizations.&lt;/p&gt;
&lt;p&gt;These paths deliver performance, but their ownership boundaries are hard to maintain. Whether a fragment is shared, whether a page may be written in place, and whether an optimization truly only reduces copying all become security boundaries.&lt;/p&gt;
&lt;p&gt;For security and operations teams, the takeaways are practical:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Treat local privilege escalation as an amplifier for existing low-privilege entry points.&lt;/li&gt;
&lt;li&gt;Containers are not a natural isolation boundary for kernel vulnerabilities.&lt;/li&gt;
&lt;li&gt;File integrity checks cannot look only at disk contents.&lt;/li&gt;
&lt;li&gt;CI, build machines, and plugin platforms are high-priority assets.&lt;/li&gt;
&lt;li&gt;Kernel patching requires verifying both &amp;ldquo;installed&amp;rdquo; and &amp;ldquo;running&amp;rdquo; states.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Dirty Frag, Copy Fail, and Fragnesia are all high-priority recent Linux local privilege escalation events, but they are not three names for one vulnerability.&lt;/p&gt;
&lt;p&gt;Copy Fail goes through the &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; crypto API path. Dirty Frag goes through &lt;code&gt;xfrm-ESP&lt;/code&gt; and &lt;code&gt;rxrpc&lt;/code&gt;. Fragnesia, in a nearby Dirty Frag attack surface, again triggers page-cache write risk through &lt;code&gt;skb&lt;/code&gt; fragment marker handling.&lt;/p&gt;
&lt;p&gt;Operationally, the safest response is to update the kernel according to distribution advisories and reboot. For systems that cannot be updated immediately, evaluate temporary module disabling or tighter seccomp rules based on the actual vulnerability entry point. Prioritize multi-tenant systems, CI, container hosts, and shared development environments.&lt;/p&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Theori Copy Fail notes: &lt;a class=&#34;link&#34; href=&#34;https://github.com/theori-io/copy-fail-CVE-2026-31431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/theori-io/copy-fail-CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CERT-EU Copy Fail advisory: &lt;a class=&#34;link&#34; href=&#34;https://cert.europa.eu/publications/security-advisories/2026-005/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cert.europa.eu/publications/security-advisories/2026-005/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Dirty Frag notes: &lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-07-dirty-frag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-07-dirty-frag/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Fragnesia notes: &lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;V12 Security Fragnesia PoC notes: &lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/tree/main/fragnesia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/tree/main/fragnesia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Fragnesia (CVE-2026-46300): Impact and Mitigation for a Linux Kernel Local Privilege Escalation Flaw</title>
        <link>https://knightli.com/en/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</link>
        <pubDate>Fri, 15 May 2026 13:18:01 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</guid>
        <description>&lt;p&gt;The Linux kernel has another local privilege escalation issue in the same broad attack surface as Dirty Frag: Fragnesia (CVE-2026-46300).&lt;/p&gt;
&lt;p&gt;According to V12 Security, Fragnesia is a Linux local privilege escalation vulnerability. An attacker does not need existing high privileges on the host. If they can execute local code, they may be able to abuse a logic flaw in the kernel&amp;rsquo;s XFRM ESP-in-TCP subsystem to modify read-only file contents through the page cache and eventually trigger a root shell.&lt;/p&gt;
&lt;p&gt;Source:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;V12 Security PoC notes: &lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This post does not cover reproducible exploitation steps. It focuses on the operational risk and response path.&lt;/p&gt;
&lt;h2 id=&#34;how-it-relates-to-dirty-frag&#34;&gt;How It Relates to Dirty Frag
&lt;/h2&gt;&lt;p&gt;V12 Security classifies Fragnesia as part of the Dirty Frag vulnerability class. It is not the same bug as Dirty Frag, but it lives in a related attack surface: Linux kernel XFRM ESP-in-TCP.&lt;/p&gt;
&lt;p&gt;XFRM is the Linux kernel framework for IPsec processing. ESP-in-TCP is related to carrying ESP encrypted traffic over TCP. Fragnesia comes from logic around shared page fragments and socket buffer coalescing: in some cases, the kernel can lose track of the fact that a fragment is still shared, leaving room for controlled writes.&lt;/p&gt;
&lt;p&gt;This resembles the broader Dirty Pipe / Dirty Frag family of page-cache write issues. The concrete code paths differ, but the effect again lands on the page-cache copy of a read-only file.&lt;/p&gt;
&lt;h2 id=&#34;why-the-risk-is-high&#34;&gt;Why the Risk Is High
&lt;/h2&gt;&lt;p&gt;Fragnesia is dangerous for three reasons.&lt;/p&gt;
&lt;p&gt;First, it is a local privilege escalation. Once an attacker can run ordinary user-level code on a system, they may be able to become root. That matters especially on multi-user servers, container hosts, CI runners, shared development machines, VPS instances, and systems exposing shell access.&lt;/p&gt;
&lt;p&gt;Second, it does not rely on a traditional race condition. V12&amp;rsquo;s notes describe a path that drives ESP-in-TCP processing over file-backed pages already spliced into a socket buffer, allowing byte-level influence over page-cache contents. That makes the issue more practical than a purely theoretical bug.&lt;/p&gt;
&lt;p&gt;Third, it changes the page cache, not the on-disk file. The public notes use &lt;code&gt;/usr/bin/su&lt;/code&gt; as an example target. After successful exploitation, the file on disk is not permanently modified; the modified copy lives in memory. Integrity checks that only compare disk hashes may miss this.&lt;/p&gt;
&lt;p&gt;That is the awkward part for administrators: the file can look unchanged, but executing the polluted page-cache copy of a target binary may still trigger privilege escalation.&lt;/p&gt;
&lt;h2 id=&#34;known-affected-scope&#34;&gt;Known Affected Scope
&lt;/h2&gt;&lt;p&gt;V12 Security states that kernels affected by Dirty Frag and missing the relevant May 13, 2026 patches are also affected by Fragnesia. Publicly tested environments include Ubuntu 22.04, Ubuntu 24.04, and kernels such as &lt;code&gt;6.8.0-111-generic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There are two important caveats.&lt;/p&gt;
&lt;p&gt;First, do not judge only by the distribution major version. Whether Ubuntu 22.04 or 24.04 is affected depends on the actual kernel patch state, not just the distribution name.&lt;/p&gt;
&lt;p&gt;Second, do not rely only on default AppArmor restrictions for unprivileged user namespaces. Ubuntu&amp;rsquo;s AppArmor restrictions can raise the bar, but the disclosure treats that as an additional bypass problem, not as a fix for the vulnerability itself.&lt;/p&gt;
&lt;p&gt;The reliable path is still to check distribution security advisories and kernel package updates.&lt;/p&gt;
&lt;h2 id=&#34;temporary-mitigation&#34;&gt;Temporary Mitigation
&lt;/h2&gt;&lt;p&gt;If a system cannot be upgraded immediately, first check whether it depends on the relevant protocol modules.&lt;/p&gt;
&lt;p&gt;V12 gives the same mitigation direction as Dirty Frag: if the system does not depend on IPsec ESP or RxRPC, administrators can consider disabling modules such as &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, and &lt;code&gt;rxrpc&lt;/code&gt;. This can affect networking features, so production systems should not do it blindly. Confirm whether the environment uses IPsec, VPNs, tunnels, or related kernel functionality.&lt;/p&gt;
&lt;p&gt;A safer response order is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check whether the distribution has published a kernel security update.&lt;/li&gt;
&lt;li&gt;Install the kernel patch and schedule a reboot first.&lt;/li&gt;
&lt;li&gt;If immediate upgrade is impossible, evaluate temporary module disabling.&lt;/li&gt;
&lt;li&gt;Prioritize multi-user systems and CI / build environments.&lt;/li&gt;
&lt;li&gt;Review unnecessary local accounts, shell access, container escape surface, and low-privilege execution entry points.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Disabling modules should not be treated as the final fix. It is only a way to reduce exposure while moving toward a patched kernel.&lt;/p&gt;
&lt;h2 id=&#34;if-exploitation-is-suspected&#34;&gt;If Exploitation Is Suspected
&lt;/h2&gt;&lt;p&gt;One key feature of Fragnesia is page-cache pollution. V12 notes that after exploitation, the target file&amp;rsquo;s page-cache copy may contain injected content, and later execution can still behave abnormally until the page is evicted or the system is rebooted.&lt;/p&gt;
&lt;p&gt;If exploitation is suspected, do at least the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preserve logs and audit records as soon as possible.&lt;/li&gt;
&lt;li&gt;Check recent abnormal local logins, low-privilege user activity, suspicious processes, and root shell traces.&lt;/li&gt;
&lt;li&gt;Clear the relevant page cache or reboot directly.&lt;/li&gt;
&lt;li&gt;Upgrade to a fixed kernel.&lt;/li&gt;
&lt;li&gt;Verify key binaries, but do not rely only on disk hashes.&lt;/li&gt;
&lt;li&gt;Rotate potentially exposed credentials and keys.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For production servers, it is better to treat this as a potential local privilege escalation incident, not merely as a routine patch event.&lt;/p&gt;
&lt;h2 id=&#34;which-machines-should-come-first&#34;&gt;Which Machines Should Come First
&lt;/h2&gt;&lt;p&gt;The highest priority is not every Linux machine equally. Start with systems where attackers are most likely to obtain low-privilege code execution.&lt;/p&gt;
&lt;p&gt;High-priority environments include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-user login servers&lt;/li&gt;
&lt;li&gt;CI / CD runners&lt;/li&gt;
&lt;li&gt;Build machines&lt;/li&gt;
&lt;li&gt;Shared development machines&lt;/li&gt;
&lt;li&gt;Container hosts&lt;/li&gt;
&lt;li&gt;VPS and cloud servers&lt;/li&gt;
&lt;li&gt;Edge nodes exposing SSH&lt;/li&gt;
&lt;li&gt;Platforms running third-party scripts or plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Closed, single-user machines with no external code execution entry point are still affected if vulnerable, but their urgency is lower.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Fragnesia matters not because it has a new name, but because it again pulls Linux local privilege escalation back into the difficult boundary between the page cache and kernel networking subsystems.&lt;/p&gt;
&lt;p&gt;For administrators, the important work is to confirm kernel patch status, understand whether ESP / RxRPC is in use, prioritize highly exposed machines, and remember that &amp;ldquo;the disk file is unchanged&amp;rdquo; does not mean &amp;ldquo;the system was unaffected.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;If a system is affected, the final answer is still to install the distribution&amp;rsquo;s kernel update as soon as possible. Temporary module disabling is only a bridge, not a replacement for the patch.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
